分支節點

​ 分支節點是URule Pro當中提供的一種可(kě)實現規則流多(duō)條并行(xíng)的節點,通(tōng)過這個(gè)節點,可(kě)以根據當前節點下流出連線數(shù)量,将當前規則流實現拆分成若幹條子的規則流實例并行(xíng)運行(xíng),根據這一特性,分支節點下至少(shǎo)要有(yǒu)兩條流出的連線才有(yǒu)意義。

​ 在決策流實例流轉到分支節點時(shí),分支節點會(huì)根據其下流出的連接線數(shù)量将主的實例拆分成與連線對應的若幹個(gè)子實例,以并行(xíng)方式繼續運行(xíng)産生(shēng)的多(duō)個(gè)流實例。

​ 分支節點出入連接線如下表所示:

流入的連接線數(shù)量 流出的連接線數(shù)量
1~n 1~n

​ 默認情況下,分支節點會(huì)将主流程拆分成若幹子流程執行(xíng),在實際執行(xíng)的時(shí)候還(hái)是在一個(gè)線程內(nèi)先後執行(xíng)各個(gè)分支。

​ 在分支節點上(shàng)有(yǒu)一個(gè)名為(wèi)“啓用多(duō)線程”的屬性,默認情況下,如果不設置該屬性,那(nà)麽它的值為(wèi)“系統默認”,這時(shí)将采用系統中定義的名為(wèi)urule.flowForkMultiThread參數(shù)的值,由這個(gè)參數(shù)值來(lái)決定當前分支下是否采用多(duō)線程運行(xíng), urule.flowForkMultiThread參數(shù)值默認為(wèi)false,也就是不開(kāi)啓多(duō)線程運行(xíng)。

​ 如果希望其下所有(yǒu)子分支以多(duō)線程形式并行(xíng),那(nà)麽可(kě)以選中當前分支節點,将其“啓用多(duō)線程”屬性設置為(wèi)“是”,或者将urule.flowForkMultiThread參數(shù)設置值為(wèi)true,這樣引擎在執行(xíng)到分支節點時(shí)會(huì)在不同的線程中執行(xíng)其下各個(gè)分支,這對于各個(gè)分支業務邏輯不相關的業務,同時(shí)各個(gè)分支執行(xíng)比較耗時(shí),通(tōng)過這樣的配置讓分支在不同線程裏執行(xíng),所以可(kě)以明(míng)顯提高(gāo)系統執行(xíng)性能。

​ 需要注意的是分支節點的“啓用多(duō)線程”屬性值為(wèi)“系統默認”時(shí)采用的是名為(wèi)urule.flowForkMultiThread參數(shù)的值,否則就會(huì)覆蓋這個(gè)全局參數(shù)的值,由當前分支節點自主決定是否開(kāi)啓多(duō)線程。

注意,當設置了參數(shù)urule.flowForkMultiThread=true 或配置了分支節點的“啓用多(duō)線程”屬性值為(wèi)“是”時(shí),分支節點下必須要添加一個(gè)聚合節點,将所有(yǒu)分支連接到聚合節點上(shàng),否則執行(xíng)會(huì)出現錯誤。

注意:一般情況下,我們不推薦啓用多(duō)線程,因為(wèi)多(duō)線程開(kāi)啓後需要處理(lǐ)很(hěn)多(duō)問題,無形中增加了運行(xíng)的複雜度,所以不推薦開(kāi)啓多(duō)線程。

results matching ""

    No results matching ""