自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Flowable 中 ReceiveTask 怎么玩?

開發(fā) 前端
ReceiveTask 往往適用于一些不明確的阻塞,例如:一個(gè)復(fù)雜的計(jì)算需要等待很多條件,這些條件是需要人為來(lái)判斷是否可以執(zhí)行,而不是直接執(zhí)行,這個(gè)時(shí)候,工作人員如果判斷可以繼續(xù)了,那么就 Trigger 一下使流程繼續(xù)向下執(zhí)行。

在之前的案例中,松哥和大家舉例最多的 Task 主要是 UserTask 和 ServiceTask,ReceiveTask 雖然也和大家提過但是沒有仔細(xì)講過,今天我們就來(lái)捋一捋 ReceiveTask 在 Flowable 中到底怎么玩。

1. 使用場(chǎng)景

接受任務(wù)(Receive Task),接觸過 Flowable 的小伙伴應(yīng)該是見過或者聽說過,它的圖標(biāo)如下圖:

圖片

ReceiveTask 可以算是 Flowable 中最簡(jiǎn)單的一種任務(wù),當(dāng)該任務(wù)到達(dá)的時(shí)候,它不做任何邏輯,而是被動(dòng)地等待用戶 Trigger。

ReceiveTask 往往適用于一些不明確的阻塞,例如:一個(gè)復(fù)雜的計(jì)算需要等待很多條件,這些條件是需要人為來(lái)判斷是否可以執(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è)簡(jiǎn)單的流程圖來(lái)看下 ReceiveTask 到底是啥樣子,流程圖如下:

圖片

ReceiveTask 圖標(biāo)上有一個(gè)信封。

小伙伴們繪制的時(shí)候,首先選擇用戶任務(wù):

圖片

然后點(diǎn)擊設(shè)置按鈕,將用戶任務(wù)切換為 ReceiveTask 即可:

圖片

繪制完成后,我們下載這個(gè)流程圖對(duì)應(yīng)的 XML 文件。

來(lái)看看,帶 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è)績(jī)給老板"></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ù)庫(kù)中 ACT_RU_TASK? 表進(jìn)行查看,發(fā)現(xiàn)該表空空如也。也就是 ReceiveTask 并不會(huì)被記錄在 ACT_RU_TASK? 表中,他們只是單純的被記錄在 ACT_RU_EXECUTION 表中,因?yàn)樵谠摫碇校覀兛梢圆榭?ReceiveTask 的記錄。

對(duì)于 ReceiveTask 的觸發(fā)方式也很簡(jiǎn)單,如下:

@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,所以我們要查詢出來(lái)當(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è)績(jī)給老板這個(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)ゲ榭?nbsp;ACT_RU_ACTINST? 表已經(jīng)空了,查看 ACT_RU_EXECUTION 表也空了。

責(zé)任編輯:武曉燕 來(lái)源: 江南一點(diǎn)雨
相關(guān)推薦

2022-11-14 10:44:59

HTMLFlowable外置

2022-02-18 11:05:25

Jpa配置Address

2018-06-26 15:58:39

進(jìn)程內(nèi)緩存緩存數(shù)據(jù)

2022-04-13 10:05:48

網(wǎng)關(guān)Flowable事件訂閱

2017-09-19 14:13:53

Snapshot數(shù)據(jù)庫(kù)HBase

2021-10-27 15:04:27

OpenTTD模型火車開源

2012-06-26 11:27:40

Windows Pho

2018-02-28 10:05:00

AI電商業(yè)務(wù)人臉識(shí)別

2020-02-12 11:34:56

架構(gòu)平滑上云機(jī)房遷移

2020-11-16 07:15:41

Linux權(quán)限管理

2023-02-13 18:32:59

AI繪畫

2017-03-28 11:39:58

深信服超融合平臺(tái)

2022-05-30 16:19:26

C#多態(tài)底層虛方法

2021-01-20 05:35:08

PythonMock微服務(wù)

2024-03-15 08:06:58

MySQLJOIN命令

2015-12-16 18:07:09

樂視體育

2016-06-16 16:18:44

央視互動(dòng)WOT

2017-03-27 15:07:15

云計(jì)算2BApp Store

2020-05-28 15:41:48

微軟C+語(yǔ)言

2011-07-10 14:01:45

復(fù)合一體機(jī)技巧
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)