activiti学习资料--initiator的作用及其使用

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>
?
分步理解:

activiti:initiator设置一个变量名称(代码第2行),可以是任意的字符串,这一点是让很多初学者迷糊的地方不知道写什么,现在请记住一个变量。
变量applyUserId应该保存申请用户的ID
在需要设置申请用户才能办理的任务上设置activiti:assginee=${applyUserId}属性,参见第5、11行代码
为什么这么做呢?

在用户手册上其实专门讲解了这个属性的做作用以及使用方法,代码如下:

identityService.setAuthenticatedUserId("kafeitu");
runtimeService.startProcessInstanceByKey("leave");
?
第1行代码的作用就是设置当前的用户ID,非常关键,而且这行代码需要和activiti:initiator配合使用,不可分割……
第2行代码启动一个流程,在启动流程的时候会判断有没有activiti:initiator属性,如果有把属性activiti:initiator的值作为一个变量添加到流程实例中,本文中也就是applyUserId,不要以为applyUserId是一个特殊的变量,它就是一个普通的变量而已。
在流程XML中的第5、11行代码出使用${applyUserId}作为activiti:initiator的值,引擎会在创建任务的使用用变量applyUserId替换。

3.单元测试理解
请参考kft-activiti-demo中的单元测试:

java: LeaveWorkflowServiceTest.java
xml:leave.bpmn
还可以在线运行请假流程:http://aws.kafeitu.me:8080/kft-activiti-demo体验一下这个过程。
--------------------- 
作者:howareyoutodaysoft 
来源:CSDN 
原文:https://blog.csdn.net/howareyoutodaysoft/article/details/8081577 
版权声明:本文为博主原创文章,转载请附上博文链接!

猜你喜欢

转载自blog.csdn.net/xiaozaq/article/details/94716091