<drools:rule-base name="policyPricingRules">
<drools:rule-files>
<value>policyPricingRules.drl</value>
</drools:rule-files>
</drools:rule-base>
<drools:rule-base name="policyPricingRules">
<drools:rule-files>
<value>policyPricingRules.drl</value>
</drools:rule-files>
</drools:rule-base>
Copy to Clipboard
Copied!
Toggle word wrap
Toggle overflow
<drools:rule-base name="policyPricingRules" dsl-file="policyPricing.dsl">
<drools:rule-files>
<value>policyPricingRules.drl</value>
</drools:rule-files>
</drools:rule-base>
<drools:rule-base name="policyPricingRules" dsl-file="policyPricing.dsl">
<drools:rule-files>
<value>policyPricingRules.drl</value>
</drools:rule-files>
</drools:rule-base>
Copy to Clipboard
Copied!
Toggle word wrap
Toggle overflow
RuleBaseConfiguration でカスタムの結果例外ハンドラを登録する場合はそのハンドラを記述する必要があります。 次のサンプルで示します。
@Scope(ScopeType.APPLICATION)
@Startup
@Name("myConsequenceExceptionHandler")
public class MyConsequenceExceptionHandler
implements ConsequenceExceptionHandler, Externalizable {
public void readExternal(ObjectInput in) throws IOException,
ClassNotFoundException { }
public void writeExternal(ObjectOutput out) throws IOException { }
public void handleException(Activation activation,
WorkingMemory workingMemory,
Exception exception) {
throw new ConsequenceException( exception, activation.getRule() );
}
}
@Scope(ScopeType.APPLICATION)
@Startup
@Name("myConsequenceExceptionHandler")
public class MyConsequenceExceptionHandler
implements ConsequenceExceptionHandler, Externalizable {
public void readExternal(ObjectInput in) throws IOException,
ClassNotFoundException { }
public void writeExternal(ObjectOutput out) throws IOException { }
public void handleException(Activation activation,
WorkingMemory workingMemory,
Exception exception) {
throw new ConsequenceException( exception, activation.getRule() );
}
}
Copy to Clipboard
Copied!
Toggle word wrap
Toggle overflow
<drools:rule-base name="policyPricingRules"
dsl-file="policyPricing.dsl"
consequence-exception-handler=
"#{myConsequenceExceptionHandler}">
<drools:rule-files>
<value>policyPricingRules.drl</value>
</drools:rule-files>
</drools:rule-base>
<drools:rule-base name="policyPricingRules"
dsl-file="policyPricing.dsl"
consequence-exception-handler=
"#{myConsequenceExceptionHandler}">
<drools:rule-files>
<value>policyPricingRules.drl</value>
</drools:rule-files>
</drools:rule-base>
Copy to Clipboard
Copied!
Toggle word wrap
Toggle overflow
ほとんどのルール駆動型アプリケーションでは、 ルールは動的にデプロイ可能でなければなりません。 RuleBase の管理に Drools RuleAgent を使用すると便利です。 RuleAgent は Drools ルールサーバー (BRMS) またはローカルファイルレポジトリにあるホットデプロイルールのパッケージに接続することができます。 RulesAgent 管理の RuleBase も components.xml で設定が可能です。
<drools:rule-agent name="insuranceRules"
configurationFile="/WEB-INF/deployedrules.properties" />
<drools:rule-agent name="insuranceRules"
configurationFile="/WEB-INF/deployedrules.properties" />
Copy to Clipboard
Copied!
Toggle word wrap
Toggle overflow
プロパティファイルにはその RulesAgent に固有のプロパティが含まれます。 Drools サンプルディストリビューションからの設定ファイルの例を示します。
newInstance=true
url=http://localhost:8080/drools-jbrms/org.drools.brms.JBRMS/package/
org.acme.insurance/fmeyer
localCacheDir=/Users/fernandomeyer/projects/jbossrules/drools-examples/
drools-examples-brms/cache
poll=30
name=insuranceconfig
newInstance=true
url=http://localhost:8080/drools-jbrms/org.drools.brms.JBRMS/package/
org.acme.insurance/fmeyer
localCacheDir=/Users/fernandomeyer/projects/jbossrules/drools-examples/
drools-examples-brms/cache
poll=30
name=insuranceconfig
Copy to Clipboard
Copied!
Toggle word wrap
Toggle overflow
<drools:rule-agent name="insuranceRules"
url="http://localhost:8080/drools-jbrms/org.drools.brms.JBRMS/
package/org.acme.insurance/fmeyer"
local-cache-dir="/Users/fernandomeyer/projects/jbossrules/
drools-examples/drools-examples-brms/cache"
poll="30"
configuration-name="insuranceconfig" />
<drools:rule-agent name="insuranceRules"
url="http://localhost:8080/drools-jbrms/org.drools.brms.JBRMS/
package/org.acme.insurance/fmeyer"
local-cache-dir="/Users/fernandomeyer/projects/jbossrules/
drools-examples/drools-examples-brms/cache"
poll="30"
configuration-name="insuranceconfig" />
Copy to Clipboard
Copied!
Toggle word wrap
Toggle overflow
<drools:managed-working-memory name="policyPricingWorkingMemory"
auto-create="true" rule-base="#{policyPricingRules}"/>
<drools:managed-working-memory name="policyPricingWorkingMemory"
auto-create="true" rule-base="#{policyPricingRules}"/>
Copy to Clipboard
Copied!
Toggle word wrap
Toggle overflow
イベントリスナーを WorkingMemory に追加することで、ルール実行やアサートされるオブジェクトなど、ルールエンジンのイベントを通知する方法を追加することもできます。
<drools:managed-working-memory name="policyPricingWorkingMemory"
auto-create="true"
rule-base="#{policyPricingRules}">
<drools:event-listeners>
<value>org.drools.event.DebugWorkingMemoryEventListener</value>
<value>org.drools.event.DebugAgendaEventListener</value>
</drools:event-listeners>
</drools:managed-working-memory>
<drools:managed-working-memory name="policyPricingWorkingMemory"
auto-create="true"
rule-base="#{policyPricingRules}">
<drools:event-listeners>
<value>org.drools.event.DebugWorkingMemoryEventListener</value>
<value>org.drools.event.DebugAgendaEventListener</value>
</drools:event-listeners>
</drools:managed-working-memory>
Copy to Clipboard
Copied!
Toggle word wrap
Toggle overflow