jboss规则引擎KIE Drools 6.3.0 Final 教程(1)
来源:互联网 发布:淘宝手机充值利润 编辑:程序博客网 时间:2024/05/29 06:40
前言
目前世面上中文的KIE DROOLS Workbench(JBOSS BRMS)的教程几乎没有,有的也只有灵灵碎碎的使用机器来翻译的(翻的不知所云)或者是基于老版本的JBOSS Guvnor即5.x的一些教程,而且这些教程都是”缺胳膊少腿“的,初学者看后不知道它到底在干吗?能干吗?能够解决自己系统中什么问题。
所以笔者自己写了几个例子,把整个最新的英文版的KIE DROOLS 6.3.0.Final的官方教程给串了起来,用于供读者使用并以此来作为入门以及相关SOA理念的推广的第一步。
本教程共分为”三“集。
什么是规则引擎
规则是让业务人士驱动整个企业过程的最佳实践
业务规则在实现上的矛盾
业务规则技术
引入业务规则技术的目的
对系统的使用人员
- 把业务策略(规则)的创建、修改和维护的权利交给业务经理
- 提高业务灵活性
- 加强业务处理的透明度,业务规则可以被管理
- 减少对IT人员的依赖程度
- 避免将来升级的风险
- 简化系统架构,优化应用
- 提高系统的可维护性和维护成本
- 方便系统的整合
- 减少编写“硬代码”业务规则的成本和风险
何为规则引擎
- 可以将一个或多个的事实映射到一个或多个规则上
- 接受数据输入,解释业务规则,并根据业务规则做出业务决策
一个简单的例子
从IT技术人员的角度看为什么使用规则引擎?
- 从应用逻辑和数据中将业务逻辑分离
- 简单! -规则有一个非常简单的结构
- 让业务用户开发和维护规则以降低成本
- 声明式编程
- 性能和可伸缩性
- 解决复杂的和复合的问题,其中有大量细粒度的规则和事实互动
DEMO-人寿新卓越变额万能寿险投保规则
DEMO-人寿新卓越变额万能寿险投保规则的IT实现
免体检累积最高限额表在规则引擎中的实现:
什么叫BRMS
什么是BRMS-考虑两个问题(IT管理者角度)
什么是BRMS-考虑两个问题(开发人员易用性角度)
BRMS-Business Rules Management System
一个优秀的BRMS应该具有的特点
BRMS中两个重要的概念:因子、公式
从业务的角度看因子与公式间的关系
从IT的角度看因子与公式间的关系
基于BRMS的系统逻辑架构
这个逻辑图有点复杂,很多人看了都会感觉“不知所云”,OK,不急!我们在后文中会来“回溯”它。
JBOSS Drools & Guvnor
世面上成熟的规则引擎有很多,著名的如:IBM 的iLog,pegga rulz(飞马),我们在这边要介绍的也是开源中最著名的jboss rulz。
Jboss Rulz最早是只有基于.drools的规则文件的一个内嵌式规则引擎,后来它发展成了“规则管理系统”即BRMS,它的BRMS被称为Guvnor。后来在JBOSS Guvnor5.x后它又改名叫"KIE Drools WorkBench“。
目前世面上中文的KIE DROOLS Workbench(JBOSS BRMS)的教程几乎没有,有的也只有灵灵碎碎的使用机器来翻译的(翻的不知所云)或者是基于老板的JBOSS Guvnor即5.x的一些教程,而且这些教程都是”缺胳膊少腿“的,初学者看后不知道它到底在干吗?能干吗?能够解决自己系统中什么问题。
所以笔者自己写了几个例子,把整个最新的英文版的KIE DROOLS 6.3.0.Final给串了起来,用于供读者使用并以此来作为入门SOA理念的推广的第一步。
Guvnor核心功能-最好的开源规则引擎
KIE Drools6.3.0.Final的安装与使用
准备安装文件与环境-环境
- CentOS 6
- mysql5.5.x or above
- apache-tomcat-7.0.67.zip(Tomcat7.0.4 or above)
这些环境,读者应该自己会安装了。
准备安装文件与环境-必须软件
- kie-drools-wb-6.3.0.Final-tomcat7.war
- drools-distribution-6.3.0.Final.zip
- 给Tomcat7的lib目录下用的jar文件,其中包括:
开始安装
1. 把下列文件全部copy至tomcat的lib目录下
2. 打开eclipse后按照Help->install new software输入以下地址
3. 把drools-distribution-6.3.0.Final.zip解压在当前目录
4. 把kie-drools-wb-6.3.0.Final-tomcat7.war解压在当前目录
5. 修改D:\tomcat7\webapps\kie-drools\WEB-INF\classes\META-INF目录下的persistence.xml文件
6. 在tomcat的conf目录下增加一个文件名为:btm-config.properties的文件
7. 在tomcat的conf目录下增加一个文件名为:resources.properties的文件
8. 在tomcat的conf目录下修改context.xml
9. 在tomcat的conf目录下修改server.xml
增加如下内容:
记得一定要在</host>上部加入
10. 在tomcat的conf目录下修改tomcat-users.xml
该用户用于访问drools kie
11. 在mysql中建立一个schema,名为drools
12. 修改tomcat目录bin下的catalina.sh文件
1. 此处我的tomcat是放在CentOS的/opt/tomcat1下的,因此我的CATALINA_HOME的设置要换成你的tomcat所在的路径
2. 参数 –Dorg.kie.demo=false的作用是在无互联网环境下去运行kie-drools时,如果不加此参数kie-drools会在每次运行时去GIT试图加载kie-drools的demo,如果你的服务器为虚拟机或者是无互联网环境时它会因为建立internet连接超时而抛出一个疑似memory leak的exception而导致整个war工程加载失败。
启动
打开一个IE,输入如下地址:http://192.168.0.101:8080/kie-drools即可看到kie-drools的主界面了
KIE的使用
新建一个Project
在project里新建一条规则
假设有一报销流程,需要经过部门经理审批后到财务,如果员工的报销经额大于5,000那么除部门经理需要审批外还要报总经理再审批。
这是一条业务规则,假设哪天总经理说“大于5,000就要我批,我太烦了,改成大于10,000块才需要我审核吧”,想一下我们传统的做法。
利用KIE-DROOLS书写规则-建立因子
该规则涉及到一个因子,money
按照上述思想,我们先建立因子
利用KIE-DROOLS书写规则-规则
利用KIE-DROOLS书写规则-测试规则
如果PaymentInfo因子中的paymentAmount>5000,那么PaymentInfo中的decisionPath返回就是字符串“GM”。
如果PaymentInfo因子中的paymentAmount<=5000,那么PaymentInfo中的decisionPath返回就是字符串“M”。
利用KIE-DROOLS书写规则-向导式的Test Scenario
利用KIE-DROOLS书写规则-给测试用例创建数据
利用KIE-DROOLS书写规则-运行测试
使用JAVA程序调用规则-规则存本地
结束本次教程
- jboss规则引擎KIE Drools 6.3.0 Final 教程(1)
- jboss规则引擎KIE Drools 6.3.0 Final 教程(1)
- jboss规则引擎KIE Drools 6.3.0 Final 教程(1)
- jboss规则引擎KIE Drools 6.3.0 Final 教程(2)
- jboss规则引擎KIE Drools 6.3.0 Final 教程(3)
- jboss规则引擎KIE Drools 6.3.0 Final 教程(2)
- jboss规则引擎KIE Drools 6.3.0 Final 教程(3)
- jboss规则引擎KIE Drools 6.3.0 Final 教程(2)
- jboss规则引擎KIE Drools 6.3.0 Final 教程(3)
- jboss规则引擎KIE Drools 6.3.0-高级讲授篇
- jboss规则引擎KIE Drools 6.3.0 3
- jboss规则引擎KIE Drools 6.3.0-集群篇
- jboss规则引擎KIE Drools 6.3.0-高级讲授篇
- jboss规则引擎KIE Drools 6.3.0-集群篇
- jboss规则引擎KIE Drools
- Jboss rules规则引擎 Drools 6.4.0 Final 教程(1)
- Jboss rules规则引擎 Drools 6.4.0 Final 教程(1)
- jboss规则引擎KIE Drools 2
- 51Nod 1693 水群(打表确定转移范围优化)
- [JAVA]①重绘JPanel面板,设置窗体背景图片
- 爬虫Beatshufu爬妹子图
- Java代理模式和kotlin代理模式
- 529. Minesweeper 扫雷游戏 DFS BFS
- jboss规则引擎KIE Drools 6.3.0 Final 教程(1)
- Centos升级Python 2.7并安装pip、ipython
- ios 真机测试的问题
- 为WPF和Silverlight的Grid添加边框线
- python 爬虫笔记1
- 请实现一个函数,将一个字符串中的空格替换成“%20”(Python实现)
- 89. Gray Code 观察规律
- [开发探索]知行合一
- Navicat远程连接服务器数据库