activiti:initiator的作用及其使用
1.场景模拟
以kft-activiti-demo中的请假流程为例,操作流程:
- 用户A申请请假
- 领导B驳回
- 任务流转到“调整请假信息”节点
问题来了:如何把“调整请假信息”任务自动分配给申请请假的用户A呢?
2.救世主activiti:initiator
Activiti为此专门在startEvent上扩展了一个属性activiti:initiator用了解决这个问题。
下面的代码片段包含了这个属性:
<process id="leave" name="请假流程">
<startevent id="startevent1" name="Start" activiti:initiator="applyUserId"></startevent>
<usertask id="deptLeaderAudit" name="部门领导审批" activiti:candidategroups="deptLeader"></usertask>
<exclusivegateway id="exclusivegateway5" name="Exclusive Gateway"></exclusivegateway>
<usertask id="modifyApply" name="调整申请" activiti:assignee="${applyUserId}">
<extensionelements>
<activiti:tasklistener event="complete" delegateexpression="${afterModifyApplyContentProcessor}"></activiti:tasklistener>
</extensionelements>
</usertask>
<usertask id="hrAudit" name="人事审批" activiti:candidategroups="hr"></usertask>
<exclusivegateway id="exclusivegateway6" name="Exclusive Gateway"></exclusivegateway>
<usertask id="reportBack" name="销假" activiti:assignee="${applyUserId}">
<extensionelements>
<activiti:tasklistener event="complete" delegateexpression="${reportBackEndProcessor}"></activiti:tasklistener>
</extensionelements>
</usertask>
</process>