规则引擎Ilog Jrules开发基础教程-- 开发篇1

3.1 准备BOM

        在编写任何规则之前必须准备好规则中要用到的词汇,规则的词汇在业务对象模型中定义。业务对象模型 (BOM) 定义了规则工件中可使用的操作和实体。规则编写基于BOM,语法由IRL定义。BOM的定义又依赖于规则执行的XOM(物理对象模型eXecutable Object Model),XOM可以是java类、XMLWSDL。BOM是通过XOM映射定义的虚拟的规则实体。BOMXOM的映射不一定必需是一对一的映射,一个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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值