當前位置:首頁 » 操作系統 » drools資料庫規則

drools資料庫規則

發布時間: 2022-09-06 10:43:53

1. drools 我這邊根據需求需要做到可以在web頁面隨意改動規則..我目前想到的辦法是通過java生成drl文件.

試試Drools Guvnor, http://www.jboss.org/drools/drools-guvnor.html

2. drools當一個目錄下有多個規則文件時

JBoss Drools的可視化規則設計工具包在Drools 4.0的時候叫drools-jbrms。
drools-jbrms需要JDK1.5或以上版本,本文以drools 4.0.7的drools-jbrms包在Tomcat 6.0下部署為例。

第1步
按照JBoss官方提供的文檔處理
刪除war包中的el-api.jar
刪除Tomcat的lib目錄下的jsf-api.jar和jsf-impl.jar(本來不存在就不用管了)
將下載後的jboss_jsf_libs.zip解壓到Tomcat的lib目錄下
第2步
啟動Tomcat。drools-jbrms會在Tomcat的bin目錄下新建repository目錄(包括很多子目錄),同時會報無法啟動的異常。異常信息為Caused by: javax.jcr.RepositoryException: internal error: failed to read custom node type definitions stored in custom_nodetypes.xml: Premature end of file.: Premature end of file.
(注意,這里我是在Tomcat/bin目錄下用startup.bat啟動的,如果不是這種方式repository的位置可能有所不同)

第3步
將本文提供的custom_nodetypes.xml覆蓋Tomcat下的bin/repository/repository/nodetypes的同名文件。

第4步
重新啟動

原因:drools-jbrms包含的某些功能在Tomcat下有問題,生成custom_nodetypes.xml時沒有生成文件內容,所以報錯。從網上查詢,最遲2007年就有人報這個問題了。看來JBoss的對於非JBoss應用伺服器的兼容問題考慮不多。

註:本文提供的custom_nodetypes.xml為drools-jbrms在JBoss應用伺服器部署時生成的,內容如下:
mix:referenceablent:hierarchyNodedrools:categoryNodeTypedrools:versionableNodeTypent:folderfalsedrools:versionableAssetFolderdrools:versionableNodeTypedrools:categoryNodeTypefalsemix:versionablent:folderdrools:versionableNodeTypemix:versionablent:hierarchyNodedrools:stateNodeTypemix:referenceablent:hierarchyNode

3. drools屬性能不能做成動態

能。
規則引擎Drools要做到動態生成規則,因為規則引擎的作用,一些多變的活動邏輯可以再不改變代碼,不重新部署系統,如需求改需求,一些通用但微變的邏輯,如人工智慧的機器學習,達到ai修改資料庫來微調自己的行為。
可以看到我們在沒有重啟服務的情況下,通過修改資料庫,和執行規則刷新,使新的優惠規則生效了,這就是Drools的動態載入策略,適用於規則頻繁多變的場景。

4. 規則引擎drools如何整合spring,drl文件一般放在什麼地方

drl文件可以持久化到資料庫中,然後寫個載入執行的引擎,這樣可以很靈活的結合實際業務。
先寫規則模板,採用velocity解析,通過規則解析後,生產規則文件,規則文件就是drools文件。
規則模板和規則文件統一持久化到資料庫中。

5. drools的規則實例到底指的是什麼

InfoQ發布了一個關於規則引擎的介紹Real-World Rule Engines,原文

ONJava上也有兩篇文章:

Give Your Business Logic a Framework with Drools

Using Drools in Your Enterprise Java Application

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

大多數web和企業Java應用可以分成三個部分:一個和用戶交互的前台, 一個和後台系統,例如資料庫交互的服務層,以及他們中間的業務邏輯。 現在使用框架構建前台和後台系統已經成為普遍共識(例如, Struts, Cocoon, Spring, Hibernate, JDO, 和 Entity Beans), 但卻沒有一個標準的方法來構建業務邏輯。一些框架,例如 EJB 和 Spring 只在一個高層實現業務邏輯,但對於我們組織邏輯代碼沒有任何幫助,所以,為什麼沒有一個框架來替換冗繁,易錯的if...then語句呢,這個框架應該和其它前台或後台框架一樣,易於配置,具有可讀性和重用性。下面我們將介紹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=""
xmlns:java=""
xmlns:xs
=""
xs:schemaLocation
=" rules.xsd
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這個標准改變了,那麼只要修改這個規則文件,而不用去修改源代碼了

6. 怎樣把drools規則存放到資料庫中

將xml文件按照數據結構進行分解放置到資料庫中,要使用該規則再從資料庫讀取。使用設計模式中組合方法來分解的。
具體代碼要有很多了,不過用遞歸也行,但是性能打點折扣。

7. drools 怎麼動態配置規則

JBoss Drools的可視化規則設計工具包在Drools 4.0的時候叫drools-jbrms。
drools-jbrms需要JDK1.5或以上版本,本文以drools 4.0.7的drools-jbrms包在Tomcat 6.0下部署為例。

第1步
按照JBoss官方提供的文檔處理
刪除war包中的el-api.jar
刪除Tomcat的lib目錄下的jsf-api.jar和jsf-impl.jar(本來不存在就不用管了)
將下載後的jboss_jsf_libs.zip解壓到Tomcat的lib目錄下
第2步
啟動Tomcat。drools-jbrms會在Tomcat的bin目錄下新建repository目錄(包括很多子目錄),同時會報無法啟動的異常。異常信息為Caused by: javax.jcr.RepositoryException: internal error: failed to read custom node type definitions stored in custom_nodetypes.xml: Premature end of file.: Premature end of file.
(注意,這里我是在Tomcat/bin目錄下用startup.bat啟動的,如果不是這種方式repository的位置可能有所不同)

第3步
將本文提供的custom_nodetypes.xml覆蓋Tomcat下的bin/repository/repository/nodetypes的同名文件。

第4步
重新啟動

原因:drools-jbrms包含的某些功能在Tomcat下有問題,生成custom_nodetypes.xml時沒有生成文件內容,所以報錯。從網上查詢,最遲2007年就有人報這個問題了。看來JBoss的對於非JBoss應用伺服器的兼容問題考慮不多。

8. 正在學習Drools規則引擎,一直出現空指針問題,想請教一下各位大神

而是在資料庫表中進行配置。因此我們常見的業務邏輯層的開發,並不能先設計出一個數據模型,然後再在此基礎上抽象邏輯。但我們確實解決了業務邏輯層的業務邏輯配置問題。應該說我們的更實用一些。但是我們卻沒法去實現JSR94標准。我們不光處理業務邏輯。
我們以JBoss的Drools為例,再打包成一個規則包,也提到了規則引擎。
在我們的印象中,我們感覺規則引擎就是解決業務邏輯層的實現問題的。因此我們理所當然的覺得工作流中的某個節點的邏輯處理,應該可以用規則引擎來解決。但是也使得規則引擎的應用得到了很大的限制。
首先這種抽象本身需要一個復雜的分析過程,這需要有很強的分析設計能力。另外我們平時具體應用中的業務邏輯層,大量的邏輯都是對實際數據的處理,很多時候還是一個批量數據的處理,甚至有些邏輯需要的參數我們並不能定義在規則中。
因此我們發現Drools等規則引擎很難用,根本不是我們所需要的那樣。有時候我們發現自己做的規則引擎並不是一個規則引擎。因為我們和像Drools這些規則引擎有很大的差別。
我們研究規則引擎也有一段時間了可能很多人還不了解規則引擎是什麼東西,或者不知道規則引擎究竟有什麼用。一個規則包相當於一個智能塊。首先需要將我們具體應用中的業務邏輯做抽象,抽象成一條條規則之後。
但是當我們在使用上述這些規則引擎,卻發現很難和我們實際應用的業務邏輯層的業務邏輯實現相對應。我們都知道工作流引擎,也聽說過JBoss下面有個Drools,或者我們知道 weblogic或者Oracle也有自己的Business Rule,我們可能還聽說過ILOG被IBM收購了,如果我們研究微軟的WWF。當數據傳遞給這個智能塊後,系統會以匹配的方式應用滿足條件的邏輯處理。
當採用這種方式時,應該說邏輯更抽象了,在一個更高的層次加以抽象化的定義,那麼工作流本身的邏輯也應該可以由規則引擎來解決,可能也知道其中有RuleSet等內容。國內的一些web快速開發平台,由於其規則引擎使用了匹配規則的方式來進行,因此在應用這些規則引擎時。另外我們也會覺得,平時項目當中的業務邏輯應該都可以用規則引擎來解決,還把所有業務邏輯層需要處理的操作全部採用規則配置的形式

熱點內容
在linuxpython 發布:2024-04-27 22:38:57 瀏覽:316
機頂盒密碼是在哪裡 發布:2024-04-27 22:32:47 瀏覽:157
名圖買哪個配置值得買 發布:2024-04-27 22:32:36 瀏覽:878
比亞迪秦pro選哪個配置好 發布:2024-04-27 22:32:34 瀏覽:533
logn演算法 發布:2024-04-27 21:58:36 瀏覽:596
11選五的簡單演算法 發布:2024-04-27 21:46:14 瀏覽:71
ebay圖片上傳 發布:2024-04-27 21:31:50 瀏覽:587
微信電腦登錄顯示伺服器錯誤 發布:2024-04-27 20:58:08 瀏覽:135
壓縮彈簧安裝 發布:2024-04-27 20:35:43 瀏覽:371
淘寶視頻無法上傳視頻 發布:2024-04-27 20:31:27 瀏覽:643