2016-07-12 45 views
0

閱讀時(https://docs.camunda.org/manual/7.5/user-guide/process-engine/variables/)我不知道如何檢索變量?如何檢索Camunda-bpm中的過程變量?

目前我正在努力尋找如何訪問以前設置的過程變量。我嘗試的是:

我有一個簡單的bpmn過程,其中我有啓動事件,1個服務任務和結束事件,我開始通過傳遞2個變量(一個& 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變量(目前除了類)? 由於進程已經完成,所以我不能使用runtimeService,所以我試圖使用歷史服務,但找不到任何解決方案。

有沒有我可以使用的Java API或者是否有其他方法?

回答

1

如果要獲取所有歷史變量實例,請在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

的文檔