gpt4 book ai didi

java - 如何在 Camunda-bpm 中检索过程变量?

转载 作者:行者123 更新时间:2023-11-29 04:43:12 27 4
gpt4 key购买 nike

在阅读 ( https://docs.camunda.org/manual/7.5/user-guide/process-engine/variables/ ) 时,我不确定您是如何检索变量的?

目前我正在努力寻找如何访问以前设置的流程变量。我尝试的是:

我有一个简单的 bpmn 流程,其中有开始事件、1 个服务任务和结束事件,我通过传递 2 个变量 (a&b) 开始我的流程,我的服务任务正在实现以下 java 类:

public class Addition implements JavaDelegate {

public void execute(DelegateExecution exe) throws Exception {

System.out.println("Inside calculator again");

Integer x = (Integer) exe.getVariable("a");
Integer y = (Integer) exe.getVariable("b");
int add = x+y;
System.out.println("Addition of two number is"+add);
exe.setVariable("add",add);
}

我开始我的流程如下:

public void sayHello(ProcessEngine processEngine)
{
Map<String,Object> variables = new HashMap<String, Object>();
variables.put("a", 3);
variables.put("b", 5);
ProcessInstance instance= processEngine.getRuntimeService().startProcessInstanceByKey("Process_3", variables);
}

我想访问 sayHello 类中的 add 变量(存在于 Addition 类中)?由于流程已经完成,所以我无法使用 runtimeService,所以我尝试使用历史服务,但找不到任何解决方案。

是否有任何我可以使用的 Java API 或者是否有任何其他方式?

最佳答案

如果您想获取所有历史变量实例,请使用 HistoricVariableInstanceQuery 中的 list 方法。

例如

List<HistoricVariableInstance> variables = processEngine.getHistoryService().createHistoricVariableInstanceQuery.list();

如果您想获取具有给定名称的特定变量,您可以使用方法variableName(String)

例如:

List<HistoricVariableInstance> variables = processEngine.getHistoryService().createHistoricVariableInstanceQuery().variableName("myVar").list();

要获取特定流程实例的变量,请使用方法 processInstanceId

例如:

 List<HistoricVariableInstance> variables = processEngine.getHistoryService().createHistoricVariableInstanceQuery().processInstanceId(processInstance.getId()).variableName("myVar").list();

有关更多信息,请参阅文档 HistoryServiceHistoricVariableInstanceQuery

关于java - 如何在 Camunda-bpm 中检索过程变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38328208/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com