LiteFlow v2.9.4釋出!一款能讓你係統支援熱更新,編排,指令碼編寫邏輯的國產規則引擎框架

鉑賽東發表於2022-12-01

前言

上海的天氣降溫讓人猝不及防,但是我們的迭代速度卻井然有序。

今天我們帶來了LiteFlow v2.9.4版本。

我們每次的釋出的issue有很大一部分依託於我們的使用者社群,社群人越來越多。我看到了使用者在使用過程中遇到的問題,也收集了很多使用過程中很有意思的建議。這些也正是我們每一次迭代的方向。謝謝那麼多的小夥伴的支援和建議,LiteFlow一直會是一個以社群為驅動的開源框架。

LiteFlow是一個開源編排式規則引擎,能夠讓你的系統邏輯任意編排,使用指令碼書寫邏輯,所有的邏輯和規則均可熱變更。設計系統和重構系統的神器。

如果你是第一次知道這個專案,可以去官網或相關的主頁進行了解:

專案官網:

https://liteflow.yomahub.com

gitee託管倉庫:

https://gitee.com/dromara/lit...

github託管倉庫:

https://github.com/dromara/li...

v2.9.4介紹

新版本我們依舊依託於社群,一共完成了14個issue。

其中80%的issue來自於社群使用者。

2.9.4版本完全相容2.9.3版本,可以無縫升級。

新的指令碼引擎

鑑於之前社群有人反應LiteFlow提供的Javascript指令碼引擎是基於jdk的,而JDK的Javascript引擎只支援到ES5規範,且不支援Java 17。

所以這次我們新增了一個Javascript引擎:GraalJs。支援ES6規範,且支援Java 8~17。

當然老的引擎我們還是保留,如果是簡單的js語法,你依舊可以用老的引擎。

關於這塊詳情請參考官網的選擇指令碼語言章節。

提供規則驗證介面

雖然LiteFlow在啟動時會去編譯所有的規則,如果有錯也會詳細報出,但是在更改指令碼前,使用者可能不太確信自己的規則寫的有沒有問題。所以在社群內,有人提出了希望增加一個驗證規則的介面。

那這次我們也提供了相應的介面。詳情請參考官網的驗證規則章節。

Zk和Etcd支援區域性重新整理機制

如果你使用zk或者Etcd,你在zk和etcd裡更改了規則,會自動推送到相應的應用進行無感自動重新整理。

但是之前的實現模式是全部重新整理,即不管你改了哪個規則,所有的規則重新整理一遍。雖然LiteFlow重新整理速度非常快速,但是這種實現模式還是不夠優雅。

這次我們實現了區域性重新整理,即你改變哪個即重新整理哪個。

宣告式元件的二次動態代理問題

在社群內,我們也收到了許多使用宣告式元件特性小夥伴們的反饋,在宣告式元件上使用類似事務標註等需要動態代理的特性時,LiteFlow的宣告式元件會報錯。

經過核驗,我們發現LiteFlow之前漏考慮了二次動態代理的問題,這次我們修復了。

其他修復

在新版本中,我們修復其他issue也有很多,包括指令碼對後設資料取值的bug,@ScriptBean標註所帶來的一些小問題,指令碼異常處理的最佳化等等。

完整更新列表

特性 #I61XYZ 額外提供GraalJs引擎,在js上多一個選擇

https://gitee.com/dromara/liteFlow/issues/I61XYZ

增強 #I63C31 zk,etcd支援只重新整理改變的部分

https://gitee.com/dromara/liteFlow/issues/I63C31

增強 #I61EMZ 增加一個驗證EL規則的api,供檢查之用

https://gitee.com/dromara/liteFlow/issues/I61EMZ

增強 #I633VH 建議FlowBus提供批次移除子鏈方法

https://gitee.com/dromara/liteFlow/issues/I633VH

增強 #I61RI0 希望可以開放對 QLExpress 的一些操作!

https://gitee.com/dromara/liteFlow/issues/I61RI0

增強 #I622I9 內部程式碼規範ChainName和ChainId問題

https://gitee.com/dromara/liteFlow/issues/I622I9

增強 #I61LYN 規範問題和 不必要的import 常量提取等

https://gitee.com/dromara/liteFlow/issues/I61LYN

修復 #I62PV3 宣告式元件如果把LiteflowMethod定義在父類中,不執行

https://gitee.com/dromara/liteFlow/issues/I62PV3

修復 #I62DT1 如果對上下文標註@ScriptBean,那麼指令碼和java中拿到的上下文並不是同一個上下文

https://gitee.com/dromara/liteFlow/issues/I62DT1

修復 #I61H49 指令碼異常希望可以丟擲到response

https://gitee.com/dromara/liteFlow/issues/I61H49

修復 #I631ZF groovy指令碼接入時,自定義異常丟擲後被元件失敗異常覆蓋

https://gitee.com/dromara/liteFlow/issues/I631ZF

修復 #I61HIO 方法級的元件宣告,然後在方法上打 Spring 的事務註解 @Transactional,會報錯

https://gitee.com/dromara/liteFlow/issues/I61HIO

修復 #I62CB8 指令碼與java互動取後設資料的問題

https://gitee.com/dromara/liteFlow/issues/I62CB8

修復 #I61UZ6 switch選擇元件使用標籤在同一元件時固定選到最後一個

https://gitee.com/dromara/liteFlow/issues/I61UZ6

社群

LiteFlow的社群是一個異常活躍的開源社群,這裡有許多的開源大佬,技術大牛,群內的小夥伴也很樂意幫你去回答問題。

如果你在使用和學習中有任何問題,可以透過以下方式進入社群進行提問:

https://liteflow.yomahub.com/...

相關文章