logo资料库

规则引擎Ilog开发教程.pdf

第1页 / 共27页
第2页 / 共27页
第3页 / 共27页
第4页 / 共27页
第5页 / 共27页
第6页 / 共27页
第7页 / 共27页
第8页 / 共27页
资料共27页,剩余部分请下载后查看
规则引擎 Ilog Jrules 开发基础教程 平安科技系统开发十一部 石新 2012-07-12 1. 概述篇 规则引擎是一种嵌套在应用程序中的组件,它实现了将业务规则从应用程序代码中分离出来。规则引 擎使用特定的语法编写业务规则,规则引擎可以接受数据输入、解释业务规则、并根据业务规则做出相应 的决策。 通俗来说,规则引擎就是负责执行系统中规则的插件,亦可以作为一个远程系统供业务系统调用。 什么是规则:所有的业务逻辑都可以看做是规则。 引入规则引擎后带来的好处: 1 实现业务逻辑与业务规则的分离,实现业务规则的集中管理 2 可以动态修改业务规则,从而快速响应需求变更 3 使业务分析人员也可以参与编辑、维护系统的业务规则 4 使用规则引擎提供的规则编辑工具,使复杂的业务规则实现变得的简单 其实:参数化就是一种让客户自己维护系统的业务规则的方法。 目前最好的商用规则管理系统 BRMS 是 ILOG JRules,最普遍使用的开源规则引擎是 Drools。 Ilog Jrules 是完整的业务规则管理系统(BRMS),它提供了对整个企业业务规则进行建模、编写、测试、 部署和维护所必需的所有工具。 Ilog Jrules 主要包括以下 4 个组件: Rule Studio(RS): 基于 Eclipse 的开发环境,面向开发人员使用,用于规则的建模和编写。 Rule Scenario Manager: 规则测试工具。平安未购买,平安自己开发了一个“业务规则管理系统二代(BRMS2)”用于规则测 试 Rule Team Server(RTS): 基于 Web 的管理环境,面向业务人员使用,用于规则发布、管理、存储。 Rule Execution Server(RES): 面向运维人员使用,用于规则执行、监控。 1 / 27
软件获取位置:\\iqsz-d4540\share\toEveryone\JRules 7.x 2. 安装篇 本文安装 Rule Studio 版本为 7.1.1.3,7.1.1.3 是 7.1.1 的扩充版本,所以要先安装 7.1.1,再在 7.1.1 的安 装目录下再安装 7.1.1.3。7.1.1.2 是免费适用版本,试用期 90 天,想自学的同学可下载 7.1.1.2 版本适用。 安装顺序:(以下程序的安装需要申请管理员权限) 1、安装 Ilog JrulesV7.1.1 a、JRules_V711_CZLX7ML.exe 依次按提示选择路径,华丽地点击“下一步”即可。 b、JRules_V711_Doc_zh_CN_CZM12SC.exe(中文补丁,安装同上) 2 / 27
2、安装 Ilog JrulesV7.1.3【安装路径为 V7.1.1 版本的路径】 a、JRules7.1.1.3.exe 7.1.1.3 的安装路径要用 7.1.1 的安装路径,若已安装 7.1.1,除了盘符,程序会自动选择 WebSphereIlogJrules711。若没有安装 7.1.1,7.1.1.3 的安装过程将会报错。 b、zh_CN_Doc_7.1.1.3.exe(中文补丁,安装同上) 注意:中文补丁的安装在使用本教程时是必需的,因为这里的中文补丁并不只是对工具菜单的中文化,而 且也是对规则语法的中文化,如不安装补丁,语法与中文语法会有差异。因为有的时候规则是需要手工编 写,所以对英语不是那么自信的同学还是建议使用中文版。 3 / 27
未安装中文补丁: 已安装中文补丁: 安装好后,即可在开始菜单中打开 Rule Studio(zh_CN) 4 / 27
3. 开发篇 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; //性别 //年龄 5 / 27
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; 6 / 27
} } 代码 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; } 7 / 27
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; } } 8 / 27
分享到:
收藏