Vous êtes sur la page 1sur 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)
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-

I - Frameworks standards utiliss : Alfresco, JBoss BPM, Mule ESB

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.

I-1 - Implmentation GED/ECM : Alfresco


Alfresco fournit des API Java permettant d'implmenter les fonctionnalits suivantes dans une application GED/ECM: - Gestion de Contenu d'Entreprise (ECM), rfrentiel JSR170 - Gestion de Documents - Collaboration - Gestion des Archives/Enregistrements lgaux - Gestion du Documents numriss La plate-forme Alfresco est btie sur une architecture J2EE et s'appuie sur plusieurs standards comme JSF MyFaces, Lucene, Ajax, JCR, Spring, Hibernate etc..

http://koossery-tech.developpez.com/tutoriels/java/alfresco-jBPM/20090503/

-3-

I-2 - Moteur de workflow BPM: jBoss BPM

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.

I-3 - Intgration de processus htrognes : Mule ESB


Koossery Technology s'appuie sur l'esb Mule ESB pour intgrer les processus htrognes, et ce dans le cadre d'une orchestration de processus. L'orchestration de processus fera l'objet d'une publication ultrieure.

- 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

II - Rsum des spcifications du workflow d'approbation des dossiers de crdit


Un organisme de prt la consommation souhaite mettre en place un Workflow d'approbation de crdit qui combine l'tude du dossier de crdit avec son passage par plusieurs tapes, de l'approbation jusqu' son archivage. Ci-dessous les diffrentes tapes de l'approbation: 1. Le cycle commence par la rception de la demande de crdit du client. Cette demande peut tre faite par courrier lectronique ou par courrier papier. 2. La demande est transmise au service du crdit qui ensuite quotte le dossier l'agent charg du crdit. 3. L'agent charg du crdit rentre en contact avec le client, lui remet un formulaire (fiche interne de demande de crdit) qui contient au moins une trentaine (30) de questions (cration d'un type de crdit, conditions d'attribution, remboursement, garanties etc..). 4. Suite aux rponses du client, l'agent de crdit fait un 1er filtrage : l'issue de ce filtrage, le dossier de crdit est soit rejet, soit prsent au COC (Comit d'Octroi de Crdit). Dans la suite on suppose que le dossier est prsent au Comit d'Octroi de Crdit.

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)

III - Modlisation (workflow) jBPM du processus mtier


Il s'agit de raliser le diagramme du Workflow, modliser les tches et leurs assignations. On ressortira aussi la cartographie fonctionnelle associe au processus.

III-1 - Diagramme du Workflow


La figure ci-dessous est le diagramme (Process design) du Workflow du cas d'tude approbation de crdit.

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 :

III-1-1 - Node "Credit-receipt"


Il reprsente le noeud de rception de la demande du crdit du client. Ce noeud possde une unique tche ralise par un agent du courrier. Cette tche consiste transmettre la demande au responsable du service du crdit. Dans le cas o l'agent du courrier rceptionne la demande du client sous format papier, l'agent la numrise travers une chane de capture. La demande numrise est directement prise en compte dans le systme de GED. L'agent du courrier initialise alors le Workflow sur la demande numrise et ralise la prsente tche. Le noeud "Credit-receipt" est un noeud de type "Start State", c'est dire qu'il reprsente le dbut du Workflow. L'entre de ce noeud dans le fichier jPDL du Workflow est la suivante : Figure 3: Node 'Credit-receipt' dans le fichier jPDL
<start-state name="Credit-receipt"> <task name="ac:dispatch-application" swimlane="initiator"> </task> <transition to="Quottation" name="dispatch"></transition> <event type="node-leave"> <action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript"> <script> <variable name="ac_cocPool" access="write"/> -6-

http://koossery-tech.developpez.com/tutoriels/java/alfresco-jBPM/20090503/

Figure 3: Node 'Credit-receipt' dans le fichier jPDL

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

III-1-2 - Node "Quottation"


Noeud de cotation du dossier du crdit un agent du crdit ou au gestionnaire du client. Ce noeud comporte une tche ralise par le responsable du crdit. La tche consiste choisir l' agent du crdit qui sera en charge du dossier et de le lui envoyer. La description de ce noeud dans le fichier jPDL du Workflow est la suivante :

http://koossery-tech.developpez.com/tutoriels/java/alfresco-jBPM/20090503/

-7-

Figure 4: Node 'Quottation' dans le fichier jPDL du workflow

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

III-1-3 - Noeud Contact-client


Noeud de contact avec le client. Ce noeud possde une tche ralise par l'agent en charge crdit. Celui-ci est invit travers cette tche contacter le client. L'agent pose un certain nombre de questions au client. Sur la base des rponses du client, il cre (toujours dans cette tche) une fiche interne de la demande de crdit du client. Il peut soit rejeter la demande si son filtrage est ngatif ou envoyer la demande pour approbation au comit d'octroi. Ce choix est matrialis par les deux transitions nommes "approbate" et "reject". La description de ce noeud dans le fichier jPDL du Workflow est la suivante : Figure 5: Noeud 'Contact-client' dans le fichier jPDL du workflow
<task-node name="Contact-client"> <description> The agent in charge of credit contacts the customer, gives him a form (form of internal customer application) which contains at least thirty (30) questions. Following the customer's responses, the agent may make a 1st screening before presenting the customer' case to the COC. At each stage of transition, date and signature must be entered on the record for security measures (who did what and when). </description> <task name="ac:contact-client" swimlane="loan-agent"> <event type="task-end"> <!-- Remember agent actor --> <action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript"> <script> <variable name="ac_agent-actor" access="write" />

http://koossery-tech.developpez.com/tutoriels/java/alfresco-jBPM/20090503/

-8-

Figure 5: Noeud 'Contact-client' dans le fichier jPDL du workflow

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>

<expression> if (taskInstance.actorId != null) taskInstance.actorId; else person; </expression>

III-1-4 - Node "Approbation"


Noeud d'approbation de la demande par le comit d'octroi de crdit. Ce noeud est compos d'une tche ralise par un pool d'acteurs (les membres du groupe reprsent par la variable ac_cocPool). Tous les membres de ce groupe reoivent la mme tche. L'un d'eux doit s'approprier la tche afin de modifier le systme en enregistrant la dcision du comit. La dcision du comit sur la demande peut tre soit le rejet de la demande, soit l'approbation. Ce choix est matrialis par les deux transitions nommes "reject" et "approve". La description de ce noeud dans le fichier jPDL du Workflow est la suivante: Figure 6: Noeud 'Approbation' dans le fichier jPDL du workflow
<task-node name="Approbation"> <description> Each member of the COC receives an approval tack. One of the members must take the task to inform the state of the application decided by the committee. After reviewing, a judgment is given: application approved or rejected. (reason of rejection). </description> <task name="ac:approbation-coc" swimlane="coc"> <!-- Remember the member who own the task --> <event type="task-end"> <action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript"> <script> <variable name="ac_coc-member" access="write"/> <expression> if (taskInstance.actorId != null) people.getPerson(taskInstance.actorId); else person; </expression> </script> </action> </event> </task> <transition to="Contract-preparation" name="approve"></transition> <transition to="Client-info" name="reject"></transition> </task-node>

III-1-5 - Node "Contract-preparation"


Dans un Workflow jPDL, un Fork est utilis lorsqu'on veut raliser des tches en simultan. La continuation de l'excution du Workflow un autre noeud ne se fera que si toutes les tches en simultan sont acheves. La description dans le fichier jPDL est la suivante : Figure 7: Noeud 'Contract-preparation' dans le fichier jPDL du workflow

http://koossery-tech.developpez.com/tutoriels/java/alfresco-jBPM/20090503/

-9-

Figure 7: Noeud 'Contract-preparation' dans le fichier jPDL du workflow

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.

III-1-6 - Node "Prepare-contract"


Noeud de prparation du contrat. Comporte une tche ralise par le service juridique. Le contrat est cre et ajout au ressources du Workflow. La description de ce noeud dans le fichier jPDL du Workflow est la suivante : Figure 8: Noeud 'Prepare-contract' dans le fichier jPDL du workflow
<task-node name="Prepare-contract"> <task name="ac:prepare-contract" swimlane="judicial-service"/> <transition to="Sign-contract-join" name="signContractJoin1"></transition> </task-node>

III-1-7 - Node "Formalize-disbursement"


Noeud de formalisation du dcaissement. Comporte une tche ralise par le service en charge de formaliser les dcaissements. La description de ce noeud dans le fichier jPDL du Workflow est la suivante : Figure 9: Noeud 'Formalize-disbursement' dans le fichier jPDL du workflow
<task-node name="Formalize-disbursement"> <task name="ac:formalize-disbursement" swimlane="financial-service"/> <transition to="Sign-contract-join" name="signContractJoin2"></transition> </task-node>

Une fois que ces deux tches sont ralises, l'excution du Workflow peut continuer au noeud Join "Sign-contractjoin".

III-1-8 - Node "Sign-contract-join"


Dans un Workflow jPDL, un noeud Join permet de marquer un point d'attente de l'excution de plusieurs tches en parallle. Le moteur attendra que tous les noeuds de mme parent arrivant ce noeud soient termins. Ce noeud comporte une unique transition par laquelle l'excution va continuer. La description dans le fichier jPDL est la suivante : Figure 10: Noeud 'Sign-contract-join' dans le fichier jPDL du workflow
<join name="Sign-contract-join"> <transition to="Sign-contract"></transition> </join>

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)

III-1-9 - Node "Check-etablishment"


Noeud d'tablissement des chques. Ce noeud comporte une tche ralise par le directeur des affaires financires. Les diffrents chques tablis sont scanns et imports comme ressources dans l'instance du Workflow (Le paragraphe IV-4-1 traite de la chane de dmatrialisation de notre tutorial). L'excution est ensuite dplace vers le noeud d'approbation informatique. Figure 11: Noeud 'Check-establishment' dans le fichier jPDL du workflow
<task-node name="Check-establishment"> <description> Documents are forwarded to the Administrative and Finance directions for the release of funds (signing checks, Orders of transfers, etc ...). The Chief of Financial Department validates the amount to be granted, then he sends one or more checks. The Direction receives all documents and validates them. </description> <task name="ac:check-establishment-signature" swimlane="daf"></task> <transition to="Computer-approbation" name="computerApprobation"></transition> </task-node>

III-1-10 - Node "Computer-approbation"


Noeud d'approbation informatique. Comporte une tche d'approbation informatique ralise par un membre du comit d'octroi du crdit. Celui-ci doit faire les dernires oprations afin de clore le dossier du client. La description de ce noeud dans le fichier jPDL du Workflow est la suivante : Figure 12: Noeud 'Computer-approbation' dans le fichier jPDL du workflow
<task-node name="Computer-approbation"> <task name="ac:computer-approbation" swimlane="coc"></task> <transition to="End" name="end"></transition> </task-node>

III-1-11 - Node "Client-info"


Noeud d'information du client. Comporte une tche ralise par l'agent en charge du crdit. Cette tche consiste informer le client sur l'tat de sa demande. L'information peut tre par tlphone ou email. La description de ce noeud dans le fichier jPDL du Workflow est la suivante : Figure 13: Noeud 'Client-info' dans le fichier jPDL du workflow
<task-node name="Client-info"> <description> Applications not approved are returned to the agent who inform the customer. In case of loan rejected, a letter of regret is prepared. The agent makes a consultation and informs the customer about the reason for the rejection of his request. </description> <task name="ac:inform-client" swimlane="loan-agent"></task> <transition to="Contact-client" name="resume"></transition> <transition to="End" name="clientInfoEnd"></transition> </task-node>

http://koossery-tech.developpez.com/tutoriels/java/alfresco-jBPM/20090503/

- 11 -

III-2 - Assignations des tches

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 -

Figure 16 : dclaration du rle 'loan-agent'

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)

<swimlane name="loan-agent"> <assignment class="org.alfresco.repo.workflow.jbpm.AlfrescoAssignment"> <actor>#{bpm_assignee.properties['cm:userName']}</actor> </assignment> </swimlane>

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 -

Service financier. Dclaration dans le fichier jPDL :

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 21: dclaration du pool d'acteur 'financial-service'


<swimlane name="financial-service"> <assignment class="org.alfresco.repo.workflow.jbpm.AlfrescoAssignment"> <pooledactors>#{ac_financialServicePool}</pooledactors> </assignment> </swimlane>

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

IV - Implmentation de la solution dans Alfresco


La solution t implmente avec Alfresco. Alfresco fournit un mcanisme conceptuel et des APIs pour la ralisation du BPM sous forme d'une application web J2EE. Le diagramme d'activits prconis par le Centre de Comptence Alfresco/jBPM de Koossery Technology pour l'implmentation d'un workflow se rsume au tableau ci-dessous:

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)

IV-1 - Modlisation des types de contenu ('Content Type model')


Ci-dessous le schma du modle d'entit de l'application :

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)

IV-1-1 - Exemple de modlisation (Content Type model) de la Fiche de demande de crdit


Figure 25 : Content Model de la fiche de demande de crdit
<!-- Credit Application Record --> <type name="creditApprobation:creditRecordApplication"> <title>Credit application record</title> <parent>cm:folder</parent> <properties> <property name="creditApprobation:creditNumber"> <title>Credit number</title> <type>d:text</type> <mandatory>true</mandatory> </property> <property name="creditApprobation:creditProduct"> <title>Credit product</title> <type>d:text</type> <mandatory>true</mandatory> </property> <property name="creditApprobation:applicationDate"> <title>Application date</title> <type>d:date</type> <mandatory>true</mandatory> </property> <property name="creditApprobation:amount"> <title>Amount</title> <type>d:float</type> <mandatory>true</mandatory> </property> <property name="creditApprobation:annualInterestRate"> <title>Annual interest rate</title> <type>d:float</type> <mandatory>true</mandatory> </property> <property name="creditApprobation:nbOfInstallmentPayment"> <title>Number of Installment Payment</title> <type>d:long</type> <mandatory>true</mandatory> </property> <property name="creditApprobation:installmentType"> <title>Installment type</title> <type>d:text</type> <mandatory>true</mandatory> </property> <property name="creditApprobation:interestCalculationMethod"> <title>Interest Calculation Method</title> <type>d:text</type> <mandatory>true</mandatory> </property> <property name="creditApprobation:lastMaturityCapital"> <title>Last maturity capital</title> <type>d:float</type> <mandatory>true</mandatory> </property> <property name="creditApprobation:creditLine"> <title>Credit line</title> <type>d:text</type> <mandatory>true</mandatory> </property> <property name="creditApprobation:agent"> <title>Agent</title> <type>d:text</type> <mandatory>true</mandatory> </property> <property name="creditApprobation:interestCalculationByDay"> <title>interest calculation by day</title> - 17 -

http://koossery-tech.developpez.com/tutoriels/java/alfresco-jBPM/20090503/

Figure 25 : Content Model de la 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)

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

IV-2 - Modlisation des tches du Workflow (Task Content Model)


Au paragraphe III-1 nous avons vu le design jBPM du processus. Chaque tche ou noeud de ce BPM design sera modlis avec le dictionnaire de donnes Alfresco. Le paragraphe IV-2-1 montre la modlisation de la tche "dispatch application" ralise par l'agent du courrier et consistant envoyer la demande de crdit numrise du client au responsable du crdit. Ce modle est utilis par le Client Web de la plateforme Alfresco pour la construction de la vue de prsentation de la tche.

http://koossery-tech.developpez.com/tutoriels/java/alfresco-jBPM/20090503/

- 18 -

IV-2-1 - Exemple de modlisation (Task Content Model) de la tche "dispatch-application"


Les tches sont dfinies dans le modle comme type de contenu: en effet les entits tches sont manipules dans le JCR exactement comme tout autre type de contenu. Figure 26 : Content model de la tche 'dispatch-application'
<type name="ac:dispatch-application"> <parent>bpm:startTask</parent> <properties> <property name="ac:notifyMe"> <type>d:boolean</type> <default>false</default> </property> </properties> <mandatory-aspects> <aspect>bpm:assignee</aspect> </mandatory-aspects> <!-- Custom aspects may be added to collect any arbitrary number of people / groups. --> </type>

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.

IV-3 - Implmentation du management des tches dans la plateforme Alfresco


Une fois le modle des tches ralis, il faut effectuer un certain nombre d'oprations afin que les tches puissent tre accessibles dans le tableau de bord des utilisateurs. Ces oprations sont dans l'ordre : - configuration du client web pour l'affichage des tches - ralisation des dashlet relatives au tableau de bord. Un dashlet est un composant UI Alfresco qui permet d'afficher des informations dans une zone du tableau de bord des utilisateurs

IV-3-1 - Configuration du Client Web pour l'affichage des tches


La configuration du client web (l'application Web de la plateforme Alfresco) permet de prciser comment vont tre affichs les composants UI pour la saisie des donnes. La configuration du client web se fait dans le fichier "webclient-config-custom.xml". La configuration du client web pour l'affichage de la vue de la tache de type "dispatchapplication" est la suivante : Figure 27 : Configuration du Client Web de la tche ac:dispatch-application
<config evaluator="node-type" condition="ac:dispatch-application" replace="true"> <property-sheet> <separator name="sep1" display-label-id="general" component-generator="HeaderSeparatorGenerator" /> <show-property name="bpm:description" component-generator="TextAreaGenerator" /> <show-property name="bpm:priority" /> <show-property name="bpm:dueDate" /> <show-property name="ac:notifyMe" /> <separator name="sep2" display-label-id="responsable_service_credit" component-generator="HeaderSeparatorGenerator" /> <show-association name="bpm:assignee"/> </property-sheet> - 19 -

http://koossery-tech.developpez.com/tutoriels/java/alfresco-jBPM/20090503/

Figure 27 : Configuration du Client Web de la tche ac:dispatch-application


</config>

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)

IV-3-2 - Internationalisation I18N


L'internationalisation permet d'afficher la vue de la tche dans la langue du l'utilisateur. La configuration de l'internationalisation relative la tche consiste dfinir le bundle I18N des proprits de la tche dfinies dans le content model. En prenant l'exemple de la tche d'initialisation du Workflow (la tche "ac:dispatch-application"), une entre doit tre dfinie pour la proprit "notifyMe" et une autre pour l'aspect "bpm:assignee". La figure 28 montre les entres de ces deux lments dans le bundle I18N. Figure 28 : I18N de la tche ac:dispatch-application
ac_workflowmodel.type.ac_dispatch-application.title=Acheminer une demande de crdit vers le service du crdit. ac_workflowmodel.type.ac_dispatch-application.description=Acheminer une demande de crdit vers le service du crdit. ... # Associations ac_workflowmodel.association.ac_assignee.title=Agent en charge du crdit ac_workflowmodel.association.ac_assignee.description=Agent en charge du crdit

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.

IV-4 - Implmentation des fonctionnalits ralises au sein du Workflow


Les principales fonctions sont : - Numrisation et archivage de la demande manuscrite du crdit - Cration de la fiche interne de demande de crdit - Cration d'un garant - Cration d'une garantie - Cration d'un document d'identification - Cration du contrat Le Workflow doit s'interfacer avec le systme d'information de l'entreprise notamment pour invoquer certains services existants ou crer. Cet interfaage peut tre ralis via divers moyens : les web services, ou carrment un ESB (Mule ESB) en particulier dans le cadre de l'orchestration de processus htrognes. L'interfaage avec le SI est en dehors de l'objet de ce document. Dans les paragraphes qui suivent, nous verrons brivement comment chaque fonctionnalit a t implmente.

IV-4-1 - Implmentation de la fonctionnalit de Numrisation et de l'Archivage


Une chane de numrisation est une infrastructure logicielle et matrielle mise en oeuvre pour automatiser la chane "Scanner - OCR - Indexage - Archivage". Le scanner produit une image du document. La reconnaissance de caractre est effectue sur l'image afin de gnrer un document Texte ou PDF. Pour faciliter les recherches, l'indexage est galement fait. De nos jours, presque tous les scanners ralisent l'OCR et produisent des documents textes (Word, RTF) et des documents au format PDF. Nanmoins, il reste impossible de raliser des traitements tels que le dimensionnement d'image, les corrections, la lecture automatique de document (LAD), etc.. Pour adresser les traitements complexes sur le document numris, Koossery Technology utilise deux technologies propritaires: Kofax et eCopy. Pour des solutions des chanes simples, Koossery Technology met en oeuvre la chane ci-dessous: Figure 32 : chane de numrisation simple
<Scanner OCR - Bibliothque Tiger OCR (Optionnelle) - CIFS - Extraction de mtadonnes - Indexage - GED />

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)

IV-4-2 - Implmentation de la fonctionnalit de cration des fiches et des rapports


La fiche de demande de crdit est un gros formulaire de saisie de donnes sectionn en tapes. Les informations d'une fiche de demande de crdit sont saisies travers un Wizards Alfresco. Un Wizard est un composant UI qui permet de saisir des informations en tapes. Nous avons ralis la saisie des fiches de demande de crdit en ce servant du mcanisme conceptuel des Wizards d'Alfresco. Crer un Wizard Alfresco c'est faire des configurations XML et crire du code JAVA. La configuration XML concerne la configuration du Client Web (l'application Web) pour l'affichage des tapes du Wizard et l'criture du code consiste coder le Backed-Bean (Managed Bean) du Wizard. La ralisation des wizard Alfresco fera l'objet d'une publication ultrieure. Nous allons nanmoins brivement voir comment dvelopper un Wizard Alfresco travers l'exemple de la fiche de demande de crdit. Voici les tapes suivies pour crer le Wizard de la fiche de demande de crdit : configuration du wizard dans le client web crire les pages jsf des diffrentes tapes d'attribution du crdit mise en place des bundles d'internationalisation i18n dfinition du backed-bean du wizard

- 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/

Figure 33 : Configuration du Wizard de la fiche de demande de crdit


</wizard> </wizards> </config>

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.

IV-4-3 - Implmentation de la cration d'un garant


Un garant est une personne physique qui se porte garant pour un crdit. L'entit garant est un type de contenu dfini dans le modle. Les garants sont choisis ou crs lors de la cration de la fiche de demande de crdit. Nous avons ralis la cration d'un garant grce au Framework Conceptuel Dialog d'Alfresco. La ralisation des Dialogs Alfresco fera l'objet d'une publication ultrieure. Nanmoins, nous allons prsenter brivement un petit exemple. Crer un Dialog Alfresco c'est faire des configurations XML et crire du code JAVA. La configuration XML concerne la configuration du Client Web pour l'affichage du dialog et l'criture du code JAVA concerne l'criture du Bean manag du dialog. Voici les tapes suivies pour crer le Dialog de cration des garants : configuration du Dialog dans le client web crire les pages jsf des diffrentes tapes d'attribution du crdit mise en place des bundles d'internationalisation i18n dfinition du backed-bean du wizard

- 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)

IV-4-4 - Implmentation de la cration d'une garantie


Une garantie est aussi un type de contenu configur dans le content model. La cration des garanties se fait galement partir du Framework Dialog d'Alfresco. Bien vouloir ce reporter la section (paragraphe IV-4-3) d'implmentation de la cration d'un garant pour les dtails techniques.

IV-4-5 - Implmentation de la cration d'un document d'identification


Un document d'identification est aussi un type de contenu configur dans le content modle. La cration des documents d'identification se fait galement partir du Framework Dialog d'Alfresco. Bien vouloir ce reporter la section (paragraphe IV-4-3) d'implmentation de la cration d'un garant pour les dtails techniques.

IV-4-6 - Implmentation de la cration d'un contrat


Un contrat est dfini dans notre application comme un type de contenu. La diffrence de ce modle de cration avec les autres est que, le contrat n'est pas saisi mais plutt cr par interfaage avec le Systme d'Information de l'tablissement de crdit. L'interfaage de l'application ECM/BPM d'approbation de crdit avec le SI de l'tablissement de crdit est ralis via l'esb Mule ESB. L'aspect interfaage avec le Systme d'Information de l'tablissement de crdit est en dehors de l'objet de ce document.

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 -