5.8.動(dòng)態(tài)分支節(jié)點(diǎn)

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

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

集合類(lèi)型流程變量來(lái)源——實(shí)現(xiàn)類(lèi)Bean

字符串

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

寫(xiě)入分支的變量名

字符串

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

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


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

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






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

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)