3.1 準備BOM
在編寫任何規則之前必須準備好規則中要用到的詞彙,規則的詞彙在業務對象模型中定義。業務對象模型 (BOM) 定義了規則工件中可使用的操作和實體。規則編寫基於BOM,語法由IRL定義。BOM的定義又依賴於規則執行的XOM(物理對象模型eXecutable Object Model),XOM可以是java類、XML、WSDL。BOM是通過XOM映射定義的虛擬的規則實體。BOM與XOM的映射不一定必需是一對一的映射,一個BOM可以定義XOM中不存在的屬性,只要有明確的BOM屬性定義即可,但這樣的屬性只可以在規則內部使用。
規則:
如果
'Customer Info' 的 age 小於18
那麼
設置 'Customer Info' 的當前 result爲 “REJECT” ;
物理對象模型:
public class CustomerInfo implements Serializable{
/**
* @author SHIXIN747
*/
private static final long serialVersionUID = -580320839476217224L;
private String custName; //客戶姓名
private int age; //年齡
private String sex; //性別
private ApplicationInfo applicationInfo; //當前 申請
private List historyLoanList; //歷史貸款列表信息
private Date birthDay; //生日
private double verifiedIncome; //覈實收入
private boolean risk; //是否存在風險
private String rusult; //評估結果
setters and getters ……
}
3.1.1 準備XOM
操作過程就是在Rule Studio創建普通的Java類:
文件-->新建-->其他-->選擇Java項目-->下一步-->輸入項目名稱-->完成。
本教程中新建的XOM代碼如下:
注:若規則項目使用EJB調用,Java類需實現Serializable接口,並生成serialVersionUID。
代碼1:
package com.paic.cfs.application;
import java.io.Serializable;
public class ApplicationInfo implements Serializable{
/**
* @author SHIXIN747
*/
private static final long serialVersionUID = 3228480902812648982L;
private String statusCode;
private String followCode;
private String loanCode;
public String getStatusCode() {
return statusCode;
}
public void setStatusCode(String statusCode) {
this.statusCode = statusCode;
}
public String getFollowCode() {
return followCode;
}
public void setFollowCode(String followCode) {
this.followCode = followCode;
}
public String getLoanCode() {
return loanCode;
}
public void setLoanCode(String loanCode) {
this.loanCode = loanCode;
}
}
代碼2:
package com.paic.cfs.customer;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
import com.paic.cfs.application.ApplicationInfo;
public class CustomerInfo implements Serializable{
/**
* @author SHIXIN747
*/
private static final long serialVersionUID = -580320839476217224L;
private String flag; //規則調用標誌
private String custName; //客戶姓名
private int age; //年齡
private String sex; //性別
private ApplicationInfo applicationInfo; //當前 申請
private List historyLoanList; //歷史貸款列表信息
private Date birthDay; //生日
private double verifiedIncome; //覈實收入
private boolean risk; //是否存在風險
private String rusult; //評估結果
public String getFlag() {
return flag;
}
public void setFlag(String flag) {
this.flag = flag;
}
public String getCustName() {
return custName;
}
public void setCustName(String custName) {
this.custName = custName;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public ApplicationInfo getApplicationInfo() {
return applicationInfo;
}
public void setApplicationInfo(ApplicationInfo applicationInfo) {
this.applicationInfo = applicationInfo;
}
public List getHistoryLoanList() {
return historyLoanList;
}
public void setHistoryLoanList(List historyLoanList) {
this.historyLoanList = historyLoanList;
}
public Date getBirthDay() {
return birthDay;
}
public void setBirthDay(Date birthDay) {
this.birthDay = birthDay;
}
public double getVerifiedIncome() {
return verifiedIncome;
}
public void setVerifiedIncome(double verifiedIncome) {
this.verifiedIncome = verifiedIncome;
}
public boolean isRisk() {
return risk;
}
public void setRisk(boolean risk) {
this.risk = risk;
}
public String getRusult() {
return rusult;
}
public void setRusult(String rusult) {
this.rusult = rusult;
}
}
3.1.2 新建規則項目
操作過程:文件-->新建-->規則項目-->選擇標準規則項目-->輸入項目名(可以是中文)-->完成。同樣也可以導入現有項目到工作空間中。
新建的規則項目一般新建有4個文件夾,即“規則”、“bom”、“查詢”、“模板”。
在整個編輯器的下方有一個“規則項目圖”,整個規則項目的開發過程可以遵循圖中的流程操作,熟練之後也可直接在項目上操作。
3.1.3 導入XOM,建立關聯關係
操作過程:導入XOM-->選擇“Java執行對象模型”-->在“項目”標籤下勾選java項目-->確定。
若不是在同一個編輯器中創建的java項目,可以將java項目打成jar包導入規則項目。操作過程:導入XOM-->選擇“Java執行對象模型”-->在“庫”標籤下添加外部jar包-->確定。
3.1.4 創建BOM
操作過程:創建XOM-->輸入名稱,選擇“從XOM創建BOM條目” -->下一步-->瀏覽至已導入的XOM,選擇要映射成BOM的類-->下一步-->在用語言描述選項中勾選選擇要映射到BOM中方法-->完成。
這樣,就把XOM映射到了BOM中,如下圖所示:
雙擊BOM中的任意類下面的任意屬性,就會顯示BOM的編輯器,如下圖所示:
圖中的“導航”就是gertter方法 “操作”就是setter方法。
Rule Studio提供了一個專用的編輯器來編寫的BOM,默認映射過來的BOM屬性描述直接映射爲XOM屬性名,若屬性名存在大寫字母,則BOM屬性描述會加以空格分隔。Rule Studio支持把BOM的類和成員映射至業務用戶熟悉的術語和短語。
操作過程:編輯-->在“編輯術語”對話框中輸入業務用戶熟悉的術語或短語-->確定。
修改類的名字同樣如上操作。那麼書寫規則時就可以在規則中直接使用修改後的詞彙。如下:
如果
'客戶' 的 年齡 小於18
那麼
設置 '客戶' 的當前 審批結果 爲 “REJECT” ;
如果java類的屬性名字足夠好,那麼大可不必做任何修改直接使用。
3.2 定義參數
如果要在規則中使用已定義好的BOM,需要定義規則集參數。
操作過程:定義參數-->添加à輸入相應參數-->確定。語言描述就是在規則中顯示的句柄。
其中方向有“IN_OUT”,“IN”,“OUT”,表示參數的類型,意思和存儲過程中的參數類型差不多。
這樣,就可以在規則中使用已定義的BOM了,因爲ApplicationInfo是作爲CustomerInfo類中的屬性使用的,所以只定義了CustomerInfo。