Académique Documents
Professionnel Documents
Culture Documents
par Landry KOUAM (Centre de Comptence Alfresco/jBPM, Koossery Technology) Bak Jc. BAKENEGHE (Software Coordinator, Koossery Technology)
Date de publication : 07 mai 2009 Dernire mise jour :
Dans cet article, nous allons voir comment la plate-forme Alfresco combine la plate-forme jBoss BPM permet d'implmenter de faon aise un exemple d'application qui combine la fois les points suivants: la gestion lectronique de documents, la gestion de contenu et les workflow BPM.
Dans le cadre des projets GED/BPM que ses clients lui confient, Koossery Technology s'appuie sur les standards suivants : - Alfresco pour ce qui est de l'implmentation de la GED/ECM - jBoss BPM pour ce qui est de l'implmentation des workflow BPM - jBoss BPEL pour ce qui est de l'orchestration de processus - et enfin l'ESB Mule ESB pour l'intgration de processus htrognes. Cet article traite d'un exemple d'implmentation d'un workflow avanc. Dans la partie I, nous prsentons les frameworks (Alfresco, jBoss BPM, etc..) qui ont t utiliss dans ce tutorial. Dans la partie II nous prsentons un rsum des spcifications du workflow. Dans la partie III nous parlons de la modlisation jBPM du workflow. Dans la partie IV nous parlons de l'implmentation dans Alfresco. I - Frameworks standards utiliss : Alfresco, JBoss BPM, Mule ESB........................................................................ 3 I-1 - Implmentation GED/ECM : Alfresco............................................................................................................. 3 I-2 - Moteur de workflow BPM: jBoss BPM........................................................................................................... 4 I-3 - Intgration de processus htrognes : Mule ESB........................................................................................4 II - Rsum des spcifications du workflow d'approbation des dossiers de crdit..................................................... 4 III - Modlisation (workflow) jBPM du processus mtier............................................................................................. 5 III-1 - Diagramme du Workflow.............................................................................................................................. 5 III-1-1 - Node "Credit-receipt"........................................................................................................................... 6 III-1-2 - Node "Quottation"................................................................................................................................ 7 III-1-3 - Noeud Contact-client........................................................................................................................... 8 III-1-4 - Node "Approbation"..............................................................................................................................9 III-1-5 - Node "Contract-preparation"................................................................................................................ 9 III-1-6 - Node "Prepare-contract".................................................................................................................... 10 III-1-7 - Node "Formalize-disbursement"........................................................................................................ 10 III-1-8 - Node "Sign-contract-join"................................................................................................................... 10 III-1-9 - Node "Check-etablishment"............................................................................................................... 11 III-1-10 - Node "Computer-approbation"......................................................................................................... 11 III-1-11 - Node "Client-info"............................................................................................................................. 11 III-2 - Assignations des tches.............................................................................................................................12 IV - Implmentation de la solution dans Alfresco..................................................................................................... 14 IV-1 - Modlisation des types de contenu ('Content Type model')...................................................................... 15 IV-1-1 - Exemple de modlisation (Content Type model) de la Fiche de demande de crdit........................ 17 IV-2 - Modlisation des tches du Workflow (Task Content Model).................................................................... 18 IV-2-1 - Exemple de modlisation (Task Content Model) de la tche "dispatch-application"......................... 19 IV-3 - Implmentation du management des tches dans la plateforme Alfresco................................................ 19 IV-3-1 - Configuration du Client Web pour l'affichage des tches................................................................. 19 IV-3-2 - Internationalisation I18N.................................................................................................................... 20 IV-3-3 - Ralisation d'un dashlet pour l'affichage des tches relatives aux crdits dans le tableau de bord des utilisateurs................................................................................................................................................ 20 IV-4 - Implmentation des fonctionnalits ralises au sein du Workflow...........................................................22 IV-4-1 - Implmentation de la fonctionnalit de Numrisation et de l'Archivage............................................ 22 IV-4-2 - Implmentation de la fonctionnalit de cration des fiches et des rapports......................................23 IV-4-3 - Implmentation de la cration d'un garant........................................................................................24 IV-4-4 - Implmentation de la cration d'une garantie................................................................................... 25 IV-4-5 - Implmentation de la cration d'un document d'identification........................................................... 25 IV-4-6 - Implmentation de la cration d'un contrat....................................................................................... 25 V - Conclusion........................................................................................................................................................... 26 VI - Remerciements................................................................................................................................................... 26
Tutorial Alfresco - jBPM: exemple d'implmentation d'un workflow avanc par Landry KOUAM (Centre de Comptence Alfresco/jBPM, Koossery Technology) Bak Jc. BAKENEGHE (Software Coordinator, Koossery Technology)
http://koossery-tech.developpez.com/tutoriels/java/alfresco-jBPM/20090503/
-2-
Tutorial Alfresco - jBPM: exemple d'implmentation d'un workflow avanc par Landry KOUAM (Centre de Comptence Alfresco/jBPM, Koossery Technology) Bak Jc. BAKENEGHE (Software Coordinator, Koossery Technology)
Les frameworks standards utiliss pour les dveloppements au forfait GED/ECM/BPM chez Koossery Technology sont :
Figure 1 : Frameworks utiliss dans le Centre de Comptence Alfresco/jBPM de Koossery Tech' Dans les paragraphes ci-dessous nous allons brivement parcourir chacun de ces frameworks ou outils.
http://koossery-tech.developpez.com/tutoriels/java/alfresco-jBPM/20090503/
-3-
Tutorial Alfresco - jBPM: exemple d'implmentation d'un workflow avanc par Landry KOUAM (Centre de Comptence Alfresco/jBPM, Koossery Technology) Bak Jc. BAKENEGHE (Software Coordinator, Koossery Technology)
BPM (Business Process Management) est l'approche consistant modliser les processus mtiers de l'entreprise. Le but tant d'aboutir une meilleure vue globale de l'ensemble des processus et de leurs interactions afin d'tre en mesure de les optimiser et de les automatiser. Koossery Technology s'appuie sur la plate-forme jBoss BPM pour : - la modlisation des processus (utilisation de l'outil jBoss BPM jPDL) - l'orchestration des tches l'intrieur d'un processus - l'orchestration de processus (jBoss BPEL) Un des aspects important du BPM est le monitoring des processus (BAM Business Activity Monitoring). Il s'agit d'analyser les logs d'excution des process afin d'obtenir des statistiques d'information propos du processus mtier (exemple : combien de temps en moyenne met chaque tche du process, etc..). La console web jBPM est un outil standard pour faire du BAM. C'est une console d'administration et de monitoring qui permet d'inspecter et de manipuler le runtime des instances des processus jBPM.
- Mise en oeuvre Alfresco/jBPM : implmentation d'un workflow d'approbation des dossiers de crdit
Dans ce chapitre nous allons voir comment s'appuyer sur Alfresco et jBPM pour implmenter un workflow avanc d'approbation des dossiers de crdit. Dans les paragraphes qui suivent, nous allons tour tour prsenter : - un rsum des spcifications du workflow - la modlisation BPM du processus mtier qui en dcoule - et enfin les oprations mises en oeuvre pour son implmentation
http://koossery-tech.developpez.com/tutoriels/java/alfresco-jBPM/20090503/
-4-
5. Le Comit d'Octroi de Crdit reoit le dossier et l'tudie. Un avis est donn au dossier: le dossier est soit approuv, soit rejet. Lorsque le dossier est approuv un rapport de synthse est labor et transmis simultanment au service juridique et la cellule en charge de formaliser les dcaissements de fonds. Dans la suite on suppose que le dossier est approuv et qu'un rapport de synthse est tabli. 6. Le service juridique reoit le rapport de synthse et sur la base de ce rapport, il s'occupe de la prparation du contrat stipulant les engagements des deux partis avec des prcisions d'autres clauses cls (pnalits, garanties, etc..). S'il y a nantissement sur les garantes la procdure recommence (on retourne l'tape 5). La cellule en charge de formaliser les dcaissements de fonds quant elle commence formaliser le dcaissement des fonds sur la base du rapport reu. 7. Une fois le contrat labor et le traitement des garanties achev, l'organisme de Crdit contacte le client pour signature dudit contrat. 8. Le dossier est alors transmis la Direction Administrative et Financire pour le dblocage des fonds. (signature des chques, des ordres de virements, etc..). 9. Le dblocage du crdit peut tre fait soit par chque l'ordre du client bnficiaire du crdit, soit par virement du compte de l'organisme de crdit au compte du client bnficiaire du crdit. Remarque : - A chaque passage du dossier dans une tape, la date et la signature doivent tre portes sur le dossier pour mesures de scurit (qui a fait quoi et quand).
Tutorial Alfresco - jBPM: exemple d'implmentation d'un workflow avanc par Landry KOUAM (Centre de Comptence Alfresco/jBPM, Koossery Technology) Bak Jc. BAKENEGHE (Software Coordinator, Koossery Technology)
http://koossery-tech.developpez.com/tutoriels/java/alfresco-jBPM/20090503/
-5-
Tutorial Alfresco - jBPM: exemple d'implmentation d'un workflow avanc par Landry KOUAM (Centre de Comptence Alfresco/jBPM, Koossery Technology) Bak Jc. BAKENEGHE (Software Coordinator, Koossery Technology)
Figure 2 : Process design du Workflow d'approbation du crdit Dans la figure, 2 ci-dessus, on distingue plusieurs noeuds d'excution du processus BPM. Nous allons les parcourir :
http://koossery-tech.developpez.com/tutoriels/java/alfresco-jBPM/20090503/
Tutorial Alfresco - jBPM: exemple d'implmentation d'un workflow avanc par Landry KOUAM (Centre de Comptence Alfresco/jBPM, Koossery Technology) Bak Jc. BAKENEGHE (Software Coordinator, Koossery Technology)
</event>
<expression>people.getGroup('GROUP_coc');</expression> </script> </action> <action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript"> <script> <variable name="ac_codirPool" access="write"/> <expression>people.getGroup('GROUP_codir');</expression> </script> </action> <action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript"> <script> <variable name="ac_dafPool" access="write"/> <expression>people.getGroup('GROUP_daf');</expression> </script> </action> <action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript"> <script> <variable name="ac_directionPool" access="write"/> <expression>people.getGroup('GROUP_direction');</expression> </script> </action> <action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript"> <script> <variable name="ac_financialServicePool" access="write"/> <expression>people.getGroup('GROUP_financial-service');</expression> </script> </action> <action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript"> <script> <variable name="ac_judicialServicePool" access="write"/> <expression>people.getGroup('GROUP_judicial-service');</expression> </script> </action>
</start-state>
Le moteur jBPM nous permet d'excuter certaines actions suite des vnements sur les noeuds comme l'entre ou la sortie d'un noeud. Dans le cas de la figure 3, une srie d'actions seront excutes ds que le jeton d'excution quitte le noeud (<event type="node-leave">). La principale action qui doit tre excute ds la sortie du noeud est l'Action Handler d'Alfresco AlfrescoJavaScript. Cette action permet l'excution du code JavaScript (ct serveur grce au moteur Rhino) prsent dans le fichier jPDL du Workflow. Nous configurons aussi certaines variables globales : - ac_cocPool: reprsente le pool d'acteurs membres du comit d'octroi de crdit; - ac_codirPool: reprsente le pool d'acteurs membres du comit de direction; - ac_dafPool: reprsente le pool d'acteurs membres de la direction des affaires financires ; - ac_directionPool: reprsente le pool d'acteur membres de la direction; - ac_financialServicePool: reprsente le pool d'acteurs du service des finances; - ac_judicialServicePool: reprsente le pool d'acteurs membres du service juridique. Dans ce noeud, l'agent du courrier doit envoyer la demande de crdit au service du crdit : cet envoi est matrialis par la transition nomme "dispatch".
http://koossery-tech.developpez.com/tutoriels/java/alfresco-jBPM/20090503/
-7-
Tutorial Alfresco - jBPM: exemple d'implmentation d'un workflow avanc par Landry KOUAM (Centre de Comptence Alfresco/jBPM, Koossery Technology) Bak Jc. BAKENEGHE (Software Coordinator, Koossery Technology)
<task-node name="Quottation"> <task name="ac:quottation" swimlane="loan-service"> <event type="task-create"> <!-- Set the due date and the priority of the task --> <script> if (bpm_dueDate != void) taskInstance.dueDate = bpm_dueDate; if (bpm_priority != void) taskInstance.priority = bpm_priority; </script> </event> <event type="task-assign"> <!-- Before the task is assign, send an email to the initiator --> <action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript"> <script> if(ac_notifyMe) { var mail = actions.create("mail"); mail.parameters.to = initiator.properties["cm:email"]; mail.parameters.subject = "Loan approbation process "; mail.parameters.from = bpm_assignee.properties["cm:email"]; mail.parameters.text = "Loan application send successfully."; mail.execute(bpm_package); } </script> </action> </event> </task> <transition to="Contact-client" name="send"></transition> </task-node>
Dans le noeud de la figure 4, on positionne une date d'chance (bpm_dueDate) et une priorit par dfaut (bpm_priority) ds l'instanciation de la tche (<event type="task-create"> ). Ds que le Responsable de Crdit assigne un agent de crdit pour l'tude de dossier (<event type="task-assign"> ), une action est excute : grce JavaScript, un mail de notification va tre envoy au Responsable du crdit pour le confirmer l'assignation de la tche l'agent du crdit qui il a quott le dossier. La transition nomme "send" permet de dplacer l'excution du Workflow au noeud "Contact-client".
http://koossery-tech.developpez.com/tutoriels/java/alfresco-jBPM/20090503/
-8-
Tutorial Alfresco - jBPM: exemple d'implmentation d'un workflow avanc par Landry KOUAM (Centre de Comptence Alfresco/jBPM, Koossery Technology) Bak Jc. BAKENEGHE (Software Coordinator, Koossery Technology)
</script> </action> </event> </task> <transition to="Client-info" name="reject"></transition> <transition to="Approbation" name="approbate"></transition> </task-node>
http://koossery-tech.developpez.com/tutoriels/java/alfresco-jBPM/20090503/
-9-
Tutorial Alfresco - jBPM: exemple d'implmentation d'un workflow avanc par Landry KOUAM (Centre de Comptence Alfresco/jBPM, Koossery Technology) Bak Jc. BAKENEGHE (Software Coordinator, Koossery Technology)
<fork name="Contract-preparation"> <description> The report is forwarded to the judicial department that handles the preparation of the contract stipulating the commitments of both parties with details on other key clauses in case the appropriation is approved. (Penalties, guarantees, etc ...). </description> <transition to="Prepare-contract" name="prepareContract"></transition> <transition to="Formalize-disbursement"name="formalizeDisbursement"></transition> </fork>
Dans la figure 7, travers les deux transitions nommes "prepareContract" et "formalizeDisbursement ", le moteur du Workflow va lancer simultanment les tches des noeuds "Prepare-contract" et "Formalize-disbursement" qui permettront respectivement au service juridique de prparer le contrat et la cellule en charge de formaliser le dcaissement de formaliser ledit dcaissement.
Une fois que ces deux tches sont ralises, l'excution du Workflow peut continuer au noeud Join "Sign-contractjoin".
http://koossery-tech.developpez.com/tutoriels/java/alfresco-jBPM/20090503/
- 10 -
Le noeud de signature du contrat comporte une tche ralise par le comit de direction. Un membre du comit de direction invite le client signer le contrat. L'excution est ensuite dplace sur le noeud d'tablissement des chques.
Tutorial Alfresco - jBPM: exemple d'implmentation d'un workflow avanc par Landry KOUAM (Centre de Comptence Alfresco/jBPM, Koossery Technology) Bak Jc. BAKENEGHE (Software Coordinator, Koossery Technology)
http://koossery-tech.developpez.com/tutoriels/java/alfresco-jBPM/20090503/
- 11 -
Tutorial Alfresco - jBPM: exemple d'implmentation d'un workflow avanc par Landry KOUAM (Centre de Comptence Alfresco/jBPM, Koossery Technology) Bak Jc. BAKENEGHE (Software Coordinator, Koossery Technology)
Assigner une tche c'est designer l'acteur ou le pool d'acteurs qui raliseront cette tche. Toutes les tches sont assignes. Nous allons voir comment les tches du cas d'tude approbation du crdit sont assignes. Dans le langage jPDL, l'assignation des tches se fait partir des rles dclars travers des lments swimlane: Figure 14 : dclaration du rle 'initiator'
<swimlane name="initiator"/>
La dclaration ci-dessus (figure 14) permet de crer un rle "initiator" qui par dfaut sera jou par l'initiateur du Workflow c'est dire l'agent du courrier. Ainsi une tche assigne "initiator" sera envoye l'initiateur du Workflow. Les rles suivants ont t crs: - Rle 'initiator' Dclaration dans le fichier jPDL : Figure 14 : dclaration du rle 'initiator'
<swimlane name="initiator"/>
- Rle 'loan-service' Le responsable du service crdit est emmen jouer ce rle. Dclaration dans le fichier jPDL : Figure 15 : dclaration du rle 'loan-service'
<swimlane name="loan-service"> <assignment class="org.alfresco.repo.workflow.jbpm.AlfrescoAssignment"> <actor>#{bpm_assignee.properties['cm:userName']}</actor> </assignment> </swimlane>
Une expression EL est utilise pour injecter l'acteur jouant ce rle. La variable globale "bpm_assignee" contient une valeur qui reprsente l'acteur qui la tche est assigne. On pourrait se demander o est le responsable du service crdit dans "bpm_assignee" dans le schma (figure 15). En fait, lors du passage du noeud "Credit-receipt" au noeud "Quottation", la variable de scope processus "bpm_assignee" existe dj et pour valeur l'utilisateur responsable du service du crdit slectionn par l'agent du courrier au noeud "Credit-receipt". Cette variable est cre travers le content model du task "ac:dispatch-application" du noeud "Credit-receipt" (cf. paragraphe IV-2-1):
<mandatory-aspects> <aspect>bpm:assignee</aspect> </mandatory-aspects>
Cette aspect permet d'ajouter une proprit "bpm_assignee" au model de la tche et de ce fait le Client Web gnrera un composant UI dans la page de la tche pour la slection du user attribuer la proprit. Le comportement ajout par l'aspect cre la variable de scope processus nomm "bpm_assignee" et la rend accessible tout le contexte du processus. Ceci permet ainsi d'utiliser la variable dans le fichier jPDL pour l'assignation du loan-service. - Rle 'loan-agent' L'agent de crdit qui va tudier le dossier est emmen jouer ce rle. Dclaration dans le fichier jPDL :
http://koossery-tech.developpez.com/tutoriels/java/alfresco-jBPM/20090503/
- 12 -
Tutorial Alfresco - jBPM: exemple d'implmentation d'un workflow avanc par Landry KOUAM (Centre de Comptence Alfresco/jBPM, Koossery Technology) Bak Jc. BAKENEGHE (Software Coordinator, Koossery Technology)
La valeur de la variable globale "bpm_assignee" a chang et contient cette fois l'acteur agent du crdit. - Rle 'coc' Dclaration dans le fichier jPDL : Figure 17 : dclaration du pool d'acteur 'COC'
<swimlane name="coc"> <assignment class="org.alfresco.repo.workflow.jbpm.AlfrescoAssignment"> <pooledactors>#{ac_cocPool}</pooledactors> </assignment> </swimlane>
Cette fois (figure 17) a n'est plus un acteur unique qui doit jouer un rle mais un pool d'acteurs, c'est dire un ensemble d'acteurs qui recevront la mme tche et devront travailler en collaboration pour la raliser. La variable "ac_cocPool" est une variable globale qui a t initialise dans le noeud de dbut du Workflow. L'injection de l'ensemble des acteurs se fait avec une expression EL. - Rle 'codir' Dclaration dans le fichier jPDL : Figure 18 : dclaration du pool d'acteur 'CODIR'
<swimlane name="codir"> <assignment class="org.alfresco.repo.workflow.jbpm.AlfrescoAssignment"> <pooledactors>#{ac_codirPool}</pooledactors> </assignment> </swimlane>
- Rle 'daf' Directeur des affaires financires. Dclaration dans le fichier jPDL : Figure 19 : dclaration du pool d'acteur 'DAF'
<swimlane name="daf"> <assignment class="org.alfresco.repo.workflow.jbpm.AlfrescoAssignment"> <pooledactors>#{ac_dafPool}</pooledactors> </assignment> </swimlane>
- Rle 'direction' Dclaration dans le fichier jPDL : Figure 20 : dclaration du pool d'acteur 'direction
<swimlane name="direction"> <assignment class="org.alfresco.repo.workflow.jbpm.AlfrescoAssignment"> <pooledactors>#{ac_directionPool}</pooledactors> </assignment> </swimlane>
- Rle 'financial-service'
http://koossery-tech.developpez.com/tutoriels/java/alfresco-jBPM/20090503/
- 13 -
Tutorial Alfresco - jBPM: exemple d'implmentation d'un workflow avanc par Landry KOUAM (Centre de Comptence Alfresco/jBPM, Koossery Technology) Bak Jc. BAKENEGHE (Software Coordinator, Koossery Technology)
- Rle 'judicial-service' Service juridique. Dclaration dans le fichier jPDL : Figure 22 : dclaration du pool d'acteur 'judicial-service'
<swimlane name="judicial-service"> <assignment class="org.alfresco.repo.workflow.jbpm.AlfrescoAssignment"> <pooledactors>#{ac_judicialServicePool}</pooledactors> </assignment> </swimlane>
Figure 23 : Diagramme d'activits de l'implmentation d'un Workflow prconis par le Centre de Comptence Alfresco/jBPM de Koossery Technology
- 14 -
http://koossery-tech.developpez.com/tutoriels/java/alfresco-jBPM/20090503/
Nous allons appliquer ce diagramme d'activits sur le cas d'tude du Workflow d'approbation du crdit.
Tutorial Alfresco - jBPM: exemple d'implmentation d'un workflow avanc par Landry KOUAM (Centre de Comptence Alfresco/jBPM, Koossery Technology) Bak Jc. BAKENEGHE (Software Coordinator, Koossery Technology)
http://koossery-tech.developpez.com/tutoriels/java/alfresco-jBPM/20090503/
- 15 -
Tutorial Alfresco - jBPM: exemple d'implmentation d'un workflow avanc par Landry KOUAM (Centre de Comptence Alfresco/jBPM, Koossery Technology) Bak Jc. BAKENEGHE (Software Coordinator, Koossery Technology)
http://koossery-tech.developpez.com/tutoriels/java/alfresco-jBPM/20090503/
- 16 -
Le content type model de chaque entit du schma ci-dessus (figure 24) doit tre crit l'aide du dictionnaire de donnes Alfresco. Le paragraphe IV-1-1 montre le content model de l'entit "creditRecordApplication" (Fiche de demande de crdit).
Tutorial Alfresco - jBPM: exemple d'implmentation d'un workflow avanc par Landry KOUAM (Centre de Comptence Alfresco/jBPM, Koossery Technology) Bak Jc. BAKENEGHE (Software Coordinator, Koossery Technology)
http://koossery-tech.developpez.com/tutoriels/java/alfresco-jBPM/20090503/
Tutorial Alfresco - jBPM: exemple d'implmentation d'un workflow avanc par Landry KOUAM (Centre de Comptence Alfresco/jBPM, Koossery Technology) Bak Jc. BAKENEGHE (Software Coordinator, Koossery Technology)
<type>d:boolean</type> <mandatory>false</mandatory> </property> <property name="creditApprobation:agreedPrepaymentOfInterest"> <title>Agreed sum for prepayment of interest</title> <type>d:boolean</type> <mandatory>false</mandatory> </property> <property name="creditApprobation:deductInterestAtOutlay"> <title>Deduct interest at outlay</title> <type>d:boolean</type> <mandatory>false</mandatory> </property> <property name="creditApprobation:interestDuringTheGracePeriod"> <title>Interest during the grace period</title> <type>d:boolean</type> <mandatory>false</mandatory> </property> <property name="creditApprobation:stagger"> <title>To stagger</title> <type>d:boolean</type> <mandatory>false</mandatory> </property> </properties> <associations> <child-association name="creditApprobation:installments"> <target> <class>creditApprobation:installment</class> <mandatory>false</mandatory> <many>true</many> </target> </child-association> <child-association name="creditApprobation:guarantors"> <target> <class>creditApprobation:guarantor</class> <mandatory>false</mandatory> <many>true</many> </target> </child-association> <child-association name="creditApprobation:collaterals"> <target> <class>creditApprobation:collateral</class> <mandatory>false</mandatory> <many>true</many> </target> </child-association> <child-association name="creditApprobation:creditAppClient"> <target> <class>creditApprobation:client</class> <mandatory>false</mandatory> <many>false</many> </target> </child-association>
</associations> </type>
http://koossery-tech.developpez.com/tutoriels/java/alfresco-jBPM/20090503/
- 18 -
Tutorial Alfresco - jBPM: exemple d'implmentation d'un workflow avanc par Landry KOUAM (Centre de Comptence Alfresco/jBPM, Koossery Technology) Bak Jc. BAKENEGHE (Software Coordinator, Koossery Technology)
Comme on peut le voir (figure 26), ce modle hrite du modle "bpm:startTask" qui est le modle de base des tches d'initiation des worklflows BPM. Cette tche est la premire tche qui doit tre ralise lors que le Workflow est initialis. Le modle dfini une proprit ("notifyMe") de type boolen. Cette proprit sera affiche l'interface utilisateur sous forme de case cocher et permettra de notifier par email l'agent du courrier de l'envoi de la demande de crdit au responsable de crdit.
http://koossery-tech.developpez.com/tutoriels/java/alfresco-jBPM/20090503/
Tutorial Alfresco - jBPM: exemple d'implmentation d'un workflow avanc par Landry KOUAM (Centre de Comptence Alfresco/jBPM, Koossery Technology) Bak Jc. BAKENEGHE (Software Coordinator, Koossery Technology)
Dans notre cas d'tude, nous avons dfini la ressource bundle d'internationalisation du Workflow dans le fichier de proprits : "approbationcreditworkflow-model.properties".
IV-3-3 - Ralisation d'un dashlet pour l'affichage des tches relatives aux crdits dans le tableau de bord des utilisateurs
Un dashlet est un composant UI Alfresco qui permet d'afficher des informations dans une zone du tableau de bord des utilisateurs. La ralisation du dashlet est classique et ncessite des configurations XML et du code java. Nous avons ralis un dashlet Alfresco pour afficher les tches en attente de traitement par les utilisateurs dans leur tableau de bord. La figure 29 montre l'affichage des tches d'un utilisateur dans la dashlet des tches de demande de crdit.
http://koossery-tech.developpez.com/tutoriels/java/alfresco-jBPM/20090503/
- 20 -
Tutorial Alfresco - jBPM: exemple d'implmentation d'un workflow avanc par Landry KOUAM (Centre de Comptence Alfresco/jBPM, Koossery Technology) Bak Jc. BAKENEGHE (Software Coordinator, Koossery Technology)
Figure 29 : Dashlet des tches de demande de crdit Cette figure montre un travail faire "Quotter dossier demande crdit" dans le dashlet "Demande(s) de crdit en attente de traitement". Crer un dashlet, c'est : - le configurer dans le fichier "web-client-config-custom.xml" - dfinir la page jsf du dashlet - dfinir le backed-bean de la page jsf ci-dessus - dfinir la dashlet dans la liste des dashlet afficher par dfaut - 1 . Le configurer dans le fichier "web-client-config-custom.xml": Figure 30 : Configuration du dashlet des tches de demande de crdit
<dashlet id="loan-application-to-threat" label-id="my_loan_to_treat_title" description-id="my_tasks_todo_desc" jsp="/jsp/extension/workflow/custom-tasks-todo-dashlet.jsp" allow-narrow="false" />
Dans cette configuration (figure 30), "my_loan_to_treat_title" reprsente l'entre I18N du label de dashlet qui est affich l'interface utilisateur (dans notre cas de figure, il s'agit du label "Demande(s) de crdit en attente de traitement"). La JSP du dashlet est la JSP custom-tasks-todo-dashlet.jsp. - 2 . Dfinir la page jsf du dashlet: La JSP de notre cas d'tude est la JSP "custom-tasks-todo-dashlet.jsp". Cette JSP permet de lister les tches assignes l'utilisateur connect. - 3 . Dfinir le Backed-Bean : Le Backed Bean est le managed Bean de la dashlet. C'est ce Bean qui est rfrenc dans la JSP du dashlet travers les expressions EL.
http://koossery-tech.developpez.com/tutoriels/java/alfresco-jBPM/20090503/
- 21 -
- 4 . Dfinir la dashlet dans la liste des dashlets afficher par dfaut lorsque les utilisateurs se connectent: La liste par default des dashlets constitue les dashlets qui vont tre affiches dans l'ordre dfini lorsque l'utilisateur se connecte. Dans notre cas d'tude, la liste est la suivante : Figure 31 : La liste des dashlets afficher par dfaut
<default-dashlets> <dashlet <dashlet <dashlet <dashlet </default-dashlets> id="loan-application-to-threat" /> id="tasks-todo" /> id="pooled-tasks" /> id="myspaces-webscript" />
Tutorial Alfresco - jBPM: exemple d'implmentation d'un workflow avanc par Landry KOUAM (Centre de Comptence Alfresco/jBPM, Koossery Technology) Bak Jc. BAKENEGHE (Software Coordinator, Koossery Technology)
Cette liste place la dashlet des demandes de crdit en tte, puis la dashlet de base du noyau Alfresco (qui affichera les tches autres que celle relatives au crdit), puis les tches du Pot Commun de l'utilisateur et en fin le composant web Script AJAX qui affiche l'arborescence des dossiers du repository.
http://koossery-tech.developpez.com/tutoriels/java/alfresco-jBPM/20090503/
- 22 -
La bibliothque Tiger OCR est une librairie JAR qui permet de raliser de l'OCR dans une application JAVA sur une zone donne de l'image. Nous utilisons cette librairie pour raliser la reconnaissance de caractre sur des Chques Bancaire, des factures etc.. Pour notre cas d'tude, nous avons mont la chane de numrisation simple permettant de numriser les demandes manuscrites des clients et de les intgrer automatiquement et directement dans un espace du service du courrier de la GED. La chane prend en compte l'extraction de mtadonnes et l'indexage automatique.
Tutorial Alfresco - jBPM: exemple d'implmentation d'un workflow avanc par Landry KOUAM (Centre de Comptence Alfresco/jBPM, Koossery Technology) Bak Jc. BAKENEGHE (Software Coordinator, Koossery Technology)
- 1 : Configuration du Wizard dans le Client web (web-client-config-custom.xml) Figure 33 : Configuration du Wizard de la fiche de demande de crdit
<config> <wizards> <wizard name="createCreditRecordApplication" managed-bean="CreateCreditRecordAppWizard" title-id="create_credit_record_app_content_title" description-id="create_credit_record_app_content_desc" icon="/images/icons/new_content_large.gif"> <step name="partie1" title-id="credit_write_part1" description-id="create_credit_record_app_step1_desc"> <page path="/jsp/extension/content/create-credit-record-app-wizard/part1.jsp" title-id="create_credit_record_app_content_step1_title" description-id="create_credit_record_app_content_step1_desc" instruction-id="default_instruction" /> </step> <step name="partie2" title-id="credit_write_part2" description-id="create_credit_record_app_step2_desc"> <page path="/jsp/extension/content/create-credit-record-app-wizard/part2.jsp" title-id="create_credit_record_app_content_step2_title" description-id="create_credit_record_app_content_step2_desc" instruction-id="default_instruction" /> </step> <step name="partie3" title-id="credit_write_part3" <br/> description-id="create_credit_record_app_step3_desc"> <page path="/jsp/extension/content/create-credit-record-app-wizard/part3.jsp" title-id="create_credit_record_app_content_step3_title" description-id="create_credit_record_app_content_step3_desc" instruction-id="default_instruction" /> </step> - 23 -
http://koossery-tech.developpez.com/tutoriels/java/alfresco-jBPM/20090503/
Tutorial Alfresco - jBPM: exemple d'implmentation d'un workflow avanc par Landry KOUAM (Centre de Comptence Alfresco/jBPM, Koossery Technology) Bak Jc. BAKENEGHE (Software Coordinator, Koossery Technology)
Nous pouvons remarquer que ce Wizard est compos de 3 tapes (partie1, partie2 et partie3). Chaque tape est une vue JSF (les lments page) qui peut contenir d'autres Wizards ou des dialogs Alfresco. Nous verrons ce que c'est qu'un dialog Alfresco et brivement comment le raliser. Le nom du Bean Manag du Wizard est "CreateCreditRecordAppWizard" et il est configur dans le ficher "facesconfig-custom.xml". Ce mme Bean est utilis comme Bean Managed des vues des tapes (step) du Wizard. - 2 : Dfinition des pages jsf des tapes L'enchanement des pages du Wizard est ralis par le Wizard Framework du noyau de la plateforme Alfresco. Celuici utilise la configuration de la figure30 pour savoir quelle vue d'tape il faut afficher. Dans notre cas, nous avons 3 JSP pour les trois tapes : part1.jsp, part2.jsp et part3.jsp. - 3 : Dfinition de l'I18N du Wizard Il s'agit de dfinir les entres "title-id" et "description-id" du Wizard dans le bundle. - 4 : Cration du Bean Manag du Wizard C'est la dernire opration. Il s'agit d'crire le code java du Bean Manag du Wizard. Le Bean manag d'un Wizard est classique. Toutes les mthodes correspondants aux actions "suivant" , "prcdent", "modifier les labels des boutons", "gnrer de nouveaux boutons", "enregistrer les donnes saisies", etc.. doivent tre implmentes.
- 1 : Configuration du Dialog dans le Client web (web-client-config-custom.xml) Figure 34 : Configuration du Client Web du Dialog de cration des garants
<dialog name="create_guarantor_dialog" page="/jsp/extension/content/create-guarantor-dialog.jsp" managed-bean="CreateGuarantorDialog" icon="/images/extension/icons/new_person.gif" title-id="create_guarantor_dialog_title" description-id="create_guarantor_description_dialog"> </dialog>
Les lments constitutifs du Dialog Alfresco sont : la JSP du dialog (dans notre cas il s'agit de la JSP create-guarantordialog.jsp), le Bean manag (dans notre cas il s'agit du Bean CreateGuarantorDialog), l'icne (dans notre cas il s'agit de l'image new_person.gif), du titre et de la description. - 2 : Dfinition de la JSP du Dialog
- 24 -
http://koossery-tech.developpez.com/tutoriels/java/alfresco-jBPM/20090503/
Il s'agit d'crire la page JSP create-guarantor-dialog.jsp. Les balises (tags librairies) JSF sont utilises pour la construction de la JSP. Les Expressions EL sont utilises pour le lien avec le Bean Manag. - 3 : Dfinition de l'I18N du Dialog L'internationalisation du dialog se rduit aux entres "title-id" et "description-id" de la configuration du dialog. - 4 :Cration du Bean Manag du Dialog C'est la dernire opration. Il s'agit d'crire le code java du Bean Manag du Dialog. Le Bean manag d'un Dialog est classique. Certaines mthodes doivent tre implmentes pour les actions "annuler" et "Ok", "modifier les labels des boutons", "gnrer de nouveaux boutons", "enregistrer les donnes saisies", etc..
Tutorial Alfresco - jBPM: exemple d'implmentation d'un workflow avanc par Landry KOUAM (Centre de Comptence Alfresco/jBPM, Koossery Technology) Bak Jc. BAKENEGHE (Software Coordinator, Koossery Technology)
http://koossery-tech.developpez.com/tutoriels/java/alfresco-jBPM/20090503/
- 25 -
V - Conclusion
Tutorial Alfresco - jBPM: exemple d'implmentation d'un workflow avanc par Landry KOUAM (Centre de Comptence Alfresco/jBPM, Koossery Technology) Bak Jc. BAKENEGHE (Software Coordinator, Koossery Technology)
Nous avons vu travers cet article comment l'utilisation combine de la plate-forme Alfresco (pour la gestion des documents et des contenus) et de jBoss BPM (pour les workflow) permet de bnficier d'APIs puissants pour la ralisation des applications combinant la fois la gestion documentaire et gestion de contenu avec les Workflows. Ces frameworks constituent le socle technique du Centre de Comptence Alfresco/jBPM de Koossery Technology
VI - Remerciements
Tous nos remerciements au comit de relecture developpez.com Nous remercions galement tous les membres du Centre de Comptence Alfresco/jBPM de Koossery Technology ainsi que les autres pool techniques (notamment le Centre de Comptence ADempiere ERP) pour l'esprit de curiosit et de partage des connaissances. Leurs multiples questions et critiques nous ont t grandement bnfiques. Pour rappel, Le Centre de Comptence Alfresco/jBPM de Koossery Technology est spcialis dans le dveloppement au forfait de projets de gestion lectronique de documents et de gestion de contenu d'entreprise. En outre il fait dans la modlisation, l'amlioration et l'implmentation des processus mtiers automatiques et manuels travers le dveloppement de projets jBPM.
http://koossery-tech.developpez.com/tutoriels/java/alfresco-jBPM/20090503/
- 26 -