activiti:initiator的作用及其使用
(转载)activiti:initiator的作用及其使用
原文链接:http://www.kafeitu.me/activiti/2012/09/14/activiti-initiator.html?utm_source=tuicool&utm_medium=referral
由于原文或者其他转载文章,都发生了排版问题或者代码颜色诡异问题,导致无法方便阅读,现从原文中再次转载一次,以便阅读
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://demo.kafeitu.me/kft-activiti-demo体验一下这个过程。
activiti:initiator的作用及其使用相关推荐
- activiti设置和使用启动人;activiti:initiator的作用及其使用
文章目录 1.Activiti 设计器中设置 2.代码中设置 3.使用 4.扩展 1.Activiti 设计器中设置 在启动节点设置 2.代码中设置 processEngine.getIdentity ...
- activiti学习资料--initiator的作用及其使用
activiti:initiator的作用及其使用 1.场景模拟 以kft-activiti-demo中的请假流程为例,操作流程: 用户A申请请假 领导B驳回 任务流转到"调整请假信息&qu ...
- activiti:initiator详解
在activiti的startEvent中,我们可以通过initiator属性来设置一个变量,然后启动流程时会将authenticatedUserId(流程启动者)的值设置为activiti:init ...
- Activiti Modeler发布以及教程
1.新版Activiti Modeler简介 在Activiti 5.6版本之前把Activiti Modeler作为压缩包的一部分,但是后来不再这么做而是需要开发人员自己根据Signavio打包Ac ...
- activiti的initiator用法
activiti的initiator属性用法 解决方法: 开始节点bpmn的开始节点,我设置initiator:startUserId,相当直接在流程图中定义了一个startUserId的变量,启动流 ...
- Activiti 开始流程时存储发起人员USERID
2019独角兽企业重金招聘Python工程师标准>>> 转子:https://my.oschina.net/zhuwawa/blog/394653 activiti:initiato ...
- 工作流引擎Activiti使用总结
1.简单介工作流引擎与Activiti 对于工作流引擎的解释请参考百度百科:工作流引擎 1.1 我与工作流引擎 在第一家公司工作的时候主要任务就是开发OA系统,当然基本都是有工作流的支持,不过当时使用 ...
- Activiti笔记
第一章 认识Activiti Activiti七大Service接口 Activiti与jBPM5比较 注意 第2章 Acitiviti与BPMN 20规范 启动事件与结束事件 空启动事件 定时启动事 ...
- Activiti设置流程发起用户信息【包括获取发起人信息代码】
原文地址:https://blog.csdn.net/HuanFengZhiQiu/article/details/81130288 一.设置用户发起人 identityService.setAuth ...
最新文章
- 收藏 | 数据分析师最常用的10个机器学习算法!(附图解)
- Java Annotations: Explored Explained--转载
- 火山引擎端云一体化服务:打造面向体验的视频云
- Vue、element-ui的resetFields()方法重置表单无效问题及解决办法
- 小程序识别车牌php,微信小程序——车牌键盘输入js+css
- 学习面向对象编程OOP 第一天
- 网页图片显示分辨率与实际分辨率不一样
- java 用户行为记录_大型网站用户行为记录的一个实现
- 网站类项目商业计划书
- 金字塔原理读书笔记 一 为什么使用金字塔结构
- 39个让你得到设计灵感的站点
- 经济危机离你并不遥远!
- Vs code PIO一直loading
- python 连接MySQL
- Python3下载安装教程并安装numpy模块
- 少儿编程有多火,家长就有多焦虑...
- 40Gbit/s QSFP光模块的软件实现(硕士学位论文)错误指出
- 输入账号 密码 实现登录功能
- 特殊总账标识 备选统驭科目应用详解
- css:层叠样式表(全)