AXOPEN

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