一、 變量的使用
1、創建流程引擎對象
private ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
2、啟動流程

1 /** 2 * 2、啟動流程 3 */ 4 @Test 5 public void testStartProcess() { 6 // 獲取服務對象的實例 7 RuntimeService runtimeService = processEngine.getRuntimeService(); 8 9 // 當使用ByKey方式時會自動執行相對應流程的最高版本 10 String processDefinitionKey = "leaveflow2"; 11 12 // 設置啟動時的流程變量 13 Map<String, Object> variables = new HashMap<String, Object>(); 14 variables.put("test", "測試"); 15 16 ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(processDefinitionKey, variables); 17 18 logger.info("Id:" + processInstance.getId()); 19 logger.info("ActivitiId:" + processInstance.getActivityId()); 20 }
3、設置流程變量

1 /** 2 * 3、設置流程變量 3 * 1、在辦理時設置流程變量 4 * 2、在完成時設置流程變量 5 */ 6 @Test 7 public void testProcessTask(){ 8 //獲取服務對象的實例 9 TaskService taskService = processEngine.getTaskService(); 10 11 //1、在辦理時設置流程變量 12 //1.1、獲取任務,查詢正在執行的任務 13 String assignee = "employee"; 14 TaskQuery query = taskService.createTaskQuery() 15 .taskAssignee(assignee) 16 .orderByTaskCreateTime() 17 .desc(); 18 Task task = query.list().get(0); 19 String taskId = task.getId(); 20 //1.2、向任務中設置流程變量 21 //設置一個流程變量 22 //taskService.setVariable(taskId, "請假天數", 2); 23 //taskService.setVariable(taskId, "請假原因", "約會"); 24 //設置多個流程變量 25 //taskService.setVariables(taskId, variables); 26 27 //2、在完成時設置流程變量 28 Map<String, Object> variables = new HashMap<String, Object>(); 29 variables.put("請假天數", 4); 30 variables.put("請假原因", "外出培訓"); 31 variables.put("請假借款", 1000.5); 32 variables.put("請假開始日期", new Date()); 33 variables.put("是否用車", false); 34 taskService.complete(taskId, variables); 35 36 }
4、查看流程變量

1 /** 2 * 4、查看流程變量 3 * 流程變量不與Task相關 4 */ 5 @Test 6 public void testQueryProcessVariable() { 7 // 1、獲取服務對象的實例 8 TaskService taskService = processEngine.getTaskService(); 9 10 // 2、查詢正在執行的任務 11 String assignee = "employee"; 12 TaskQuery query = taskService.createTaskQuery() 13 .taskAssignee(assignee) 14 .orderByTaskCreateTime() 15 .desc(); 16 Task task = query.list().get(0); 17 18 //3、根據任務ID與流程變量的Key獲取流程變量信息 19 String taskId = task.getId(); 20 logger.info("TaskId: " + task.getId() ); 21 //3.1、獲取單個流程變量 22 String variableName = "test"; 23 String varilable = (String) taskService.getVariable(taskId, variableName); 24 25 logger.info("Varilable:" + varilable); 26 27 //3.2、獲取多個流程變量 28 Map<String, Object> varMap = new HashMap<String, Object>(); 29 varMap = taskService.getVariables(taskId); 30 31 logger.info("Map - Key: test, Value: " + varMap.get("test")); 32 33 }
二、歷史記錄
1、查看按照某個規則一共執行了多少次流程
HistoricProcessInstance :包含當前和已經結束的流程實例信息。
2、查看某一次流程執行,一共經歷了多少步驟
HistoricActivityInstance:包含一個活動(流程上的節點)的執行信息。
3、Activiti的歷史信息維護策略
在流程活動產生時,同時會產生一個對應的歷史,記錄開始相關的記錄,然后在活動結束后,把結束時間維護進去。
4、配置文件 activiti.cfg.xml

1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 3 http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd 4 http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.2.xsd"> 5 6 <bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneProcessEngineConfiguration"> 7 <!-- 數據庫連接屬性 --> 8 <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/activiti?characterEncoding=utf-8"></property> 9 <property name="jdbcDriver" value="com.mysql.jdbc.Driver"></property> 10 <property name="jdbcUsername" value="root"></property> 11 <property name="jdbcPassword" value="root"></property> 12 13 <!-- 數據庫更新策略 --> 14 <property name="databaseSchemaUpdate" value="true"></property> 15 16 <!-- 17 Activiti默認提供4種歷史級別: 18 1、none: 不保存任何歷史記錄,可以提高系統的性能; 19 2、activity:保存所有的流程實例、任務、活動信息; 20 3、audit:也是Activiti的默認級別,保存所有的流程實例、任務、活動、表單屬性; 21 4、full:最完整的歷史記錄,除了包含Audit級別的信息之外還能保存詳細信息,例如:流程變量。 22 --> 23 <property name="history" value="activity"></property> 24 25 <property name="jobExecutorActivate" value="false"></property> 26 27 <!-- 郵件服務地址 --> 28 <property name="mailServerHost" value="mail.wxintl.com"></property> 29 <property name="mailServerPort" value="5025"></property> 30 </bean> 31 32 </beans>