最近在研究一个轻量级的工作流引擎Activiti,就遇到了子流程中无法标记其并发节点的问题,经过几天的研究,想到了一个简单易懂的方法,总结如下,希望对你们能有所帮助,有写的不对的地方,还希望大家多提宝贵意见。
第一步:子流程处理。在子流程的并发节点之前添加一个自动完成的隐藏节点。

第二步:隐藏节点(上图的子流程标记节点)处理。将与子流程绑定的执行id(ExecutionId)存入当前节点的Variables。
在activiti中的工作原理中,对于一个流程来说,和其绑定是实例id;但是当遇到多个子流程时,它自动分配不同的执行id与每一个子流程相对应;与此同时,子流程中节点(除并发节点外)的执行id都和所在子流程的执行id保持一致。当遇到并发节点时,它又会自动分配出不同的执行id和每一个并发节点绑定,所以在并发节点上做处理时是找不到它所在子流程的执行id,这样就不能区分当前执行的并发节点是哪个子流程中的节点。故有以下做法,将隐藏节点中的流程标记传入其后面的并发节点中。

/*** 隐藏节点监听器* /
public class SubFlowHiddenTaskListener implements TaskListener {@Overridepublic void notify(DelegateTask delegateTask) {//获得当前子流程的执行idString executionIdString = delegateTask.getExecutionId();//存入VariabledelegateTask.setVariable("flowIndex", executionIdString); }
}

第三步:并发节点处理。在并发节点中获取流程标记。

/*** 并发节点监听器* /
public class SubFlowConcurrencyTaskListener implements TaskListener {@Overridepublic void notify(DelegateTask delegateTask) {//获得当前子流程的执行idMap<String, Object> map = delegateTask.getVariables();String flowIndex = (String) map.get("flowIndex");//其他操作······}
}

这样就可以让每一个并发节点都有一个特定的归属了!!!

Activiti中的关于子流程中的并发节点标记处理相关推荐

  1. Activiti 5.3:子流程(subProcess)

    Activiti 5.3提供了子流程的实现,包括两种基于子流程的实现: 一种是内嵌子流程:子流程元素<subProcess>内嵌在主流程元素<process>之内,只能在该流程 ...

  2. Activiti 多个并发子流程的应用

    应用场景: 多个部门发起资金计划,最后统一到财务部审批,每个部门发起资金计划是一个子流程,财务部审批是多个部门的计划同时审批,审批完成后,再提交上级领导审批. 流程如下: 要解决以上问题,需要实现多个 ...

  3. Activiti子流程学习

    Activiti提供两种子流程实现: 1.嵌入子流程 子流程元素<subProcess>内嵌在主流程元素<process>之内,只能在该流程中使用该子流程,外部是无法访问到的. ...

  4. activiti 子流程

    https://blog.csdn.net/lazy_cpp/article/details/77979634 https://blog.csdn.net/shirdrn/article/detail ...

  5. oracle sql 转换成 hive sql -子查询转关联查询(三).子查询中嵌套子查询

    其他sql格式也在更新中,可直接查看俺的这个系列,要是没有你需要的格式,可在评论或私信我,俺现在一天一看 Oracle转换hive 其他sql格式也在更新中,可直接查看俺的这个系列,要是没有你需要的格 ...

  6. oracle主表子表,oracle查询包含在子表中的主表数据

    Oracle数据库,查询某表中包含在子表中的数据,子表中数据按特定条件来源于该父表,SQL命令如 select * from a_table a where a.commandId in (selec ...

  7. 获取第一个子元素_Activiti 开发案例之多实例并行子流程

    概念 Activiti 提供了两种基于子流程的实现: 一种是内嵌子流程:子流程元素<subProcess>内嵌在主流程元素<process>之内,只能在该流程中使用该子流程,外 ...

  8. 【弄nèng - Activiti6】Activiti6入门篇(二十一)—— 事务子流程

    文章目录 1. 子流程 1.1 简介 2. 事务子流程 2.1 简介 2.2 流程设计 2.3 测试类 2.4 运行 2.4.1 启动任务 源码地址 项目推荐 部分简介摘抄自官方文档 参考杨大仙的程序 ...

  9. 动态加载子节点_省市区递归嵌套子流程动态选择实现

    5.省市区递归嵌套子流程动态选择实现 5.0 流程特色 展开子流程(容器)中可以无限的嵌套子流程.嵌套子流程可以无限的进行嵌套,类似递归流程. 子流程的实例可以有上一个节点进行动态选择. 子流程完成条 ...

最新文章

  1. RUNOOB python练习题9 如何在代码中加入砸瓦鲁多
  2. 机器学习入门:多变量线性回归
  3. 计算机程序的构造和解释1构造过程抽象1.2过程与它们所产生的计算
  4. 剑指Offer之把数组排成最小的数
  5. .NET 客户IP地址捕捉
  6. Python如何上传文件?
  7. 高性能mysql第一章——架构
  8. suse linux 11 sp3 的安装
  9. ZXing源码解析四:如何识别图片中的二维码
  10. alertmanager集群莫名发送resolve消息的问题探究
  11. 带选择头像的用户注册页面
  12. Vue 实现商品详情多播图(点击图片列表轮播图)
  13. verilog赋多位值_verilog中的default应该赋什么样的值
  14. 常见的物联通讯协议(一)
  15. linux及安全期中总结——20135227黄晓妍
  16. S5PV210开发板用汇编设置栈和调用C语言
  17. 图数据库 TigerGraph 使用全攻略
  18. C语言求字符串数组的长度函数计算
  19. VDA标准在汽车行业的应用
  20. 卸载oracle9i精简版,Oracle精简版客户端

热门文章

  1. 《恐怖小说在中国》之四:恐怖小说的流行与陷阱?
  2. 32查运行内存的map文件_linux内存管理
  3. source insight 函数不能跳到definition_小技能: Windows10突然不能复制粘贴谁搞鬼
  4. mysql innodb myisam 混合,MySQL MyIsam/InnoDB混合在一起的事务
  5. 巨控 自建服务器,GRM云服务器的Web数据接口.PDF
  6. Sublime配置与各种插件
  7. 数据归一化matlab及python 实现
  8. BZOJ 1683.City skyline 城市地平线
  9. bzoj1016 [JSOI2008]最小生成树计数
  10. JQuery学习笔记12——GET请求和POST请求