Activiti學習筆記7 — ReceiveTask機器自動任務的使用


一、 創建流程規則,如下圖

二、發布流程

 1 /**
 2      * 2、發布一個流程
 3      */
 4     @Test
 5     public void  testDeployProcess() {
 6         RepositoryService repositoryService = processEngine.getRepositoryService();
 7         DeploymentBuilder builder = repositoryService.createDeployment();
 8         // 加載發布資源
 9         builder.name("機器自動執行流程測試") // 設置流程顯示別名
10                 .addClasspathResource("receiveTask.bpmn") // 設置流程規則文件
11                 .addClasspathResource("receiveTask.png"); // 設置流程規則的圖片
12         // 發布流程
13         builder.deploy();
14     }
View Code

三、啟動流程,並自動執行任務

 1 /**
 2      * 3、啟動流程,並自動執行任務
 3      */
 4     @Test
 5     public void testStartProcess() {
 6         // 獲取服務對象的實例
 7         RuntimeService runtimeService = processEngine.getRuntimeService();
 8 
 9         String processDefinitionKey = "receiveTask";
10         // 自動執行與Key相對應的流程的最高版本
11         ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(processDefinitionKey);
12         
13         String processInstanceId = processInstance.getId();
14         
15         logger.info("Id:" + processInstance.getId());
16         
17         //獲取當前流程下Execution對象
18         Execution e1 = runtimeService
19                                             .createExecutionQuery()
20                                             .processInstanceId(processInstanceId) //每個流程的唯一標識
21                                             .activityId("匯總當天銷售額")    //每個活動的唯一標識
22                                             .singleResult();
23         Assert.assertNotNull(e1);
24         //自動邏輯的綁定-匯總當天銷售額,進行一堆邏輯后,得到金額money
25         Double money = 888888.88d;
26         //把金額放入變量中
27         runtimeService.setVariable(e1.getId(), "銷售額", money);
28         logger.info("匯總后當天的銷售額是: " +  money);
29         
30         //推動流程流轉
31         runtimeService.signal(e1.getId());
32         
33         //判斷當前流程,是否儀在一個節點ID是“發短信給老板”的活動節點
34         Execution e2 = runtimeService
35                 .createExecutionQuery()
36                 .processInstanceId(processInstanceId) //每個流程的唯一標識
37                 .activityId("發短信給老板")    //每個活動的唯一標識
38                 .singleResult();
39         Assert.assertNotNull(e2);
40         Double m = (Double) runtimeService.getVariable(e2.getId(), "銷售額");
41         logger.info("老板,今天的銷售額是:" +m);
42         
43         //推動流程流轉
44         runtimeService.signal(e2.getId());
45         
46         //檢查結束狀態
47         ProcessInstance pInstance = runtimeService
48                                                         .createProcessInstanceQuery()
49                                                         .processInstanceId(processInstanceId)
50                                                         .singleResult();
51         Assert.assertNull(pInstance);
52         logger.info("機器自動任務流程成功執行!");        
53     }
View Code

四、執行后的結果如下:

[INFO][2015-12-01 17:34:46,411][com.mcs.activiti.test.TestReceiveTask]Id:60001
[INFO][2015-12-01 17:34:46,570][com.mcs.activiti.test.TestReceiveTask]匯總后當天的銷售額是: 888888.88
[INFO][2015-12-01 17:34:46,625][com.mcs.activiti.test.TestReceiveTask]老板,今天的銷售額是:888888.88
[INFO][2015-12-01 17:34:46,783][com.mcs.activiti.test.TestReceiveTask]機器自動任務流程成功執行!


免責聲明!

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



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