1. 背景概述
相信了解數通暢聯的人對AEAI ESB并不陌生,其設計器ESBDesigner中内置元件有:路由和轉換、資料擴充卡、協定擴充卡、協定接入擴充卡等4類元件,每類元件下面包含各種類型的元件節點,可以使程式流程更直覺,加快開發速度。
路由和轉換中包含了三個節點分别為:分支路由、合并路由和 java轉換,分支路由用于将一條線路分為多個支路,合并路由為将多條分支合并到一起,java轉換節點可以進行變量的資料轉換和指派,并且在模型無法滿足要求時支援代碼擴充。本文檔詳細介紹一下路由和轉換的機制,希望能為使用者提供幫助。
2. 預期讀者
- 數通暢聯内部技術人員
- 數通暢聯合作夥伴技術人員
3. 名詞解釋
- ESB:Enterprise Service BUS企業服務總線,一般用作資料內建平台、應用內建平台。
- 分支路由:AEAI ESB 内置元件,用于将一條線路分為多個支路
- 合并路由:AEAI ESB 内置元件,将多條分支合并到一起
- java轉換:AEAI ESB 内置元件,可以進行變量的資料轉換和指派,并且在模型無法滿足要求時支援代碼擴充
4. 元件介紹
4.1 分支路由
選擇分支路由後隻可以在“基本資訊”中進行配置,用于将一條線路分為多個支路。
- 别名:此處可以填寫漢字,可以使節點下方現在中文,便于更直覺的此節點用途。
- 控制類型:點選下拉箭頭後可以看到:and、xor、or三個可選項,and為所有分支線路都會走,xor的判斷方式類似于if(){}else if(){}else{}的判斷方式,or的判斷方式類似于if( ){ }if( ){ }if( ){ }的判斷方式,xor和or的判斷走向需要與分支路由分出的線的基本資訊配置進行配合使用,當點選線時,線的基本資訊如下所示:
- 流轉類型:點選流轉類型的下拉箭頭後會出現auto和condition選項,當對走向不需要做判斷時,即可選擇auto,當需要對走向做判斷時,可以在條件表達式中添加判斷。
- 條件表達式:當需要對走向進行判斷,流轉類型選為condition時,需要在此添加判斷條件,此處隻可以填寫Boolean類型的變量表達式,點選“選擇變量”進行選擇。
描述:可以對此節點功能進行簡單描述,友善自己和他人以後檢視。
注意:
- 當控制類型為and時,分支流程為并發進行但是當分支流程為資料插入且資料源選擇相同時系統會報錯。
- 當控制類型為xor時流轉類型比為condition且一定有判斷條件
4.2 合并路由
合并路由為将多條分支合并到一起,使用方法與分支路由基本相同,可參見“分支路由”的介紹。
比對分支:通過比對分支選擇目前的合并路由與哪個分支路由相比對。
注意:
- 絕大部分的流程中分支路由與合并路由選擇的控制類型是相同的,但是當隻有合并沒有分支時選擇的控制類型便不相同。
- 當控制類型為“or”時需要選擇比對的分支路由如下:
4.3 java轉換
可以進行變量的資料轉換和指派,并且在模型無法滿足要求時支援代碼擴充。
在類别選為指派時,支援DataBox指派給DataSet、DataBag指派給DataRow、DataRow指派給DataRow、DataSet指派給DataSet,如果都不滿足要求可以選擇自動與代碼指派,點選“Next”為如下界面:
- 來源變量 類型:為上一步選擇指派變量類型自動填寫的。
- 來源變量 表達式:此處通過點選“選擇”按鈕來選擇來源變量。
- 目标變量 類型:如果目标變量已經存在可直接填下一個框,如果目标變量不存在,先點選下拉箭頭選擇目标變量類型,然後點選“建立”按鈕填寫變量名稱。
- 如果目标變量已存在,可點選“選擇”按鈕進行選擇變量。擴充代碼:如果模闆不滿足實際條件時,可可選擇擴充代碼,進行寫代碼實作。 在類别選為轉換時,支援DataSet轉換為資料表格,DataSet轉換為基本圖表,DataSet轉換為基本清單,如果都不滿足要求可以選擇自定義代碼模闆轉換。
- DataSet轉換為資料表格:将DataSet中的資料轉換為JSON資料,點選“Next”為如下界面:
- DataSet轉換為基本圖表:将DataSet中的資料轉換為XML資料,點選“Next”為如下界面:
- DataSet轉換為基本清單:與 DataSet轉換為基本圖表用法基本相同,将資料轉換為清單圖形的XML格式。自定義代碼模闆轉換:如果模闆不滿足實際條件時,可選擇擴充代碼,進行寫代碼實作。
5. 樣例說明
5.1 多條件分支
分支路由到各分支的連接配接線是condition流轉類型的,均有條件表達式。通過設定控制類型為xor(if(){}else if(){}else{}),達到不同的表達式結果限制流程的走向實作了分支路由的控制效果。
流程圖如下:
在HttpRequest節點添加入參condition
點選分支路由節點設定控制類型為xor(if(){}else if(){}else{})如下圖:
點選分支路由節點與分支節點之間的連線,分别設定流轉類型為condition,并點選
按鈕添加條件表達式。
在HttpResponse節點列印資訊執行完成,請檢視控制台日志
測試結果如下:
5.2 多線程分支
流程圖中,所有連接配接線均為auto流轉類型的,即沒有條件表達式。則所有流程都會走。
流程圖如下:
點選分支路由節點設定控制類型為and(所有流程都會走)如下圖:
點選分支路由節點與分支節點之間的連線,分别設定流轉類型為auto。
在HttpResponse節點列印資訊執行完成,請檢視控制台日志
測試結果如下:
5.3 循環樣例
使用合并路由和分支路由的元件,配合連接配接線的條件表達式,實作循環操作。
流程圖如下:
在HttpRequest節點添加入參counter
建立全局變量如下:
初始化參數節點擴充代碼如下:
擷取HttpRequest傳遞的參數counter的值并存放在變量”counter”中
為變量”index”賦初始值為0
點選循環合并節點配置如下:
循環體節點列印循環的次數擴充代碼如下:
點選循環分支節點配置如下:
循環分支與循環合并之間的節點連線配置如下:
在HttpResponse節點列印了循環變量如下圖:
測試結果如下: