Le BPM ajoute des nouvelles définitions de noeuds JCR. Si vous installez le plugin BPM dans une application Ametys qui contient déjà des données, supprimez le fichier AMETYS_HOME/data/repository/repository/nodetypes/custom_nodetypes.xml avant de redémarrer le serveur.
Intégration technique
Création de modèles de workflow
Pour pouvoir créer des workflows pour vos processus, il faut d'abord définir des définitions de worflow (ou modèles).
Les définitions de workflow BPM sont des fichiers XML de workflow au sens habituel Ametys, avec la liste des états, des transitions et des variables. Les variables permettent de paramétrer le workflow, par exemple pour définir les personnes affectées aux transitions.
Les fichiers de workflow utilisés par le module BPM doivent être déclarés avec un nom du workflow qui doit être préfixé par "bpm-". Voir la page Paramètrage du workflow
Déclaration de variables
Le plugin BPM permet de définir des variables dans les fichiers de définition de workflows.
Les variables se définissent dans la section <registers>, à la racine de la balise <workflow>. Elles sont de type="avalon", avec n'importe quel "variable-name" unique dans le fichier.
Exemple de variables
Oups !
La copie dans le presse papier a échouée. Ouvrez le code et copier-le manuellement.
type: obligatoire, défini le type de la variable. "user" est probablement le type le plus couramment utilisé, même si un type "string" ou "date" est tout à fait valable
label, description: obligatoires, clé i18n représentant le label et la description affichée dans le CMS lors de la création d'un workflow, pour savoir à quoi correspond la variable.
variableId: obligatoire, utiliser comme identifiant pour stocker la valeur de la variable. Doit être unique parmi toutes les variables du workflow. Une bonne pratique consiste à utiliser la même valeur pour le "variable-name" et le "variableId".
multiple: falcultatif, "false" par défaut, permet d'autoriser des valeurs multiples
mandatory: facultatif, "false" par défaut, la valeur "true" permet de forcer la variable à être remplie lors de la création du workflow
Utilisation des variables
Les variables définies peuvent ensuite être utilisées dans les actions du workflow au format: ${variable-name}.
Par exemple, pour autoriser une transition aux seuls utilisateurs définis dans la variable ${FirstUsersForValidation} on écrira :
Oups !
La copie dans le presse papier a échouée. Ouvrez le code et copier-le manuellement.
Pour lancer le processus, une action d'initialisation id=1 doit nécessairement être présente dans la section <initial-actions>
Voici ci-dessous un exemple d'action d'initialisation. Dans cet exemple, un mail sera envoyé suite à la création du processus aux personnes définies dans les variables ${allowedRepresentatives} et ${allowExperts}
Oups !
La copie dans le presse papier a échouée. Ouvrez le code et copier-le manuellement.
L'action avec id=2 est réservée à la modification du processus (pour modifier les pièces jointes par exemple). Elle doit obligatoirement contenir la pre-functionorg.ametys.plugins.bpm.process.EditProcessFunction
L'action 2 est facultative, si vous ne voulez pas que les processus soient modifiables après création.
Pour permettre la modification d'un processus quelque soit soit état d'avancement, pour pouvez créer une action commune comme dans l'exemple ci-après. Dans cet exemple, la modification d'un processus ne modifie pas son état courant, le processus reste dans l'état actuel.
Oups !
La copie dans le presse papier a échouée. Ouvrez le code et copier-le manuellement.
Un processus est terminé lorsqu'il arrive dans son état final. Un état final est un état (step) qui ne contient aucune action possible.
Un processus terminé peut être supprimé par son créateur..
Assignation de personnes aux transitions
Pour autoriser une transition (action de workflow) à une ou plusieurs personnes définies par une variable, vous devez utiliser la condition org.ametys.plugins.bpm.workflowsdef.CheckAllowedUsersCondition
Cette condition vérifie que l'utilisateur connecté est l'un des utilisateurs autorisés par la variable (ici $allowExperts). Si ce n'est pas le cas, l'action ne sera pas disponible pour l'utilisateur courant.
Oups !
La copie dans le presse papier a échouée. Ouvrez le code et copier-le manuellement.
Assignation du créateur du processus aux transitions
Pour autoriser une transition (action de workflow) au créateur du processus, vous devez utiliser la condition org.ametys.plugins.bpm.workflowsdef.CheckProcessCreatorCondition
Cette condition vérifie que l'utilisateur connecté est le créateur du processus. Si ce n'est pas le cas, l'action ne sera pas disponible pour l'utilisateur courant.
Oups !
La copie dans le presse papier a échouée. Ouvrez le code et copier-le manuellement.
users : permet de passer une variable contenant un ou plusieurs utilisateurs destinataires de la notification par mail (facultatif)
sendToCreator : true ou false (false par défaut) Si "true" le créateur du processus sera destinataire de la notification par mail (facultatif)
subjectKey : clé 18n (paramétrée) pour le titre du message envoyé. Les paramètres possibles sont :
0 : nom du processus
bodyKey: clé 18n (paramétrée) pour le contenu du message envoyé. Les paramètres possibles sont :
0 : utilisateur responsable de la transition (le créateur si le processus vient d'être créé)
1: créateur du processus
2 : nom du processus
3 : lien vers la page de consultation du processus
Exemple de clé i18n pour l'envoi de mail
Oups !
La copie dans le presse papier a échouée. Ouvrez le code et copier-le manuellement.
<message key="WORKFLOW_BPM_MAIL_BODY_ACTION_DESC">{0} a effectué une action sur le processus {2}. Pour vous rendre sur la page du processus, cliquez ou copiez-collez le lien ci-après {3}.</message>
<message key="WORKFLOW_BPM_MAIL_BODY_ACTION_DESC">{0} a effectué une action sur le processus {2}. Pour vous rendre sur la page du processus, cliquez ou copiez-collez le lien ci-après {3}.</message>
<message key="WORKFLOW_BPM_MAIL_BODY_ACTION_DESC">{0} a effectué une action sur le processus {2}. Pour vous rendre sur la page du processus, cliquez ou copiez-collez le lien ci-après {3}.</message>
Mise à jour de l'état de workflow courant
Chaque action (transition) doit contenir la post-fonction org.ametys.plugins.bpm.workflow.SetProcessCurrentStepId
Cette fonction sauvegarde l'état courant sur le processus lui-même.
Oups !
La copie dans le presse papier a échouée. Ouvrez le code et copier-le manuellement.
Cet exemple correspond à un processus qui nécessite une double validation (par un expert et un élu). L'ordre de validation n'a pas d'importance, il a donc 2 chemins possibles pour terminer le processus.
Dans l'exemple donné:
Les experts et les élus reçoivent une notification par email dès la création du processus.
Lors de la validation par un expert, les élus reçoivent une notification par email.
Lors de la validation par un élu, les experts reçoivent une notification par email.
Le processus peut être modifié à tout moment de son avancement par le créateur lui-même.
Vous pouvez télécharger le plugin de définition des clés i18n correspondant à ce workflow ici : default-bpm-workflow.zip
Intégration graphique
Visualisation d'un processus
Pour visualiser un processus, le gabarit de page utilisé est déterminé suivant l'ordre suivant :
utilisation du gabarit "bpm-process" si il existe dans la charte courante
sinon, utilisation du gabarit de la page étiquetée "Création de processus" si elle existe
sinon, utilisation du gabarit "page" si il existe dans la charte courante
sinon utilisation de 1er gabarit trouvé.
Pour surcharger le rendu d'un processus, créez dans votre charte le fichier skins/SKIN_NAME/services/bpm/pages/process.xsl
Ce fichier doit contenir à minima :
Oups !
La copie dans le presse papier a échouée. Ouvrez le code et copier-le manuellement.