亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Java規則引擎-Drools

系統 2530 0

InfoQ發布了一個關于規則引擎的介紹Real-World Rule Engines,原文 http://www.infoq.com/articles/Rule-Engines ?

ONJava上也有兩篇文章:

Give Your Business Logic a Framework with Drools http://www.onjava.com/lpt/a/6093

Using Drools in Your Enterprise Java Application? http://www.onjava.com/lpt/a/6160

下面總結一下其中的精華:

大多數web和企業Java應用可以分成三個部分:一個和用戶交互的前臺, 一個和后臺系統,例如數據庫交互的服務層,以及他們中間的業務邏輯。 現在使用框架構建前臺和后臺系統已經成為普遍共識(例如, Struts, Cocoon, Spring, Hibernate, JDO, 和 Entity Beans), 但卻沒有一個標準的方法來構建業務邏輯。一些框架,例如 EJB 和 Spring 只在一個高層實現業務邏輯,但對于我們組織邏輯代碼沒有任何幫助,所以,為什么沒有一個框架來替換冗繁,易錯的if...then語句呢,這個框架應該和其它前臺或后臺框架一樣,易于配置,具有可讀性和重用性。下面我們將介紹Drools 規則引擎,這個來解決我們問題的框架。

Java規則引擎-Drools

下面是一個典型的Java業務邏輯的代碼

if ((user.isMemberOf(AdministratorGroup)
????? && user.isMemberOf(teleworkerGroup))
???? || user.isSuperUser(){
????????
???????? // more checks for specific cases
???????? if((expenseRequest.code().equals("B203")
?????????? ||(expenseRequest.code().equals("A903")
??????????????????????? &&(totalExpenses<200)
??????????????? &&(bossSignOff> totalExpenses))
?????????? &&(deptBudget.notExceeded)) {
?????????????? //issue payments
?????????? } else if {
?????????????? //check lots of other conditions
?????????? }
} else {
???? // even more business logic
}

這是大多數程序員寫業務邏輯的方法,但是有以下的問題:

  • 如果用戶有另一個選項,例如("C987") ,那么需要修改上面的代碼,當代碼很長的時候,修改代碼是難于維護的
  • 我們如何保證代碼的正確性,這個代碼只有程序員能夠看到,真正的使用者,業務人員無法看到這個代碼
  • 很多應用程序有相同的業務邏輯,如果某個業務改變了,如何保證其他業務邏輯的一致性
  • 業務邏輯能否不合java語言綁定?
  • 業務邏輯能否用其他的腳本語言。

Java下的規則引擎標準就是JSR94,它的實現主要有 Jess ? Jena ? Drools

Drools中,一個典型的業務邏輯的配置,如下

<?xml version="1.0"?>
<rule-set name="BusinessRulesSample"
? xmlns="http://drools.org/rules"
? xmlns:java="http://drools.org/semantics/java"
? xmlns:xs
??? ="http://www.w3.org/2001/XMLSchema-instance"
? xs:schemaLocation
??? ="http://drools.org/rules rules.xsd
? http://drools.org/semantics/java java.xsd">
? <!-- Import the Java Objects that we refer
????????????????????????? to in our rules -->???????
? <java:import>
??? java.lang.Object
? </java:import>
? <java:import>
??? java.lang.String
? </java:import>
? <java:import>
??? net.firstpartners.rp.StockOffer
? </java:import>
? <!-- A Java (Utility) function we reference
??? in our rules-->?
? <java:functions>
??? public void printStock(
????? net.firstpartners.rp.StockOffer stock)
??????? {
??????? System.out.println("Name:"
????????? +stock.getStockName()
????????? +" Price: "+stock.getStockPrice()????
????????? +" BUY:"
????????? +stock.getRecommendPurchase());
??????? }
? </java:functions>
<rule-set>
? <!-- Ensure stock price is not too high-->?????
? <rule name="Stock Price Low Enough">
??? <!-- Params to pass to business rule -->
??? <parameter identifier="stockOffer">
????? <class>StockOffer</class>
??? </parameter>
??? <!-- Conditions or 'Left Hand Side'
??????? (LHS) that must be met for
???????? business rule to fire -->
??? <!-- note markup -->
??? <java:condition>
????? stockOffer.getRecommendPurchase() == null
??? </java:condition>
??? <java:condition>
????? stockOffer.getStockPrice() < 100
??? </java:condition>
??? <!-- What happens when the business
????????????????????? rule is activated -->
??? <java:consequence>
??????? stockOffer.setRecommendPurchase(
????????????????????????????? StockOffer.YES);?
????????? printStock(stockOffer);
??? </java:consequence>
? </rule>
</rule-set>

一條規則就是rule-set中的rule,如果有很多規則,就要寫很多的rule。

上面規則的意思是判斷股票價格是否小于100,如果100這個標準改變了,那么只要修改這個規則文件,而不用去修改源代碼了

?

?



Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=815558


Java規則引擎-Drools


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 成人小视频免费 | 久久大香香蕉国产免费网vrr | 天天做夜夜爽 | 精品国产一区二区三区在线观看 | 国产成人综合一区人人 | 一区二区精品久久 | 五月婷婷之综合激情 | 国产成人无精品久久久 | 在线亚洲综合 | 韩国 欧美 日产 国产精品 | 九色综合久久综合欧美97 | 亚洲国产女人aaa毛片在线 | 久久经典 | 精品国产中文字幕 | 天天干天天干天天 | 日韩毛片最新看 | 国产成人精品2021欧美日韩 | 一级欧美日韩 | 日韩欧美精品综合一区二区三区 | 亚洲激情网址 | 欧美狠狠入鲁的视频极速 | 真实国语对白视频播放 | 日韩久久久精品中文字幕 | 色天天色综合 | 亚洲欧洲精品视频在线观看 | 离线枕边人国语在线影视 | 伊人伦理 | 91精品国产闺蜜国产在线 | 香蕉视频免费在线观看 | 国偷盗摄自产福利一区在线 | 亚洲综合精品成人啪啪 | 四虎精品在线视频 | 亚洲日日干 | 亚洲国产精品a一区 | 人人干在线观看 | 久久精品视频16 | 91在线免费视频观看 | 国产操比 | 中国毛片免费看 | 亚洲热热久久九九精品 | 中文字幕在线视频免费观看 |