我正在从主进程调用子进程。我正在使用 Alfresco Activiti 7.1.0.M3.1。
子进程开始时没有问题,但是当我尝试使用 execution.getVariables()
获取其中的变量时
或者
execution.getVariable("par1")
我什么也得不到。 (空 map 或 null)
这是我在主进程中设置变量的方式:
<callActivity id="callactivity1" name="Call activity" calledElement="myProcess2" >
<extensionElements>
<activiti:in source="var1i" target="par1"></activiti:in>
<activiti:out source="par1" target="var1i"></activiti:out>
<activiti:executionListener event="start" delegateExpression="${executionListener}"></activiti:executionListener>
<activiti:executionListener event="end" delegateExpression="${executionListener}"></activiti:executionListener>
</extensionElements>
</callActivity>
我在 callActivity 中找到了一个标志:callActivity.isInheritVariables()
带有这个标志 true(它不能从 Eclipse 中设置,只能从 java 中设置),然后是变量传递给子进程,但名称与主进程 (var1i) 中的名称相同。当我在子进程中更改此变量时,它不会返回到主进程。
我仔细阅读了文档:https://www.activiti.org/userguide/#bpmnCallActivity并完全按照上面写的去做。它似乎不起作用。
我看到了编写自己的实现 CallActivityBehavior 并将其设置为引擎的方法,它会起作用,但在文档中它应该在默认配置下起作用。 我错过了什么?
最佳答案
首先,您已尝试通过以下方式访问根流程实例;
ExecutionEntity thisEntity = (ExecutionEntity) execution;
ExecutionEntity pi= (ExecutionEntityImpl) thisEntity.getRootProcessInstance()
请查看下面的链接
关于alfresco - Activiti中如何通过CallActivity正确传递变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65009960/