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

Figure 107. Cycle de vie : Audit
Cliquez ensuite sur Modifier
et sélectionnez l'onglet Étapes

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 :

Figure 109. Cycle de vie : Audit coloré
Les couleurs des étapes se retrouvent dans les interfaces standard de Dynacase.

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
.

Figure 111. Ajout de mail : interface
Une fenêtre d'édition de mail pré-paramétrée s'ouvre alors :

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é)
.
- Type : Attribut Relation, Destinataire :
- 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.

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 :

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)
.
- Type :
- 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
.

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
.

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
.

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
.

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.

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.

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 :

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 :

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
.

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.