cancel
Showing results for 
Search instead for 
Did you mean: 

[Solved]Can't Update Workflow Task Properties

min
Champ in-the-making
Champ in-the-making
I am trying to update task properties with data captured from the previous task in the same workflow.  I've read all of the previous posts on this topic, but I am still having a problem.  Using Javascript taskInstance.setVariable("wf:someproperty", somevalue) in the task-create event of the second task I have successfully updated the property in the task model and it displayed in the workflow UI for the second task.  However, I am trying to update two properties, but only one property actually gets updated.  I confirmed the updates via the workflow console. The taskInstance statements are contained in the task-create event of the second task.  I can see via logger.log that the somevalue variables are populated prior to the setVariable.  The properties I am updating are part of a mandatory aspect attached to all of the tasks in the workflow.  The "requestShortDescription" property updates everytime and the "department" property never updates. 

As a test I removed constraints from the task model for the property that was not updating (department) thinking that this somehow was causing a problem, but this hasn't helped.  Has anyone experienced only some properties getting updated via taskInstance.setVariable?  Any suggestions? 


<process-definition  xmlns="urn:jbpm.org:jpdl-3.2"  name="ncwf:reviewapprovePurchaseRequest">

   <swimlane name="initiator"></swimlane>

   <start-state name="Start">
      <task name="ncwf:submitPurchaseRequestTask" swimlane="initiator"/>
      <transition to="InitiateRequest"></transition>
   
      <event type="task-end">
           <action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">
            <script>
               <expression>
                  var requestShortDescription = taskInstance.getVariable("ncwf_requestShortDescription");
                  executionContext.setVariable("ncwf_requestShortDescription",requestShortDescription);
                  var department = taskInstance.getVariable("ncwf_department");
                  executionContext.setVariable("ncwf_department",department);
               </expression>
            </script>
         </action>
       </event>
   </start-state>
   
   <swimlane name="assignee">
      <assignment class="org.alfresco.repo.workflow.jbpm.AlfrescoAssignment">
         <actor>#{bpm_assignee}</actor>
      </assignment>
   </swimlane>

   <node name="InitiateRequest">
      <transition to="Review" name="toReview"></transition>
   </node>
   
   <task-node name="Review">
      <task name="ncwf:reviewPurchaseRequestTask" swimlane="assignee" /> 
      <transition to="Approved" name="toApproved">   </transition>
      <transition to="Rejected" name="toRejected">   </transition>
      
      <event type="task-create">
         <action class="org.alfresco.repo.workflow.jbpm.AlfrescoJavaScript">
            <script>
               <expression>
                  var department=executionContext.getVariable("ncwf_department");
                  taskInstance.setVariable("ncwf:department", department);
                  var requestShortDescription=executionContext.getVariable("ncwf_requestShortDescription");
                  taskInstance.setVariable("ncwf:requestShortDescription", requestShortDescription);
               </expression>   
            </script>
         </action>   
      </event>      

   </task-node>

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

<model name="ncwf:wfModelPurchaseRequest" xmlns="http://www.alfresco.org/model/dictionary/1.0">
   <description>Custom Workflow Model</description>
   <version>1.0</version>
   
   <imports>   
      <import uri="http://www.alfresco.org/model/dictionary/1.0" prefix="d" />      
      <import uri="http://www.alfresco.org/model/bpm/1.0" prefix="bpm"/>
   </imports>         
   
   <namespaces>
      <namespace uri="http://www.alfresco.org/model/workflow/nc/1.0" prefix="ncwf"/>      
   </namespaces>      
   
   <types>   
      
      <!–  Basic Review & Approve Tasks –>              
      <!–                               –>   
      <type name="ncwf:submitPurchaseRequestTask">         
         <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>bpm:assignee</aspect>               
            <aspect>ncwf:requestData</aspect>             
         </mandatory-aspects>
      </type>
            
      <type name="ncwf:reviewPurchaseRequestTask">            
         <parent>bpm:workflowTask</parent>   

         <overrides>               
            <property name="bpm:packageItemActionGroup">                        
               <default>edit_package_item_actions</default>               
            </property>            
         </overrides>
         
         <mandatory-aspects>
            <aspect>bpm:assignee</aspect>
            <aspect>ncwf:requestData</aspect>            
         </mandatory-aspects>   
   
      </type>      
   </types>               
      
      <aspects>
         <aspect name="ncwf:requestData">
            <properties>
               <property name="ncwf:requestShortDescription">
                  <type>d:text</type>
                  <mandatory>true</mandatory>
                  <default></default>
               </property>
               <property name="ncwf:department">
                  <type>d:text</type>
                  <mandatory>true</mandatory>
                  <default></default>
                  <constraints>
                     <constraint type="LIST">
                        <parameter name="allowedValues">
                           <list>
                              <value>Information Technology</value>
                              <value>Marketing</value>
                              <value>Sales</value>
                              <value>Finance</value>
                           </list>
                        </parameter>
                        <parameter name="caseSensitive"><value>true</value></parameter>
                     </constraint>
                  </constraints>
               </property>
               <property name="ncwf:approvedAmount">
                  <type>d:int</type>
                  <mandatory>false</mandatory>
                  <default>0</default>
                  <constraints>
                     <constraint type="MINMAX">
                        <parameter name="minValue"><value>0</value></parameter>
                        <parameter name="maxValue"><value>999999</value></parameter>
                     </constraint>
                  </constraints>
               </property>
            </properties>
         </aspect>
      </aspects>
</model>
1 REPLY 1

min
Champ in-the-making
Champ in-the-making
This problem has been solved per http://forums.alfresco.com/en/viewtopic.php?f=34&t=22803

The property that I could not update had a default value set in the model.  Once I removed the default value, the property is updated correctly. 

While this solved the problem, I question whether this is proper behavior.  My assumption was that by the time the task-create event fires, that the properties had already received their default values.  In that I can read property values (e.g., taskId) in the task-create event, I assumed that other properties had already received their default values.  It would seem that the default values are assigned after the task-create event so therefore, the values I had set were overwritten.