工作流引擎技術(shù)介紹-Flowable介紹
介紹目前開源工作流現(xiàn)狀 介紹flowable(當(dāng)前) 介紹BPMN2.0 比較flowable和activiti flowable不足及擴(kuò)展 Flowable技術(shù)細(xì)講
01
Flowable是什么?
?官方定義:Flowable是一個(gè)使用Java編寫的輕量級(jí)業(yè)務(wù)流程引擎。Flowable流程引擎可用于部署B(yǎng)PMN 2.0流程定義(用于定義流程的行業(yè)XML標(biāo)準(zhǔn)),
創(chuàng)建這些流程定義的流程實(shí)例,進(jìn)行查詢,訪問運(yùn)行中或歷史的流程實(shí)例與相關(guān)數(shù)據(jù)。
? 這里可知,它是用JAVA寫的輕量級(jí)業(yè)務(wù)流程,用BPMN 2.0描繪流程,提供了創(chuàng)建流程定義的流程實(shí)例,查詢,訪問運(yùn)行中或歷史的流程實(shí)例與相關(guān)數(shù)據(jù)的一套引擎服務(wù)。
?在官網(wǎng)的案例中,列舉了對(duì)客戶訂單生命周期管理、構(gòu)建貸款自動(dòng)化流程、銀行保險(xiǎn)數(shù)字化等參考方向。當(dāng)然更常見的例子,比如人事流程的入職、請(qǐng)假、工時(shí)填報(bào),物流訂單、倉庫儲(chǔ)存、生產(chǎn)線管理等等。
? 誠(chéng)然我們都可以用代碼實(shí)現(xiàn)所有流程控制,但選擇Flowable使用模型而不是代碼來描述解決方案的主要原因之一是,可以輕松共享對(duì)所描述內(nèi)容的理解,并且易于快速更改。以貸款申請(qǐng)流程為例虛擬個(gè)流程。虛擬貸款流程很簡(jiǎn)單:
發(fā)起人填寫基礎(chǔ)信息后會(huì)根據(jù)貸款額流轉(zhuǎn);
高于13W貸款額會(huì)額外需要查詢社會(huì)征信;
銀行征信與社會(huì)征信審核確認(rèn)后會(huì)流轉(zhuǎn)到貸款申請(qǐng)審核。

??? 這樣我們就用流程圖把貸款過程串聯(lián)起來了,如果需要我們甚至能處理查詢接口。而相應(yīng)節(jié)點(diǎn)需要處理的表單信息則可以由表單引擎渲染,也可以由業(yè)務(wù)代碼處理。

?進(jìn)一步,既然是貸款,必要的風(fēng)控是少不了的。風(fēng)險(xiǎn)評(píng)估、風(fēng)險(xiǎn)監(jiān)控、風(fēng)險(xiǎn)分析、策略產(chǎn)生、處罰處置、申訴核實(shí)等。決策中心是風(fēng)控平臺(tái)的大腦。繼而,我們就需要利用到規(guī)則引擎(決策引擎)。

??借用流程引擎,我們可以很輕松的描繪出流程,以及實(shí)現(xiàn)它,并很好的管理整個(gè)流程生命周期。 我們可以根據(jù)實(shí)際需求,不斷細(xì)化和完善流程。
tips:這里提前說明下吧,流程圖畫的簡(jiǎn)潔,那是因?yàn)槲覀儼殉坊亍Ⅰg回這些通用的操作,都隱藏在邏輯里了,業(yè)務(wù)界面按需調(diào)用接口即可。(遇到很多人,并不了解這塊,當(dāng)然所有操作都通過連線也有其合理性,這里只是說明并不是那些線條交錯(cuò)的,才顯得業(yè)務(wù)復(fù)雜,才顯得很牛逼。


02
Flowabl功能
??? flowable基于activiti6衍生出來的版本,flowable目前最新版本是v6.7.0,開發(fā)團(tuán)隊(duì)是從activiti中分裂出來的,修復(fù)了一眾activiti6的bug,并在其基礎(chǔ)上研發(fā)了DMN支持,BPEL支持等等,相對(duì)開源版,其商業(yè)版的功能會(huì)更強(qiáng)大。以flowable6.4.1版本為分水嶺,大力發(fā)展其商業(yè)版產(chǎn)品,開源版本維護(hù)不及時(shí),部分功能已經(jīng)不再開源版發(fā)布,比如表單生成器(表單引擎)、歷史數(shù)據(jù)同步至其他數(shù)據(jù)源、ES等。官方網(wǎng)站:https://flowable.com/open-source/
? 其實(shí)從歷史版本也能看出來,F(xiàn)lowable發(fā)展過來,已經(jīng)不單單關(guān)注流程引擎部分開發(fā),而是以流程引擎為基礎(chǔ),衍生到?jīng)Q策引擎、表單引擎、案例模型引擎等其他大功能模塊開發(fā)。個(gè)人認(rèn)為Flowable作者方向是非常對(duì)的。(文末有部分版本演進(jìn)說明)
快速體驗(yàn)原生設(shè)計(jì)器:
docker run -p8080:8080 flowable/flowable-ui訪問:http://localhost:8080/flowable-ui 賬號(hào):admin ?密碼:test

登錄進(jìn)去,可以看到4大模塊,在版本6.7中漢化已經(jīng)比較完善了。
1.任務(wù)應(yīng)用用來發(fā)起流程或者案例,及處理任務(wù)。

2.建模器顧名思義就是用來畫流程圖或者案例圖,建表單或者決策表及應(yīng)用的。
這里我們能看到Flowable原生核心五大部分。
業(yè)務(wù)流程引擎(BPMN)(Business Process Model and Notation)、
表單引擎(Form Engine)
案例模型引擎(CMMN)(Case Management Model and Notation)、
決策引擎(DMN)(Decision Model and Notation)
內(nèi)容引擎(Content Engines)

3.管理員應(yīng)用程序,就是用來以管理員視角管理流程或者案例任務(wù)的。

4.身份應(yīng)用程序,用來管理用戶體系,包括用戶信息、組信息和對(duì)應(yīng)權(quán)限信息。

官方博客也給出了一個(gè)不錯(cuò)的CMMN 案例:
案例描述索賠場(chǎng)景,有3個(gè)連續(xù)的階段:收到索賠,調(diào)查索賠,然后處理索賠。流轉(zhuǎn)這個(gè)例子可以把案例模型、流程模型、表單模型、決策表模型以及四大模塊都能夠熟悉一遍。



此外從6.5版本引入事件注冊(cè)表也是非常值得關(guān)注的。
Flowable 事件注冊(cè)表支持從任何來源接收和發(fā)送事件,并為 JMS、Kafka 和 RabbitMQ 提供開箱即用的支持。此外,可以通過 HTTP 接收事件。

03
Flowable版本歷史
版本5.22.0 ?
瞬態(tài)變量
原先所有變量都是?持久化的。這意味著變量和值存儲(chǔ)在數(shù)據(jù)存儲(chǔ)中,并保留歷史審計(jì)數(shù)據(jù)。瞬態(tài)變量則不必。瞬態(tài)變量只會(huì)存活到下一個(gè)“等待狀態(tài)”。
版本6.0.0.RC1?
分離身份功能?至IDM 引擎
支持非中斷事件子流程
分解模塊:Flowable Modeler(建模存儲(chǔ)、BPMN、表單、DMN 編輯器)、 Flowable IDM(可以使用 disableIdmEngine 屬性禁用)、Flowable Admin
引入docker
Hibernate邏輯改寫MyBatis?
版本6.0.0 - 版本6.0.1?
BPMN XML添加了?Flowable 命名空間的支持
DMN 引擎中的更多命中策略支持。
版本6.1.0 - 版本6.2.1
異步歷史,引入分組和壓縮
引入新的 DMN 決策表編輯器,引入審計(jì)歷史,?MVEL 表達(dá)式語言替換JUEL 表達(dá)式語言。
引入新的 CMMN 引擎,添加了 CMMN 編輯器,提供計(jì)時(shí)器支持、重復(fù)、DMN 和 HTTP 任務(wù)支持以及變量查詢支持。
表單構(gòu)建器和渲染器的幾個(gè)新增內(nèi)容
版本6.3.0
BPMN
動(dòng)態(tài)任務(wù)和子流程注入到正在運(yùn)行的流程實(shí)例中
支持基于事務(wù)生命周期的事件偵聽器
HTTP 任務(wù):支持暫時(shí)存儲(chǔ)響應(yīng)變量
多實(shí)例:在解析集合時(shí)支持 Iterable(例如 ArrayNode)
CMMN
REST API 支持所有 CMMN 服務(wù)和操作
支持異步服務(wù)任務(wù)
支持手動(dòng)激活規(guī)則和通過運(yùn)行時(shí)服務(wù)啟用/手動(dòng)啟動(dòng)計(jì)劃項(xiàng)
支持所需規(guī)則、支持自動(dòng)完成、支持完成中性
添加了腳本任務(wù)類型
支持用戶事件監(jiān)聽器
支持在 Admin 應(yīng)用程序中查看和管理 CMMN 日期
DMN
支持集合表達(dá)式,例如 IN 和 NOT IN
改進(jìn)了決策表編輯器的用戶體驗(yàn),可以更輕松地在特定規(guī)則中添加 JUEL 表達(dá)式
支持在 Admin 應(yīng)用程序中查看和管理決策執(zhí)行
版本6.3.1 - 版本6.4.0
CMMN 引擎添加了異步歷史支持。
添加scope屬性使作業(yè)服務(wù)更加通用,使可以不同作業(yè)類型運(yùn)行不同作業(yè)處理程序成為可能。
BPMN 引擎中添加了流程實(shí)例遷移的第一個(gè)版本
BPMN 和 CMMN 引擎添加了表達(dá)式支持(當(dāng)${customerNumber > 40} 之類的表達(dá)式中引用變量并且還沒有 customerNumber 變量時(shí),將引發(fā)異常,借助變量表達(dá)式${variables:getOrDefault(customerNumber, 0) > 0}可以更好的處理變量。)
支持 MongoDB 持久化
CMMN 引擎添加了計(jì)劃項(xiàng)生命周期偵聽器
支持Duration 變量
版本6.4.1
添加了一個(gè)新表act_hi_tsk_log來跟蹤用戶/人工任務(wù)發(fā)生的更改。(在任務(wù)的受讓人、所有者或例如到期日期發(fā)生變化時(shí)創(chuàng)建。默認(rèn)情況下,用戶/人工任務(wù)日志記錄是禁用的,enableHistoricTaskLogging 屬性可以啟用)
添加了一個(gè)新的運(yùn)行時(shí)和歷史實(shí)體鏈接表來存儲(chǔ)父實(shí)體和所有子實(shí)體之間的關(guān)系。
添加了運(yùn)行時(shí)活動(dòng)實(shí)例表
多租戶改進(jìn)支持在租戶內(nèi)查找流程、案例、表單和決策表定義
CMMN一系列更新
版本6.5.0
添加新的事件注冊(cè)引擎,提供在事件驅(qū)動(dòng)架構(gòu)中使用 Flowable 的功能,對(duì) JMS、Apache Kafka 和 RabbitMQ 提供開箱即用的支持。(BPMN 開始事件、邊界事件和可觸發(fā)的發(fā)送事件任務(wù)可以接收事件。在 CMMN 中,事件偵聽器支持接收事件并用于啟動(dòng)新的案例實(shí)例。)
添加了使用鎖來控制創(chuàng)建數(shù)據(jù)庫和在啟動(dòng)時(shí)執(zhí)行自動(dòng)部署,確保當(dāng)同時(shí)啟動(dòng)多個(gè)服務(wù)器/節(jié)點(diǎn)時(shí),創(chuàng)建數(shù)據(jù)庫模式和自動(dòng)部署 CMMN XML 和 BPMN XML 文件等只會(huì)同時(shí)發(fā)生在一個(gè)服務(wù)器/節(jié)點(diǎn)上。
添加了一個(gè)新的批處理服務(wù)以支持在一個(gè)批處理中執(zhí)行多個(gè)作業(yè),其中每個(gè)作業(yè)是一個(gè)批處理部分。Batch 服務(wù)的第一個(gè)用途是支持批處理流程實(shí)例遷移。
添加事件注冊(cè)表啟動(dòng)事件的支持,以使用傳入事件觸發(fā)啟動(dòng)流程實(shí)例,其他邊界事件、發(fā)送事件支持。
郵件任務(wù)得到了增強(qiáng),支持將內(nèi)容項(xiàng)作為附件發(fā)送。
CMMN和DMN相關(guān)增強(qiáng)。
版本6.6.0
BPMN
當(dāng)重試用完時(shí),歷史作業(yè)現(xiàn)在移動(dòng)到死信作業(yè)表。
添加了對(duì)事件注冊(cè)表支持的接收任務(wù)和中間捕獲事件的支持。
可以為信號(hào)事件定義輸入和輸出參數(shù)
屬于同一 Flowable 事務(wù)活動(dòng)實(shí)例添加事務(wù)順序值
CMMN
添加了對(duì)案例實(shí)例遷移的支持
Case 任務(wù)現(xiàn)在支持輸入和輸出參數(shù)映射。
DMN
DMN 引擎中添加了對(duì)決策服務(wù)和 DRD(決策需求圖)的支持。
版本6.7.0
實(shí)現(xiàn)了全局鎖定機(jī)制,支持在具有多個(gè) Flowable 引擎的設(shè)置中更好地使用異步執(zhí)行器。同時(shí)異步執(zhí)行器默認(rèn)配置已更改為默認(rèn)情況下每秒能夠處理更多作業(yè)。
添加對(duì)多實(shí)例變量聚合的支持。
添加了對(duì)案例重新激活的支持,支持將歷史和已完成的案例實(shí)例重新激活到正在運(yùn)行的案例實(shí)例。
添加了一個(gè)變量偵聽器,以允許 BPMN 和 CMMN 模型偵聽特定變量的更改并在模型中處理此觸發(fā)器。
添加對(duì)并行觸發(fā)的 CMMN 引擎中的重復(fù)信號(hào)和通用事件偵聽器的支持。
添加了對(duì) DMN 1.3 版本模型的支持。
添加 JUEL/后端表達(dá)式中對(duì)方法重載的支持。
CMMN 引擎添加了基本的 CMMN 模型驗(yàn)證,添加了基本的 CDI 支持。
改進(jìn)了運(yùn)行時(shí)和歷史流程以及案例實(shí)例查詢(包括變量)的分頁。
升級(jí)到 Spring Boot 2.5.4 和 Spring 5.3.9
