本文共 6880 字,大约阅读时间需要 22 分钟。
目前世面上中文的KIE DROOLS Workbench(JBOSS BRMS)的教程几乎没有,有的也只有灵灵碎碎的使用机器来翻译的(翻的不知所云)或者是基于老版本的JBOSS Guvnor即5.x的一些教程,而且这些教程都是”缺胳膊少腿“的,初学者看后不知道它到底在干吗?能干吗?能够解决自己系统中什么问题。
所以笔者自己写了几个例子,把整个最新的英文版的KIE DROOLS 6.3.0.Final的官方教程给串了起来,用于供读者使用并以此来作为入门以及相关SOA理念的推广的第一步。
本教程共分为”三“集。
规则是让业务人士驱动整个企业过程的最佳实践
对系统的使用人员
免体检累积最高限额表在规则引擎中的实现:
这个逻辑图有点复杂,很多人看了都会感觉“不知所云”,OK,不急!我们在后文中会来“回溯”它。
世面上成熟的规则引擎有很多,著名的如: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理念的推广的第一步。
这些环境,读者应该自己会安装了。
jboss-jacc-api_1.4_spec-1.0.3.Final.jar |
kie-tomcat-integration-6.3.0.Final.jar |
slf4j-log4j12-1.7.7.jar |
log4j-core-2.1.jar |
log4j-api-2.1.jar |
log4j-slf4j-impl-2.1.jar |
slf4j-api-1.7.7.jar |
javax.security.jacc-api-1.5-javadoc.jar |
btm-2.1.4.jar |
btm-tomcat55-lifecycle-2.1.4.jar |
jta-1.1.jar |
数据库驱动(mysql-connector-java-5.1.38.jar) |
http://download.jboss.org/drools/release/6.3.0.Final/org.drools.updatesite/
bitronix.tm.serverId=tomcat-btm-node0bitronix.tm.journal.disk.logPart1Filename=${btm.root}/work/btm1.tlogbitronix.tm.journal.disk.logPart2Filename=${btm.root}/work/btm2.tlogbitronix.tm.resource.configuration=${btm.root}/conf/resources.properties
resource.ds1.className=bitronix.tm.resource.jdbc.lrc.LrcXADataSourceresource.ds1.uniqueName=jdbc/jbpmresource.ds1.minPoolSize=10resource.ds1.maxPoolSize=20resource.ds1.driverProperties.driverClassName=com.mysql.jdbc.Driverresource.ds1.driverProperties.url=jdbc:mysql://192.168.0.101:3306/drools?useUnicode=true&characterEncoding=UTF-8resource.ds1.driverProperties.user=kieresource.ds1.driverProperties.password=aaaaaaresource.ds1.allowLocalTransactions=true
增加如下内容:
记得一定要在</host>上部加入
该用户用于访问drools kie
export CATALINA_HOME="/opt/tomcat1"export CATALINA_OPTS="-Dbtm.root=$CATALINA_HOME \ -Dbitronix.tm.configuration=$CATALINA_HOME/conf/btm-config.properties \ -Djbpm.tsr.jndi.lookup=java:comp/env/TransactionSynchronizationRegistry \ -Djava.security.auth.login.config=$CATALINA_HOME/webapps/kie-drools/WEB-INF/classes/login.config \ -Dorg.jboss.logging.provider=jdk"export JAVA_OPTS="-d64 -server -showversion -Xms1024m -Xmx1024m -XX:PermSize=256m -XX:MaxPermSize=256m -XX:CICompilerCount=8 -XX:+UseCompressedOops -XX:-DontCompileHugeMethods -Xss256k -XX:+AggressiveOpts -XX:+UseBiasedLocking -XX:MaxTenuringThreshold=31 -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:+UseFastAccessorMethods -Djava.awt.headless=true -XX:+UseCMSInitiatingOccupancyOnly -XX:+UseGCOverheadLimit -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:MaxGCPauseMillis=200 -Dorg.kie.demo=false"
打开一个IE,输入如下地址:即可看到kie-drools的主界面了
package org.sky.threshholdrulz;public class PaymentInfo implements java.io.Serializable {static final long serialVersionUID = 1L;public PaymentInfo() {}private int moneyAmount = 0;private String decisionPath = "";public void setMoneyAmount(int amount) {this.moneyAmount = amount;}public int getMoneyAmount() {return this.moneyAmount;}public void setDecisionPath(String path) {this.decisionPath = path;}public String getDecisionPath() {return this.decisionPath;}}
package org.sky.threshholdrulz;no-looprule "approval decision by general manager" when m : PaymentInfo( moneyAmount>5000 ); then modify (m) { setDecisionPath("GM") };endrule "approval decision by manager" when m : PaymentInfo( moneyAmount<=5000 ); then modify (m) { setDecisionPath("M") };end