当前位置: 代码迷 >> 综合 >> Activiti 工作流引擎 ~ 服务任务
  详细解决方案

Activiti 工作流引擎 ~ 服务任务

热度:92   发布时间:2023-12-08 17:31:20.0

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在业务逻辑完成后还需要执行TaskServicecomplete方法才能进入下一个节点

taskService.complete(taskId, variable)

下图展示了整个流程从开始到结束所经历的每一个节点
这里写图片描述

注意:service taskclass属性必须填写,否则在流程部署的时候会导致流程部署失败

  相关解决方案