Activiti學習筆記6 — 變量與歷史記錄


一、 變量的使用

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     }
View Code

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     }
View Code

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     }
View Code

二、歷史記錄

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>
View Code

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM