AEAI ESB路由轉換機制說明

1. 背景概述

相信瞭解數通暢聯的人對AEAI ESB並不陌生,其設計器ESBDesigner中內置組件有:路由和轉換、數據適配器、協議適配器、協議接入適配器等4類組件,每類組件下面包含各類類型的組件節點,可使程序流程更直觀,加快開發速度。
路由和轉換中包含了三個節點分別爲:分支路由、合併路由和 java轉換,分支路由用於將一條線路分爲多個支路,合併路由爲將多條分支合併到一塊兒,java轉換節點能夠進行變量的數據轉換和賦值,而且在模型沒法知足要求時支持代碼擴展。本文檔詳細介紹一下路由和轉換的機制,但願能爲使用者提供幫助。
java

2. 預期讀者

  1. 數通暢聯內部技術人員
  2. 數通暢聯合做夥伴技術人員

3. 名詞解釋

  1. ESBEnterprise Service BUS企業服務總線,通常用做數據集成平臺、應用集成平臺。
  2. 分支路由:AEAI ESB 內置組件,用於將一條線路分爲多個支路
  3. 合併路由:AEAI ESB 內置組件,將多條分支合併到一塊兒
  4. java轉換:AEAI ESB 內置組件,能夠進行變量的數據轉換和賦值,而且在模型沒法知足要求時支持代碼擴展

4. 組件介紹

4.1 分支路由

選擇分支路由後只能夠在「基本信息」中進行配置,用於將一條線路分爲多個支路。多線程

  1. 別名:此處能夠填寫漢字,可使節點下方如今中文,便於更直觀的此節點用途。
  2. 控制類型:點擊下拉箭頭後能夠看到:and、xor、or三個可選項,and爲全部分支線路都會走,xor的判斷方式相似於if(){}else if(){}else{}的判斷方式,or的判斷方式相似於if( ){ }if( ){ }if( ){ }的判斷方式,xor和or的判斷走向須要與分支路由分出的線的基本信息配置進行配合使用,當點擊線時,線的基本信息以下所示:

  • 流轉類型:點擊流轉類型的下拉箭頭後會出現auto和condition選項,當對走向不須要作判斷時,便可選擇auto,當須要對走向作判斷時,能夠在條件表達式中添加判斷。
  • 條件表達式:當須要對走向進行判斷,流轉類型選爲condition時,須要在此添加判斷條件,此處只能夠填寫Boolean類型的變量表達式,點擊「選擇變量」進行選擇。

描述:能夠對此節點功能進行簡單描述,方便本身和他人之後查看。
注意:
併發

  1. 當控制類型爲and時,分支流程爲併發進行可是當分支流程爲數據插入且數據源選擇相同時系統會報錯。
  2. 當控制類型爲xor時流轉類型比爲condition且必定有判斷條件

4.2 合併路由

合併路由爲將多條分支合併到一塊兒,使用方法與分支路由基本相同,可參見「分支路由」的介紹。

匹配分支:經過匹配分支選擇當前的合併路由與哪一個分支路由相匹配。
注意:
學習

  1. 絕大部分的流程中分支路由與合併路由選擇的控制類型是相同的,可是當只有合併無分支時選擇的控制類型便不相同。
  2. 當控制類型爲「or」時須要選擇匹配的分支路由以下:

4.3 java轉換

能夠進行變量的數據轉換和賦值,而且在模型沒法知足要求時支持代碼擴展。

在類別選爲賦值時,支持DataBox賦值給DataSet、DataBag賦值給DataRow、DataRow賦值給DataRow、DataSet賦值給DataSet,若是都不知足要求能夠選擇自動與代碼賦值,點擊「Next」爲以下界面:
測試

  1. 來源變量 類型:爲上一步選擇賦值變量類型自動填寫的。
  2. 來源變量 表達式:此處經過點擊「選擇」按鈕來選擇來源變量。
  3. 目標變量 類型:若是目標變量已經存在可直接填下一個框,若是目標變量不存在,先點擊下拉箭頭選擇目標變量類型,而後點擊「建立」按鈕填寫變量名稱。
  4. 若是目標變量已存在,可點擊「選擇」按鈕進行選擇變量。
    擴展代碼:若是模板不知足實際條件時,可可選擇擴展代碼,進行寫代碼實現。在類別選爲轉換時,支持DataSet轉換爲數據表格,DataSet轉換爲基本圖表,DataSet轉換爲基本列表,若是都不知足要求能夠選擇自定義代碼模板轉換
  5. DataSet轉換爲數據表格:將DataSet中的數據轉換爲JSON數據,點擊「Next」爲以下界面:
  6. DataSet轉換爲基本圖表:將DataSet中的數據轉換爲XML數據,點擊「Next」爲以下界面:
  7. DataSet轉換爲基本列表:與 DataSet轉換爲基本圖表用法基本相同,將數據轉換爲列表圖形的XML格式自定義代碼模板轉換:若是模板不知足實際條件時,可選擇擴展代碼,進行寫代碼實現。

5. 樣例說明

5.1 多條件分支

分支路由到各分支的鏈接線是condition流轉類型的,均有條件表達式。經過設置控制類型爲xor(if(){}else if(){}else{}),達到不一樣的表達式結果限制流程的走向實現了分支路由的控制效果。
流程圖以下:

在HttpRequest節點添加入參condition
點擊分支路由節點設置控制類型爲xor(if(){}else if(){}else{})以下圖:

點擊分支路由節點與分支節點之間的連線,分別設置流轉類型爲condition,並點擊按鈕添加條件表達式。

在HttpResponse節點打印信息執行完成,請查看控制檯日誌

測試結果以下:
spa

5.2 多線程分支

流程圖中,全部鏈接線均爲auto流轉類型的,即沒有條件表達式。則全部流程都會走。
流程圖以下:

點擊分支路由節點設置控制類型爲and(全部流程都會走)以下圖:

點擊分支路由節點與分支節點之間的連線,分別設置流轉類型爲auto。

在HttpResponse節點打印信息執行完成,請查看控制檯日誌

測試結果以下:
線程

5.3 循環樣例

使用合併路由和分支路由的組件,配合鏈接線的條件表達式,實現循環操做。
流程圖以下:

在HttpRequest節點添加入參counter
建立全局變量以下:

初始化參數節點擴展代碼以下:

獲取HttpRequest傳遞的參數counter的值並存放在變量」counter」中
爲變量」index」賦初始值爲0
點擊循環合併節點配置以下:

循環體節點打印循環的次數擴展代碼以下:

點擊循環分支節點配置以下:

循環分支與循環合併之間的節點連線配置以下:

在HttpResponse節點打印了循環變量以下圖:

測試結果以下:
設計

6. 感悟與收穫

AEAI ESB主要用於集成各業務系統,實現異構系統的互聯互通,筆者自知自身的知識積累不足但至入職接觸AEAI ESB以來逐步學習進步,發現AEAI ESB不只實現了圖形化的交互方式,支持拖拽式建立Web服務、消息流程,便於快速構建,並且具備靈活的擴展性以及支持熱部署的模式而且能夠遠程調試能夠設置斷點、逐步調試,便於準確調試定位。調試

相關文章
相關標籤/搜索