Activiti
默认创建的是用户任务(user task),选中任务,更改元素类型
在弹出的任务类型列表中选择service task
(服务任务)
选择完成后,任务由user task
变成service task
user task
需要指定任务办理人,而service task
无任务办理人,当任务到达service task
节点时,service task
将自动在后台执行
service task
的业务逻辑放在一个实现了org.activiti.engine.delegate.JavaDelegate
接口的类中,该接口仅有一个方法public void execute(DelegateExecution delegateExecution) throws Exception
在流程图中需要将service task
与对应的业务逻辑类进行关联,class
属性中填写该类的全路径名
execute
方法中有一个类型为DelegateExecution
的参数,该对象可以获取的主要内容如下:
<==============服务任务================>
currentActivityId: sid-26DD687D-0BE4-4FD3-BFC8-823E84694A27
currentActivityName: 放款提醒
eventName: null
id: 772832dd-65b1-11e8-987a-ba4da3f11ae4
parentId: null
processBusinessKey: monkey.1
processDefinitionId: monkey:11:6efa63df-65b1-11e8-a1d6-ba4da3f11ae4
processInstanceId: 772832dd-65b1-11e8-987a-ba4da3f11ae4
superExecutionId: null
tenantId:
variableInstances: {pass=VariableInstanceEntity[id=8e269562-65b1-11e8-b8a3-ba4da3f11ae4, name=pass, type=string, textValue=true], startProcessInstance=VariableInstanceEntity[id=7728a80f-65b1-11e8-987a-ba4da3f11ae4, name=startProcessInstance, type=string, textValue=startProcessInstance], 772832dd-65b1-11e8-987a-ba4da3f11ae4_r=VariableInstanceEntity[id=8e24e7b1-65b1-11e8-b8a3-ba4da3f11ae4, name=772832dd-65b1-11e8-987a-ba4da3f11ae4_r, type=string, textValue=772832dd-65b1-11e8-987a-ba4da3f11ae4], 8e3d9fd4-65b1-11e8-b8a3-ba4da3f11ae4_r=VariableInstanceEntity[id=9802fedd-65b1-11e8-91a4-ba4da3f11ae4, name=8e3d9fd4-65b1-11e8-b8a3-ba4da3f11ae4_r, type=string, textValue=8e3d9fd4-65b1-11e8-b8a3-ba4da3f11ae4], 772832dd-65b1-11e8-987a-ba4da3f11ae4_rL=VariableInstanceEntity[id=8e1e5800-65b1-11e8-b8a3-ba4da3f11ae4, name=772832dd-65b1-11e8-987a-ba4da3f11ae4_rL, type=string, textValue=772832dd-65b1-11e8-987a-ba4da3f11ae4], 8e3d9fd5-65b1-11e8-b8a3-ba4da3f11ae4_r=VariableInstanceEntity[id=ac803441-65b1-11e8-b425-ba4da3f11ae4, name=8e3d9fd5-65b1-11e8-b8a3-ba4da3f11ae4_r, type=string, textValue=8e3d9fd5-65b1-11e8-b8a3-ba4da3f11ae4]}
service task
的业务逻辑执行完成后自动进入下一个节点,而user task
在业务逻辑完成后还需要执行TaskService
的complete
方法才能进入下一个节点
taskService.complete(taskId, variable)
下图展示了整个流程从开始到结束所经历的每一个节点
注意:service task
的class
属性必须填写,否则在流程部署的时候会导致流程部署失败