JBPM(六)流程變量

1.啓動流程實例

[java] view plain copy
  1. // 啓動流程實例  
  2. @Test  
  3. public void startProcessInstance() {  
  4.     // 使用指定key的最新版本的流程定義啓動流程實例  
  5.     ProcessInstance pi = processEngine.getExecutionService().startProcessInstanceByKey("test");  
  6.     System.out.println("processInstanceId=" + pi.getId());  
  7. }  

2.設置流程變量

a) 一個設置流程變量實例

[java] view plain copy
  1. //設置流程變量  
  2. @Test  
  3. public void setVariable() {  
  4.     String executionId = "test.140001";  
  5.     String name = "請假天數";  
  6.     Integer value = 3;  
  7.   
  8.     //將name爲"請假天數",value=3的流程變量設置到executionId爲test.140001的執行對象上  
  9.     processEngine.getExecutionService().setVariable(executionId, name, value);  
  10. }  

b) 所有設置流程變量方法

用到變量的類型:

[java] view plain copy
  1. Object value = "";  
  2. String executionId = "";  
  3. String taskId = "";  
  4. String name = "";  
  5. String processDefinitionKey = "";  
  6. String variableName = "";  
  7. Set<String> variableNames = new HashSet<String>();  
  8. Map<String, Object> variablesMap = new HashMap<String, Object>();  

具體方法:

[java] view plain copy
  1. // 根據Execution設置一個流程變量  
  2. processEngine.getExecutionService().setVariable(executionId, name, value);  
  3. // 根據Execution設置多個流程變量(需要先把流程變量放到一個Map中)  
  4. processEngine.getExecutionService().setVariables(executionId, variablesMap);  
  5.   
  6. // 根據Task設置多個流程變量(需要先把流程變量放到一個Map中,通過Task方法,
  7. //它會先找到它所屬的Execution然後設置流程變量)  
  8. processEngine.getTaskService().setVariables(taskId, variablesMap);  
  9.   
  10. // 使用指定key的最新版本的流程定義啓動流程實例,並設置一些流程變量  
  11. processEngine.getExecutionService()
  12.         .startProcessInstanceByKey(processDefinitionKey, variablesMap);  
  13. // 辦理完指定的任務,並設置一些流程變量  
  14. processEngine.getTaskService().completeTask(taskId, variablesMap);  

3.獲取流程變量

a) 一個獲取流程變量實例

[java] view plain copy
  1. //獲取流程變量  
  2. @Test  
  3. public void getVariable() {  
  4.     String executionId = "test.140001";  
  5.     String variableName = "請假天數";  
  6.   
  7.     //從executionId爲test.140001的執行對象上取出流程變量名爲"請假天數"的流程變量的value  
  8.     Integer value = (Integer) processEngine.getExecutionService()
  9.                                 .getVariable(executionId, variableName);  
  10.     System.out.println(variableName + " = " + value);  
  11. }  

b) 所有獲取流程變量方法

用到變量的類型:

[java] view plain copy
  1. String executionId = "";  
  2. String taskId = "";  
  3. String variableName = "";  
  4. Set<String> variableNames = new HashSet<String>();  

具體方法:

[java] view plain copy
  1. // 根據Execution獲取指定名稱的一個流程變量  
  2. processEngine.getExecutionService().getVariable(executionId, variableName);  
  3. // 根據Execution獲取所有流程變量的名稱  
  4. processEngine.getExecutionService().getVariableNames(executionId);  
  5. // 根據Execution獲取指定名稱的所有流程變量  
  6. processEngine.getExecutionService().getVariables(executionId, variableNames);  
  7.   
  8. // 根據Task獲取指定名稱的一個流程變量  
  9. processEngine.getTaskService().getVariable(taskId, variableName);  
  10. // 根據Task獲取所有流程變量的名稱  
  11. processEngine.getTaskService().getVariableNames(taskId);  
  12. // 根據Task獲取指定名稱的所有流程變量  
  13. processEngine.getTaskService().getVariables(taskId, variableNames);  

4.流程變量所支持的值的類型(jBPM User Guide,7.2. Variable types)

jBPM supports following Java types as process variables:

  • java.lang.String 
  • java.lang.Long 
  • java.lang.Double 
  • java.util.Date 
  • java.lang.Boolean 
  • java.lang.Character 
  • java.lang.Byte 
  • java.lang.Short 
  • java.lang.Integer 
  • java.lang.Float 
  • byte[] (byte array) 
  • char[] (char array) 
  • hibernate entity with a long id 
  • hibernate entity with a string id 
  • serializable
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章