81.2. 规则基础配置
Red Hat Process Automation Manager 包含一个 RuleBaseConfiguration.java 对象,可用于在决策引擎中配置异常处理程序设置、多线程执行和顺序模式。
对于规则基础配置选项,请从红帽客户门户网站下载 Red Hat Process Automation Manager 7.9.1 Source Distribution ZIP 文件,再进入到 ~/rhpam-7.9.1-sources/src/drools-$VERSION/drools-core/src/main/java/org/drools/core/RuleBaseConfiguration.java。https://access.redhat.com/jbossnetwork/restricted/listSoftware.html
以下规则基本配置选项可用于决策引擎:
- drools.consequenceExceptionHandler
配置后,此系统属性定义管理规则结果的异常的类。您可以使用此属性为决策引擎中的规则评估指定自定义异常处理程序。
默认值:
org.drools.core.runtime.rule.impl.DefaultConsequenceExceptionHandler您可以使用以下选项之一指定自定义异常处理程序:
在系统属性中指定异常处理程序:
drools.consequenceExceptionHandler=org.drools.core.runtime.rule.impl.MyCustomConsequenceExceptionHandler以编程方式创建 KIE 基础时指定异常处理程序:
KieServices ks = KieServices.Factory.get(); KieBaseConfiguration kieBaseConf = ks.newKieBaseConfiguration(); kieBaseConf.setOption(ConsequenceExceptionHandlerOption.get(MyCustomConsequenceExceptionHandler.class)); KieBase kieBase = kieContainer.newKieBase(kieBaseConf);
- drools.multithreadEvaluation
启用后,此系统属性可让决策引擎通过将 Phreak 规则网络划分为独立分区来并行评估规则。您可以使用此属性提高特定规则基础的规则评估速度。
默认值:
false您可以使用以下选项之一启用多线程评估:
启用多线程评估系统属性:
drools.multithreadEvaluation=true在以编程方式创建 KIE 基础时启用多线程评估:
KieServices ks = KieServices.Factory.get(); KieBaseConfiguration kieBaseConf = ks.newKieBaseConfiguration(); kieBaseConf.setOption(MultithreadEvaluationOption.YES); KieBase kieBase = kieContainer.newKieBase(kieBaseConf);
警告并行决策引擎目前不支持使用查询、风险或电缆组的规则。如果 KIE 基础中存在这些规则元素,编译器会发出警告并自动切回到单线程评估。然而,在某些情况下,决策引擎可能无法检测到不支持的规则元素和规则被错误地评估。例如,决策引擎可能无法检测规则何时依赖于 DRL 文件中的规则排序,从而导致因为不受支持的 salience 属性而产生错误的评估。
- drools.sequential
启用后,这个系统属性会在决策引擎中启用后续模式。在后续模式中,决策引擎会按照决策引擎人员中列出的顺序来一次评估规则,而无需考虑工作内存中的更改。这意味着,决策引擎会忽略规则中的任何
插入、修改或更新语句,并在单个序列中执行规则。因此,执行规则可能会更快,但重要的更新可能不适用于您的规则。如果您使用无状态 KIE 会话,并且您不希望执行规则来影响发票中的后续规则,您可以使用此属性。后续模式只适用于无状态 KIE 会话。默认值:
false您可以使用以下选项之一启用后续模式:
启用后续模式系统属性:
drools.sequential=true在以编程方式创建 KIE 基础时启用后续模式:
KieServices ks = KieServices.Factory.get(); KieBaseConfiguration kieBaseConf = ks.newKieBaseConfiguration(); kieBaseConf.setOption(SequentialOption.YES); KieBase kieBase = kieContainer.newKieBase(kieBaseConf);在 KIE 模块描述符文件(
kmodule.xml)中为特定 Red Hat Process Automation Manager 项目启用后续模式:<kmodule> ... <kbase name="KBase2" default="false" sequential="true" packages="org.domain.pkg2, org.domain.pkg3" includes="KBase1"> ... </kbase> ... </kmodule>