Activiti 學習筆記11:接收活動(receiveTask,即等待活動)
接收任務是一個簡單任務,它會等待對應訊息的到達。 當前,官方只實現了這個任務的java語義。 當流程達到接收任務,流程狀態會儲存到資料庫中。
在任務建立後,意味著流程會進入等待狀態 , 直到引擎接收了一個特定的訊息 , 這會觸發流程穿過接收任務繼續執行。
一、流程圖
二、演示程式碼
package jiankunking.receiveTask;
import java.io.InputStream;
import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.repository.Deployment;
import org.activiti.engine.runtime.Execution;
import org.activiti.engine.runtime.ProcessInstance;
import org.junit.Test;
public class ReceiveTaskTest {
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
/**部署流程定義(從inputStream)*/
@Test
public void deploymentProcessDefinition_inputStream(){
InputStream inputStreamBpmn = this.getClass().getResourceAsStream("receiveTask.bpmn");
InputStream inputStreamPng = this.getClass().getResourceAsStream("receiveTask.png");
Deployment deployment = processEngine.getRepositoryService()//與流程定義和部署物件相關的Service
.createDeployment()//建立一個部署物件
.name("接收活動任務")//新增部署的名稱
.addInputStream("receiveTask.bpmn", inputStreamBpmn)//
.addInputStream("receiveTask.png", inputStreamPng)//
.deploy();//完成部署
System.out.println("部署ID:"+deployment.getId());//
System.out.println("部署名稱:"+deployment.getName());//
}
/**啟動流程例項+設定流程變數+獲取流程變數+向後執行一步*/
@Test
public void startProcessInstance(){
//流程定義的key
String processDefinitionKey = "receiveTask";
ProcessInstance pi = processEngine.getRuntimeService()//與正在執行的流程例項和執行物件相關的Service
.startProcessInstanceByKey(processDefinitionKey);//使用流程定義的key啟動流程例項,key對應helloworld.bpmn檔案中id的屬性值,使用key值啟動,預設是按照最新版本的流程定義啟動
System.out.println("流程例項ID:"+pi.getId());//流程例項ID 101
System.out.println("流程定義ID:"+pi.getProcessDefinitionId());//流程定義ID helloworld:1:4
/**查詢執行物件ID*/
Execution execution1 = processEngine.getRuntimeService()//
.createExecutionQuery()//建立執行物件查詢
.processInstanceId(pi.getId())//使用流程例項ID查詢
.activityId("receivetask1")//當前活動的id,對應receiveTask.bpmn檔案中的活動節點id的屬性值
.singleResult();
/**使用流程變數設定當日銷售額,用來傳遞業務引數*/
processEngine.getRuntimeService()//
.setVariable(execution1.getId(), "彙總當日銷售額", 21000);
/**向後執行一步,如果流程處於等待狀態,使得流程繼續執行*/
processEngine.getRuntimeService()
.signal(execution1.getId());
/**查詢執行物件ID*/
Execution execution2 = processEngine.getRuntimeService()//
.createExecutionQuery()//建立執行物件查詢
.processInstanceId(pi.getId())//使用流程例項ID查詢
.activityId("receivetask2")//當前活動的id,對應receiveTask.bpmn檔案中的活動節點id的屬性值
.singleResult();
/**從流程變數中獲取彙總當日銷售額的值*/
Integer value = (Integer)processEngine.getRuntimeService()//
.getVariable(execution2.getId(), "彙總當日銷售額");
System.out.println("給老闆傳送簡訊:金額是:"+value);
/**向後執行一步,如果流程處於等待狀態,使得流程繼續執行*/
processEngine.getRuntimeService()
.signal(execution2.getId());
}
}
三、小結
當前任務(一般指機器自動完成,但需要耗費一定時間的工作)完成後,向後推移流程,可以呼叫runtimeService.signal(executionId),傳遞接收執行物件的id。
演示demo下載: http://download.csdn.net/detail/xunzaosiyecao/9627670
本文部分內容整理自itcast講義,在此表示感謝。
作者:jiankunking 出處:http://blog.csdn.net/jiankunking
相關文章
- Android學習筆記(35):Android活動條Android筆記
- activiti學習筆記二筆記
- Activiti 學習筆記十:開始活動節點(判斷流程是否結束及查詢歷史)筆記
- activiti學習筆記(四)managementService筆記
- Activiti 學習筆記 小結筆記
- Activiti 學習筆記七:連線(SequenceFlow)筆記
- Activiti 學習筆記五:流程變數筆記變數
- Activiti工作流基礎學習筆記筆記
- Activiti 學習筆記12:分配個人任務筆記
- Activiti 學習筆記13:分配組任務筆記
- Activiti學習筆記三:管理流程定義筆記
- activiti學習記錄
- Activiti學習筆記一:建立資料庫表筆記資料庫
- Activiti 學習筆記八:排他閘道器(ExclusiveGateWay)筆記Gateway
- Activiti 學習筆記六:流程執行歷史記錄筆記
- 會議活動拍攝人物技巧筆記筆記
- Activiti 學習筆記一到六小結筆記
- Activiti 學習筆記九:並行閘道器(parallelGateWay)筆記並行ParallelGateway
- Activiti學習筆記二:簡單順序流演示demo筆記
- Android學習之活動的最佳實踐Android
- Activiti 學習筆記14:工作流定義的角色組筆記
- Activiti 學習筆記四:流程例項、任務的執行筆記
- 活動效果分析1——活動流程
- python學習筆記--web即時通訊Python筆記Web
- Tensorflow學習筆記No.11筆記
- 《阿里雲&騰訊雲雙 11 活動 》阿里
- 社群活動 | SQLE 徵稿活動開始啦!SQL
- 【Go學習筆記11】併發(一)Go筆記
- Ext學習筆記11-佈局筆記
- DG學習筆記(11)_Log Transport Services筆記
- Activiti 基礎概念 筆記筆記
- 遊戲運營活動效果分析(一):活動流程遊戲
- 極光筆記 | 如何為 iOS 16 建立一個實時活動筆記iOS
- Activiti 學習(三)—— Activiti 流程啟動並完成
- 強化學習-學習筆記11 | 解決高估問題強化學習筆記
- numpy的學習筆記\pandas學習筆記筆記
- 2011寒假-joomla學習筆記OOM筆記
- Object C學習筆記11-陣列Object筆記陣列