摘要: 最近上一個(gè)項(xiàng)目想在Eclipse RCP中使用Spring,在網(wǎng)上Google了一下發(fā)現(xiàn)這方面的資料比較少,知道Spring自己有個(gè)Spring-OSGI的項(xiàng)目,可以在 Spring中配置OSGI服務(wù)。可是,我只是想在RCP中引入Spring來管理Java Bean,不想去研究那個(gè)東西。于是,看看有沒有什么簡單的方法來解決這個(gè)問題。
閱讀全文
摘要: The Law of Demeter和 Principle of Least Knowledge將的都是一回事,是說一個(gè)軟件實(shí)體要盡可能的只與和它最近的實(shí)體進(jìn)行通訊。通常被表述為:talk only to your immediate friends ( 只和離你最近的朋友進(jìn)行交互)。
閱讀全文
摘要: Rule 結(jié)構(gòu)是最重要的結(jié)構(gòu)。 Rule 使用了形如“ IF ” something “ THEN ” action (當(dāng)然,我們的關(guān)鍵字是“ when ”和“ then ”)的形式。
一個(gè)規(guī)則在一個(gè) package 中必須要有唯一的名字。如果一個(gè)名字中含有空格,那就需要將名字放在雙引號(hào)中(最好總是使用雙引號(hào))。
Attribute 是可選的(最好是每行只有一個(gè) Attribute )。
規(guī)則的 LHS 跟在“ when ”關(guān)鍵字的后面(最好是另起一行),同樣 RHS 要跟在“ then ”關(guān)鍵字后面(最好也另起一行)。規(guī)則以關(guān)鍵字“ end ”結(jié)束。規(guī)則不能嵌套。
閱讀全文
摘要: Drools 3 采用了原生的規(guī)則語言,那是一種非 XML 文本格式。在符號(hào)方面,這種格式是非常輕量的,并且通過“ expanders ”支持符合你問題域的 Domain Specific Language ( DSL )。這一章把焦點(diǎn)放在了 Drools 原生的規(guī)則格式。如果你想從技術(shù)上了解規(guī)則語言的機(jī)制,可以參考“ drl.g ”源文件,這是用 Antlr3 語法來描述規(guī)則語言。如果你使用 Rule Workbench ,內(nèi)容助手將會(huì)為你完成大量的規(guī)則結(jié)構(gòu),例如輸入“ ru ”,然后按 ctrl + space ,會(huì)為你建立規(guī)則結(jié)構(gòu)。
閱讀全文
下載地址:
http://labs.jboss.com/portal/index.html?ctrl:id=page.default.downloads&project=jbossrules
下載文件說明:
JBoss Rules 3.0.1 Binaries (includes
javadocs)
(?13MB
)―
僅僅包含
JBoss Rules
的四個(gè)核心類庫:
l????????
drools-core.jar
-
核心引擎,運(yùn)行時(shí)組件。包含了
RETE
引擎和
LEAPS
引擎;
l????????
drools-compiler.jar
-
規(guī)則文件的編譯組件,構(gòu)建可執(zhí)行的
RuleBase
;
l????????
drools-jsr94.jar
-
提供了
JSR-94
的兼容實(shí)現(xiàn),本質(zhì)上是
drools-
compiler
組件的包裹層。注意:由于
JSR94
規(guī)約的限制,不是所有的特點(diǎn)都可以通過此接口暴露。
l????????
drools-decisiontables.jar
-
決策表的“編譯”組件(使用了
drools- compiler
組件)。支持
excel
和
CSV
輸入格式。
JBoss Rules 3.0.1 Binaries with
dependencies (includes javadocs)
( 23 MB
)-
包含了
JBoss Rules
的核心類庫和它們的
dependencies
:
l????????
antlr-2.7.6.jar
l????????
antlr-3.0ea8.jar
l????????
colt-1.2.0.jar
l????????
commons-collections-3.1.jar
l????????
commons-io-1.1.jar
l????????
commons-jci-core-1.0-406301.jar
l????????
commons-jci-eclipse-3.2.0.666.jar
l????????
commons-jci-janino-2.4.3.jar
l????????
commons-lang-2.1.jar
l????????
commons-logging-api-1.0.4.jar
l????????
concurrent-1.3.4.jar
l????????
core-3.2.0.666.jar
l????????
janino-2.4.3.jar
l????????
jsr94-1.1.jar
l????????
jung-1.7.2.jar
l????????
junit-3.8.1.jar
l????????
poi-2.5.1-final-20040804.jar
l????????
stringtemplate-2.3b6.jar
l????????
xercesImpl-2.6.2.jar
l????????
xml-apis-1.0.b2.jar
l????????
xpp3-1.1.3.4.0.jar
l????????
xstream-1.1.3.jar
如果你運(yùn)行在
Java 1.5
環(huán)境下,有一些類庫,例如
XML libraries
,可以不需要。需要注意的類庫有:
“
JCI
”-這是
Apache Java Compiler Interface ,
提供了運(yùn)行時(shí)編譯能力。可以通過
PackageBuilderConfiguration
實(shí)例來設(shè)定采用
eclipse
或
janino
編譯器,默認(rèn)是
eclipse
;
“
POI
”-提供了解析
Excel
文件的能力;
“
antlr
”-提供了解析規(guī)則語言的能力。
JBoss Rules IDE 3.0.1
(
13 MB
)-
這是
JBoss Rules
的
Eclipse
插件,只支持
Eclipse 3.2
或以上版本。它提供了運(yùn)行
JBoss Rules
的所有
dependencies
。你可以創(chuàng)建一個(gè)
Rule Project
,它能夠?yàn)槟憔帉懸?guī)則文件提供自動(dòng)完成的功能,并且它為你提供了
Agenda view
,
WorkingMemory view
,
Global Data view
,使你可以通過
eclipse
視圖很清楚的看到
Agenda
,
WorkingMemory
和
Global Data
的情況。
你還可以通過
update
site
來自動(dòng)安裝這個(gè)插件
,URL
是:
http://anonsvn.labs.jboss.com/labs/jbossrules/updates/drools-ide-update/
?
摘要: WorkingMemory 是運(yùn)行時(shí)規(guī)則引擎的主要類。它保持了所有被 asserted 進(jìn) WorkingMemory 的數(shù)據(jù)的引用,直到取消( retracted )。 WorkingMemory 是有狀態(tài)對象。它們的生命周期可長可短。如果從一個(gè)短生命周期的角度來同一個(gè)引擎進(jìn)行交互,意味著你可以使用 RuleBase 對象來為每個(gè) session 產(chǎn)生一個(gè)新的 WorkingMemory ,然后在結(jié)束 session 后 discard 這個(gè) WorkingMemory (產(chǎn)生一個(gè) WorkingMemory 是一個(gè)廉價(jià)的操作)。另一種形式,就是在一個(gè)相當(dāng)長的時(shí)間中(例如一個(gè) conversation ),保持一個(gè) WorkingMemory ,并且對于新的 facts 保持持續(xù)的更新。當(dāng)你希望 dispose 一個(gè) WorkingMemory 的時(shí)候,最好的實(shí)踐就是調(diào)用 dispose() 方法,此時(shí) RuleBase 中對它的引用將會(huì)被移除(盡管這是一個(gè)弱引用)。不管怎樣最后它將會(huì)被當(dāng)成垃圾收集掉。術(shù)語
閱讀全文
摘要: Drools 分為兩個(gè)主要部分:構(gòu)建( Authoring )和運(yùn)行時(shí)( Runtime )。
構(gòu)建的過程涉及到 .drl 或 .xml 規(guī)則文件的創(chuàng)建,它們被讀入一個(gè)解析器,使用 ANTLR 3 語法進(jìn)行解析。解析器對語法進(jìn)行正確性的檢查,然后產(chǎn)生一種中間結(jié)構(gòu)“ descr ”, descr 用 AST 來描述規(guī)則。 AST 然后被傳到 PackageBuilder ,由 PackagBuilder 來產(chǎn)生 Packaged 對象。 PackageBuilder 還承擔(dān)著一些代碼產(chǎn)生和編譯的工作,這些對于產(chǎn)生 Package 對象都時(shí)必需的。 Package 對象是一個(gè)可以配置的,可序列化的,由一個(gè)或多個(gè)規(guī)則組成的對象。
閱讀全文
摘要: 在JBoss Rules 學(xué)習(xí)(一):什么是Rule中,我們介紹了JBoss Rules中對Rule的表示,其中提到了JBoss Rule中主要采用的RETE算法來進(jìn)行規(guī)則匹配。下面將詳細(xì)的介紹一下RETE算法在JBoss Rule中的實(shí)現(xiàn),最后隨便提一下JBoss Rules中也可以使用的另一種規(guī)則匹配算法Leaps。
閱讀全文