如何在 Camunda-bpm 中检索过程变量?
How to retrieve process variable in Camunda-bpm?
在阅读 (https://docs.camunda.org/manual/7.5/user-guide/process-engine/variables/) 时,我不确定您是如何检索变量的?
目前我正在努力寻找如何访问以前设置的过程变量。我试过的是:
我有一个简单的 bpmn 流程,其中有开始事件、1 个服务任务和结束事件,我通过传递 2 个变量 (a&b) 开始我的流程,我的服务任务正在执行 java class:
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 class 中访问 add
变量(存在于 Addition class 中)?
由于流程已经完成,所以我不能使用 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();
有关详细信息,请参阅
HistoryService and HistoricVariableInstanceQuery
在阅读 (https://docs.camunda.org/manual/7.5/user-guide/process-engine/variables/) 时,我不确定您是如何检索变量的?
目前我正在努力寻找如何访问以前设置的过程变量。我试过的是:
我有一个简单的 bpmn 流程,其中有开始事件、1 个服务任务和结束事件,我通过传递 2 个变量 (a&b) 开始我的流程,我的服务任务正在执行 java class:
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 class 中访问 add
变量(存在于 Addition class 中)?
由于流程已经完成,所以我不能使用 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();
有关详细信息,请参阅 HistoryService and HistoricVariableInstanceQuery