Flowable?ReceiveTask使用場景分析
1. 使用場景
在之前的案例中,松哥和大家舉例最多的 Task 主要是 UserTask 和 ServiceTask,ReceiveTask 雖然也和大家提過但是沒有仔細(xì)講過,今天我們就來捋一捋 ReceiveTask 在 Flowable 中到底怎么玩。
接受任務(wù)(Receive Task),接觸過 Flowable 的小伙伴應(yīng)該是見過或者聽說過,它的圖標(biāo)如下圖:
ReceiveTask 可以算是 Flowable 中最簡單的一種任務(wù),當(dāng)該任務(wù)到達(dá)的時(shí)候,它不做任何邏輯,而是被動(dòng)地等待用戶 Trigger。
ReceiveTask 往往適用于一些不明確的阻塞,例如:一個(gè)復(fù)雜的計(jì)算需要等待很多條件,這些條件是需要人為來判斷是否可以執(zhí)行,而不是直接執(zhí)行,這個(gè)時(shí)候,工作人員如果判斷可以繼續(xù)了,那么就 Trigger 一下使流程繼續(xù)向下執(zhí)行。
基于以上介紹,ReceiveTask 還有一個(gè)中文名字叫做等待任務(wù),也就是說,流程走到 ReceiveTask 這個(gè)節(jié)點(diǎn)的時(shí)候,就卡住了,需要用戶手動(dòng)點(diǎn)一下,流程才會(huì)繼續(xù)向下走。
2. 實(shí)踐
2.1 繪制流程圖
我們繪制一個(gè)簡單的流程圖來看下 ReceiveTask 到底是啥樣子,流程圖如下:
ReceiveTask 圖標(biāo)上有一個(gè)信封。
小伙伴們繪制的時(shí)候,首先選擇用戶任務(wù):
然后點(diǎn)擊設(shè)置按鈕,將用戶任務(wù)切換為 ReceiveTask 即可:
繪制完成后,我們下載這個(gè)流程圖對(duì)應(yīng)的 XML 文件。
來看看,帶 ReceiveTask 的流程圖是下面這樣的:
<process id="receiveTask_demo" name="接收任務(wù)測(cè)試流程" isExecutable="true"> <documentation>接收任務(wù)測(cè)試流程</documentation> <startEvent id="startEvent" flowable:formFieldValidation="true"></startEvent> <sequenceFlow id="sid-9E7B327E-EFC8-4D29-8C6F-157D5E1B7A4E" sourceRef="startEvent" targetRef="todaySales"></sequenceFlow> <receiveTask id="todaySales" name="統(tǒng)計(jì)今日銷售額"></receiveTask> <receiveTask id="sendMsg" name="發(fā)送今日銷售業(yè)績給老板"></receiveTask> <endEvent id="endEvent"></endEvent> <sequenceFlow id="s2" sourceRef="todaySales" targetRef="sendMsg"></sequenceFlow> <sequenceFlow id="s3" sourceRef="sendMsg" targetRef="endEvent"></sequenceFlow> </process>
2.2 部署
這個(gè)松哥在之前的文章中已經(jīng)反復(fù)介紹過多次了,這里就不再贅述了,大家參考我們之前的文章部署并啟動(dòng)上面這個(gè)流程。
2.3 分析
當(dāng)流程啟動(dòng)之后,按照我們前面文章的分析,我們先去數(shù)據(jù)庫中 ACT_RU_TASK
表進(jìn)行查看,發(fā)現(xiàn)該表空空如也。也就是 ReceiveTask 并不會(huì)被記錄在 ACT_RU_TASK
表中,他們只是單純的被記錄在 ACT_RU_EXECUTION
表中,因?yàn)樵谠摫碇?,我們可以查?ReceiveTask 的記錄。
對(duì)于 ReceiveTask 的觸發(fā)方式也很簡單,如下:
@Test void test10() { List<Execution> list = runtimeService.createExecutionQuery().activityId("todaySales").list(); for (Execution execution : list) { runtimeService.trigger(execution.getId()); } }
由于 ReceiveTask 的觸發(fā)需要傳入的參數(shù)是執(zhí)行實(shí)例 ID 而不是流程實(shí)例 ID,所以我們要查詢出來當(dāng)前待觸發(fā)的執(zhí)行實(shí)例 ID。具體的查詢方式就是根據(jù) ReceiveTask 的節(jié)點(diǎn)名稱去查詢。
查詢到執(zhí)行實(shí)例 ID 之后,調(diào)用 trigger 方法完成觸發(fā),使得流程繼續(xù)向下走。
好啦,現(xiàn)在流程進(jìn)入到發(fā)送今日銷售業(yè)績給老板這個(gè)環(huán)節(jié)了,老辦法繼續(xù)查詢并執(zhí)行:
@Test void test10() { List<Execution> list = runtimeService.createExecutionQuery().activityId("sendMsg").list(); for (Execution execution : list) { runtimeService.trigger(execution.getId()); } }
這個(gè)執(zhí)行完層后,這個(gè)流程就結(jié)束了?,F(xiàn)在我們?nèi)ゲ榭?ACT_RU_ACTINST
表已經(jīng)空了,查看 ACT_RU_EXECUTION
表也空了。
以上就是Flowable ReceiveTask使用場景分析的詳細(xì)內(nèi)容,更多關(guān)于Flowable ReceiveTask使用場景的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
基于list stream: reduce的使用實(shí)例
這篇文章主要介紹了list stream: reduce的使用實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-09-09Java中基于推、拉模式的sentinel規(guī)則持久化詳解
這篇文章主要介紹了Java中基于推、拉模式的sentinel規(guī)則持久化詳解,推模式是sentinelDashboard?把規(guī)則推給Nacos,Nacos監(jiān)聽規(guī)則的變化推給微服務(wù),拉模式是sentinelDashboard?把規(guī)則直接給微服務(wù),?Nacos定時(shí)的同步微服務(wù)端的規(guī)則,需要的朋友可以參考下2023-09-09常用Maven庫,鏡像庫及maven/gradle配置(小結(jié))
這篇文章主要介紹了常用Maven庫,鏡像庫及maven/gradle配置(小結(jié)),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12java結(jié)合keytool如何實(shí)現(xiàn)非對(duì)稱加密與解密詳解
這篇文章主要給大家介紹了關(guān)于java結(jié)合keytool如何實(shí)現(xiàn)非對(duì)稱加密與解密的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-08-08Java經(jīng)典設(shè)計(jì)模式之責(zé)任鏈模式原理與用法詳解
這篇文章主要介紹了Java經(jīng)典設(shè)計(jì)模式之責(zé)任鏈模式,簡單說明了責(zé)任鏈模式的概念、原理,并結(jié)合實(shí)例形式分析了java實(shí)現(xiàn)責(zé)任鏈模式的具體用法與相關(guān)注意事項(xiàng),需要的朋友可以參考下2017-08-08原理分析SonarQube中IdentityProvider賬戶互斥現(xiàn)象
這篇文章主要為大家介紹分析SonarQube中IdentityProvider賬戶互斥現(xiàn)象原理,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2022-02-02java調(diào)用webservice的.asmx接口的使用步驟
這篇文章主要介紹了java調(diào)用webservice的.asmx接口的使用步驟,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-09-09Mybatis?Interceptor線程安全引發(fā)的bug問題
這篇文章主要介紹了Mybatis?Interceptor線程安全引發(fā)的bug問題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02