工作流UserTask的使用
工作流流程图:
?
?
工作流配置:
<?xml version="1.0" encoding="UTF-8"?><definitions id="definitions" xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:activiti="http://activiti.org/bpmn" targetNamespace="Examples"> <process id="executionAndTaskListenerDelegation"> <!-- 全局性 --> <extensionElements> <activiti:executionListener event="start"> <activiti:field name="fixedValue" stringValue="Yes, I am " /> <activiti:field name="dynamicValue" expression="${sentenceGenerator.getSentence()}" /> </activiti:executionListener> </extensionElements> <startEvent id="start" /> <sequenceFlow id="flow1" sourceRef="start" targetRef="userTask" /> <!-- 调用相关的工作流执行委托监听事件和任务监听事件--> <userTask id="userTask" name="Schedule meeting"> <extensionElements> <activiti:executionListener event="start" delegateExpression="${myExecutionListenerBean}" /> <activiti:taskListener event="create" delegateExpression="${myTaskListenerBean}" /> </extensionElements> </userTask> <sequenceFlow id="flow3" sourceRef="userTask" targetRef="userTask3" /> <!-- 调用相关的工作流执行监听事件--> <userTask id="userTask3"> <extensionElements> <activiti:executionListener expression="${myPojo.myMethod(execution.event)}" event="end" /> </extensionElements> </userTask> <sequenceFlow id="flow4" sourceRef="userTask3" targetRef="end" /> <endEvent id="end" /> </process></definitions>
?
?
代码:
package com.easyway.activiti.servicetask;import org.activiti.engine.runtime.ProcessInstance;/** * 1.全局性的: * <!-- 全局性 --> <extensionElements> <activiti:executionListener event="start"> <activiti:field name="fixedValue" stringValue="Yes, I am " /> <activiti:field name="dynamicValue" expression="${sentenceGenerator.getSentence()}" /> </activiti:executionListener> </extensionElements> 2. <userTask id="userTask" name="Schedule meeting"> <extensionElements> <activiti:executionListener event="start" delegateExpression="${myExecutionListenerBean}" /> <activiti:taskListener event="create" delegateExpression="${myTaskListenerBean}" /> </extensionElements> </userTask> 3. <userTask id="userTask3"> <extensionElements> <activiti:executionListener expression="${myPojo.myMethod(execution.event)}" event="end" /> </extensionElements> </userTask> * @author longgangbai * * 2011-12-20 下午09:30:42 */@ContextConfiguration("classpath:servicetaskSpringTest-context.xml")public class ExecutionAndTaskListenerDelegationExpressionTest extends SpringActivitiTestCase { @Deployment(resources={"diagrams/userTaskexecutionAndTaskListenerDelegationExpression.bpmn20.xml"}) public void testExecutionAndTaskListenerDelegationExpression() { ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("executionAndTaskListenerDelegation"); assertEquals("working", runtimeService.getVariable(processInstance.getId(), "executionListenerVar")); assertEquals("working", runtimeService.getVariable(processInstance.getId(), "taskListenerVar")); } }
?
?
?
package com.easyway.activiti.servicetask;import org.activiti.engine.delegate.DelegateExecution;/** * @author longgangbai * * 2011-12-20 下午10:55:06 */public class FieldInjectedExecutionListener implements ExecutionListener { private Expression fixedValue; private Expression dynamicValue; /* (non-Javadoc) * @see org.activiti.engine.delegate.ExecutionListener#notify(org.activiti.engine.delegate.DelegateExecution) */@Overridepublic void notify(DelegateExecution execution) throws Exception { execution.setVariable("var", fixedValue.getValue(execution).toString() + dynamicValue.getValue(execution).toString()); } }
?
?
?
package com.easyway.activiti.servicetask;import org.activiti.engine.delegate.DelegateExecution;/** * * @author longgangbai * * 2011-12-20 下午09:32:45 */public class ActivitiExecutionListenerBean implements ExecutionListener { public void notify(DelegateExecution execution) throws Exception { execution.setVariable("executionListenerVar", "working"); }}
?