Aller au contenu

    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.

    image Activité

    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.

    Figure 2 activité

    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.

    Figure 3 activité

    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 :

    figure 4 activité

    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