Camunda主流程如何向调用的子流程注入对应专属参数
Camunda顺序Call Activity仅传递子流程专属参数实现方案
配置步骤
- 配置Call Activity为顺序多实例模式,适配你的流程key列表:
- 多实例集合填写
${processKeyList}(替换为你实际存储流程key列表的变量名) - 元素变量设置为
currentProcessKey,用于存储当前循环调用的子流程key - 循环索引变量设置为
currentLoopIndex(可选,按索引匹配配置数据时使用)
- 多实例集合填写
- 编写表达式筛选当前子流程对应的专属配置:
从你存入的配置列表中过滤出匹配当前子流程的配置对象,两种常用写法:- 按流程key过滤(适配两个列表顺序不一致的场景,准确性更高):
${lotConfigList.stream().filter(config -> config.get("name").equals(currentProcessKey)).findFirst().get()}(lotConfigList替换为你实际存储配置列表的变量名) - 按索引取值(适配两个列表顺序完全一致的场景,性能更高):
${lotConfigList.get(currentLoopIndex)}
- 按流程key过滤(适配两个列表顺序不一致的场景,准确性更高):
- 配置Call Activity的变量映射规则:
- 取消勾选配置页中的「传递所有变量」选项,避免全局变量全部传入子流程
- 新增输入参数映射:
- 源:填写上一步编写的筛选表达式
- 目标:填写子流程中接收该参数的变量名,例如
subProcessConfig
- 若需要将子流程执行后的结果回传到主流程,按需配置输出映射即可
补充说明
- 若你的配置数据结构有差异,可自行调整表达式中的字段取值逻辑
- 若使用Camunda 7.13及以上版本,可使用FEEL表达式简化筛选逻辑,写法为:
listConfigs[item.name = currentProcessKey]
内容的提问来源于stack exchange,提问作者Coen Damen
相关产品推荐
相关产品推荐

