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。