Dans cet article


Offres d'emploi

Tags

Relation inverse : quelle syntaxe en OJS sous Planisware ?

Relation inverse : quelle syntaxe en OJS sous Planisware  ?

Problématique

Les relations inverses permettent de « récupérer » facilement et de manière optimisée tous les objets qui possèdent une relation avec un objet donné. Par exemple une relation inverse permettra de parcourir la liste des affectations portant sur une activité donnée.

Cet article apporte un éclairage sur la manière d’utiliser une relation inverse et complète un précédent billet sur ce sujet. Comme vous pourrez le voir le nommage est loin d’être unique… et pour une même relation inverse on pourra avoir plusieurs possibilités.

1. Faire une boucle sur une relation inverse

Prenons un exemple :

Pour itérer sur les affectations d’une activité « ID_ACTIVITY » on peut utiliser la syntaxe suivante utilisant des relations inverses :

var o_activity = "OpxActivity".get("ID_ACTIVITY");

for(var o_allocation in o_activity.Allocations)
{
    
}

Ici à partir de l’activité dont l’ID est « ID_ACTIVITY » on va itérer sur toutes les Affectations dont le champ relation Activité (ou WORK_STRUCTURE) a pour valeur l’activité concernée.

La boucle va parcourir l’ensemble des objets o_activity.Allocations qui permet, à partir de l’objet activité de remonter les objets affectations qui lui sont rattachés. Ceci grâce au mot clé « Allocations » qui est le nom de la relation inverse.

Ce fameux mot clé peut avoir plusieurs noms différents pour une même relation. Ceci peut être déroutant lorsque l’on découvre le code OJS.

2. Nommage des relations inverses natives

Dans cette partie nous proposons une liste non exhaustive par relation des mots clés permettant de lister les objets en relation inverse.

On verra qu’il existe souvent au moins 1 version par langue (exemple Anglais / Français) mais d’autres déclinaisons dans une même langue peuvent être constatées.

Relation Affectations – Activité

for(var o_allocation in o_activity.Allocations){}
for(var o_allocation in o_activity.PlannedHours){}

Relation Dépenses prévues – Activité

for(var o_allocation in o_activity.Expenditures){}
for(var o_allocation in o_activity.PlannedExpenditures){}

Relation Synthèses des temps et des dépenses – Activité

for(var o_allocation in o_activity.get("TIME-SYNTS")){}

Version Planisware : Processes 5.3.2.14

L'équipe AXOPEN

Voir aussi les articles suivants

Planisware : comment optimiser le parcours d’une classe avec la relation inverse ?
Problématique Il est fréquent en script Planisware (OJS) d’avoir à rechercher des éléments dans une classe donnée (affectations, tâches, dépenses etc…). La performance de cette recherche dépend principalement de deux facteurs : La volumétrie totale des objets de la classe parcourue La manière dont les objets de la classe sont parcourus Pour optimiser ce deuxième point, Planisware met à disposition un outil permettant de parcourir des ensembles d’objets restreints : les relations inverses.
Lire l'article

Planisware : comment afficher la table des projets en client lourd ?
Affichage des objets d’une classe – cas général Planisware Pro permet de consulter les objets Planisware d’une classe donnée (affectations, formules nommées, etc..). Par exemple on peut ouvrir une fenêtre affichant un tableau d’activités via le menu Données > Afficher tâches & sous-projets.   Exemple de tableau d’activités : Ces tableaux sont très utiles pour créer des styles personnalisés (styles de paramétrage) qui permettront de définir l’affichage des tableaux de données dans les rapports par exemple.
Lire l'article

Planisware : focus sur les bonnes pratiques de nommage
Problématique Lorsque l’on s’attache à mettre en œuvre des bonnes pratiques de nommage sous Planisware, 2 grandes familles d’objets sont à prendre en compte : les objets d’environnement Planisware (formules nommées, tables, champs supplémentaires…) les variables, fonctions et méthodes définies en script OJS Le respect de normes dans le développement est fondamental car il permet la maintenabilité du code au cours de la vide d’une application. Le non respect de conventions pour le nommage des objets et l’écriture du code rendra les corrections et évolutions plus couteuses (en temps et en énergie) et augmentera les risques de régression (dus en général à une mauvaise compréhension du paramétrage).
Lire l'article