服務編排設計器內節點說明
您可以調用依賴限界上下文中的應用服務方法、輕應用內您自定義的服務方法及系統內置的服務方法。節點名稱將默認為服務方法名稱,您需要在調用節點內對入參賦值,并為方法輸出綁定變量。
對應用服務方法調用的節點中,您還能通過綁定變量的方式獲取該服務調用返回值中的code、message信息。
服務編排節點 | 說明 |
調用 |
|
分支 | If用于為流程創建多個分支流程,在節點中,您可以自定義分支名稱,并通過表達式來定義分支條件,表達式的最終值類型需為Boolean。當不滿足任何分支條件時,系統將會執行默認分支。 添加后可在屬性面板上對每個分支進行設置,設置內容包括分支的條件、每個分支條件中通過組合一個或多個變量及條件運算符構成復雜條件編排。 |
循環 |
|
語句 |
|
異常 | 異常拋出:
|
自定義腳本
變量調用
自定義腳本支持調用變量,變量范圍包括:
服務編排內定義的流程變量。
服務編排內支持調用的靜態變量。
變量調用方式:$bw
作為Bizworks內置關鍵字,通過$bw.{變量名}
即可對Variable變量值進行讀取或修改。對于類型為結構對象的變量,支持通過$bw.{變量名}.{字段名}
的方式調用變量內部的字段。
# 基礎類型
// 修改
$bw.name="123"
//讀取
String nameLocal = $bw.name
# 結構對象
$bw.user.name ="123"
String nameLocal = $bw.user.name
當靜態變量和流程變量重名時,腳本中對變量的調用順序和服務編排中相同,優先調用流程變量。
變量調用的注意事項
無法在自定義腳本中修改靜態變量。例如:定義靜態變量為
name
,$bw.name=222
是非法的,引擎不會執行該語句。無法添加或修改尚未定義的變量。例如:
用戶未定義
age
變量,$bw.age=222
是非法的,引擎會跳過該語句的執行。用戶未定義
age
變量,String age =$bw.age
,該語句執行后變量age
的值為null
。
循環節點中定義的迭代變量支持被自定義腳本內調用。例如:循環節點中,迭代變量是可以被其中的腳本節點通過
$bw.
變量名方式使用。不支持使用函數類關鍵字作為變量名,若將變量名定義為關鍵字如
CollectionUtils
,通過$bw.CollectionUtils
語句返回的是函數類,并不會返回用戶自定義的變量值。腳本節點關鍵字如下:NumberUtils:數據計算函數類關鍵字。
LogicUtils: 邏輯計算關鍵字。
DateUtils : 時間函數。
CollectionUtils:集合函數。
用戶在腳本中使用的所有流程變量必須在前序節點中進行初始化(賦初值或對內部字段賦初值),否則為變量賦值后仍可能產生變量未賦值的報錯,或消費類型為結構對象的變量中的某個屬性時會出現空指針問題。當前引擎暫不會代替用戶完成結構對象的初始化操作。
BWEL函數調用
自定義腳本中支持調用服務編排內的BWEL函數,可使用$bw.函數類名.函數名(參數)
的對BWEL函數進行調用,具體函數名稱及入參設置參見BWEL函數說明。也支持在函數中寫Groovy表達式:
# 調用MAX函數,執行數學計算MAX函數
$bw.NumberUtils.MAX(1,2,3)
# 調用IF函數,執行復雜表達式
$bw.LogicUtils.IF(2+3>5,"22"+"444","44");
# 拋出異常,異常中包含code、message信息
$bw.ExceptionUtils.throwException([code:"400",message:"自定義異常拋出"]);
BWEL函數調用的注意事項
函數名稱需要區分大小寫。例如:使用MAX函數時寫作
max
,會導致引擎無法識別該函數。無法對函數類進行賦值操作。例如:
$bw.LogicUtils.name = "111"
,該語句無法生效。不支持使用函數類關鍵字作為變量名,若將變量名定義為關鍵字如CollectionUtils,通過
$bw.CollectionUtils
語句返回的是函數類,并不會返回用戶自定義的變量值。腳本節點關鍵字如下:NumberUtils:數據函數。
LogicUtils:邏輯函數。
StringUtils:文本函數。
DateUtils:時間函數。
CollectionUtils:集合函數。
ExceptionUtils:異常函數
Groovy使用約束
針對腳本運行時可能出現的安全風險,引擎對腳本允許引用的類做了一定的安全約束。
腳本節點中能夠直接使用的類如下:
"com.google.common.collect.*", "java.util.*", "java.util.stream.*", "java.util.regex.*", "java.util.function.*", "java.lang.Math.*", "org.apache.commons.lang3.StringUtils"
腳本節點中允許導入的類如下:
"java.lang.Object", "java.lang.String", "java.lang.Boolean", "java.lang.StringBuffer", "java.lang.StringBuilder", "java.lang.Byte", "java.lang.Float", "java.lang.Integer", "java.lang.Long", "java.lang.Math", "java.lang.Short"
除去上述支持的類型和包外,其他類或者包都不得引入,引入后會導致引擎拒絕執行,腳本編譯失敗。
從數據源批量創建服務方法
在服務編排頁面,單擊從數據源批量創建。
在從數據源批量創建服務方法面板的左側導航欄中,選中目標接口。
說明單次最多只能創建10個服務方法。
單擊保存。
系統自動創建服務方法包括以下內容:
服務方法入參:服務方法的入參和接口的請求參數保持一致,包括參數名稱、編碼、參數類型、描述和必填。
服務方法出參:服務方法的出參和接口的響應參數保持一致,包括參數類型和描述。
中間變量:如果應用服務方法有出參,則系統會自動創建一個中間變量,類型與出參相同。
流程節點:系統自動生成一個開始節點、一個調用服務方法節點和一個結束節點,調用服務方法節點調用所選的接口,節點名稱與應用服務方法名稱相同,服務方法的入參作為參數傳給接口,節點的出參賦值給中間變量。
結束節點:如果接口有響應參數,則系統會自動將
output
參數在結束節點賦值給服務方法的出參。
系統提示保存成功,您可以在服務方法頁面查看所創建的服務方法。