工作流UserTask的使用

来源:互联网 发布:域名被通信局撤销 编辑:程序博客网 时间:2024/05/30 23:07

工作流流程图:

 

 

工作流配置:

Xml代码  收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <definitions id="definitions"   
  3.   xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL"  
  4.   xmlns:activiti="http://activiti.org/bpmn"  
  5.   targetNamespace="Examples">  
  6.   <process id="executionAndTaskListenerDelegation">  
  7.   <!-- 全局性 -->  
  8.   <extensionElements>   
  9.       <activiti:executionListener class="com.easyway.activiti.servicetask.FieldInjectedExecutionListener" event="start">   
  10.         <activiti:field name="fixedValue" stringValue="Yes, I am " />   
  11.         <activiti:field name="dynamicValue" expression="${sentenceGenerator.getSentence()}" />   
  12.       </activiti:executionListener>   
  13.     </extensionElements>   
  14.     
  15.    <startEvent id="start" />  
  16.     <sequenceFlow id="flow1" sourceRef="start" targetRef="userTask" />  
  17.     <!--  调用相关的工作流执行委托监听事件和任务监听事件-->  
  18.     <userTask id="userTask" name="Schedule meeting">  
  19.       <extensionElements>  
  20.         <activiti:executionListener event="start" delegateExpression="${myExecutionListenerBean}" />  
  21.         <activiti:taskListener event="create" delegateExpression="${myTaskListenerBean}" />  
  22.       </extensionElements>  
  23.     </userTask>  
  24.     <sequenceFlow id="flow3" sourceRef="userTask" targetRef="userTask3" />  
  25.     <!--  调用相关的工作流执行监听事件-->  
  26.     <userTask id="userTask3">  
  27.       <extensionElements>   
  28.       <activiti:executionListener expression="${myPojo.myMethod(execution.event)}" event="end" />   
  29.     </extensionElements>   
  30.     </userTask>   
  31.       
  32.      <sequenceFlow id="flow4" sourceRef="userTask3" targetRef="end" />  
  33.      
  34.      
  35.       
  36.     <endEvent id="end" />  
  37.       
  38.   </process>  
  39.   
  40. </definitions>  

 

 

代码:

Java代码  收藏代码
  1. package com.easyway.activiti.servicetask;  
  2.   
  3. import org.activiti.engine.runtime.ProcessInstance;  
  4.   
  5.   
  6. /** 
  7.  * 1.全局性的: 
  8.  *    <!-- 全局性 --> 
  9.   <extensionElements>  
  10.       <activiti:executionListener class="com.easyway.activiti.servicetask.FieldInjectedExecutionListener" event="start">  
  11.         <activiti:field name="fixedValue" stringValue="Yes, I am " />  
  12.         <activiti:field name="dynamicValue" expression="${sentenceGenerator.getSentence()}" />  
  13.       </activiti:executionListener>  
  14.     </extensionElements>  
  15.      
  16.     2. 
  17.         <userTask id="userTask" name="Schedule meeting"> 
  18.       <extensionElements> 
  19.         <activiti:executionListener event="start" delegateExpression="${myExecutionListenerBean}" /> 
  20.         <activiti:taskListener event="create" delegateExpression="${myTaskListenerBean}" /> 
  21.       </extensionElements> 
  22.     </userTask> 
  23.      
  24.     3. 
  25.         <userTask id="userTask3"> 
  26.               <extensionElements>  
  27.               <activiti:executionListener expression="${myPojo.myMethod(execution.event)}" event="end" />  
  28.             </extensionElements>  
  29.         </userTask>  
  30.  * @author longgangbai 
  31.  *  
  32.  * 2011-12-20  下午09:30:42 
  33.  */  
  34. @ContextConfiguration("classpath:servicetaskSpringTest-context.xml")  
  35. public class ExecutionAndTaskListenerDelegationExpressionTest extends SpringActivitiTestCase {  
  36.     
  37.   
  38.   @Deployment(resources={"diagrams/userTaskexecutionAndTaskListenerDelegationExpression.bpmn20.xml"})  
  39.   public void testExecutionAndTaskListenerDelegationExpression() {  
  40.     ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("executionAndTaskListenerDelegation");  
  41.     assertEquals("working", runtimeService.getVariable(processInstance.getId(), "executionListenerVar"));  
  42.     assertEquals("working", runtimeService.getVariable(processInstance.getId(), "taskListenerVar"));  
  43.   }  
  44.     
  45.     
  46. }  

 

 

 

Java代码  收藏代码
  1. package com.easyway.activiti.servicetask;  
  2.   
  3. import org.activiti.engine.delegate.DelegateExecution;  
  4.   
  5. /** 
  6.  * @author longgangbai 
  7.  *  
  8.  * 2011-12-20  下午10:55:06 
  9.  */  
  10. public class FieldInjectedExecutionListener implements ExecutionListener {   
  11.        
  12.       private Expression fixedValue;   
  13.        
  14.       private Expression dynamicValue;   
  15.        
  16.   
  17.     /* (non-Javadoc) 
  18.      * @see org.activiti.engine.delegate.ExecutionListener#notify(org.activiti.engine.delegate.DelegateExecution) 
  19.      */  
  20.     @Override  
  21.     public void notify(DelegateExecution execution) throws Exception {  
  22.         execution.setVariable("var", fixedValue.getValue(execution).toString() + dynamicValue.getValue(execution).toString());   
  23.     }   
  24.     }   

 

 

 

Java代码  收藏代码
  1. package com.easyway.activiti.servicetask;  
  2.   
  3. import org.activiti.engine.delegate.DelegateExecution;  
  4.   
  5. /** 
  6.  *  
  7.  * @author longgangbai 
  8.  *  
  9.  * 2011-12-20  下午09:32:45 
  10.  */  
  11. public class ActivitiExecutionListenerBean implements ExecutionListener {  
  12.     
  13.   public void notify(DelegateExecution execution) throws Exception {  
  14.     execution.setVariable("executionListenerVar""working");  
  15.   }  
  16.   
  17. }  
0 0
原创粉丝点击