80.2. 规则的电缆组


电缆组是一组规则,由相同的 sales -group rule 属性绑定在一起。在决策引擎动机上对分区规则进行分组。在任何时间点上,只有一个组具有 重点,为在其他销售组的规则之前执行的一组规则优先级。您确定对 sales 组的 setFocus () 调用。您还可以使用 auto-focus 属性定义规则,以便在下次激活规则时,重点会自动提供给分配该规则的整个电缆组。

每次在 Java 应用程序中发出 setFocus () 调用时,决策引擎会将指定的 sales 组添加到规则堆栈的顶部。默认电缆组 "MAIN" 包含所有不属于指定 leader 组的规则,除非另一个组具有重点,否则首先在堆栈中执行。

例如,以下示例 DRL 规则属于指定的电缆组,按所示的顺序在决策引擎堆栈中列出:

指导应用程序的 DRL 规则示例

rule "Increase balance for credits"
  agenda-group "calculation"
when
  ap : AccountPeriod()
  acc : Account( $accountNo : accountNo )
  CashFlow( type == CREDIT,
            accountNo == $accountNo,
            date >= ap.start && <= ap.end,
            $amount : amount )
then
  acc.balance  += $amount;
end
Copy to Clipboard Toggle word wrap

rule "Print balance for AccountPeriod"
  agenda-group "report"
when
  ap : AccountPeriod()
  acc : Account()
then
  System.out.println( acc.accountNo +
                      " : " + acc.balance );
end
Copy to Clipboard Toggle word wrap

在本例中,必须始终首先执行 "报告" 模拟组中的规则,并且 "计算"模拟 组中的规则必须始终执行第二个。然后,可以执行其他销售组中的所有规则。因此,"报告 "和"计算" 组必须按照该顺序执行,然后才能执行其他规则:

为销售组执行顺序设置重点

Agenda agenda = ksession.getAgenda();
agenda.getAgendaGroup( "report" ).setFocus();
agenda.getAgendaGroup( "calculation" ).setFocus();
ksession.fireAllRules();
Copy to Clipboard Toggle word wrap

您还可以使用 clear () 方法取消属于给定电缆组的规则生成的所有激活,然后才能执行:

取消所有其他规则激活

ksession.getAgenda().getAgendaGroup( "Group A" ).clear();
Copy to Clipboard Toggle word wrap

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat