分佈式架構之 LiteFlow

一、LiteFlow 是什麼?

LiteFlow 是一個輕量且強大的國產規則引擎框架,可用於複雜的組件化業務的編排領域,獨有的 DSL 規則驅動整個複雜業務,並可實現平滑刷新熱部署,支持多種腳本語言規則的嵌入。幫助系統變得更加絲滑且靈活。

LiteFlow 官方網站:
https://liteflow.yomahub.com/

LiteFlow Github 源代碼:
https://github.com/dromara/liteflow/

LiteFlow Gitee 源代碼:
https://gitee.com/dromara/liteFlow

二、LiteFlow 的架構圖是怎樣的?

三、LiteFlow 有哪些特性?

四、LiteFlow 的設計原則是怎樣的?

LiteFlow 是基於工作臺模式進行設計的,何謂工作臺模式?

n 個工人按照一定順序圍着一張工作臺,按順序各自生產零件,生產的零件最終能組裝成一個機器,每個工人只需要完成自己手中零件的生產,而無需知道其他工人生產的內容。每一個工人生產所需要的資源都從工作臺上拿取,如果工作臺上有生產所必須的資源,則就進行生產,若是沒有,就等到有這個資源。每個工人所做好的零件,也都放在工作臺上。

這個模式有幾個好處:

每個工人無需和其他工人進行溝通。工人只需要關心自己的工作內容和工作臺上的資源。這樣就做到了每個工人之間的解耦和無差異性。
即便是工人之間調換位置,工人的工作內容和關心的資源沒有任何變化。這樣就保證了每個工人的穩定性。
如果是指派某個工人去其他的工作臺,工人的工作內容和需要的資源依舊沒有任何變化,這樣就做到了工人的可複用性。
因爲每個工人不需要和其他工人溝通,所以可以在生產任務進行時進行實時工位更改:替換,插入,撤掉一些工人,這樣生產任務也能實時的被更改。這樣就保證了整個生產任務的靈活性。
這個模式映射到 LiteFlow 框架裏,工人就是組件,工人坐的順序就是流程配置,工作臺就是上下文,資源就是參數,最終組裝的這個機器就是這個業務。正因爲有這些特性,所以 LiteFlow 能做到統一解耦的組件和靈活的裝配。

五、LiteFlow 適合哪些場景?

LiteFlow 適用於擁有複雜邏輯的業務,比如說價格引擎,下單流程等,這些業務往往都擁有很多步驟,這些步驟完全可以按照業務粒度拆分成一個個獨立的組件,進行裝配複用變更。使用 LiteFlow,你會得到一個靈活度高,擴展性很強的系統。因爲組件之間相互獨立,也可以避免改一處而動全身的這樣的風險。

六、LiteFlow 不適合哪些場景?

LiteFlow 自開源來,經常有一些小夥伴來問我,如何做角色任務之間的流轉,類似於審批流,A 審批完應該是 B 審批,然後再流轉到 C 角色。

注意:
LiteFlow 只做基於邏輯的流轉,而不做基於角色任務的流轉。如果你想做基於角色任務的流轉,推薦使用 flowable ,activiti 這 2 個框架。

七、YC-Framework 中如何使用 LiteFlow?

引入如下依賴:

<dependency>
    <groupId>com.yc.framework</groupId>
    <artifactId>yc-common-liteflow</artifactId>
</dependency>

如何使用可參考 LiteFlow 官方文檔:
https://liteflow.yomahub.com/pages/5816c5/

我在 yc-framework 中也曾寫過關於如何使用 liteflow 的示例,示例模塊位於 yc-example 下,名字叫 yc-example-liteflow。

yc-example-liteflow 地址如下:
https://github.com/developers-youcong/yc-framework/tree/main/yc-example/yc-example-liteflow

以上源代碼均已開源,開源不易,如果對你有幫助,不妨給個 star!!!

YC-Framework 官網:
https://framework.youcongtech.com/

YC-Framework Github 源代碼:
https://github.com/developers-youcong/yc-framework

YC-Framework Gitee 源代碼:
https://gitee.com/developers-youcong/yc-framework

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/vRtj1SSbAjVqTx0LB7rpcg