Dans cet article


Offres d'emploi

Tags

Comment créer une relation N-N dans Planisware ?

Les développeurs qui travaillent depuis un certain temps avec Planisware savent que créer une relation N-N peut s’avérer fastidieux. En effet, dans les anciennes versions de Planisware, il était nécessaire de coder manuellement le mapping entre les différentes tables. C’est pourquoi, depuis la P5SP2, Planisware a mis à disposition une méthode de création simplifiée de relation N-N. Cette méthode se base sur la création en script d’un champ de type ring attribute qui va s’occuper de créer automatiquement les lignes de la relation N-N. Les paragraphes suivants décrivent, à partir d’un exemple simple, les différentes étapes à suivre pour créer des ring attribute.

 

 

Situation initiale

Imaginons une entreprise française qui décide de déporter une partie de son activité à l’étranger et qui désormais peut avoir des activités réalisées dans plusieurs pays. Cette entreprise souhaite donc pouvoir saisir des listes de pays sur ses activités Planisware. En plus de son WBS (table des activités), cette entreprise dispose d’une table des pays.

 

Image1

Figure 1 : Situation initiale > aucun lien entre les tables Activité et Pays

 

Création d’une table de relation N-N

On commence par créer la table de relation N-N.

Il s’agit d’une table stockée Planisware classique sans option de configuration particulière.

 

Image2

Figure 2 : Table de relation N-N créée mais (pas encore rattachée)

 

Création des relations

Dans cette étape, on va créer deux relations :

  • Depuis la table de relation N-N Activité/Pays vers la table Activité
  • Depuis la table de relation N-N Activité/Pays vers la table Pays

Il s’agit de relations standard Planisware qui ne nécessitent pas de paramétrage particulier.

 

Image3

Figure 3 : table de relation N-N rattachée

 

Remarque : à partir de cette étape, la partie « modification du modèle physique » est terminée (il convient donc de vérifier le modèle physique).

 

Création du ring attribute

Dans ce paragraphe, on s’attache à préciser la syntaxe de création du ring attribute, ici sur la classe des activités.

 

Soit les éléments techniques suivants :

  • Nom en script de la classe des activités : OpxActivity
  • Nom que l’on souhaite donner au ring attribute : XXX_RING_ACT_LISTE_PAYS
  • Descriptif que l’on souhaite donner au ring attribute : Liste des pays
  • Nom de la table de relation N-N Activité/Pays : XXX_PT_NN_ACTIVITE_PAYS
  • Nom de la relation 1 : XXX_RA_NN_VERS_ACTIVITE
  • Nom de la relation 2 : XXX_RA_NN_VERS_PAYS

 

La création du ring attribute s’effectue de la manière suivante :

« OpxActivity ».defineRingAttribute(« XXX_RING_ACT_LISTE_PAYS », « Liste des pays », « r.XXX_RA_NN_VERS_ACTIVITE.XXX_PT_NN_ACTIVITE_PAYS », « XXX_RA_NN_VERS_PAYS »);

Il convient ensuite de rajouter la ligne ci-dessus dans un script exécuté au démarrage puis de redémarrer.

 

Résultat

Une fois Planisware redémarré, le ring attribute est directement disponible à l’emploi

Lorsque l’on insère le champ dans Planisware, ce dernier présente les options de saisie assistée standard de Planisware sans paramétrage supplémentaire :

 

Image4

Figure 4 : extrait de la doc Planisware

Lorsque l’on ajoute une liste de pays sur une activité, une ligne par pays est automatiquement créée dans la table de relation N-N

 

L'équipe AXOPEN

Voir aussi les articles suivants

Comment fonctionne l’avancement standard dans Planisware ?
Les utilisateurs chevronnés de Planisware savent que le logiciel permet, souvent par du développement spécifique, de mettre en place une quasi-infinité de méthodes de gestion de l’avancement. Cependant, peu connaissent le fonctionnement standard d’un Planisware « nu », sans aucune surcouche. Cet article a pour but de faire un retour aux bases et de redécouvrir le fonctionnement natif de Planisware en ce qui concerne l’avancement (ici en prenant le cas des affectations).
Lire l'article

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.
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