提问者:小点点

如何在Activiti中正确地通过CallActivity传递变量?


我正在从主进程调用子进程。我正在使用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行为并将其设置为引擎的方法,它会工作,但在文档中它应该从默认配置工作。我错过了什么?


共1个答案

匿名用户

首先,您尝试访问根进程实例;

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