常量庫文(wén)件
在業務(wù)系統開發過程中(zhōng),常常會用(yòng)到一個枚舉數據,比如用(yòng)戶的性别、學(xué)曆等,在URule Pro當中(zhōng),通過定義常量庫文(wén)件,可(kě)以将系統中(zhōng)使用(yòng)的這些枚舉數據映射到規則中(zhōng)使用(yòng),這樣就可(kě)以避免規則定義過程中(zhōng)枚舉數據手工(gōng)輸入存在錯誤的可(kě)能(néng)性。
在“庫”節點上右鍵,創建一個常量庫文(wén)件,如下图所示:
與變量庫文(wén)件類似,常量也是由分(fēn)類和具(jù)體(tǐ)的常量值構成,比如性别有(yǒu)男女之分(fēn),那麽這裏的“性别”就屬性分(fēn)類,“男”、“女”就屬性具(jù)體(tǐ)的常量值。在常量的分(fēn)類中(zhōng),“名(míng)稱”一般定義具(jù)體(tǐ)的分(fēn)類名(míng),“标題”是一段描述(比如“性别”是标題,“gender”是名(míng)稱),同樣這個标題也會出現在規則引用(yòng)當中(zhōng);加好分(fēn)類後就可(kě)以添加這個分(fēn)類下具(jù)體(tǐ)的常量值,常量值也有(yǒu)名(míng)稱和标題之分(fēn),名(míng)稱是具(jù)體(tǐ)的常量值,标題則是描述,比如“男”是标題,"true"是名(míng)稱,同樣“女”是标題,“false”是名(míng)稱。
同樣,在一個常量庫文(wén)件中(zhōng)可(kě)以根據需要添加多(duō)個常量分(fēn)類。
常量定義時,其名(míng)稱值可(kě)使用(yòng)Spring中(zhōng)加載的properties文(wén)件值,具(jù)體(tǐ)使用(yòng)方法是将要引用(yòng)的properties的key值用(yòng)${...}包裹,這樣在具(jù)體(tǐ)規則運行時會動态查找這個包裹的屬性值作(zuò)為(wèi)具(jù)體(tǐ)的常量,如:${app.title}表示取spring中(zhōng)properties文(wén)件的名(míng)為(wèi)app.title的屬性值。利用(yòng)這一功能(néng),可(kě)實現測試環境與生産(chǎn)環境的動态切換。
常量類型 | 說明 |
---|---|
String | 字符串 |
Char | 單個字符,如果值設置的是字符串,隻會返回字符串的第一個字符 |
Integer | 整型 |
Long | 長(cháng)整型 |
Float | 單精(jīng)度浮點型,超出位數将被截取 |
Double | 雙精(jīng)度浮點型,超出位數将被截取 |
BigDecimal | 高精(jīng)度類型 |
Boolean | 布爾型,值設置參考Boolean.valueOf |
Date | 時間類型,輸入時間格式有(yǒu):yyyy-MM-dd HH:mm:ss、yyyy-MM-dd HH:mm、yyyy-MM-dd |
List | ArrayList集合,值的設置方式為(wèi): 基礎類型集合:s4,s1,s2,s3 複雜類型集合:[{"id":"4","name":"user4"},{"id":"1","name":"user1"}] |
Set | TreeSet集合,值的設置方式為(wèi): 基礎類型集合:s8,s5,s6,s7 複雜類型集合:[{"a1":"s8"},{"a1":"s5"},{"a1":"s6"},{"a1":"s7"}] |
Map | HashMap集合,值的設置方式為(wèi):JSON格式,比如:{"a":"1","b":"2","c":"3"} |
Enum | 任意值 |
Object | 任意值 |
常量庫維護的3種方式
手工(gōng)添加
如上述的操作(zuò)過程。
從Java枚舉類中(zhōng)直接導入
(1)常量庫文(wén)件在定義時支持從一個具(jù)體(tǐ)的Java枚舉類中(zhōng)直接導入,方法是在常量分(fēn)類上右鍵【根據類路徑生成常量】,在彈出的窗口中(zhōng)輸入完整的枚舉類路徑,如下图所示:
(2)在點擊【确定】按鈕後,即可(kě)實現将枚舉類裏的枚舉值導入到當前常量分(fēn)類之下,如下图所示:
(3)枚舉類代碼
在通過枚舉類導入具(jù)體(tǐ)常量時,如果枚舉類中(zhōng)未定義getLabel方法,那麽導入的枚舉信息則隻采用(yòng)其name屬性,如果定義了getLabel方法,那麽導入後的枚舉信息則包含name和label,包含getLabel方法的枚舉類示例如下所示:
package
public enum TestEnum {
aaa("張三"),bbb("李四");
private String label;
private TestEnum(String label) {
this.label=label;
}
public String getLabel() {
return label;
}
}
excel導入
(1)在excel中(zhōng)作(zuò)如下定義,注意sheet頁(yè)名(míng)稱是常量的分(fēn)類名(míng),表格列依次是名(míng)稱、标題、數據類型
(2)點擊“導入Excel”按鈕,選擇上述模闆文(wén)件,最後上傳即可(kě)