Question

Bonjour la communauté SO,

Je n'ai pas eu de chance obtenir de l'aide dans les forums Alfresco, et j'espère pour plus d'ici. Nous construisons une application basée sur Alfresco et jBPM et j'ai défini un flux de travail, mais j'ai soit défini mal ou me manque quelque chose ou il y a des bugs dans l'intégration avec Alfresco jBPM et j'ai besoin d'aide pour déterminer qui et le fixer. Voici le problème:

J'ai un flux de travail avancé et je suis en train de le lancer à partir de JavaScript. Voici le code que je utilise pour démarrer le flux de travail:

var nodeId = args.nodeid;
var document = search.findNode("workspace://SpacesStore/" + nodeId);
var workflowAction = actions.create("start-workflow");
workflowAction.parameters.workflowName = "jbpm$nmwf:MyWorkflow";
workflowAction.parameters["bpm:workflowDescription"] = "Please edit: " + document.name;
workflowAction.parameters["bpm:assignees"] = [people.getPerson("admin"), people.getPerson("andyg")];
var futureDate = new Date();
futureDate.setDate(futureDate.getDate() + 7);
workflowAction.parameters["bpm:workflowDueDate"] = futureDate;
workflowAction.execute(document);

et se passe bien e-mail envoyé à partir de la transition par défaut du nœud de démarrage des incendies très bien. Cependant, quand je vais chercher le flux de travail dans ma liste de tâches, il est pas là, mais il est dans mon terminé Liste des tâches. La transition par défaut (la seule transition) à partir des points de noeud de départ à un noeud de tâche qui a quatre transitions.

Il y a 8 tâches et 22 transitions dans le flux de travail. Lorsque j'utilise la console de workflow pour démarrer le flux de travail et mettre fin à la tâche de démarrage, il suit correctement la transition du nœud de démarrage par défaut à la tâche suivante. La nouvelle tâche apparaît dans « Afficher les tâches », mais ne montre pas dans « montrer mes tâches » (apparemment parce que la tâche a été marquée comme étant effectuée pour une raison quelconque, qu'il ne soit pas dans le nœud « end »). La tâche est:

task id: jbpm$111 , name: nmwf:submitInEditing , properties: 18

Si je fais "show transitions" il semble juste que je me attends:

path: jbpm$62-@ , node: In Editing , active: true
 task id: jbpm$111 , name: nmwf:submitInEditing, title: submitInEditing title , desc: submitInEditing description , properties: 18
 transition id: Submit for Approval , title: Submit for Approval
 transition id: Request Copyediting Review , title: Request Copyediting Review
 transition id: Request Legal Review , title: Request Legal Review
 transition id: Request Review , title: Request Review

Je ne veux pas poster l'ensemble du processus car il est grand, mais voici les deux premiers noeuds:

D'abord les swimlanes:

<swimlane name="initiator"></swimlane>
<swimlane name="Content Providers">
  <assignment actor-id="Content Providers"  class="org.alfresco.repo.workflow.jbpm.AlfrescoAssignment">
     <actor>#{bpm_assignees}</actor>
  </assignment>
</swimlane>

les noeuds:

<start-state name="start">
    <task name="nmwf:submitTask" swimlane="initiator"/>
    <transition name="" to="In Editing">
        <action>
            <runas>admin</runas>
            <script>
                /* Code to send e-mail that a new workflow was started.  I get this e-mail. */
            </script>
        </action>
    </transition>
</start-state>
<task-node name="In Editing">
    <task name="nmwf:submitInEditing" swimlane="Content Providers" />
    <!-- I put e-mail sending code in each of these transitions, but none are firing. -->
    <transition to="In Approval" name="Submit for Approval"></transition>
    <transition to="In Copyediting" name="Request Copyediting Review"></transition>
    <transition to="In Legal Review" name="Request Legal Review"></transition>
    <transition to="In Review" name="Request Review"></transition>
</task-node>

Voici le modèle pour ces deux noeuds:

 <type name="nmwf:submitTask">
    <parent>bpm:startTask</parent>


    <mandatory-aspects>
       <aspect>bpm:assignees</aspect>
    </mandatory-aspects>
 </type>


 <type name="nmwf:submitInEditing">
    <parent>bpm:workflowTask</parent>


    <mandatory-aspects>
       <aspect>bpm:assignees</aspect>
    </mandatory-aspects>
 </type>

Voici un pseudo-journal de l'exécution du flux de travail dans la console de workflow:

:: deploy alfresco/extension/workflow/processdefinition.xml

deployed definition id: jbpm$69 , name: jbpm$nmwf:MyWorkflow , title: nmwf:MyWorkflow , version: 28

:: var bpm:assignees* person admin,andyg

set var {http://www.alfresco.org/model/bpm/1.0}assignees = [workspace://SpacesStore/73cf1b28-21aa-40ca-9dde-1cff492d0268, workspace://SpacesStore/03297e91-0b89-4db6-b764-5ada2d167424]

:: var bpm:package package 1

set var {http://www.alfresco.org/model/bpm/1.0}package = workspace://SpacesStore/6e2bbbbd-b728-4403-be37-dfce55a83641

:: start bpm:assignees bpm:package

started workflow id: jbpm$63 , def: nmwf:MyWorkflow
path: jbpm$63-@ , node: start , active: true
 task id: jbpm$112 , name: nmwf:submitTask, title: submitTask title , desc: submitTask description , properties: 16
 transition id: [default] , title: Task Done

:: show transitions

path: jbpm$63-@ , node: start , active: true
 task id: jbpm$112 , name: nmwf:submitTask, title: submitTask title , desc: submitTask description , properties: 17
 transition id: [default] , title: Task Done

:: end task jbpm$112

signal sent - path id: jbpm$63-@
path: jbpm$63-@ , node: In Editing , active: true
 task id: jbpm$113 , name: nmwf:submitInEditing, title: submitInEditing title , desc: submitInEditing description , properties: 17
 transition id: Submit for Approval , title: Submit for Approval
 transition id: Request Copyediting Review , title: Request Copyediting Review
 transition id: Request Legal Review , title: Request Legal Review
 transition id: Request Review , title: Request Review

:: show tasks

task id: jbpm$113 , name: nmwf:submitInEditing , properties: 18

:: show my tasks

admin:
 [there is no output here]

J'ai été fait l'hypothèse que le bpm: cessionnaires que je suis en train avant de commencer le flux de travail sont d'abord se passer au premier noeud de tâche « dans l'édition ». Il est clair que les cessionnaires sont sur l'objet de la tâche et non sur l'objet de flux de travail. J'ai ajouté l'aspect cessionnaires de démarrage de la tâche à l'état afin qu'il puisse les tenir (après avoir eu un problème, d'abord, ils ne sont pas là) et peut-être qu'ils sont encore assis là, mais le démarrage Etat a pris fin avant même d'obtenir le contrôle retour du script Web (pas que cela aiderait si elle n'a pas été terminée, je besoin d'être dans « dans l'édition » comme le démarrage état est utilisé pour ouvrir une session que le flux de travail a été lancé).

Il m'a toujours confus que les propriétés que je dois ensemble sur chaque besoin de tâche à la demande avant que la tâche est saisie (lorsque vous choisissez une transition, vous devez fournir les données pour la tâche suivante avant de pouvoir passer à la prochaine tâche que vous devez valider que vous avez toutes les données requises premier et le signal puis la transition). Cependant, le code pour démarrer le flux de travail est asynchrone et ne retombera pas non plus le flux de travail commencé ou la tâche en cours (qui dans mon cas serait « dans l'édition »). Donc, de toute façon vous ne pouvez pas définir des variables telles que bpm: cessionnaires et bpm: dueDate.

Je me demande si c'est le problème avec la liste des tâches de l'utilisateur. J'installe dans les cessionnaires la liste des propriétés, mais peut-être les cessionnaires vont à la tâche démarrage Etat et ne reçoivent pas passé à la tâche « dans l'édition »?

Notez que ce mon premier flux de jBPM, alors s'il vous plaît ne présumez pas que je sais ce que je fais. Si vous voyez quelque chose qui ressemble au large, il est probablement et je ne sais pas.

Merci à l'avance pour tout conseil ou de l'aide,

Était-ce utile?

La solution

Alors, il est apparu que mon problème était malentendu comment faire cessionnaires multiples tout en permettant le flux de travail de la transition avec l'une de ces cessionnaires. Il se avère que jBPM ne supporte pas dans un modèle simple, vous devez faire beaucoup plus de travail que la simple assignation multiple assignees.I avait suivi un mauvais exemple que j'ai trouvé sur Internet et avait fait une hypothèse erronée sur la façon dont cette travaux.

jBPM a un concept de tâches parallèles (à l'aide de fourches), mais l'action normale exige que tous les cessionnaires pour accomplir leurs tâches avant que le flux de travail de transition. Il se trouve que la bonne façon de résoudre ce problème est à la fourchette la tâche à tous les cessionnaires, mais lorsque l'un des cessionnaires termine leur tâche que nous rafistoler la variable qui stocke combien cessionnaires doivent remplir leurs tâches (node.nOutOfM) à duper jBPM en terminer la tâche avant que tous les cessionnaires ont terminé (cela peut aussi permettre que x sur cessionnaires y avoir pour compléter la tâche).

Au lieu de code mis à jour d'affichage, voici les articles que j'ai utilisé pour résoudre ce problème:

http://forums.alfresco.com/en/viewtopic. php? f = 30 & t = 8691

http://forums.alfresco.com/en/viewtopic. php? f = 34 & t = 5189

http: // dev.alfresco.com/resource/docs/java/repository/org/alfresco/repo/workflow/jbpm/ForEachFork.html

http://wiki.alfresco.com/wiki/WorkflowAdministration#For_Each_Fork

Autres conseils

Je ne suis pas sûr, mais je pense que vous voulez <pooledactors> ici au lieu de <actor>.

Peut-être cela est la raison pour laquelle votre wf ne fonctionne pas comme prévu.

<actor>#{bpm_assignees}</actor>

En outre, je crois que la tâche devrait être dans vos tâches Pooled, pas vos Mes tâches, car il est une tâche mis en commun (parce que vous essayez de définir plusieurs cessionnaires).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top