You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Rule#编写可处理多个类对象的NRules规则?

在NRules中用Rule#实现跨多类对象的规则

完全可以用Rule#实现你需要的跨类关联规则,以下是对应你需求的Rule#代码实现:

rule "NotifyCustomerAboutDiscount"
when
    Customer customer
    exists Order o where o.Customer == customer && o.PercentDiscount > 0.0
then
    customer.NotifyAboutDiscount();

代码说明

  • Customer customer:匹配工作内存中的Customer实例,并将其命名为customer,供后续规则条件引用
  • exists Order o where o.Customer == customer && o.PercentDiscount > 0.0:检查是否存在与当前customer关联,且PercentDiscount大于0的Order实例,这和你原代码中的Exists逻辑完全等价
  • 动作部分直接调用customer.NotifyAboutDiscount(),实现你需要的业务操作

运行时创作支持

Rule#作为NRules的领域特定语言,天生支持运行时规则创作:

  • 你可以让用户输入或编辑上述格式的Rule#脚本文本
  • 使用NRules的RuleParser解析脚本,再通过RuleCompiler编译为可执行的规则
  • 将编译后的规则加载到规则引擎会话中,即可执行动态创作的规则

内容的提问来源于stack exchange,提问作者jnce

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 07:15:56