Comment paramétrer le cycle de vie - Gérer le comportement du modèle
Prérequis
Afin de pouvoir suivre ce guide, il faut préalablement avoir vu :
Comment procéder ?
Recommandation
Si vous n’êtes pas familier la façon dont se déroules les transitions
, il est fortement recommandé de lire la
documentation associée
disponible ici
Il en est de même pour la classe de comportement d’un modèle de workflow
, il est fortement recommandé de lire la
documentation associée
disponible ici
Nous allons faire en sorte de n’autoriser la transition que pour les utilisateurs de la direction
Afin de gérer le comportement de ce cycle de vie, rendons-nous dans le fichier suivant
src/vendor/<vendorName>/<moduleName>/SmartStructures/Plat/PlatWorkflows/WfamPlatWorkflow/WfamPlatBehavior.php
Astuce
Pensez à générer les stubs. Cela a pour but d’extraire les constantes des différents fichiers de configuration .xml
des SmartStructures que vous possédez. Cela apportera ici une complétion sur les Smart Fields, paramètres de Smart
Structure, étapes et transitions des cycles de vie, aussi bien dans le PHP que dans le JavaScript. Pour cela :
npx @anakeen/anakeen-cli generateStubs
<?php
namespace Cogip\Restauratec\SmartStructures\Plat\PlatWorkflows\WfamPlatWorkflow;
use Anakeen\Core\ContextManager;
use DocHisto;
/**
* Workflow Behavior of WFAM_PLAT elements
*/
class WfamPlatBehavior extends \SmartStructure\Wdoc
{
public function __construct($dbaccess = '', $id = '', $res = '', $dbid = 0)
{
parent::__construct($dbaccess, $id, $res, $dbid);
$this->useWorkflowGraph(__DIR__ . "/WfamPlatGraph.xml");
$this->getTransition(WfamPlatGraphConstant::transition_t_plat_e1_e2)
->setM0(function () {
$err = "";
// Récupère la liste des rôles que l’utilisateur connecté possède
$userRoles = ContextManager::getCurrentUser()->getRoleList();
$isAuthorized = false;
foreach ($userRoles as $role) {
// Si l’utilisateur possède le rôle ci-dessous, il est autorisé à effectuer la transition ...
if ($role->login == "role_direction") {
$isAuthorized = true;
}
}
// ... sinon cette dernière lui est bloquée
if (!$isAuthorized) {
$err = "Vous n’êtes pas autorisé à effectuer cette transition";
}
return $err;
})
->setM2(function () {
// Ajoute un message à l’historique du Smart Element ayant subit cette transition
return $this->doc->addHistoryEntry("Mon message personnalisé", DocHisto::MESSAGE);
});
}
}
Attention
Pensez à effectuer une réinstallation afin que l’application prenne en compte les modifications effectuées :
npx @anakeen/anakeen-cli deploy -c http://localhost:8080/control -s . -u admin -p anakeen --reinstall
Résultat / Vérification
Informations
Si l’on veut vérifier cela, il faut que notre interface utilisateur soit initialisée. Ça tombe bien, un guide traitant ce sujet est disponible ici.
Accédons à notre application afin de vérifier si nos restrictions/modifications ont bien été prises en compte
Précondition - m0
Dans le cas où l’utilisateur n’a pas le rôle requis, il ne pourra pas effectuer la transition comme vous pouvez le voir ci-dessous :
Post-traitement - m2
Si l’utilisateur passe la transition, nous ajoutons une entrée à l’historique du Smart Element en cours de
modification.
Cela est consultable en tant qu’administrateur via le menu du Smart Element, bouton Système
puis
Historique
.
Une fois la fenêtre ouverte, lorsque l’on clique sur le bouton Montrer les messages
, nous pouvons retrouver ce qui est
présent dans notre méthode associée à notre m2
:
Et ensuite ?
Comment paramétrer le cycle de vie - Droits d’accès aux différentes transition