当前位置: 首页 > news >正文

保姆级教程:在Flowable 6.x中配置调用子流程,实现多实例并行审批

保姆级教程:在Flowable 6.x中配置调用子流程实现多实例并行审批

当企业审批流程需要多个部门负责人同时签署意见时,传统的串行审批会导致效率瓶颈。Flowable的调用子流程配合多实例特性,能像交响乐指挥一样精准协调多个并行审批任务。本文将手把手带您实现一个真实的"部门经理会签"场景,从BPMN绘制到参数传递,彻底掌握这一高频需求。

1. 理解调用子流程的核心机制

调用子流程(Call Activity)是BPMN规范中的标准元素,它允许一个流程实例动态启动另一个独立的流程实例。与嵌套子流程不同,被调用的流程拥有自己的生命周期和实例ID,这种松耦合设计带来了三大独特优势:

  • 流程复用:通用审批逻辑(如部门审核)可封装为独立流程,供多个主流程调用
  • 并行扩展:通过多实例配置,单次调用可触发多个子流程实例并行运行
  • 参数隔离:主流程与子流程通过明确定义的输入输出参数交互,避免变量污染

在采购审批场景中,当需要技术部、财务部、法务部三个部门并行会签时,调用子流程的架构优势尤为明显。主流程只需配置一次调用节点,系统就会自动创建三个独立的审批实例。

2. 构建基础BPMN模型

2.1 主流程设计

使用Flowable Modeler创建主流程purchase_approval,关键节点包括:

<process id="purchase_approval" name="采购审批主流程"> <startEvent id="start"/> <userTask id="initiate" name="发起采购申请"/> <callActivity id="multiDeptSign" name="多部门会签"/> <exclusiveGateway id="decision"/> <userTask id="ceoApprove" name="CEO最终审批"/> <endEvent id="end"/> </process>

2.2 子流程设计

新建department_approval作为被调用流程:

<process id="department_approval" name="部门审批子流程"> <startEvent id="subStart"/> <userTask id="deptReview" name="部门负责人审批"> <extensionElements> <flowable:formProperty id="comment" name="审批意见" type="string"/> </extensionElements> </userTask> <endEvent id="subEnd"/> </process>

提示:子流程的ID必须与调用配置严格匹配,建议使用全小写+下划线命名规范

3. 配置多实例调用活动

3.1 关键属性设置

multiDeptSign调用节点配置:

  • 被调用元素类型:选择Key(推荐)或ID
  • 被调用元素值:填写department_approval
  • 多实例类型:选择Parallel(并行)

3.2 集合与变量配置

配置项值示例作用说明
集合(Collection)${deptList}存储部门ID数组的流程变量
元素变量currentDept迭代时存储当前部门ID
完成条件${nrOfCompletedInstances/nrOfInstances >= 0.6}60%通过即继续

对应的Java代码设置变量:

Map<String, Object> variables = new HashMap<>(); variables.put("deptList", Arrays.asList("dept_tech", "dept_finance", "dept_legal")); runtimeService.startProcessInstanceByKey("purchase_approval", variables);

4. 实现参数双向传递

4.1 输入参数映射

将主流程的采购单ID传递给所有子流程实例:

<callActivity id="multiDeptSign" calledElement="department_approval"> <extensionElements> <flowable:in source="purchaseId" target="purchaseId"/> </extensionElements> </callActivity>

4.2 输出参数处理

由于并行模式下输出参数受限,推荐两种解决方案:

方案一:使用信号事件

<sequenceFlow id="toSignal" sourceRef="deptReview" targetRef="signalEnd"/> <intermediateThrowEvent id="signalEnd"> <signalEventDefinition signalRef="approvalSignal"/> </intermediateThrowEvent>

方案二:服务任务写库

public class ApprovalResultCollector implements JavaDelegate { public void execute(DelegateExecution execution) { String comment = (String) execution.getVariable("comment"); // 写入数据库或消息队列 } }

5. 调试与性能优化

5.1 历史数据验证

SELECT * FROM ACT_HI_PROCINST WHERE CALL_PROC_INST_ID_ = '主流程实例ID';

5.2 性能优化建议

  • 对高频调用的子流程启用async: true属性
  • 在集合变量中使用轻量级ID而非完整对象
  • 设置合理的asyncExecutor线程池大小

我在实际项目中遇到过200+并行实例的场景,通过预加载子流程定义和启用二级缓存,将响应时间从8秒降至1.2秒。关键是在测试环境充分模拟高并发情况,使用FlowableStressTest工具进行基准测试。

http://www.jsqmd.com/news/677044/

相关文章:

  • VLD实战:揪出C++项目里那些‘神出鬼没’的内存泄漏(附VS2019配置与调试技巧)
  • Markmap思维导图架构解析:基于纯文本的可视化解决方案与性能优化
  • ESP32-C3 + OneNet 保姆级实战:从零搭建一个能远程调色的温湿度光照监测站
  • 在Photoshop中高效处理WebP图像:WebPShop插件完整指南
  • 别再傻傻分不清了!用Python代码和真实案例,5分钟搞懂准确率、精确率、召回率和F1
  • 2026 年全国小程序开发公司综合实力排行 - 维双云小凡
  • 终极指南:Data-Science-Roadmap模型部署与MLOps从开发到生产环境的完整流程
  • 终极指南:GitHub加速计划cosmos的算法迭代与版本管理最佳实践
  • 上海景丰泰再生资源回收:靠谱的笔记本回收公司哪个好 - LYL仔仔
  • 津城澳洲留学申请避坑指南:选对机构,让offer更有把握 - 品牌2025
  • 从“盲人摸象”到“精准定位”:我是如何用Application Verifier给遗留C++项目做内存安全体检的
  • 快速部署医疗AI模型:MONAI与FastAPI、Triton、BentoML集成指南
  • 如何快速突破城通网盘限速?ctfileGet完整教程让你下载速度提升10倍!
  • 2026 超声波液位计 TOP5 品牌榜:国际巨头 VS 国产黑马哪家强? - 仪表人小余
  • 选购良成环保防洪墙,售后完善口碑好的有啥优势? - 工业品牌热点
  • Vue3项目PDF预览暗黑/亮白主题自由切换实战:基于vue3-pdf-app的完整配色方案
  • 计算机毕业设计:Python农产品价格趋势与个性化推荐平台 Flask框架 矩阵分解 数据分析 可视化 协同过滤推荐算法 深度学习(建议收藏)✅
  • 微信立减金回收全攻略:方案适配不同人群,可可收助力合规回收 - 可可收
  • Platinum-MD完全指南:免费开源MiniDisc音乐管理终极方案
  • 永辉超市卡可以回收吗?看完这篇你就全懂了! - 团团收购物卡回收
  • 手把手教你用ROS录制Velodyne和IMU的bag包,为lidar_imu_calib准备完美数据
  • 量子模拟器启动延迟下降83%?Docker 27新runtime调度器深度解析,附可复现基准测试脚本
  • 2026年天津遗产继承律所深度测评!房产+遗嘱纠纷实力排行 - 速递信息
  • php-qrcode扩展开发指南:创建自定义输出模块
  • 2026重庆新娘妆古妆培训第三方测评 零基础就业创业落地全指南 - 深度智识库
  • 终极指南:如何在TiXL中创建自定义UI控件,打造专业实时图形界面
  • 河北欧方刀片刺绳厂家 - 品牌企业推荐师(官方)
  • Cesium加载ArcGIS WMTS服务踩坑实录:从XML解析到tileMatrixLabels的完整避坑指南
  • 2026年3月定制门窗代运营公司推荐,聚焦优质品牌综合实力推荐 - 品牌推荐师
  • RPG Maker解密工具终极指南:轻松获取图形界面版本