我正在从主进程调用子进程。我正在使用AlFresco Activiti 7.1.0。M3.1。子进程启动没有问题,但是当我尝试使用执行. getVariables()
或执行.getVariable("par1")
获取变量时,我什么也得不到。(空映射或空)这是我在主进程中设置变量的方式:
<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. isIn人变量()
,这个标志为true(不能从Eclipse设置,只能从java设置),然后变量传递给子进程,但名称与主进程相同(var1i)。当我在子进程中更改这个变量时,它不会返回到main。
我仔细阅读了文档:https://www.activiti.org/userguide/#bpmnCallActivity,完全按照里面写的做。它似乎不起作用。
我看到了编写自己的实现CallActivityBe行为并将其设置为引擎的方法,它会工作,但在文档中它应该从默认配置工作。我错过了什么?
首先,您尝试访问根进程实例;
ExecutionEntity thisEntity = (ExecutionEntity) execution;
ExecutionEntity pi= (ExecutionEntityImpl) thisEntity.getRootProcessInstance()
请看下面这个链接,
https://hub.alfresco.com/t5/alfresco-process-services/is-there-any-way-to-pass-transient-variable-to-inner-call/td-p/50564