(转载)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的作用及其使用相关推荐

  1. activiti设置和使用启动人;activiti:initiator的作用及其使用

    文章目录 1.Activiti 设计器中设置 2.代码中设置 3.使用 4.扩展 1.Activiti 设计器中设置 在启动节点设置 2.代码中设置 processEngine.getIdentity ...

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

    activiti:initiator的作用及其使用 1.场景模拟 以kft-activiti-demo中的请假流程为例,操作流程: 用户A申请请假 领导B驳回 任务流转到"调整请假信息&qu ...

  3. activiti:initiator详解

    在activiti的startEvent中,我们可以通过initiator属性来设置一个变量,然后启动流程时会将authenticatedUserId(流程启动者)的值设置为activiti:init ...

  4. Activiti Modeler发布以及教程

    1.新版Activiti Modeler简介 在Activiti 5.6版本之前把Activiti Modeler作为压缩包的一部分,但是后来不再这么做而是需要开发人员自己根据Signavio打包Ac ...

  5. activiti的initiator用法

    activiti的initiator属性用法 解决方法: 开始节点bpmn的开始节点,我设置initiator:startUserId,相当直接在流程图中定义了一个startUserId的变量,启动流 ...

  6. Activiti 开始流程时存储发起人员USERID

    2019独角兽企业重金招聘Python工程师标准>>> 转子:https://my.oschina.net/zhuwawa/blog/394653 activiti:initiato ...

  7. 工作流引擎Activiti使用总结

    1.简单介工作流引擎与Activiti 对于工作流引擎的解释请参考百度百科:工作流引擎 1.1 我与工作流引擎 在第一家公司工作的时候主要任务就是开发OA系统,当然基本都是有工作流的支持,不过当时使用 ...

  8. Activiti笔记

    第一章 认识Activiti Activiti七大Service接口 Activiti与jBPM5比较 注意 第2章 Acitiviti与BPMN 20规范 启动事件与结束事件 空启动事件 定时启动事 ...

  9. Activiti设置流程发起用户信息【包括获取发起人信息代码】

    原文地址:https://blog.csdn.net/HuanFengZhiQiu/article/details/81130288 一.设置用户发起人 identityService.setAuth ...

最新文章

  1. 收藏 | 数据分析师最常用的10个机器学习算法!(附图解)
  2. Java Annotations: Explored Explained--转载
  3. 火山引擎端云一体化服务:打造面向体验的视频云
  4. Vue、element-ui的resetFields()方法重置表单无效问题及解决办法
  5. 小程序识别车牌php,微信小程序——车牌键盘输入js+css
  6. 学习面向对象编程OOP 第一天
  7. 网页图片显示分辨率与实际分辨率不一样
  8. java 用户行为记录_大型网站用户行为记录的一个实现
  9. 网站类项目商业计划书
  10. 金字塔原理读书笔记 一 为什么使用金字塔结构
  11. 39个让你得到设计灵感的站点
  12. 经济危机离你并不遥远!
  13. Vs code PIO一直loading
  14. python 连接MySQL
  15. Python3下载安装教程并安装numpy模块
  16. 少儿编程有多火,家长就有多焦虑...
  17. 40Gbit/s QSFP光模块的软件实现(硕士学位论文)错误指出
  18. 输入账号 密码 实现登录功能
  19. 特殊总账标识 备选统驭科目应用详解
  20. css:层叠样式表(全)

热门文章

  1. 2021图机器学习有哪些新突破?麦吉尔大学博士后一文梳理展望领域趋势
  2. 给你一台服务器,你能把你写的代码部署到线上吗?
  3. 英语基础知识:句子类型
  4. 如何看待北大硕士买米粉事件?听听广东亨盛维嘉怎么说
  5. win10 pycharm小写变大写,键盘输入错乱
  6. 西安交通大学MOOC C++期末1
  7. 网上银行系统信息安全通用规范【学习笔记】
  8. iOS Charts库绘制曲线
  9. 餐饮行业如何做好微营销
  10. android根据滑动字体颜色被填充,自定义View:02-滑动变色的字体