Activiti如何啟動流程并使流程前進(jìn)
一、流程和任務(wù)的關(guān)系
以下是一個簡單的請假流程圖,其中有一個開始事件,兩個用戶任務(wù),一個結(jié)束事件。
啟動流程后,activiti會自動創(chuàng)建第一個流程節(jié)點(diǎn)的用戶任務(wù),然后我們完成第一個用戶任務(wù)流程就會前進(jìn)到下一個流程節(jié)點(diǎn),創(chuàng)建第二個節(jié)點(diǎn)的流程任務(wù)并刪除第一個流程任務(wù)。
二、開啟流程
activiti提供了一個RuntimeService服務(wù)組件來在流程運(yùn)行時對流程實(shí)例進(jìn)行管理與控制。開啟流程就需要使用其中的api
2.1根據(jù)流程定義key開啟流程
上一篇博客中說道了一個流程部署成功后,會在部署信息表act_re_deployment和流程定義表act_re_procdef中插入記錄。流程定義key就是act_re_procdef表中的KEY_字段的值。
當(dāng)表中存在KEY_字段相同的記錄時,activiti會選擇版本號 VERSION_最新的一條流程定義記錄來開啟流程
/** * 開啟流程,根據(jù)流程定義key開啟流程, * 如果流程定義表中有多個相同的流程定義key,activiti會根據(jù)版本號字段VERSION_選擇最新的版本來開啟流程 */ @Test public void test1() { String processDefinitionKey="process"; //開啟流程,得到流程實(shí)例對象 ProcessInstance processInstance = runtimeService.startProcessInstanceByKey(processDefinitionKey); System.out.println(processInstance); }
activiti用ProcessInstance這個接口來描述開啟流程后得到的流程實(shí)例。
三、查詢用戶任務(wù)
開頭說到了開啟流程后會創(chuàng)建第一個流程節(jié)點(diǎn)的用戶任務(wù),所以可以使用activiti提供的另一個服務(wù)組件TaskService來查詢用戶任務(wù),TaskService中提供了和任務(wù)處理相關(guān)的api
3.1 TaskQuery
activiti提供了這個接口來封裝任務(wù)查詢相關(guān)的api,可以通過TaskService來獲取它的實(shí)現(xiàn)類對象
TaskQuery taskQuery = taskService.createTaskQuery();
然后taskQuery這個查詢對象的使用和activiti的其他查詢對象類似,先指定查詢條件,再執(zhí)行查詢。這里我根據(jù)任務(wù)的代理人進(jìn)行查詢,一個任務(wù)只能有一個代理人
/** * 查詢開啟流程后自動創(chuàng)建的任務(wù) */ @Test public void test2() { //根據(jù)任務(wù)的代理人進(jìn)行查詢,一個任務(wù)的代理人是唯一的 Task task = taskService.createTaskQuery().taskAssignee("tom").singleResult(); System.out.println(task); }
activiti用Task來封裝任務(wù)對象,對應(yīng)的是act_ru_task這張表的記錄。創(chuàng)建任務(wù)后會在這張表中插入一條記錄。
四、完成任務(wù)
可以使用taskService中的方法來完成當(dāng)前任務(wù),使流程向下一個節(jié)點(diǎn)移動。完成任務(wù)時需要給定任務(wù)id即act_ru_task表的主鍵Id,所以完成任務(wù)時可以先通過查詢方法給定條件查詢出一個任務(wù)對象,再完成這個任務(wù)。
/** * 完成任務(wù),使流程前進(jìn)到下一個流程節(jié)點(diǎn),并創(chuàng)建下一個節(jié)點(diǎn)的任務(wù)對象 */ @Test public void test3() { String taskId="4502"; taskService.complete(taskId); }
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- IDEA安裝Activiti插件并解決亂碼問題(推薦)
- Activiti如何動態(tài)獲取流程圖過程詳解
- Activiti流程文件部署過程解析
- Activiti流程引擎對象及配置原理解析
- Activiti explorer.war示例工程使用過程圖解
- SpringBoot整合Activiti7的實(shí)現(xiàn)代碼
- SpringBoot2整合activiti6環(huán)境搭建過程解析
- spring boot activiti工作流的搭建與簡單使用
- Spring Boot中使用Activiti的方法教程(二)
- Spring Boot中使用activiti的方法教程(一)
- Spring activiti如何實(shí)現(xiàn)指定任務(wù)處理者
相關(guān)文章
Java實(shí)現(xiàn)向Word文檔添加文檔屬性
這篇文章主要介紹了Java實(shí)現(xiàn)向Word文檔添加文檔屬性的相關(guān)資料,需要的朋友可以參考下2023-01-01springboot微服務(wù)項(xiàng)目集成html頁面的實(shí)現(xiàn)
本文主要介紹了springboot微服務(wù)項(xiàng)目集成html頁面的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-04-04JAVA-4NIO之Channel之間的數(shù)據(jù)傳輸方法
下面小編就為大家?guī)硪黄狫AVA-4NIO之Channel之間的數(shù)據(jù)傳輸方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-06-06Java數(shù)據(jù)結(jié)構(gòu)之選擇排序算法的實(shí)現(xiàn)與優(yōu)化
選擇排序:(Selection?sort)是一種簡單直觀的排序算法,也是一種不穩(wěn)定的排序方法。本文主要為大家介紹一下選擇排序的實(shí)現(xiàn)與優(yōu)化,希望對大家有所幫助2023-01-01SpringBoot 如何實(shí)現(xiàn)異步編程
在SpringBoot的日常開發(fā)中,一般都是同步調(diào)用的,但實(shí)際中有很多場景非常適合使用異步來處理,本文就詳細(xì)的介紹一下SpringBoot 如何實(shí)現(xiàn)異步編程 ,具有一定的參考價值,感興趣的可以了解一下2021-12-12解決Spring?Security升級到5.5.7、5.6.4及以上啟動報錯出現(xiàn)版本不兼容的問題
這篇文章主要介紹了解決Spring?Security升級到5.5.7、5.6.4及以上啟動報錯出現(xiàn)版本不兼容的問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-08-08