Problèmes de Leaving Node

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

Problèmes de Leaving Node

Bonjour,

J'automatise mes workflows via Java et j'ai un souci pour utiliser la méthode leave de l'API TaskNode.

En effet, lorsque je veux terminer une tâches ou une node quelconque, il me retourne l'erreur suivante :

org.jbpm.JbpmException: can't leave node 'TaskNode(jbpm$44526)' without leaving transition
   at org.jbpm.graph.def.Node.leave(Node.java:460)
   at org.jbpm.graph.node.TaskNode.leave(TaskNode.java:213)
   at org.jbpm.graph.def.Node.leave(Node.java:438)
   at src.gestionWorkflows.WorkflowDefinition.$$Workflow.returnWorkflowEnvironnementByUser($$Workflow.java:391)
   at src.gestionWorkflows.WorkflowDefinition.$$Workflow.execute($$Workflow.java:169)
   at src.interfaceAltiva.IHM_Principale.jBAddWorkflowsMouseClicked(IHM_Principale.java:232)
   at src.interfaceAltiva.IHM_Principale.access$0(IHM_Principale.java:207)
   at src.interfaceAltiva.IHM_Principale$1.mouseClicked(IHM_Principale.java:80)
   at java.awt.AWTEventMulticaster.mouseClicked(Unknown Source)
   at java.awt.Component.processMouseEvent(Unknown Source)
   at javax.swing.JComponent.processMouseEvent(Unknown Source)
   at java.awt.Component.processEvent(Unknown Source)
   at java.awt.Container.processEvent(Unknown Source)
   at java.awt.Component.dispatchEventImpl(Unknown Source)
   at java.awt.Container.dispatchEventImpl(Unknown Source)
   at java.awt.Component.dispatchEvent(Unknown Source)
   at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
   at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
   at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
   at java.awt.Container.dispatchEventImpl(Unknown Source)
   at java.awt.Window.dispatchEventImpl(Unknown Source)
   at java.awt.Component.dispatchEvent(Unknown Source)
   at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
   at java.awt.EventQueue.access$000(Unknown Source)
   at java.awt.EventQueue$3.run(Unknown Source)
   at java.awt.EventQueue$3.run(Unknown Source)
   at java.security.AccessController.doPrivileged(Native Method)
   at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
   at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
   at java.awt.EventQueue$4.run(Unknown Source)
   at java.awt.EventQueue$4.run(Unknown Source)
   at java.security.AccessController.doPrivileged(Native Method)
   at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
   at java.awt.EventQueue.dispatchEvent(Unknown Source)
   at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
   at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
   at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
   at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
   at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
   at java.awt.EventDispatchThread.run(Unknown Source)

Peut importe que j'utilise l'une des 3 méthodes leave il me retourne cette erreur ou alors la suivante   " " toAcompteL " n'est pas une leaving node ".

Je vous fais par de mon code correspondant à mon problème + le bout de mon processus concerné :

Code Java :

ProcessDefinition processDef = new ProcessDefinition("jbpm$44598");

ProcessInstance process = new ProcessInstance(processDef);
List list =   process.findAllTokens();
System.out.println("Size liste token : " + list.size());
System.out.println(list.get(0));
Token token = new Token(process);
ExecutionContext exec = new ExecutionContext(token) ;
taskNode.leave(exec);

Le problème doit surement venir de mon token, car ma liste de token en contient à chaque fois qu'un seul, peut importe le workflow choisis "jbpm$44598" ou autres etc..
Je ne trouve pas comment correctement initialiser mon token..

Voici la node en question :

   <task-node name="Devis Signé">
   <task name="mywf:DevisSigne" swimlane="admin" />
      <event type="node-enter">
      <action name="action" class="src.gestionWorkflows.ActionHandler.MessageActionHandler">
      </action>   
      </event>
      <transition to="Bon de Livraison" name="toAcompteL"></transition>

   </task-node>


EDIT :

Après quelques Test, j'en ai conclu que j'ai mal initialisé mon Procces définition :
ProcessDefinition processDef = new ProcessDefinition("jbpm$44598");

Je ne sais pas pourquoi car si je passe son id, name ou title il me retourne toujours l'erreur.
Mon workfloService me retourne bien tout mes workflows définis et sous l'interface share je peux très bien exécuter mon workflow, passer les étapes etc etc..

Merci
1 Reply
b3rz3k
Member II

Re: Problèmes de Leaving Node

Je clos ce topic en apportant une solution possible !

Il faut tout d'abord récupérer vos Tasks de la manière suivante :

  WorkflowTaskQuery query = new WorkflowTaskQuery();
     query.setActive(null);
          
    List<WorkflowTask> tasks =workflowService.queryTasks(query);

avec les conditions/boucles que vous voulez dans un for/if/while etc etc…

et ensuite vous pouvez finir une node comme ceci suivant la liste des tâches.

workflowService.endTask(tasks.get(f).id, null);   



Bon codage  :wink: