Activiti 學習筆記七:連線(SequenceFlow)
一、部署流程定義
ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
/** 部署流程定義(從inputStream) */
@Test
public void deploymentProcessDefinition_inputStream() {
InputStream inputStreamBpmn = this.getClass().getResourceAsStream("sequenceFlow.bpmn");
InputStream inputStreamPng = this.getClass().getResourceAsStream("sequenceFlow.png");
Deployment deployment = processEngine.getRepositoryService()// 與流程定義和部署物件相關的Service
.createDeployment()// 建立一個部署物件
.name("連線")// 新增部署的名稱
.addInputStream("sequenceFlow.bpmn", inputStreamBpmn)//
.addInputStream("sequenceFlow.png", inputStreamPng)//
.deploy();// 完成部署
System.out.println("部署ID:" + deployment.getId());//
System.out.println("部署名稱:" + deployment.getName());//
}
注意:如果將流程圖放置在和java類相同的路徑,需要配置
點選remove按鈕,移除*/.java
二、啟動流程例項
/** 啟動流程例項 */
@Test
public void startProcessInstance() {
// 流程定義的key
String processDefinitionKey = "sequenceFlow";
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
}
三、查詢我的個人任務
/** 查詢當前人的個人任務 */
@Test
public void findMyPersonalTask() {
String assignee = "趙六";
List<Task> list = processEngine.getTaskService()// 與正在執行的任務管理相關的Service
.createTaskQuery()// 建立任務查詢物件
/** 查詢條件(where部分) */
.taskAssignee(assignee)// 指定個人任務查詢,指定辦理人
// .taskCandidateUser(candidateUser)//組任務的辦理人查詢
// .processDefinitionId(processDefinitionId)//使用流程定義ID查詢
// .processInstanceId(processInstanceId)//使用流程例項ID查詢
// .executionId(executionId)//使用執行物件ID查詢
/** 排序 */
.orderByTaskCreateTime().asc()// 使用建立時間的升序排列
/** 返回結果集 */
// .singleResult()//返回惟一結果集
// .count()//返回結果集的數量
// .listPage(firstResult, maxResults);//分頁查詢
.list();// 返回列表
if (list != null && list.size() > 0) {
for (Task task : list) {
System.out.println("任務ID:" + task.getId());
System.out.println("任務名稱:" + task.getName());
System.out.println("任務的建立時間:" + task.getCreateTime());
System.out.println("任務的辦理人:" + task.getAssignee());
System.out.println("流程例項ID:" + task.getProcessInstanceId());
System.out.println("執行物件ID:" + task.getExecutionId());
System.out.println("流程定義ID:" + task.getProcessDefinitionId());
System.out.println("########################################################");
}
}
}
四、完成我的任務
/** 完成我的任務 */
@Test
public void completeMyPersonalTask() {
// 任務ID
String taskId = "67504";
// 完成任務的同時,設定流程變數,使用流程變數用來指定完成任務後,下一個連線,對應sequenceFlow.bpmn檔案中${message=='不重要'}
Map<String, Object> variables = new HashMap<String, Object>();
variables.put("message", "重要");
processEngine.getTaskService()// 與正在執行的任務管理相關的Service
.complete(taskId, variables);
System.out.println("完成任務:任務ID:" + taskId);
}
說明:
1)使用流程變數,設定連線需要的流程變數的名稱message,並設定流程變數的值
對應:
流程會按照指定的連線完成任務。
五、總結
1、一個活動中可以指定一個或多個SequenceFlow(Start中有一個,End中沒有)。
* 開始活動中有一個SequenceFlow 。
* 結束活動中沒有SequenceFlow 。
* 其他活動中有1條或多條SequenceFlow
2、如果只有一個,則可以不使用流程變數設定codition的名稱;
如果有多個,則需要使用流程變數設定codition的名稱。message表示流程變數的名稱,‘不重要’表示流程變數的值,${}中間的內容要使用boolean型別的表示式,用來判斷應該執行的連線。
演示demo下載:http://download.csdn.net/detail/xunzaosiyecao/9625592
本文部分內容整理自itcast講義,在此表示感謝。
作者:jiankunking 出處:http://blog.csdn.net/jiankunking
相關文章
- activiti學習筆記二筆記
- activiti學習筆記(四)managementService筆記
- substrate學習筆記13:連線parachain筆記AI
- Activiti工作流基礎學習筆記筆記
- activiti學習記錄
- Redis阻塞(學習筆記七)Redis筆記
- HexMap學習筆記(七)——道路筆記
- 全連線神經網路學習筆記神經網路筆記
- MYSQL學習筆記23: 多表查詢(自連線內連線+左右外連線)MySql筆記
- webpack學習筆記七:配置babelWeb筆記Babel
- Presto學習筆記——Go客戶端連線PrestoREST筆記Go客戶端
- Java學習筆記——陣列練習(七)Java筆記陣列
- Laravel學習筆記七-建立部落格Laravel筆記
- ES6學習筆記(七)【class】筆記
- Redis學習筆記(七) 資料庫Redis筆記資料庫
- 工作學習筆記(七)Java的介面筆記Java
- 線性基學習筆記筆記
- 線段樹學習筆記筆記
- Go語言學習筆記(七)之方法Go筆記
- iOS學習筆記47 Swift(七)泛型iOS筆記Swift泛型
- Java學習筆記——第七天Java筆記
- JavaWeb學習筆記——第七天JavaWeb筆記
- 飛機的 PHP 學習筆記七:WebPHP筆記Web
- Redis 學習筆記(篇七):Redis 持久化Redis筆記持久化
- vue學習筆記(七)---- vue中的路由Vue筆記路由
- JavaScript學習筆記(七)—— 再說函式JavaScript筆記函式
- Redis學習筆記七:主從叢集Redis筆記
- linux學習筆記一:遠端連線linux伺服器Linux筆記伺服器
- 強化學習-學習筆記15 | 連續控制強化學習筆記
- C/C++學習路線———學習筆記C++筆記
- hive學習筆記之七:內建函式Hive筆記函式
- 線性代數學習筆記(二)+貪心學習筆記(一)(2024.10.5)筆記
- 網路學習筆記(一):TCP連線的建立與關閉筆記TCP
- 線段樹分裂 學習筆記筆記
- MySQL筆記3——內連線/外連線、多表連線MySql筆記
- 深度學習筆記1:池化 全連線 啟用函式 softmax深度學習筆記函式
- 李巨集毅深度學習 筆記(七)Auto-encoder深度學習筆記
- LVGL雙向連結串列學習筆記筆記
- 線段樹學習筆記(更新中)筆記