UN EXEMPLE DE PERSONNALISATION DU WORKFLOW DANS PLONE
Objectif visé
Dans cet exemple, on veut atteindre une politique de publication plus échelonnée qu'avec le Workflow par défaut de Plone. Il faudrait avoir une pré-lecture des contenus soumis à la publication, afin de respecter une hierarchie peut-être pré-existante dans une entreprise.
Schéma du nouveau workflow
On note donc qu'il est nécessaire de :
- Créer un nouveau rôle dans le site Plone
- Créer un nouveau workflow
- Créer un nouvel état appelé "prepending" dans ce nouveau workflow
- Créer une transition appelée "prepublish" dans ce nouveau workflow
- Créer un moyen d'indiquer aux utilisateurs ayant le nouveau rôle qu'ils ont des contenus à relire
- Affecter ce nouveau workflow à des types de contenus
Un nouveau rôle dans le site Plone
Le nouveau rôle sera celui du pré-relecteur (reviewerun). Cet utilisateur fera donc un premier tri avant de laisser passer le document au relecteur final (reviewer).Pour ce faire :
- Se rendre à la racine du site Plone considéré,
- puis sur l'onglet "Security",
- en bas de la liste des permissions se trouve le bouton "Add Role", entrer "Rewiewerun" dans le champ et cliquer sur le bouton "Add Role"
- et donner à ce rôle les mêmes permissions que le rôle "Reviewer"
Créer et configurer ce nouveau workflow
- Se rendre à la racine du site Plone considéré
- Puis sur l'objet "portal_workflow"
- Puis sur l'onglet "Contents"
- Cliquer sur le bouton "Add workflow"
- Entrer un nom à ce nouveau workflow "review_workflow" par exemple
- Comme type de workflow, choisir "default_workflow (Web-configurable workflow [Revision 2])" et cliquer sur Add.
- Entrer dans ce workflow pour le configurer.
Configurer ce nouveau workflow
Ajouter une permission pour les relecteurs
- Entrer dans ce workflow pour le configurer,
- Se rendre sur l'onglet "Permission"
- Ajouter une nouvelle permission "Review portal content" en cliquant sur le bouton "Add"
Ajouter l'état: "prepending"
- Se rendre à la racine du workflow intitulé "review_workflow"
- Se rendre sur l'onglet "States"
- Ajouter un nouvel état appelé "prepending" en cliquant sur le bouton "Add a state"
- Cliquer sur ce nouvel état pour le configurer
- Ajouter comme transitions possibles : hide, prepublish, reject, retract
- Sauvegarder les changements
Ajouter la transition : "prepublish"
- Se rendre à la racine du workflow intitulé "review_workflow"
- Se rendre sur l'onglet "Transition"
- Ajouter une nouvelle transition appelée "Prepublish" en cliquant sur le bouton "Add a transition"
- Cliquer sur cette nouvelle transition pour la configurer
- Entrer comme Titre : "Reviewerun prepublishes content"
- Dans le champs "Destination state" choisir "pending"
- Conserver le "Trigger type" : "initiated by user action"
- Pour les "Guard", entrer seulement une restriction par rôle et non par permission : Role(s) : Reviewerun
- Comme nom pour l'action (name formatted) entrer "Prepublish"
- Comme page après validation (url formatted) entrer la page de visualisation de l'objet "%(content_url)s
- La catégorie reste "workflow"
Modifier les autres transitions
La transition "submit" :
- Se rendre à la racine du workflow intitulé "review_workflow"
- Se rendre sur l'onglet "Transition"
- Se rendre sur la transition "submit",
- Comme vu dans notre schéma, submit est une transition qui passe de l'état "Visible" à l'état "Pending". Ici, il faut modifier le champ "Destination state" pour avoir "prepending" comme état d'arrivée, puis sauvegarder les changements.
La transition "publish" :
- Se rendre à la racine du workflow intitulé "review_workflow"
- Se rendre sur l'onglet "Transition"
- Se rendre sur la transition "publish"
- Conserver tous les paramètres exceptés ceux pour les "Guard", entrer seulement une restriction par rôle et non par permission : "Role(s) : Reviewer". (donc effacer dans le champ permission "Review portal content")
Prévenir les gens ayant le rôle de Reviewerun de contenus en attente de validation
Pour prévenir les utilisateurs ayant comme rôle "Reviewerun" de contenus en attente de validation de leur part. Il faut donc ajouter une liste de tâches à accomplir, visible seulement par les utilisateurs ayant le rôle de "Reviewerun", qui s'incrémentera automatiquement en fonction du nombre de contenus à revoir (= dans l'état "prepending").
- Se rendre à la racine du workflow intitulé "review_workflow"
- Se rendre sur l'onglet "Worklists"
- Ajouter une liste de tâches à accomplir (add a worklist), la nommer "reviewerun_queue"
- Remplir le champ "review_state" par "prepending" (le nom de l'état que l'on veut voir listé)
- Pour le champ "Name (formatted)", entrer "Prepending (%(count)d)"
- Pour le champ "URL (formatted)", entrer "%(portal_url)s/search?review_state=prepending"
- L'indication de catégorie (category) reste "global"
- Dans l'espace "Guard", le champ "Rôle(s)" est "Reviewerun"
- Sauvegarder les changements
Par la même occasion, changer dans l'espace Guard de la worklist intitulée "reviewer_queue" le champ "Rôle(s)" en "Reviewer" (au cas où ce soit le champ "Permission" qui soit rempli avec "Review portal content".
Affecter ce nouveau workflow à des types de contenus
- Se rendre à la racine du site Plone
- Se rendre sur l'objet "portal_workflow"
- Dans l'onglet "Workflows" considérer les types de contenus dont dispose l'objet "Plone site"
Changer le workflow pour un type de contenu (excepté folder qui a un workflow particulier)
- Modifier le chanp qui porte le nom du type de contenu "Document" par exemple qui contient "(Default)" en "review_workflow"
- Appliquer les changements via le bouton "Change"
Changer le workflow pour tous les types de contenus (excepté folder qui a un workflow particulier)
- Modifier le chanp intitulé "(Default)" qui contient "plone_workflow" en "review_workflow"
- Appliquer les changements via le bouton "Change"
Vérification
Pour tester ce nouveau schéma de workflow on va supposer qu'il a été affecté au type de contenu "Document".
- Se rendre à la racine du site Plone
- Se rendre sur l'objet "acl_users"
- Ajouter 3 utilisateurs : user1 qui va être membre, user2 qui va être reviewerun, user3 qui va être reviewer
- Etape 1 : user1 s'identifie et propose un document à la publication puis se déconnecte du portail Plone
- Etape 2 : user2 s'identifie et voit dans sa "personnal_bar" (appelée dans le header) qu'un lien appelé "Prepending (1)" est apparu. Il clique sur ce lien et arrive sur une page donnant la liste des contenus dans l'état "prepending". Il voit le document de user1 et va pouvoir le rejeter (reject) ou le prépublier (prepublish). Il choisit de prépublier le document.
- Etape 3 : user3 s'identifie et dans sa "personnal_bar" se trouve sa liste de tâches de relecture finale (contenus dans l'état "pending") il trouve le document de user1 prépublié par user2.