分(fēn)支節點
分(fēn)支節點是URule Pro當中(zhōng)提供的一種可(kě)實現規則流多(duō)條并行的節點,通過這個節點,可(kě)以根據當前節點下流出連線(xiàn)數量,将當前規則流實現拆分(fēn)成若幹條子的規則流實例并行運行,根據這一特性,分(fēn)支節點下至少要有(yǒu)兩條流出的連線(xiàn)才有(yǒu)意義。
在決策流實例流轉到分(fēn)支節點時,分(fēn)支節點會根據其下流出的連接線(xiàn)數量将主的實例拆分(fēn)成與連線(xiàn)對應的若幹個子實例,以并行方式繼續運行産(chǎn)生的多(duō)個流實例。
分(fēn)支節點出入連接線(xiàn)如下表所示:
流入的連接線(xiàn)數量 | 流出的連接線(xiàn)數量 |
---|---|
1~n | 1~n |
默認情況下,分(fēn)支節點會将主流程拆分(fēn)成若幹子流程執行,在實際執行的時候還是在一個線(xiàn)程内先後執行各個分(fēn)支。
在分(fēn)支節點上有(yǒu)一個名(míng)為(wèi)“啓用(yòng)多(duō)線(xiàn)程”的屬性,默認情況下,如果不設置該屬性,那麽它的值為(wèi)“系統默認”,這時将采用(yòng)系統中(zhōng)定義的名(míng)為(wèi)urule.flowForkMultiThread參數的值,由這個參數值來決定當前分(fēn)支下是否采用(yòng)多(duō)線(xiàn)程運行, urule.flowForkMultiThread參數值默認為(wèi)false,也就是不開啓多(duō)線(xiàn)程運行。
如果希望其下所有(yǒu)子分(fēn)支以多(duō)線(xiàn)程形式并行,那麽可(kě)以選中(zhōng)當前分(fēn)支節點,将其“啓用(yòng)多(duō)線(xiàn)程”屬性設置為(wèi)“是”,或者将urule.flowForkMultiThread參數設置值為(wèi)true,這樣引擎在執行到分(fēn)支節點時會在不同的線(xiàn)程中(zhōng)執行其下各個分(fēn)支,這對于各個分(fēn)支業務(wù)邏輯不相關的業務(wù),同時各個分(fēn)支執行比較耗時,通過這樣的配置讓分(fēn)支在不同線(xiàn)程裏執行,所以可(kě)以明顯提高系統執行性能(néng)。
需要注意的是分(fēn)支節點的“啓用(yòng)多(duō)線(xiàn)程”屬性值為(wèi)“系統默認”時采用(yòng)的是名(míng)為(wèi)urule.flowForkMultiThread參數的值,否則就會覆蓋這個全局參數的值,由當前分(fēn)支節點自主決定是否開啓多(duō)線(xiàn)程。
注意,當設置了參數urule.flowForkMultiThread=true 或配置了分(fēn)支節點的“啓用(yòng)多(duō)線(xiàn)程”屬性值為(wèi)“是”時,分(fēn)支節點下必須要添加一個聚合節點,将所有(yǒu)分(fēn)支連接到聚合節點上,否則執行會出現錯誤。
注意:一般情況下,我們不推薦啓用(yòng)多(duō)線(xiàn)程,因為(wèi)多(duō)線(xiàn)程開啓後需要處理(lǐ)很(hěn)多(duō)問題,無形中(zhōng)增加了運行的複雜度,所以不推薦開啓多(duō)線(xiàn)程。