alfresco - Activiti中如何通过CallActivity正确传递变量?

标签 alfresco activiti bpmn

我正在从主进程调用子进程。我正在使用 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()

请查看下面的链接

https://hub.alfresco.com/t5/alfresco-process-services/is-there-any-way-to-pass-transient-variable-to-inner-call/td-p/50564

关于alfresco - Activiti中如何通过CallActivity正确传递变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65009960/

相关文章:

java - 空间不够, maven

java - 将任务文档的附件移动到另一个节点

java - 尝试使用 CMIS 从 Alfresco 5.0 存储库获取FolderRoot 时出现 "Unkown repository"错误

postgresql - Postgres 上的 Activiti 5.18.0 不会使用该模式

java - 在 Camunda BPMN 引擎中传递冗长的文本 - http 连接器

authorization - Alfresco 和 google Drive 类似授权

java - 为什么我们需要 ACT_RU_IDENTITYLINK?该表的用途是什么?为什么 ACTIVITI 创建它?

spring-boot - 在 Spring Boot 嵌入式容器中部署第三方 war

java - 如何在 jbpm 任务的数据分配 I/O 中调用 getter 方法?

Java - Camunda BPMN 模型 API : how to save valid xml?