【问题标题】:Exception handling for rules规则的异常处理
【发布时间】:2014-09-22 14:28:07
【问题描述】:

我在 ilog 工作,我有一个决策表,其中说我有 5 条规则。我有一些输入字段作为条件说名称和年龄(虚拟数据),并有一些与之相关的操作部分。当我将某个条件值为 null 的输入传递时,将调用异常处理程序,在该处理程序中我已处理异常并返回 false。但问题是,如果异常发生在第一行,那么它应该抛出异常,程序应该直接到达最终操作,但在我的情况下,所有 5 条规则都被执行,我得到 5 个异常值,等于表中的行数。

public boolean handleexception(IRLruntimeexception ex)
{
    errorcode=ex.getmessage();
    return false;
}

我得到 5 次错误代码值,这是不正确的

【问题讨论】:

    标签: ilog jrules


    【解决方案1】:

    这可能是因为RetePlus algorithm 在执行操作之前匹配了所有条件

    尝试将规则任务的算法更改为顺序。

    【讨论】:

    • 你能解释更多吗?你把你的异常处理程序放在哪里?它是规则流处理程序还是规则处理程序?
    • 异常是针对规则处理程序的。它是一个单独的类,它实现了 ilrexception 处理程序类。所以每当发生异常时,都会调用这个类方法,即处理异常
    【解决方案2】:

    每个规则都会调用异常处理程序,因为决策表中的每一行实际上都是一个独立的规则。将为提供的数据评估每个规则的条件。

    您应该像处理任何其他语言的编程一样处理规则编程,并在将数据传递到规则之前验证数据/检查空值。例如,规则流或初始操作中的第一个任务将检查任何空数据或无效数据。如果数据通过 null 检查,则调用规则流中的其他任务。

    请参阅文档Check for null values in rules,了解有关如何将输入数据的空值处理到规则中的其他建议。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-07-29
      • 2020-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-18
      • 2015-01-29
      相关资源
      最近更新 更多