目前世面上中文的KIE DROOLS Workbench(JBOSS BRMS)的教程幾乎沒有,有的也只有靈靈碎碎的使用機器來翻譯的(翻的不知所雲)或者是基於老版本的JBOSS Guvnor即5.x的一些教程,而且這些教程都是”缺胳膊少腿“的,初學者看後不知道它到底在干嗎?能干嗎?能夠解決自己系統中什麼問題。
所以筆者自己寫了幾個例子,把整個最新的英文版的KIE DROOLS 6.3.0.Final的官方教程給串了起來,用於供讀者使用並以此來作為入門以及相關SOA理念的推廣的第一步。
本教程共分為”三“集。


規則是讓業務人士驅動整個企業過程的最佳實踐


對系統的使用人員
把業務策略(規則)的創建、修改和維護的權利交給業務經理提高業務靈活性加強業務處理的透明度,業務規則可以被管理減少對IT人員的依賴程度避免將來升級的風險對IT開發人員

免體檢累積最高限額表在規則引擎中的實現:








這個邏輯圖有點復雜,很多人看了都會感覺“不知所雲”,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理念的推廣的第一步。

這些環境,讀者應該自己會安裝了。
http://download.jboss.org/drools/release/6.3.0.Final/org.drools.updatesite/

把該項目原來使用的H2Dialect改成MySQL5Dialect
bitronix.tm.serverId=tomcat-btm-node0
bitronix.tm.journal.disk.logPart1Filename=${btm.root}/work/btm1.tlog
bitronix.tm.journal.disk.logPart2Filename=${btm.root}/work/btm2.tlog
bitronix.tm.resource.configuration=${btm.root}/conf/resources.properties
resource.ds1.className=bitronix.tm.resource.jdbc.lrc.LrcXADataSource resource.ds1.uniqueName=jdbc/jbpm resource.ds1.minPoolSize=10 resource.ds1.maxPoolSize=20 resource.ds1.driverProperties.driverClassName=com.mysql.jdbc.Driver resource.ds1.driverProperties.url=jdbc:mysql://192.168.0.101:3306/drools?useUnicode=true&characterEncoding=UTF-8 resource.ds1.driverProperties.user=kie resource.ds1.driverProperties.password=aaaaaa resource.ds1.allowLocalTransactions=true
增加如下內容:
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,輸入如下地址:http://192.168.0.101:8080/kie-drools即可看到kie-drools的主界面了
‘
可以看到,在KIE-DROOLS裡的project其實就是一個maven工程
這個Data Object就是因子
你可以在eclipse裡把這個POJO寫好後直接復制到KIE-DROOLS的Data Object編輯界面中去:
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;
}
}
不要忘了點”SAVE“按鈕。
規則內容如下:
package org.sky.threshholdrulz;
no-loop
rule "approval decision by manager"
when
m : PaymentInfo( moneyAmount>5000 );
then
modify (m) { setDecisionPath("GM") };
end
rule "approval decision by general manager"
when
m : PaymentInfo( moneyAmount<=5000 );
then
modify (m) { setDecisionPath("M") };
end