欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

Java規則引擎-Drools

系統 2610 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條評論
主站蜘蛛池模板: 国产精品外围在线观看 | 亚洲激情小视频 | 天天操综合 | 毛片a片免费看 | 犬夜叉在线观看 | 国产亚洲精品久久无亚洲 | ppp42.com| 看中国毛片| 四虎网址| 国产成人一区二区三区久久久 | 浮力影院草草影院 | 国产浮力影院在线地址 | 亚洲一区二区三区高清 | 国产精品第三页在线看 | 91资源在线观看 | 午夜视频网 | 国产高清在线视频 | 欧美成视频无需播放器 | 一个色综合亚洲伊人久久 | 五月天激情视频 | 成人亚洲一区二区色情无码潘金莲 | 九九精品九九 | 精品区在线观看 | 欧美爽爽爽高清免费视频 | 久久精品国产一区二区电影 | 五月中文字幕 | 国产日产亚洲欧美综合另类 | 欧美日韩一区二区三在线 | 国产传媒在线播放 | 中文字幕成人 | 国产成人高潮免费观看精品 | 日韩成人在线播放 | 日本免费大片免费视频 | 成人免费激情视频 | 欧美精品成人 | 亚洲一区在线日韩在线深爱 | 99久久精品国产毛片 | 日本免费在线 | 亚洲美女亚洲精品久久久久 | 久操导航 | 草草久久久 |