【问题标题】:How to set custom property to business rules in (ILOG) IBM ODM如何在 (ILOG) IBM ODM 中将自定义属性设置为业务规则
【发布时间】:2013-11-12 08:03:11
【问题描述】:

我需要为每个规则设置一个新属性(例如:唯一 ID),并在执行期间从相应规则的操作部分访问它。 例如: 如果 人的年龄超过 18 岁 然后 将输出设置为规则的 ID。

(这里的 ID 应该来自正在添加的新属性。)

我正在使用 IBM ODM 8.5。请建议从业务规则中获取唯一ID的所有方法是什么?

在虚方法的B2X映射中,我使用instance.getRule().properties打印了rule.properties映射。我期待自定义属性和所有其他规则属性。但是,属性映射只有以下六个:

key:ilog.rules.business_name value:考试成绩

key:ilog.rules.package_name value:检查分数

键:请求者邮件值:

键:状态值:新

键:ilog.rules.package 值:check_score

键:ilog.rules.group 值:check_score.test_score

【问题讨论】:

    标签: business-rules ilog jrules ibm-odm


    【解决方案1】:

    您可以使用Model extension 自定义规则模型并将您的自定义属性 (YOUR_PROPERTY_NAME) 添加到规则工件中。

    您可以通过添加虚拟方法(BOM 中的静态方法!不要使用 xom!只需使用 BOM 编辑器添加它)来表达 YOUR_VERBALISATION。

    • 在方法实现(B2X)中,可以通过instance.getRule().getPropertyValue("YOUR_PROPERTY_NAME")获取值; (实例是一个运行时变量,包含当前规则的IlrRuleInstance
    • 在操作部分使用 YOUR_VERBALISATION 来调用方法。

    【讨论】:

    • 非常感谢。我能够访问该属性(根据语言)。但我需要在规则的操作部分访问此属性的值。例如:如果我将规则的唯一 ID 属性(在右侧)设置为字符串“abcd”。那么我应该能够将规则写为“然后将输出设置为规则的唯一ID”,以便将输出的值设置为“abcd”。现在我把它当作 NULL。
    • 试试这个(String)instance.getRule().getPropertyValue("YOUR_PROPERTY_NAME")
    • 不幸的是它不起作用。我仍然为空。我的规则看起来像 -----然后将 Result 的输出设置为该规则名称的唯一 id ;
    • 并返回 instance.getRule().getPropertyValue("BRL_ID").toString();给出以下 IlrUserRuntimeException .........目标方法: public java.lang.String java.lang.Object.toString() at call to 'translation.helper._checkId_B2X_String(java.lang.String)'
    • 我曾经重新启动并清理我的工作区以获取自定义模型扩展的新属性。使用 (String) 而不是 toString() 进行强制转换(我不知道为什么 toString() 不起作用)
    【解决方案2】:

    您可以使用的另一种方法是创建变量集(Variable Set)。在您定义的变量集中:

    1. 变量名
    2. 变量的类型
    3. 此变量的表述
    4. (可选)此变量的初始值

    它很容易创建,并且您的规则应用程序或模块的任何部分都可以访问它。

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多