各位activity前辈好,我是activity引擎的新用户。
这些天在做并行子流程的功能(通过call activity来实现),碰到个问题,查阅各种资料但没有找到解决方案,想请前辈们稍微指点一些,非常感谢~
主流程:
开始节点 =》 信号捕获器(等待ready信号) =》 call activity节点(多实例、并行、子流程) =》 完成节点。
截图如下:
在该主流程中,设置了并行方式,集合变量名为 detailMapList,元素变量名为 detailMap
然后子流程比较简单:
开始节点 =》 网关 =》 通过对 detailMap.get("xx") 的value判定来选择走不同的审批节点 直到结束。
子流程网关里使用的判定表达式中涉及的变量 detailMap 和 主流程的元素变量名 detailMap 是一致的。
现在的情况是:
1. 发起主流程,流程变量(map,此时只提供发起人信息)
2. 由于主流程的捕获信号节点,所以发起主流程后会挂在 该信号捕获 节点等待ready信号
3. 更新前面发起的主流程实例信息,主要是更新其流程变量(map,此时会传入 detailMapList 集合),并发出ready信号
4. 问题来了,发出ready信号的操作,我通过调用activity-runtimeService.signalEventReceied方法来触发主流程实例的ready信号。主流程的“信号捕获节点”拿到ready信号后,会立即往下个节点(就是call activity子流程节点)执行,并尝试去创建子流程实例。
但是,子流程中会用到表达式“detailMap.get("xxx")”,主流程中已经存在集合变量detailMapList,如何能从该集合变量中得到每个元素并赋值给detailMap变量然后写入子流程实例中呢?
目前步骤4(发ready信号)后报错信息为: 未知的变量 detailMap
只有这么点分了 囧
问题描述有些长,因为怕描述得不准确给各位带来困扰 ,希望有人可以指点一下,万分感谢