一個(gè)
rulebase
instance
是線(xiàn)程安全的,所有你可以在你的應(yīng)用中,讓一個(gè)
rulebase instance
在多個(gè)線(xiàn)程中共享。對(duì)于一個(gè)
rulebase
的最通常的操作是產(chǎn)生一個(gè)新的
WorkingMemory
。
這個(gè)
rulebase
保持著到它所產(chǎn)生的
WorkingMemoryd
的弱引用,所以在長(zhǎng)時(shí)間運(yùn)行的
WorkingMemory
中,如果
rules
發(fā)生改變,這些
WorkingMemory
可以即使的根據(jù)最新的
rules
進(jìn)行更新,而不必重啟
WorkingMemory
。你也可以指定
RuleBase
不必保持一個(gè)弱引用,但是你要保證
RuleBase
不用更新。
ruleBase.newWorkingMemory();??
//
?maintains?a?weak?reference.
ruleBase.newWorkingMemory(?
false
?);?
//
?do?not?maintain?a?weak?reference
任何時(shí)候,
Package
可以被加入或移除;所有的改變都會(huì)被反映到現(xiàn)存的
WorkingMemory
中。不要忘了調(diào)用
fireAllRules()
讓
Activations
激發(fā)。
ruleBase.addPackage(?pkg??);??
//
?Add?a?package?instance
ruleBase.removePackage(?
"
org.com.sample
"
??);??
//
?remove?a?package,?and?all?its?parts,
by?it's?namespace
ruleBase.removeRule(?
"
org.com.sample
"
,?
"
my?rule
"
?);?
//
?remove?a?specific?rule?from?a
namespace
雖然有刪除一個(gè)單獨(dú)規(guī)則的方法,但是卻沒(méi)有加入一個(gè)單獨(dú)規(guī)則的方法(要達(dá)到這個(gè)目的只有加入一個(gè)只有一條規(guī)則的
package
)。
RuleBaseConfigurator
可以指定
RuleBase
的附加行為。在加入
RuleBase
后,
RuleBaseConfiguration
就變成不可變對(duì)象。
RuleBaseConfiguration?conf?
=
?
new
?RuleBaseConfiguration();
conf.setProperty(?RuleBaseConfiguration.PROPERTY_ASSERT_BEHAVIOR,
??????????????????RuleBaseConfiguration.WM_BEHAVIOR_EQUALITY?);
RuleBase?ruleBase?
=
?
new
?ReteooRuleBase(?conf?);