6.2 Paramétrage du cycle de vie

Ce chapitre aborde le paramétrage du cycle de vie.

6.2.1 Objectifs

  • Mettre en place les couleurs des étapes,
  • Ajouter des modèles de mail,
  • Ajouter des minuteurs,
  • Effectuer des contrôles avant un changement d'étape,
  • Poser des questions lors d'un changement d'étape.

6.2.2 Cadre

Lors de la phase d'analyse, les points suivants ont été relevés :

  • chaque étape doit porter un code couleur permettant de l'identifier,
  • un mail doit être envoyé pour notifier les différents acteurs d'un audit de son début,
  • une relance doit être envoyée si un audit reste en rédaction plus de 15 jours,
  • un audit ne peut pas franchir l'étape En rédaction tant que toutes les fiches de non-conformité associées ne sont pas closes,
  • lorsqu'un audit est passe à l'état annulé une question doit être posée pour en demander la raison,
  • une fois que l'audit n'est plus dans l'étape Brouillon, le contrôle de cohérence sur la date de début inférieure à la date du jour ne doit plus être appliqué.

6.2.3 Théorie

Le paramétrage d'un cycle de vie passe par plusieurs éléments distincts :

  • le document de cycle de vie, il permet de paramétrer :
    • les mails,
    • les minuteurs,
    • les couleurs,
    • des éléments de profilages.
  • le fichier PHP de classe du cycle de vie, il permet de mettre en place :
    • du code métier qui peut être exécuté avant ou après un changement d'étape,
    • la liste des questions (ask) qui doivent être posée lors d'un changement d'état.

6.2.4 Paramétrage via le document

L'intégralité du paramétrage du document cycle de vie est détaillé dans la documentation.

6.2.4.1 Couleur

Vous allez commencer par spécifier les couleurs.

Connectez vous à l'interface d'administration : http://<nomDeDomaine>/dynacase/admin.php.

Allez dans l'application Gestion des documents>Explorateur de documents cliquez ensuite sur les cycles et sélectionnez le cycle Audit Audit.

Cycle de vie : Audit

Figure 107. Cycle de vie : Audit

Cliquez ensuite sur Modifier et sélectionnez l'onglet Étapes

Cycle de vie : Audit

Figure 108. Cycle de vie : Audit

Le document cycle de vie contient pour chaque étape et transition une série de champs qui permettent de spécifier son comportement. Vous allez modifier les entrées Couleur de chaque étape.

Même si l'attribution d'une couleur à chaque étape peut sembler accessoire, il reste important et facilite la prise en main par les utilisateurs de l'application que vous produisez.

Il est conseillé de suivre un code couleur cohérent et d'identifier les étapes similaires par des teintes similaires et de choisir des couleurs qui dans la culture des utilisateurs sont en cohérence avec la signification des étapes.

Pour votre cycle, il a été décidé en concertation avec les utilisateurs les couleurs suivantes :

  • Brouillon : #F2FFF9,
  • Planifié : #96EAFF,
  • Annulé : #BFD3D6,
  • Certifié : #8CFF8C,
  • Refusé : #FF8282.

Ce qui donne le cycle suivant :

Cycle de vie : Audit coloré

Figure 109. Cycle de vie : Audit coloré

Les couleurs des étapes se retrouvent dans les interfaces standard de Dynacase.

Interface standard : utilisation des couleurs d'étapes

Figure 110. Interface standard : utilisation des couleurs d'étapes

Attention, il faut exporter le document de cycle de vie et mettre à jour sa définition dans le fichier COGIP_AUDIT/COGIP_AUDIT_AUDIT__PARAM.csv pour que ce paramétrage soit valide en dehors du contexte de développement.

Vous pouvez trouver le document complété dans les sources.

6.2.4.2 Les mails

Ouvrez le document de cycle de vie en modification.

Dans votre spécification, il est indiqué que le mail doit être envoyé lors du démarrage de l'audit.

Sélectionnez l'onglet Transitions et cliquez le + à droite de Modèle de courriel Démarrer.

Ajout de mail : interface

Figure 111. Ajout de mail : interface

Une fenêtre d'édition de mail pré-paramétrée s'ouvre alors :

Ajout de mail : modification

Figure 112. Ajout de mail : modification

Cette fenêtre contient des données provenant de son formulaire de création (Famille et Famille Cycle). Vous pouvez paramétrer vos documents pour avoir le même comportement à l'aide de l'option creation.

Complétez les champs suivants :

  • Titre : Mail de démarrage d'audit,
  • Émetteur : Laissez ce champ vide dans ce cas c'est le mail de la personne effectuant le changement d'étape qui sera utilisé,
  • Destinataires : Vous allez indiquer les destinataires du mail
    • Type : Attribut Relation, Destinataire : caa_auditeur_auditeur (Auditeur),
    • Type : Attribut Relation, Destinataire : caa_resp_audit (Responsable d'audit),
    • Type : Attribut Relation, Destinataire : caa_site (Site audité).
  • Titre : L'audit [TITLE] vient de démarrer
  • Corps :
Bonjour,
 
L'audit [V_TITLE] va commencer le [V_CAA_DATE_DEBUT] et se terminer le [V_CAA_DATE_FIN].
 
Bien à vous,

Cliquez sur Sauvez.

Cliquez sur Autres > Propriétés et ajoutez le nom logique MAIL_DEMARRAGE.

Vous pouvez fermer la fenêtre de création et cliquez sur le bouton sauver du cycle de vie.

Une fois ce paramétrage fait lors du changement d'état en passant par la transition un mail est envoyé.

Il est aussi possible d'attacher des mails à une étape, dans ce cas le mail est envoyé à chaque passage dans l'étape, quelle que soit la transition utilisée pour parvenir dans cette étape.

Mail : exemple

Figure 113. Mail : exemple

Vous pouvez trouver le modèle de mail complété dans les sources.

6.2.4.3 Relance (timer)

Ouvrez le document de cycle de vie en modification.

Il existe plusieurs manière d'affecter les minuteurs, elles sont décrites dans la documentation.

Vous allez créer un minuteur simple, celui-ci est attaché au document lors du passage de la transition et détaché au prochain changement d'état.

Sélectionnez l'onglet Transitions et cliquez le + à droite de Minuteur Démarrer.

L'interface suivante est ouverte :

Minuteur création

Figure 114. Minuteur création

Remplissez les champs suivants :

  • Titre : Démarrer,
  • Délai (en jours) (première ligne) : 15

6.2.4.3.1 Création du mail associé

Cliquez sur le + dans la colonne Modèle de mail pour initier le modèle de mail.

Remplissez les champs de la manière suivante :

  • Titre : Relance rédaction,
  • Destinataires :
    • Type : Attribut relation, Destinataire : caa_resp_audit (Responsable d'audit),
    • Type : Attribut relation, Destinataire : caa_auditeur_auditeur (Auditeur).
  • Sujet : L'audit [TITLE] est toujours en rédaction,
  • Corps :
Bonjour,
 
L'audit [V_TITLE] est en rédaction depuis 15 jours.
 
Bien à vous,

Et cliquez sur Créer. Ajoutez ensuite un nom logique Autres > Propriétés : MAIL_REDACTION_RELANCE.

Minuteur mail

Figure 115. Minuteur mail

Fermez ensuite la fenêtre.

Sélectionnez la fenêtre contenant le minuteur en cours de paramétrage.

Cliquez sur les ... dans la colonne Modèle de mail et sélectionnez le mail Relance rédaction..

Cliquez sur Créer, le document se ferme.

Cliquez sur Sauver.

Minuteur

Figure 116. Minuteur

Vous allez utiliser le minuteur pour effectuer une relance par mail, mais celui-ci permet aussi :

  • de changer automatiquement d'état le document auquel est associé le document,
  • de lancer une méthode sur le document associé au cycle de vie.

Les différentes options pour paramétrer les règles de relance sont décrites dans la documentation.

6.2.4.3.2 Nom logique

Cliquez sur le lien Minuteur démarrer puis sur Autres > Propriétés et donnez le nom suivant MINUTEUR_DEMARRER.

Vous pouvez suivre les différents minuteurs en activité grâce à l'interface de suivi qui est dans l'admin Gestion des documents > Gestion des minuteurs.

6.2.4.4 Export du paramétrage

Vous allez maintenant exporter le paramétrage que vous avez mis en place. Vous avez plusieurs manières de faire cette action, soit :

  • vous sélectionnez les documents à exporter les uns après les autres,
  • vous exportez un des documents de familles associés au cycle de vie. Dans ce cas l'ensemble des documents de paramétrages de la famille sont exportés.

Vous allez exporter l'ensemble des documents en une seule fois.

Connectez vous à l'interface d'administration : http://<nomDeDomaine>/dynacase/admin.php.

Ouvrez la Gestion des documents > Accès aux documents systèmes, sélectionnez la famille Audit.

Famille Audit

Figure 117. Famille Audit

Cliquez sur Autres > Ajoutez au porte-documents, videz les documents non utiles du porte-documents, puis cliquez sur Outils > Exportation du dossier.

Sélectionnez Profil Avec les profils et cliquez sur Exporter.

Famille Audit

Figure 118. Famille Audit

Le fichier CSV qui vous est envoyé contient une partie du paramétrage de la famille, ce qui inclut le paramétrage du cycle de vie.

Ouvrez le fichier ./COGIP_AUDIT/COGIP_AUDIT_AUDIT__PARAM.csv.

Supprimez les documents que vous avez déjà dans le fichier de paramétrage, soit les :

  • PFAM,
  • PDOC,
  • et les lignes entre BEGIN et END.

Ajoutez les nouveaux documents au début du fichier __PARAM.csv, soit :

  • WDOC_COGIP_AUDIT_AUDIT_WFL : il contient la définition des couleurs et la référence au timer et au modèle de mail,
  • MAIL_DEMARRAGE : il contient le modèle de mail envoyé au démarrage de l'audit,
  • MINUTEUR_DEMARRER : il contient le timer ajouté lors du passage de la transition démarrer,
  • MAIL_REDACTION_RELANCE : il contient le modèle de mail envoyé en cas de relance.
Famille Audit

Figure 119. Famille Audit

Vous pouvez trouver le modèle de mail complété dans les sources.

6.2.5 Paramétrage via le code

L'intégralité du paramétrage du cycle de vie via le code est détaillé dans la documentation.

6.2.5.1 Contrôle au changement d'état

Les contrôle au changement d'état se font lors des transitions, il existe quatre hook de transition utilisés pour :

  • m0 : savoir si la transition est possible. Si le hook retourne un message la transition est annulée,
  • m1 : modifier le document avant la transition. Si des questions (ask) sont paramétrées elles sont présentées avant le m1. Si le hook retourne un message la transition est annulée,
  • m2 : modifier le document juste après le changement d'état Ce hook ne peut plus annuler le changement d'état,
  • m3 : modifier le document après le changement d'état et après les différents traitements automatiques de Dynacase.

6.2.5.1.1 m0 (pré-condition)

Vous allez utiliser le m0 pour vérifier que les fiches de non-conformités associées à l'audit sont bien toutes closes avant d'accorder ou de refuser la certification.

6.2.5.1.1.1 Définition de la fonction

Attention : Pour fonctionner cette méthode nécessite la présence du cycle de vie des FNC, que vous pouvez retrouver dans les sources complétées du chapitre précédent.

Ouvrez le fichier ./COGIP_AUDIT/COGIP_AUDIT_AUDIT__WFL.php et ajoutez la fonction suivante :

public function checkAssociatedFNC()
{
    //Search in the FNC
    $searchDoc = new \SearchDoc("", \Dcp\Family\Cogip_audit_fnc::familyName);
    //If you find one FNC it's enough (speed the search)
    $searchDoc->setSlice(1);
    $searchDoc->addFilter("%s = '%d'", \Dcp\AttributeIdentifiers\Cogip_audit_fnc::caf_audit, $this->doc->getPropertyValue("initid"));
    $searchDoc->addFilter("state <> '%s'", COGIP_AUDIT_FNC__WFL::e_clos);
    if ($searchDoc->onlyCount() > 0) {
        return _("coa:You have to close all FNC before change state");
    }
    return "";
}

Cette fonction effectue une recherche sur les FNC, elle a les spécificités suivantes :

  • elle recherche parmi les Fiches de non-conformités,
  • la recherche limite le nombre de résultat à 1, car un seul résultat suffit à indiquer que la transition ne doit pas être franchie,
  • la recherche utilise la fonction onlyCount. Cette fonction calcule uniquement le nombre de résultats et ne retourne pas les documents.

Vous pouvez trouver le fichier complété dans les sources.

6.2.5.1.1.2 Enregistrement de la fonction

Modifiez le tableau de déclaration des transitions :

public $transitions = array(
    self::t_brouillon__redaction => array("nr" => true),
    self::t_brouillon__annule => array("nr" => true),
    self::t_redaction__brouillon => array("nr" => true),
    self::t_redaction__certif => array("nr" => true, "m0" => "checkAssociatedFNC"),
    self::t_redaction__refus_certif => array("nr" => true, "m0" => "checkAssociatedFNC"),
);

Vous avez déclaré deux hooks de m0 qui seront déclenchés lors de l'affichage de la liste des états.

m0

Figure 120. m0

Dans l'exemple ci-dessus la transition est refusée et au survol un message est affiché à l'utilisateur.

Vous pouvez trouver le fichier complété dans les sources.

6.2.5.2 Question au changement d'état (ask)

Vous allez maintenant mettre en place le mécanisme de ask. Il permet de poser un ensemble de question via un petit formulaire lors d'un changement d'état.

6.2.5.2.1 Déclaration du ask

Les ask se composent de deux éléments :

  • un paramètre de famille qui va servir de conteneur à la question, ce paramètre permet de définir le type de donnée et une éventuelle valeur par défaut, etc.,
  • l'association d'un ou plusieurs paramètres à une transition.

Ouvrez le fichier ./COGIP_AUDIT/COGIP_AUDIT_AUDIT__WFL.csv et ajoutez les lignes suivantes :

Déclaration _ask_

Figure 121. Déclaration _ask_

Vous pouvez trouver le fichier complété dans les sources.

Vous avez déclaré deux paramètres, ceux-ci peuvent être utilisés comme ask. Vous allez mettre à jour la liste des transitions :

    public $transitions = array(
        self::t_brouillon__redaction => array(
            "nr" => true
        ),
        self::t_brouillon__annule => array(
            "nr" => true,
            "ask" => array("caaw_raison")
        ),
        self::t_redaction__brouillon => array(
            "nr" => true
        ),
        self::t_redaction__certif => array(
            "nr" => true,
            "m0" => "checkAssociatedFNC"
        ),
        self::t_redaction__refus_certif => array(
            "nr" => true,
            "m0" => "checkAssociatedFNC"
        )
    );

Vous avez ajouté un array sur la transition self::t_brouillon__annule, celui-ci est référencé par la clef ask et contient la liste des ask qui vont être présentés à l'utilisateur.

Lors du passage de la transition, le ask est présenté sous la forme d'une fenêtre posant la question :

Ask : démonstration

Figure 122. Ask : démonstration

Vous pouvez trouver le fichier complété dans les sources.

6.2.5.2.2 Utilisation du ASK

Les valeurs de retour du ASK peuvent être utilisées au m1, m2 et m3 et dans les modèles de mail.

Dans votre cas, vous allez utiliser le retour du ask pour le stocker dans l'historique du document.

Ajoutez la fonction suivante :

public function handleRaison()
{
    $this->doc->addHistoryEntry($this->getRawValue(\Dcp\AttributeIdentifiers\Cogip_audit_audit__wfl::caaw_raison));
}

et modifiez la liste des transitions :

public $transitions = array(
    self::t_brouillon__redaction => array("nr" => true),
    self::t_brouillon__annule => array("nr" => true,
        "ask" => array(\Dcp\AttributeIdentifiers\Cogip_audit_audit__wfl::caaw_raison),
        "m2" => "handleRaison"
    ),
    self::t_redaction__brouillon => array("nr" => true),
    self::t_redaction__certif => array("nr" => true, "m0" => "checkAssociatedFNC"),
    self::t_redaction__refus_certif => array("nr" => true, "m0" => "checkAssociatedFNC"),
);

Vous avez ajouté une fonction qui utilise et enregistre dans l'historique la valeur du ask et ensuite vous avez enregistré cette fonction au m2 de la transition self::t_brouillon__annule.

Ask : historique

Figure 123. Ask : historique

Une fois la transition de retour franchie, si l'utilisateur clique sur le menu historique, l'interface ci-dessus est présentée.

Vous pouvez trouver le fichier complété dans les sources.

6.2.6 Mise à jour des contrôle de cohérence

Vous allez maintenant modifier le contrôle de cohérence que vous avez mis en place sur les dates pour que le contrôle ne se déclenche que lorsque la fiche est à l'état Brouillon.

Ouvrez le fichier ./COGIP_AUDIT/COGIP_AUDIT_AUDIT__CLASS.php et modifiez la fonction checkDate pour qu'elle soit identique à :

/**
 * Check if the end date is in the past
 *
 * @return string
 */
public function checkEndDate()
{
    $err = "";
    $date = $this->getAttributeValue(MyAttributes::caa_date_fin);
    if (!empty($date)
        && $this->getPropertyValue("state") === COGIP_AUDIT_AUDIT__WFL::e_brouillon
        && $this->getAttributeValue(MyAttributes::caa_date_fin) < new \DateTime()) {
        $err = ___("The end date of the audit is in the past", "COGIP_AUDIT:AUDIT");
    }
    return $err;
}

Vous avez ajouté une condition pour que la contrainte ne se déclenche qu'à l'état Brouillon.

Vous pouvez trouver le fichier complété dans les sources.

6.2.7 Mise en place des modifications

Vous allez maintenant déployer vos modifications :

<devtool> deploy -s . --url http://admin:anakeen@<nomDeDomaine>/dynacase-control/ --port <port> --context dynacase

Vous pouvez ensuite consulter les modifications apportées via l'application http://<nomDeDomaine>/dynacase/.

6.2.8 Conclusion

Vous connaissez les principales manipulations que vous pouvez effectuer avec un cycle de vie, que ça soit à l'aide du document cycle de vie ou de la classe de la famille cycle de vie.

Ces paramétrages permettent de créer simplement des cycles complets et riches et de guider les utilisateurs.

6.2.9 Voir aussi

×