5.8.動態(tài)分支節(jié)點

2022-07-24 11:03 更新
動態(tài)分支節(jié)點與分支節(jié)點作用類似,都是用來將流經(jīng)的串行的流程實例拆分成若干并行的流程實例,但不同的是動態(tài)分支節(jié)點是動態(tài)的,也就是說它允許流程模版在運行時根據(jù)某些參數(shù)動態(tài)生成分支的數(shù)量,而不是像分支節(jié)點那樣,需要將流出的分支連線畫好,根據(jù)設(shè)計的流出連接來決定產(chǎn)生并行分支的數(shù)量。動態(tài)分支節(jié)點在工具欄上的圖標如下圖所示。 添加一個動態(tài)分支節(jié)點,在屬性窗口當(dāng)中可以看到它有一個專有的屬性窗口配置面簽,通過該頁簽中提供的配置功能,可以對當(dāng)前動態(tài)分支節(jié)點配置其特有的屬性,相關(guān)屬性說明如下表所示:
屬性名類型描述
集合類型流程變量來源——流程變量字符串

該屬性定義流程變量表達式運行時計算的值類型要求必須是集合類型(java.util.Collection類型或Object[]類型),這個運行時產(chǎn)生的集合類型的值內(nèi)部元素的數(shù)量,決定流程實例在流經(jīng)當(dāng)前節(jié)點時會產(chǎn)生多少條并行的分支流程實例,再配置后面的寫入分支的變量名屬性,將該集合中每個元素取出來,以“寫入分支的變量名”屬性定義的值作為變量名,寫入產(chǎn)生的各個分支當(dāng)中。

集合類型流程變量來源——實現(xiàn)類Bean

字符串

該屬性定義的是一個實現(xiàn)了com.bstek.uflo.process.handler.ForeachHandler接口配置在Spring當(dāng)中的bean的ID,這個配置在Spring中的Bean將在運行時調(diào)用其handle方法,可以看到該方法返回的同樣是一個集合類型的值(java.util.Collection類型),同樣這個運行時產(chǎn)生的集合類型的值內(nèi)部元素的數(shù)量,決定流程實例在流經(jīng)當(dāng)前節(jié)點時會產(chǎn)生多少條并行的分支流程實例,再配置后面的寫入分支的變量名屬性,將該集合中每個元素取出來,以“寫入分支的變量名”屬性定義的值作為變量名,寫入產(chǎn)生的各個分支當(dāng)中。

寫入分支的變量名

字符串

在通過“集合類型流程變量來源”產(chǎn)生一個集合類型的值后,引擎將會把該集合中的值拆分成與該集合大小相同量級,再產(chǎn)生與該集合大小數(shù)量相同的并行分支,每個分支都以流程變量形式寫入該集合對應(yīng)的一個元素的值,流程變量的名稱就是這里的屬性定義的值。
 

與分支節(jié)點不同的是,動態(tài)分支節(jié)點下產(chǎn)生的并行分支數(shù)量是由運行時產(chǎn)生的集合類型的值的集合的大小決定,所以動態(tài)分支節(jié)點下有且只會有一條流出的連線,動態(tài)產(chǎn)生的分支將會以這條唯一的分支為模版,動態(tài)產(chǎn)生運行時需要的各個并行分支。動態(tài)分支節(jié)點對于我們大多數(shù)人來說可能是UFLO當(dāng)中最為復(fù)雜的一個節(jié)點了,為了便于大家理解該節(jié)點,這里畫了張示意圖,用于說明動態(tài)分支節(jié)點作用,如下圖所示。


從上圖當(dāng)中可以看到,動態(tài)分支上產(chǎn)生的是一個字符串?dāng)?shù)組類型的集合變量,這個數(shù)組中有三個值,分別是“aaa”、“bbb”和"ccc",同時寫入分支的變量名又定義為"test",這樣在運行時,上圖中在動態(tài)分支與聚合兩節(jié)點之間將會產(chǎn)生三條并行的流程實例,在這三條并行流程實例中分別都有一個名為test的流程變量,這個名為test的流程變量的值在三個不同分支中分別是“aaa”、“bbb”和"ccc",運行時效果示意圖如下所示:

示意圖中向我們清楚的展示了動態(tài)產(chǎn)生的三個并行分支,且每個分支上都有一個名為test的流程變量,它們的值就是集合中三個元素的值。在動態(tài)分支節(jié)點上可添加的流入與流出連線數(shù)量如下表所示:






以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號