對預定義值的支持
預定義值功能是 v4.3.0+
版本新增的功能,主要為(wèi)了簡化規則編寫,支持局部參數(shù)的定義與使用,提升用戶編寫規則體(tǐ)驗。
使用說明(míng)
如果想在當前規則文件中定義一個(gè)局部參數(shù),可(kě)以在預定義值列表點擊 "+",添加預定義值。設置局部參數(shù)名稱、類型、以及值的來(lái)源。
預定義好的局部參數(shù)就可(kě)以在當前的規則文件中使用了。
- 類型:支持基礎類型和(hé)引入變量庫的複雜變量。
- 值的來(lái)源:支持輸入的靜态值、變量或變量屬性、參數(shù)、常量、方法、函數(shù)等。
- 源自(from): 指将值的來(lái)源的整個(gè)一個(gè)對象賦值給這個(gè)定義的局部參數(shù)
- 來(lái)自(in): 指值的來(lái)源設置的是一個(gè)集合,類似于循環規則塊指定循環集合的設置中的指定集合對象的功能,并且可(kě)以直接設置遍曆過濾條件。
- 預定義值列表中,前面預定義局部參數(shù),在後面的預定義中可(kě)以使用。可(kě)以通(tōng)過拖拽改變先後順序。
複雜對象的值獲取
對于複雜對象嵌套的情況,使用預定義值的方式獲取子對象值,将會(huì)變得(de)非常簡單。 定義一個(gè)子對象類型的局部參數(shù),值源自(from) 主對象的子對象屬性即可(kě)
集合循環遍曆以及多(duō)循環嵌套的使用
在 v4.3.0
以前的版本,循環遍曆一個(gè)集合隻能使用循環規則塊進行(xíng)遍曆集合,具體(tǐ)可(kě)以參照 設計(jì)器(qì)使用技(jì)巧一文中的使用遍曆集合說明(míng)
在 v4.3.0+
版本後,集合的循環遍曆可(kě)以通(tōng)過預定義值的功能實現。
- 當值為(wèi) 來(lái)自(in) 時(shí),需要指定一個(gè)集合對象,類似于循環規則塊指定循環集合的設置中的指定集合對象的功能。
- 當值為(wèi) 來(lái)自(in) 時(shí),指定的是一個(gè)變量庫定義的一個(gè)變量時(shí),類似于循環規則塊指定變量類型,将從當前工作(zuò)區(qū)中找到所有(yǒu)這種類型的變量并組裝成一個(gè)集合進行(xíng)遍曆。
- 預定義一個(gè) 來(lái)自(in) 的局部參數(shù),就相當于一個(gè)For循環體(tǐ),下面的預定義條目和(hé)規則都在這個(gè)循環當中。
上(shàng)圖的執行(xíng)邏輯如下:
類型[String] "一個(gè)拼接字符串" = "ANLIN" ; 類型[String] "拼接後員工姓名" = "用戶"."姓名" + "一個(gè)拼接字符串" ; 類型[用戶明(míng)細] "用戶的詳細信息" = "用戶"."詳細信息" ; For ("标簽" : "用戶的詳細信息"."标簽列表" ){ if ("标簽"."是否有(yǒu)效" == "有(yǒu)效"){ 類型[标簽] "标簽信息" = "标簽" ; 類型[String] "默認地址" = [Map]("标簽信息"."描述信息").get("有(yǒu)效") ; //執行(xíng)規則文件中的所有(yǒu)規則塊 //UA0001規則塊 if(...){ ... }else{ ... } //UA0002規則塊 if(...){ ... } } }
預定義列表中有(yǒu)多(duō)個(gè) 來(lái)自(in) 時(shí),就相當于多(duō)個(gè)For循環嵌套,這種将大(dà)大(dà)簡化循環嵌套的編寫過程。
For (item : List ){
For (...){
//執行(xíng)規則文件中的所有(yǒu)規則塊
}
}
預定義優先級
當規則文件中添加了預定義值條目的時(shí)候,預定義優先級就生(shēng)效了,把一個(gè)添加了預定義值的規則文件看成一個(gè)整體(tǐ),比如同一個(gè)知識包中的多(duō)個(gè)添加了預定義值的規則文件,會(huì)根據預定義設置優先級的大(dà)小(xiǎo),從高(gāo)到低(dī)執行(xíng)。