单记录负载Camunda Work flow多call activity子流程实现咨询
Camunda 多Call Activity子流程落地实践
核心设计原则
基于单记录payload的场景,落地多独立子流程调用的核心思路是最小参数传递、上下文隔离、变更统一收敛:
- 父流程持有全局唯一单记录payload,仅向每个call activity传递该子流程必要的最小参数子集,避免子流程误改全局payload产生脏数据
- 客户服务、座席服务等独立子流程单独定义processId、独立部署,无需和父流程绑定发布,降低业务模块耦合度
- 子流程执行完成后仅返回自身业务产生的变更字段,父流程统一合并所有变更到全局单记录payload
客户服务+座席服务场景落地示例
父流程结构
父流程作为调度入口,全局payload初始结构示例:{"orderId":"xxx","customerInfo":{},"agentInfo":{},"serveResult":""},核心节点如下:
- 流程启动节点:接收并初始化全局payload
- 第一个Call Activity节点:调用客户服务子流程
入参映射配置:仅传递
orderId、customerInfo两个字段到子流程,映射为子流程的inputOrderId、inputCustomerInfo变量
出参映射配置:子流程返回的customerVerifyResult、updatedCustomerInfo字段同步映射回父流程对应变量
- 网关判断:客户校验通过则进入座席服务调用逻辑,不通过直接跳转结束节点
- 第二个Call Activity节点:调用座席服务子流程
入参映射配置:传递
orderId、customerVerifyResult、updatedCustomerInfo到子流程
出参映射配置:子流程返回的allocateAgentId、serveRecord同步映射回父流程对应变量
- 变量合并节点:将所有子流程返回的变更字段统一合并到全局单记录payload,完成业务数据落库
独立子流程定义
客户服务子流程(独立部署,processId:customer-serve-process)
内部核心节点:客户身份校验→历史服务记录查询→客户需求校验→结束事件,执行完成后返回customerVerifyResult(布尔值,标识是否通过校验)、updatedCustomerInfo(更新后的客户信息)
对应Call Activity配置示例:
<callActivity id="callCustomerProcess" name="调用客户服务子流程" calledElement="customer-serve-process"> <extensionElements> <camunda:in source="orderId" target="inputOrderId" /> <camunda:in source="customerInfo" target="inputCustomerInfo" /> <camunda:out source="customerVerifyResult" target="customerVerifyResult" /> <camunda:out source="updatedCustomerInfo" target="customerInfo" /> </extensionElements> </callActivity>
座席服务子流程(独立部署,processId:agent-allocate-process)
内部核心节点:按客户需求匹配座席技能组→空闲座席分配→服务工单生成→结束事件,执行完成后返回allocateAgentId、serveRecord
对应Call Activity配置示例:
<callActivity id="callAgentProcess" name="调用座席服务子流程" calledElement="agent-allocate-process"> <extensionElements> <camunda:in source="orderId" target="inputOrderId" /> <camunda:in source="customerVerifyResult" target="customerVerifyPass" /> <camunda:in source="customerInfo" target="customerDetail" /> <camunda:out source="allocateAgentId" target="agentInfo.agentId" /> <camunda:out source="serveRecord" target="serveResult" /> </extensionElements> </callActivity>
单记录payload场景注意事项
- 禁止配置全量payload传递给子流程,避免子流程修改不相关字段,提升问题排查效率
- 若子流程需要异步执行,需配置
camunda:async="true",同时父流程需补充子流程执行结果回调逻辑、超时判定逻辑 - 可在call activity执行前后增加参数校验规则,提前拦截非法入参,避免无效流程执行
内容的提问来源于stack exchange,提问作者Balakrishnan Natraj
相关产品推荐
相关产品推荐

