国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

Flowable 服務任務執行的三種方式

開發 項目管理
ServiceTask 一般由系統自動完成,當流程走到這一步的時候,不會自動停下來,而是會去執行我們提前在 ServiceTask 中配置好的方法。

前面和小伙伴們分別聊了 Flowable 中的 ReceiveTask 和 UserTask,今天我們來看看另外一個比較常見的 Task --> ServiceTask。

1. ServiceTask

ServiceTask 從名字上看就是服務任務,它的圖標一般是像下面這樣:

圖片

ServiceTask 一般由系統自動完成,當流程走到這一步的時候,不會自動停下來,而是會去執行我們提前在 ServiceTask 中配置好的方法。

2. 實踐

我們通過一個簡單的例子來看一下 ServiceTask 要怎么玩。

假設我有如下一個簡單的流程圖:

圖片

中間這個就是一個 ServiceTask。

當流程執行到 ServiceTask 的時候,具體要做哪些事情?有三種不同的方式來設置這里的任務,我們分別來看。

2.1 監聽類

首先我們可以設置一個監聽類,這個監聽類有一個硬性規定就是需要實現 JavaDelegate 接口,像下面這樣:

public class MyServiceTask implements JavaDelegate {
@Override
public void execute(DelegateExecution execution){
System.out.println("========MyServiceTask==========");
}
}

在這個監聽類中我們可以完成一些操作,通過這個 execution 也可以獲取到在流程節點之間傳輸的變量。

這個類定義好之后,接下來我們在流程定義的時候,配置這個類的全路徑即可,如下圖:

圖片

這個配置對應的 XML 內容如下:

<process id="demo01" name="測試流程" isExecutable="true">
<documentation>測試流程</documentation>
<startEvent id="startEvent1" flowable:formFieldValidatinotallow="true"></startEvent>
<sequenceFlow id="sid-33A78082-C2FD-48BE-8B87-99FB20F0B331" sourceRef="startEvent1" targetRef="sid-6FA66E2A-F8E6-4F10-8FA2-6450408E17D8"></sequenceFlow>
<serviceTask id="sid-6FA66E2A-F8E6-4F10-8FA2-6450408E17D8" flowable:class="org.javaboy.flowableidm.MyServiceTask"></serviceTask>
<endEvent id="sid-A5F11956-15EA-4574-98D0-29A4E3DB5495"></endEvent>
<sequenceFlow id="sid-0698809E-0A6C-4B92-A167-AE96A8CB75F2" sourceRef="sid-6FA66E2A-F8E6-4F10-8FA2-6450408E17D8" targetRef="sid-A5F11956-15EA-4574-98D0-29A4E3DB5495"></sequenceFlow>
</process>

小伙伴們看到,在 ServiceTask 標簽中的 flowable:class="org.javaboy.flowableidm.MyServiceTask" 就表示 ServiceTask 執行的服務類。

配置完成后,我們可以部署并啟動這個流程,由于這個流程除了開始和結束,就這一個節點,所以流程一啟動就自動結束了。不過在這個過程中,我們可以看到控制臺打印出來了日志,說明這個 ServiceTask 確實是執行了。

2.2 委托表達式

我們也可以配置委托表達式。

委托表達式是指將一個實現了 JavaDelegate 接口的類注冊到 Spring 容器中,然后我們在流程節點的配置中不用寫完整的類名了,只需要寫 Spring 容器中的 Bean 名稱即可。

像下面這樣:

@Component
public class MyServiceTask implements JavaDelegate {
@Override
public void execute(DelegateExecution execution){
System.out.println("========MyServiceTask==========");
}
}

這個類注冊到 Spring 容器中的默認名稱是類名首字母小寫,即 myServiceTask。

現在我們在流程圖中,可以按照如下方式進行配置:

圖片

對應的 XML 文件如下:

<process id="demo01" name="測試流程" isExecutable="true">
<documentation>測試流程</documentation>
<startEvent id="startEvent1" flowable:formFieldValidatinotallow="true"></startEvent>
<sequenceFlow id="sid-33A78082-C2FD-48BE-8B87-99FB20F0B331" sourceRef="startEvent1" targetRef="sid-6FA66E2A-F8E6-4F10-8FA2-6450408E17D8"></sequenceFlow>
<serviceTask id="sid-6FA66E2A-F8E6-4F10-8FA2-6450408E17D8" flowable:delegateExpressinotallow="${myServiceTask}"></serviceTask>
<endEvent id="sid-A5F11956-15EA-4574-98D0-29A4E3DB5495"></endEvent>
<sequenceFlow id="sid-0698809E-0A6C-4B92-A167-AE96A8CB75F2" sourceRef="sid-6FA66E2A-F8E6-4F10-8FA2-6450408E17D8" targetRef="sid-A5F11956-15EA-4574-98D0-29A4E3DB5495"></sequenceFlow>
</process>

可以看到,flowable:delegateExpressinotallow="${myServiceTask}" 就表示執行的一個表達式。

測試過程同 2.1 小節,我就不再贅述了。

最后總結一下,委托表達式,一定是 JavaDelegate 接口的實現類,將這個實現類注冊到 Spring 容器中,然后在使用的時候,根據 Bean 的名稱從 Spring 容器中查找即可。

2.3 表達式

我們也可以使用表達式。

表達式就是一個普通類的普通方法,將這個普通類注冊到 Spring 容器中,然后表達式中還可以執行這個類中的方法,類似下面這樣,任意定義一個 Java 類:

@Component
public class MyServiceTask2 {
public void hello(){
System.out.println("========MyServiceTask2==========");
}
}

然后在流程圖中按照如下方式進行配置:

圖片

表達式中有一部分內容隱藏了,完整的表達式是 ${myServiceTask2.hello()}。

對應的 XML 文件如下:

<process id="demo01" name="測試流程" isExecutable="true">
<documentation>測試流程</documentation>
<startEvent id="startEvent1" flowable:formFieldValidatinotallow="true"></startEvent>
<sequenceFlow id="sid-33A78082-C2FD-48BE-8B87-99FB20F0B331" sourceRef="startEvent1" targetRef="sid-6FA66E2A-F8E6-4F10-8FA2-6450408E17D8"></sequenceFlow>
<serviceTask id="sid-6FA66E2A-F8E6-4F10-8FA2-6450408E17D8" flowable:expressinotallow="${myServiceTask2.hello()}"></serviceTask>
<endEvent id="sid-A5F11956-15EA-4574-98D0-29A4E3DB5495"></endEvent>
<sequenceFlow id="sid-0698809E-0A6C-4B92-A167-AE96A8CB75F2" sourceRef="sid-6FA66E2A-F8E6-4F10-8FA2-6450408E17D8" targetRef="sid-A5F11956-15EA-4574-98D0-29A4E3DB5495"></sequenceFlow>
</process>

可以看到,表達式的內容是 flowable:expressinotallow="${myServiceTask2.hello()}。

測試方式同 2.1 小節,這里我不再贅述。

3. 類中字段

可能有小伙伴注意到,我們在繪制流程圖的時候,還可以為類設置一個字段。

例如我想給 ServiceTask 的執行類設置一個 username 字段,如下:

圖片

圖片

設置完成后,對應的 XML 如下:

<process id="demo01" name="測試流程" isExecutable="true">
<documentation>測試流程</documentation>
<startEvent id="startEvent1" flowable:formFieldValidatinotallow="true"></startEvent>
<sequenceFlow id="sid-33A78082-C2FD-48BE-8B87-99FB20F0B331" sourceRef="startEvent1" targetRef="sid-6FA66E2A-F8E6-4F10-8FA2-6450408E17D8"></sequenceFlow>
<serviceTask id="sid-6FA66E2A-F8E6-4F10-8FA2-6450408E17D8" flowable:delegateExpressinotallow="${myServiceTask}">
<extensionElements>
<flowable:field name="username">
<flowable:string><![CDATA[javaboy]]></flowable:string>
</flowable:field>
</extensionElements>
</serviceTask>
<endEvent id="sid-A5F11956-15EA-4574-98D0-29A4E3DB5495"></endEvent>
<sequenceFlow id="sid-0698809E-0A6C-4B92-A167-AE96A8CB75F2" sourceRef="sid-6FA66E2A-F8E6-4F10-8FA2-6450408E17D8" targetRef="sid-A5F11956-15EA-4574-98D0-29A4E3DB5495"></sequenceFlow>
</process>

可以看到,這里通過 extensionElements 節點描述了額外的信息。

接下來,我們就可以在 Java 類中訪問到這個變量了,如下:

@Component
public class MyServiceTask implements JavaDelegate {
Expression username;
@Override
public void execute(DelegateExecution execution){
System.out.println("username.getExpressionText() = " + username.getExpressionText());
System.out.println("username.getValue(execution) = " + username.getValue(execution));
System.out.println("========MyServiceTask==========");
}
}

想要獲取到 username 對應的值,上面這段代碼中,松哥給大家演示了兩種方式。

不過需要注意,這種設置類中字段的方式,適用于 2.1 和 2.2 小節的情況,不適用于 2.3 小節的情況。

責任編輯:武曉燕 來源: 江南一點雨
相關推薦

2025-01-08 09:55:37

Spring接口數據庫

2012-07-17 09:16:16

SpringSSH

2022-10-09 18:16:01

Flowable設置ReceiveTas

2009-11-06 10:54:19

WCF服務方式

2020-11-01 17:10:46

異步事件開發前端

2022-10-25 15:25:22

網關并行Flowable

2010-03-12 17:52:35

Python輸入方式

2021-11-05 21:33:28

Redis數據高并發

2019-11-20 18:52:24

物聯網智能照明智能恒溫器

2021-06-24 08:52:19

單點登錄代碼前端

2014-12-31 17:42:47

LBSAndroid地圖

2024-09-20 05:49:04

SpringBoot后端

2023-10-18 11:12:01

增強現實VR

2011-06-03 11:53:06

Spring接口

2015-01-05 09:56:20

可穿戴設備

2009-07-20 15:08:41

Spring實例化Be

2013-06-17 17:08:47

Windows PhoWP開發共享數據方式

2022-08-19 11:19:49

單元測試Python

2024-07-08 09:03:31

2017-07-14 15:07:23

點贊
收藏

51CTO技術棧公眾號

国产精品一二三| 久久久久久久久蜜桃| caoporn国产精品| 欧美挠脚心视频网站| 欧美在线视频免费播放| 欧美xxxx免费虐| 久久久久久久网站| 996这里只有精品| 人成在线免费网站| 日本三级亚洲精品| 91搞黄在线观看| 亚洲一区二区三区四区在线播放| 成人免费淫片在线费观看| 国产精品传媒麻豆hd| 青青国产91久久久久久| 欧美一区视频在线| 99热在线网站| 国产欧美一区| 精品久久香蕉国产线看观看亚洲 | 激情av在线| 国产精品综合| 欧美一二三区在线| 亚洲日本无吗高清不卡| 丝袜老师在线| 久久er99精品| 久久艳片www.17c.com| 日本黄网站免费| 国产在线播放精品| 一区二区三区成人在线视频| 欧美在线亚洲在线| 亚洲tv在线| 一区二区三区四区亚洲| 亚洲一区亚洲二区| 精品欧美午夜寂寞影院| 五月天丁香久久| 免费观看黄色网| 午夜精彩国产免费不卡不顿大片| 91黄色免费看| 未来日记在线观看| 国产一区二区三区在线看麻豆| 久久天天躁狠狠躁老女人| 韩国主播福利视频一区二区三区| 久久精品亚洲麻豆av一区二区 | 高清欧美性猛交| julia京香一区二区三区| 亚洲国产成人一区二区三区| 国产精品视频一| 日本十八禁视频无遮挡| 美国十次av导航亚洲入口| 不卡毛片在线看| 日韩欧美久久| 色婷婷av一区| 国产精品一级伦理| 国产成人亚洲综合a∨猫咪| 九色91av视频| 国产综合在线观看| 毛片基地黄久久久久久天堂| 欧美乱妇高清无乱码| 视频一区视频二区欧美| 91精品国产91久久久久久| 国产理论电影在线观看| 色先锋久久av资源部| 中文字幕中文字幕在线中一区高清| 亚洲高清影院| 久久夜精品香蕉| 国产精品巨作av| 国产精品美女久久久久久免费| 成人aaaa| y97精品国产97久久久久久| 午夜成人影视| 欧美精品久久久久久久多人混战 | 欧美三级蜜桃2在线观看| 丁香花在线影院观看在线播放| 久久影视一区| 久久久91精品国产| 美女免费久久| 亚洲同性同志一二三专区| 亚洲欧洲日韩精品| 亚洲成av人片乱码色午夜| 亚洲美女www午夜| 户外极限露出调教在线视频| 欧美一区二区在线免费播放 | 亚洲一级影院| 隔壁老王国产在线精品| 色婷婷热久久| 欧美激情国产精品| 九九色在线视频| 欧美成人合集magnet| 人人澡人人添人人爽一区二区| 精品五月天久久| 高h视频在线| 亚洲人成网站777色婷婷| 成年人免费在线视频| 亚洲色图在线播放| 欧美三级黄网| 欧美日韩成人免费| 国产精品www994| 久久久久久免费精品| 亚洲成av人片乱码色午夜| 中文字幕一区二区三区最新| 国产精品成人免费| 国产一区二区视频免费在线观看| 亚洲狼人国产精品| 亚洲电影中文字幕在线观看| 精品噜噜噜噜久久久久久久久试看| 成人片在线播放| 久久久久久久久久久久久女国产乱| 夜夜嗨aⅴ免费视频| 日本一区二区三级电影在线观看| 亚洲韩国在线| 日韩美女视频一区二区| 日韩欧美在线播放视频| 懂色一区二区三区免费观看| 国产精品一区二区三区在线播放| 日本v片在线高清不卡在线观看| xxxxx中文字幕| 国产亚洲精品久久久久久牛牛| 丁香高清在线观看完整电影视频| 91国偷自产一区二区三区的观看方式| 久久久久一区| 日韩色妇久久av| 日韩电影免费在线观看网站| 国产精品成人观看视频免费| 亚洲视频碰碰| 另类小说色综合| 中文字幕字幕中文在线中不卡视频| caoporm免费视频在线| 亚洲第一网站男人都懂| 欧美xxxx做受欧美88bbw| 国产精品黄色av| 99久久夜色精品国产亚洲96| 17婷婷久久www| 国产福利不卡视频| 1区2区3区在线观看| 911精品国产一区二区在线| 欧美成人性生活视频| 国产成人在线一区二区| 欧美人妇做爰xxxⅹ性高电影| 激情小视频在线| 日产国产欧美视频一区精品| 国产日韩精品电影| 狠狠综合久久av一区二区蜜桃| 免费人成自慰网站| 国产精品丝袜91| 我看黄色一级片| 精品在线小视频| 免费在线欧美黄色| 91在线播放网站| 国产精品加勒比| 日韩精品91亚洲二区在线观看| 成年人在线播放| 久久久亚洲成人| 国产欧美日韩综合| 久久不射热爱视频精品| 中文字幕欧美日韩va免费视频| 伊人久久影院| 黄色成人91| 91人成在线| 欧美视频三区在线播放| 欧美精品一区二区久久| 久久精品中文字幕一区二区三区| 另类小说欧美激情| 高清全集视频免费在线| 99久久99久久| 国产精品123| 一区二区三区电影大全| 一区二区三区av| 日韩av综合网站| 欧美精品中文| 精品伦精品一区二区三区视频| 美女久久久精品| 国产亚av手机在线观看| 一区二区三区四区国产| 精品国精品国产| av动漫精品一区二区| 亚洲自拍av在线| 欧美在线一区二区三区| 日本h片久久| a级精品国产片在线观看| 国产欧美高清视频在线| 欧美成人二区| 国产网站av| 亚洲国产精品电影在线观看| 亚洲国产中文字幕在线观看| 日本成人在线一区| 伊人男人综合视频网| 亚洲第一中文字幕| 男人天堂成人网| 91.·福利| 国产毛片一区二区三区| 亚洲人成电影在线| 色姑娘综合av| 精品美女在线观看| 久久夜精品va视频免费观看| 久久99精品久久久久久三级 | 91成人性视频| 国产日韩欧美在线播放| 国产高潮免费视频| 在线xxxx| 久久gogo国模啪啪裸体|