Tutorial Alfresco-jBPM

cancel
Showing results for 
Search instead for 
Did you mean: 
koossery
Member II

Tutorial Alfresco-jBPM

Bonjour à tous
Le Centre de  Compétences Alfersco-jBPM  de Koossery Tech'(http://koossery-tech.fr) vient de publier
un tutorial assez fourni sur une implémentation Alfresco-jBPM d'un projet de workflow avancé gestion de dossiers de crédit

L'article se trouve sur le lien suivant:
http://koossery-tech.developpez.com/tutoriels/java/ecm/alfresco-jbpm/exemple-implementation-workflow...

Citation:
Cet article traite d'un exemple d'implémentation d'un workflow avancé.
Dans la partie I, nous présentons les frameworks (Alfresco, jBoss BPM, etc..) qui ont été utilisés dans ce tutorial.
Dans la partie II nous présentons un résumé des spécifications du workflow.
Dans la partie III nous parlons de la modélisation jBPM du workflow.
Dans la partie IV nous parlons de l'implémentation dans Alfresco. 

Bonne lecture, et n'hésitez pas à leur faire un retour par l'intermédiaire de ce fil.
16 Replies
cytrix
Member II

Re: Tutorial Alfresco-jBPM

Merci beaucoup ! Ça devrait bien m'aider pour ma création de workflow avancé.
Je vous ferai part des remarques si j'en ai.
cytrix
Member II

Re: Tutorial Alfresco-jBPM

Une première remarque page 13. Il est indiqué pour le rôle 'loan-agent' que la valeur de la variable globale "bpm-assignee" a changé et contient maintenant l'acteur agent du crédit. Je ne comprends pas ce passage. Comment avez-vous modifié la valeur de cette variable pour qu'elle contienne un nouvel acteur ?

Ce qui mène à une autre question : avez-vous réussi à utiliser, dans le formulaire à la création d'un nouveau workflow avancé, plusieurs composants aspects de sélection d'un utilisateur (par exemple si je veux sélectionner un utilisateur1 et un utilisateur2 sans passer par l'aspect de sélection d'un groupe) ?
landry_2530
Member II

Re: Tutorial Alfresco-jBPM

Bonsoir cytrix

L'affectation des valeurs se fait de la couche superficielle
d'orcherstration des taches des workflows Alfresco (implémenté en JSF) vers le bas niveau par JBPM.
La couche superficielle se base sur le modèle de contenu du workflow pour piloter le Client Web Alfresco
et communiquer avec le moteur JBPM intégré dans le Backend Alfresco.
La variable bpm_assignee est affectée et modifiée au niveau présentation (la couche superficielle) à chaque fois qu'une assignation est
faite par un utilisateur (assignation d'un utilisateur sur une tache).
C'est la couche superficielle qui gère cette affectation. Elle instancie la variable dans le domaine
JBPM de l'instance du processus encours d'execution et affecte la valeur selectionnée ou entrée par l'utilisateur
à travers le Client Web. A la vu de :

         
<mandatory-aspects>
   <aspect>bpm:assignee</aspect>
</mandatory-aspects>
         
dans le content model d'une tache, la couche superficielle vas si pas encore fait
instancier la variable globale bpm_assignee et affecter la valeur attribuée.

Cette variable etant une variable jbpm globale (instancié par la couche superficielle alfresco), elle va
etre utilisé aucour du traitement de l'instance du processus par le moteur JPBM pour faire des affectations
ou des lectures simples.
C'est ce qui se passe avec la variable (role) loan-agent. Le model JBPM suivant :


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

va etre interpreté par le moteur JBPM et traiter l'assignation du role loan-agent en lui affectant la valeur de la variable globale bpm_assignee.
(Remarque: bpm_assignee est une variable de type node Alfresco {Tout est noeud dans Alfresco}, raison pour laquelle la notation JavaScript Workflow Alfresco est utilisé pour
accéder à sa propriété userName)


Non, la multiselection d'utilisateur n'est pas encore réalisée.
Nous envisageons pour solutionner ce problème, (pour très bientot), l'intégration de composant UI de selection
multiutilisateur préexistant dans Alfresco dans le modèle de base du workflow (bpmModel.xml). Ceci permettra
à travers une configuration du genre


         <mandatory-aspects>
            <aspect>bpm:assignees</aspect>
         </mandatory-aspects>
de selectionner plusieurs utilisateurs sans forcement avoir besoin de créer un groupe.

J'espère avoir été utile

Je reste disposé à toutes questions et suggestions.
cytrix
Member II

Re: Tutorial Alfresco-jBPM


         <mandatory-aspects>
            <aspect>bpm:assignees</aspect>
         </mandatory-aspects>
de selectionner plusieurs utilisateurs sans forcement avoir besoin de créer un groupe.

Merci pour votre réponse très complète qui correspond à ce que j'ai compris du fonctionnement d'alfresco (ça me rassure Smiley Wink ).

Concernant la sélection multi-utilisateurs, il y a effectivement le composant bpm:assignees qui permet de faire ça. Néanmoins, si l'on veut par exemple sélectionner plusieurs utilisateurs de métiers différents (au hasard rédacteur1 et rédacteur2, valideur1 et valideur2), il faudrait utiliser plusieurs composants bpm:assignees pour bien différencier les 2 utilisateurs rédacteurs et valideurs sélectionnés, ce que ne permet pas alfresco aujourd'hui (exactement comme pour le composant bpm:assignee).
Une solution pourrait consister en l'utilisation de bêtes champs String (au lieu de bpm:assignee), ce ne sera pas très joli dans l'ui mais devrait faire l'affaire.
Une autre solution serait de créer 2 groupes fixes (définis pour ce workflow) : un groupe rédacteur et un groupe valideur. Le workflow irait toujours chercher les utilisateurs de ces 2 groupes.
Mais je dévie un peu du sujet initial … Smiley Wink .

Encore merci pour votre réponse,
Cordialement.
jayjayecl
Active Member II

Re: Tutorial Alfresco-jBPM

"ce que ne permet pas alfresco aujourd'hui (exactement comme pour le composant bpm:assignee)."

Alfresco permet de tout faire avec un peu de développement spécifique.
Ce n'est pas le fait que la varable s'appelle "bpm:assignees" qui définit le composant graphique de sélection. C'est le type de cette association.

Pour votre besoin, il suffirait de définir, au sein d'un aspect "custom:delegationAspect" deux associations "custom:valideurs" et "custom:redacteurs", avec la même "définition topologique" d'association que bpm:assignees (voir fichier bpmModel.xml).
Faites porter cet aspect par chaque tâche de votre workflow, et ensuite afficher ces associations dans le formulaire de tâche choisi (via web-client-config-custom.xml). Vous verrez 2 fois le composant choisi.
Il ne vous reste plus qu'a positionner les swimlanes qui vous conviennent, et c'est réglé.
landry_2530
Member II

Re: Tutorial Alfresco-jBPM

Bonjour Rodel,

Réponse exacte et très bien formulée.
Cytrix, J'ai fais le test et c'est nickel.

En fait, il suffit tout simplement de définir le modèle (aspect) :



<aspect name="custom:delegationAspect">
          <associations>
               <association name="custom:valideurs">
                   <source>
                        <mandatory>false</mandatory>
                        <many>false</many>
                    </source>
                    <target>
                        <class>cm:person</class>
                        <mandatory>true</mandatory>
                        <many>true</many>
                    </target>
                </association>
                <association name="custom:redacteurs">
                    <source>
                          <mandatory>false</mandatory>
                          <many>false</many>
                    </source>
                    <target>
                        <class>cm:person</class>
                        <mandatory>true</mandatory>
                        <many>true</many>
                     </target>
                </association>
          </associations>
</aspect>

Les deux associations te permettrons de faire des sélections multiples pour chaque roles (Redacteurs et valideurs).
Il suffit maintenant de revenir dans ton jpdl déclarer ton swimlane et aller dans le model de ton workflow défini l'aspect dans la task correspondante

<mandatory-aspects>
        <aspect>custom:delegationAspect</aspect>
</mandatory-aspects>

sans oublier d'importer le modèle définissant cet aspect.
jayjayecl
Active Member II

Re: Tutorial Alfresco-jBPM

merci.
Ca fait quelques mois que je mange du workflow très avancé dans Alfresco, avec beaucoup de développement spécifique…
je commence à bien en comprendre les différentes mécaniques
cytrix
Member II

Re: Tutorial Alfresco-jBPM

Merci pour vos réponses, je mettrai peut-être cette technique en place quand mon projet démarrera vraiment en septembre.
Alfresco c'est sympa, mais comme pour tout portail/framework, un temps d'adaptation est nécessaire, qui vient au fil des semaines :-) .
slipknotik
Active Member

Re: Tutorial Alfresco-jBPM

Bonjour , je suis un débutant en alfresco et au domaine des workflow et je dois créer un workflow sur le cycle de vie d'un contrat (draft, correction, suggération des modifications …) et en lisant ce tutorial j'ai constaté qu'il est proche de mon besoin.
alors ce que je demande c'est : est ce que je peux obtenir le code source de cette exemple? si oui pouvez vous m'indiquer un lien?
merci ,