490 likes | 900 Views
Projet Workflow. Réalisé par: HALTOUT Sohaib. Encadré par: Mrs. Karim BAINA. Projet JBPM3/ALFRESCO « Processus de demande de crédit ». Installation. La première étape est d’installer JDK 1.5 , et ensuite définir les variables d’environnements de JAVA. Installation d’outils.
E N D
Projet Workflow Réalisé par: HALTOUT Sohaib • Encadré par: • Mrs. Karim BAINA Projet JBPM3/ALFRESCO « Processus de demande de crédit »
Installation La première étape est d’installer JDK 1.5 , et ensuite définir les variables d’environnements de JAVA.
Installation d’outils Les outils à dézipper dans « C:\workflow » sont : Eclipse Europa et JBPM 3.2.2
Installation d’outils Ainsi pour intégrer JBPM dans Eclipse, on a eu besoin de copier le contenu des dossiers « features » et « plugins » de JBPM dans les mêmes dossiers d’Eclipse. JBPM 3.2.2 Eclipse Dossier Feature
JBPM 3.2.2 Eclipse
Lancement d’Eclipse Après le lancement il faut spécifier le workspace, pour configurer ensuite JBPM dans eclipse.
Configuration JBPM • - Il faut lancer : • « Windows->Preferences » • Dans l’onglet : • « Jboss JBPM -> • Runtime Location » • Il faut ajouter le chemin du JBPM 3.2.2 installé.
SDK Alfresco SDK Alfresco contient un ensemble de classes nécessaires pour le développement des extensions d’Alfresco. Lien de téléchargement : http://sourceforge.net/projects/alfresco/files/SDK/ .
Configuration SDK Alfresco Une fois téléchargé, l’SDK doit étre configuré pour votre IDE de développement, pour mon cas j’ai travaillé avec Netbeans pour le développement des extensions. Et eclipse pour la modélisation du processus
Configuration SDK Alfresco Etape 1 : Import de l’SDK sous netbeans
Configuration SDK Alfresco Etape 2 : Création des libraries (Tools->Libraries->New Library) de type “class library” , • Créer library “AlfrescoEmbedded” • Décompressez le contenu de “[SDK_ROOT]/lib/server/config.jar”, et ajouterce dossier dans la librarie (Add jar/Folder). • Ajouter tout les jar existantsdans “[SDK_ROOT]/lib/server” (Add jar/Folder).
Configuration SDK Alfresco Etape 3 : Création des libraries (Tools->Libraries->New Library) de type “class library” , • Créer library “AlfrescoRemote” • Ajouter tout les jar existantsdans “[SDK_ROOT]/lib/remote” (Add jar/Folder).
Configuration SDK Alfresco • L’SDK est maintenant fonctionnel sous Netbeans. • Pour un guid eplus détaillé sur sa configuration : • http://wiki.alfresco.com/wiki/Alfresco_SDK_on_NetBeans
Installation Alfresco • Alfresco est téléhargable en edition « Labs » gratuite à partir de : • http://wiki.alfresco.com/wiki/Download_Labs
Processus de demande de crédit J’ai travaillé sur le processus de demande de crédit qui suit :
Définition des rôles J’ai défini 3 swimlines (Acteurs) pour notre procédé.
Définition des rôles Alfresco offre une class « org.alfresco.repo.workflow.jbpm.AlfrescoAssignment” pour associer les utilisateurs d’Alfresco aux swimlanes : <swimlane name="directors"> <assignment class="org.alfresco.repo.workflow.jbpm.AlfrescoAssignment"> <actor>#{people.getPerson("director")}</actor> </assignment> </swimlane> <swimlane name="agentsBancaires"> <assignment class="org.alfresco.repo.workflow.jbpm.AlfrescoAssignment"> <pooledactors>#{people.getGroup("GROUP_agents_bancaires")}</pooledactors> </assignment> </swimlane> <swimlane name="initiator"/>
Définition des rôles Alfresco offre une class « org.alfresco.repo.workflow.jbpm.AlfrescoAssignment” pour associer les utilisateurs d’Alfresco aux swimlanes : <swimlane name="directors"> <assignment class="org.alfresco.repo.workflow.jbpm.AlfrescoAssignment"> <actor>#{people.getPerson("director")}</actor> </assignment> </swimlane> <swimlane name="agentsBancaires"> <assignment class="org.alfresco.repo.workflow.jbpm.AlfrescoAssignment"> <pooledactors>#{people.getGroup("GROUP_agents_bancaires")}</pooledactors> </assignment> </swimlane> <swimlane name="initiator"/>
Définition des modéles Chaque tache (TaskNode) nécessite la définition de son modèle de données qui contient ses differents variables, et qui sera utilisé par Alfresco pour la communication avec le moteur JBPM. Ces définitions existent dans le fichier « creditRequestWFModel.xml » . Afin que ce modèle soit pris en charge par Alfresco,il faut créer un autre fichier de configuration « creditRequest-model-context » qui sera chargé par SPRING pour déployer la processus « demande de crédit » ainsi que son modèle de données.
Définition des modéles Tache « Demande credit » : <type name="crwf:creditRequest" > <parent>bpm:startTask</parent> <properties> <property name="crwf:firstName" > <type>d:text</type> </property> <property name="crwf:lastName" > <type>d:text</type> </property> <property name="crwf:adresse" > <type>d:text</type> </property> <property name="crwf:creditAmount" > <type>d:float</type> </property> <property name="crwf:requestNumber" > <type>d:int</type> </property> </properties> </type> Cettte tache étend la tache de base « bpm:startTask » et hérite ses propriétes comme « description » etc…
Définition des modéles Tache « Etude-Credit» : <type name="crwf:studyCreditRequest"> <parent>crwf:creditRequest</parent> <properties> <property name="crwf:rejectionReason" > <type>d:text</type> </property> </properties> </type> Cettte tache étend la tache « demande-credit » et hérite ses propriétes comme « nom » , « prenom » , « montant » etc…
Définition des modéles Tache « revision-credit » : <type name="crwf:reviseRequest"> <parent>crwf:studyCreditRequest</parent> </type> Cettte tache étend la tache « etude-credit » et a les meme propriétes
Définition des modéles Tache « preparation-offre» : <type name="crwf:prepareOffer"> <parent>crwf:creditRequest</parent> <properties> <property name="crwf:ApprovedAmount" > <type>d:float</type> </property> <property name="crwf:creditRate" > <type>d:float</type> </property> <property name="crwf:creditPeriode" > <type>d:text</type> </property> </properties> </type> Cettte tache étend la tache « demande-credit» .
Définition des modéles Tache « etude-offre: <type name="crwf:studyOffer"> <parent>crwf:prepareOffer</parent> </type> Cettte tache étend la tache « preparation-offre» .
Définition des modéles Tache « Consultation-offre: <type name="crwf:consultOffer"> <parent>crwf:prepareOffer</parent> </type> Cettte tache étend la tache « preparation-offre» .
Configuration des dialogs • A chaque « TaskNode » correspond un dialog ( souvent sous form de formulaire) que l’utilisateur doit remplir. • Dans Alfresco il existe plusieurs facons de les définir : • Pour les formulaires simples on peut configurer le client web d’Alfresco pour les afficher. • Pour les formulaires complexes faudra créer notre propre dialog (Page JSF + backing bean + configuration Alfresco) , c’est notamment le cas pour les taches : «Demande-credit » et «etude-credit .
Configuration des dialogs • Pour la tache « etude-credit » : • Backing bean : « ma.ensias.dialogs.EtudeCreditDialog » • Page JSF : « etude_credit.jsp « • Pour la tache « Demande-credit» : • Backing bean : « ma.ensias.wizards.CreditRequestWizard » • Pages JSF «credit_infos.jsp » , « expenses_infos.jsp », « user_infos.jsp »
Configuration des dialogs • Les autres taches sont configurés dans le fichier « web-client-config-custom.xml » . • Exemple : Tache « consulter-offre« : • <config evaluator="node-type" condition="crwf:consultOffer"> • <property-sheet> • <separator name="sep1" display-label="Détails de l'offre" component-generator="HeaderSeparatorGenerator" /> • <show-property display-label="Montant accepté" name="crwf:ApprovedAmount" component-generator="TextFieldGenerator" read-only="true"/> • <show-property display-label="Taux" name="crwf:creditRate" component-generator="TextFieldGenerator" read-only="true"/> • <show-property display-label="Période" name="crwf:creditPeriode" component-generator="TextFieldGenerator" read-only="true"/> • </property-sheet> • </config>
Actions des noeuds • Il est possible de définir des actions à l’entrée de chaque nœud du processus. • Ce code peut étre : • Javascript executé coté « Serveur » à l’aide du moteur « Rhino » integré à Alfresco. • Class java « JBPMSpringActionHandler »
Actions des noeuds • Nœud « Validation-Automatique » : • Ce nœud vérifie que le montant de la demande est inférieur à 10000, si c’est supérieur l’utilisateur doit modifier sa demande. • Code : • <transition to="etude-credit" name="valider"></transition> • <transition to="revision-credit" name="Refuser"> • <condition>#{wf_amount >= 10000}</condition> • </transition>
Actions des noeuds • Nœud « Notification-utilisateur » : • Ce nœud envoi un email à l’initiateur du processus pour l’informer que sa demande a été refusé. • Code : • <transition to="FIN"> • <action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript"> • <runas>admin</runas> • <script> • var mail = actions.create("mail"); • mail.parameters.to = initiator.properties.email; • mail.parameters.subject = "Votre demande de credit"; • mail.parameters.text ="Votre demande de credit(montant = " + crwf_creditAmount +") a ete refuse"; • mail.execute(bpm_package); • </script> • </action> • </transition> • Le variable “crwf_creditAmount “ est mappé automatiquement à “crwf:creditAmount”
Lancement du processus Dans Alfresco: http://localhost:8080/jalfresco On doit saisir le nom et mot de passe de l’utilisateur.
Lancement du processus Puis on choisit « Company home » dans le menu à gauche pour acceder à l’interface principal. Dans « More actions », on choisit « Demande de crédit »
Lancement du processus L’assistant de création d’un nouvel demande de crédit (que j’ai crée) s’affiche, La premiére étape est le saisie de vos informations personnels
Lancement du processus On passe maintenant au deuxiéme étape, ou l’utilisateur est invité à saisir les informations sur la demande (Montant demandé) :
Lancement du processus On passe maintenant au troisiéme étape, ou l’utilisateur est invité à saisir les informations sur ses dépenses :
Lancement du processus On passe maintenant au dérnier étape étape, un sommaire est affiché:
Lancement du processus On consulte maintenant nos taches en cours, comme le montant demandé est supérieur à 1000, la demande n’est pas validé, on trouvera donc la tache « Modification-Demande », on l’ouvre pour modifier notre demande.
Lancement du processus On réduit le montant à « 100 » et on valide
Lancement du processus On se connecte maintenant avec l’utilisateur « agent » qui appartient au groupe « agents_bancaire » qu’on a associé au swimlane « agentsbancaires » , et on ouvre sa liste de taches , on trouve la tache « Etude de credit », on l’ouvre donc:
Lancement du processus La tache est affiché, On accepte la demande :
Lancement du processus On revient à notre list des taches, on y trouve la tache « Preparation-Offre »:
Lancement du processus On entre les informations de l’offre, et le renvoie au directeur pour le réetudier :
Lancement du processus On se connecte maintenant avec l’utilisateur « directeur » qu’on a associé au swimlane « directors » , la tache « etude d’offre » est affiché :
Lancement du processus On ouvre la tache et on l’accepte :
Lancement du processus On se connecte maintenant avec l’initiateur du processus (admin dans notre cas) , la tache « consultation offre » est affiché :
Lancement du processus On ouvre la tache, accepte l’offre, et la processus se termine :