cancel
Showing results for 
Search instead for 
Did you mean: 

Setting variables in workflow AFTER start from Java?

joko71
Confirmed Champ
Confirmed Champ
I created serial workflow which works perfectly in Alfresco web client: initiator selects actor next in line to perform task, selected actor upon receiving task selects another, another actor selects another… you get the picture… Smiley Happy

I tried to replicate this behavior in Java. I can select task, but I'm unable to pass next actor to workflow. I tried to use updateTask method from workflow services, but task is not updated with next actor, so I get error that task variable is not defined.

workflow model:
   <types>
      <type name="sdzwf:ulazniRacuniStartTask">
         <parent>bpm:startTask</parent>
         <overrides>
            <property name="bpm:packageActionGroup">
               <default>add_package_item_actions</default>
            </property>
            <property name="bpm:packageItemActionGroup">
               <default>edit_package_item_actions</default>
            </property>
         </overrides>
         <mandatory-aspects>
            <aspect>sdzwf:referent2</aspect>
         </mandatory-aspects>
      </type>
            
      <type name="sdzwf:ulazniRacuniReferent2Task">
         <parent>bpm:workflowTask</parent>
         <overrides>
            <property name="bpm:packageActionGroup">
               <default>add_package_item_actions</default>
            </property>
            <property name="bpm:packageItemActionGroup">
               <default>edit_package_item_actions</default>
            </property>
         </overrides>
         <mandatory-aspects>
            <aspect>sdzwf:procelnik</aspect>
         </mandatory-aspects>
      </type>
      
      <type name="sdzwf:ulazniRacuniProcelnikTask">
         <parent>bpm:workflowTask</parent>
         <overrides>
            <property name="bpm:packageActionGroup">
               <default>add_package_item_actions</default>
            </property>
            <property name="bpm:packageItemActionGroup">
               <default>edit_package_item_actions</default>
            </property>
         </overrides>
         <mandatory-aspects>
            <aspect>sdzwf:likvidator</aspect>
         </mandatory-aspects>
      </type>
      
      <type name="sdzwf:ulazniRacuniLikvidatorTask">
         <parent>bpm:workflowTask</parent>
         <overrides>
            <property name="bpm:packageActionGroup">
               <default>add_package_item_actions</default>
            </property>
            <property name="bpm:packageItemActionGroup">
               <default>edit_package_item_actions</default>
            </property>
         </overrides>
      </type>
      
   </types>

   <aspects>
         
   <aspect name="sdzwf:referent2">
      <associations>
         <association name="sdzwf:referent2">
            <source>
               <mandatory>false</mandatory>
               <many>false</many>
            </source>
            <target>
               <class>cm:person</class>
               <mandatory>false</mandatory>
               <many>false</many>
            </target>
         </association>
      </associations>
   </aspect>
   
   <aspect name="sdzwf:procelnik">
      <associations>
         <association name="sdzwf:procelnik">
            <source>
               <mandatory>false</mandatory>
               <many>false</many>
            </source>
            <target>
               <class>cm:person</class>
               <mandatory>false</mandatory>
               <many>false</many>
            </target>
         </association>
      </associations>
   </aspect>
   
   <aspect name="sdzwf:likvidator">
      <associations>
         <association name="sdzwf:likvidator">
            <source>
               <mandatory>false</mandatory>
               <many>false</many>
            </source>
            <target>
               <class>cm:person</class>
               <mandatory>false</mandatory>
               <many>false</many>
            </target>
         </association>
      </associations>
   </aspect>

   </aspects>

workflow:
<?xml version="1.0" encoding="UTF-8"?>

<process-definition
  xmlns="urn:jbpm.org:jpdl-3.1"  name="sdzwf:ulazniRacuni">
 
   <swimlane name="initiator" />
        
   <swimlane name="referent2">
      <assignment class="org.alfresco.repo.workflow.jbpm.AlfrescoAssignment">
         <actor>#{sdzwf_referent2}</actor>
      </assignment>
   </swimlane>
   
   <swimlane name="procelnik">
      <assignment class="org.alfresco.repo.workflow.jbpm.AlfrescoAssignment">
         <actor>#{sdzwf_procelnik}</actor>
      </assignment>
   </swimlane>
   
   <swimlane name="likvidator">
      <assignment class="org.alfresco.repo.workflow.jbpm.AlfrescoAssignment">
         <actor>#{sdzwf_likvidator}</actor>
      </assignment>
   </swimlane>                  
 
   <start-state name="start">
      <task name="sdzwf:ulazniRacuniStartTask" swimlane="initiator" />      
      <transition name="" to="referent2Task"></transition>
   </start-state>
        
   <task-node name="referent2Task">
      <task name="sdzwf:ulazniRacuniReferent2Task" swimlane="referent2"></task>
      <transition to="procelnikTask" name="Odobri"></transition>
   </task-node>

   <task-node name="procelnikTask">
      <task name="sdzwf:ulazniRacuniProcelnikTask" swimlane="procelnik"></task>
      <transition to="likvidatorTask" name="Odobri"></transition>
      <transition to="referent2Task" name="Vrati"></transition>
   </task-node>

   <task-node name="likvidatorTask">
      <task name="sdzwf:ulazniRacuniLikvidatorTask" swimlane="likvidator"></task>            
      <transition to="procelnikTask" name="Vrati"></transition>
      <transition to="end" name="Odobri"></transition>
   </task-node>
  
   <end-state name="end"></end-state>
  
</process-definition>
1 REPLY 1

joko71
Confirmed Champ
Confirmed Champ
I solved the problem, so this thread can be closed.

It seems that I approached this problem wrong way. My assumption that I have to set properties first before updateTask was wrong. Right approach is to signal task first, then from path end old task with endTask, and then update new task from path, especially with bpmSmiley Surprisedwner value which will transfer task to the new owner.