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

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 }
三、啟動流程,並自動執行任務

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 }
四、執行后的結果如下:
[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]機器自動任務流程成功執行!