【问题标题】:how to validate ilog variables individually?如何单独验证 ilog 变量?
【发布时间】:2013-03-13 12:38:14
【问题描述】:

我将使用 ilog jrules 单独验证多个对象(一次一个)。

我目前的想法是将所有需要验证的项目包装在一个名为“itemToValidate”的输入参数中,如下所示

<xs:element name="itemToValidate">
    <xs:complexType>
        <xs:sequence>
            <xs:element name="employer" type="tns:employer" minOccurs="0" />
            <xs:element name="department" type="tns:department" minOccurs="0" />
        </xs:sequence>
    </xs:complexType>
</xs:element>

然后在名为“init”的包中名为“init”的规则中获取每个项目并设置为变量,例如“雇主” 那么对于“itemToValidate”中的每个项目(元素),对于与“雇主”相关的所有规则,都会有一个包,例如“雇主”

我面临的问题是我需要在实际验证之前检查所有规则的空值。

有没有办法避免这种情况?或者我的实施有什么问题吗?

谢谢

【问题讨论】:

    标签: ilog odm jrules


    【解决方案1】:

    我不确定是否理解您的问题。 "在实际验证之前检查所有规则是否为空"。

    为什么不在工作内存中设置对象,让JRules处理内存,使用局部规则变量而不是全局变量?

    将“我的雇主”设置为雇主
    如果“我的雇主”的名字是 bob
    那么打印“hello”

    我将创建一个函数,首先将“ItemsToValidate”推送到工作内存中,然后像我一样编写规则。 通过这样做,如果没有需要验证的 Employer,则规则永远不会触发,因为内存中没有 Employer 类型的项目。

    【讨论】:

      【解决方案2】:

      在我们的项目中,我们只对这种方法进行了单一的语言化,使用:

      the value {VALUE} is defined(返回一个布尔值)

      希望这会有所帮助。

      【讨论】:

        【解决方案3】:

        可以实现您感兴趣的类的 BOM 到 XOM 映射的 Tester 部分,以检查您关心的字段是否存在。

        例如,测试器可以写成:

        返回 this.employer != null

        这意味着雇主为 null 的 itemToValidate 不会在您编写的规则中进行评估。这将消除空检查(针对雇主)。

        查看“使用IRL的类映射测试器”主题下的知识中心

        【讨论】:

          猜你喜欢
          • 2012-08-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-03-01
          • 2016-02-14
          • 2016-04-02
          • 2011-02-06
          相关资源
          最近更新 更多