84.2. 规则基础配置
Red Hat Decision Manager 包含一个 RuleBaseConfiguration.java
对象,您可以在决策引擎中配置异常处理程序设置、多线程执行和顺序模式。
对于规则基础配置选项,请从红帽客户门户网站下载 Red Hat Process Automation Manager 7.13.2 Source Distribution ZIP 文件,再导航到 ~/rhpam-7.13.2-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 属性,从而导致因为不支持的 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);
在特定 Red Hat Decision Manager 项目的 KIE 模块描述符文件中启用连续模式(
kmodule.xml
):<kmodule> ... <kbase name="KBase2" default="false" sequential="true" packages="org.domain.pkg2, org.domain.pkg3" includes="KBase1"> ... </kbase> ... </kmodule>