【问题标题】:how to create an object (call the constructor) from a BOM member in a BAL rule? IBM ODM如何从 BAL 规则中的 BOM 成员创建对象(调用构造函数)? IBM ODM
【发布时间】:2016-01-13 13:36:32
【问题描述】:

我在 BAL 规则中要求创建对象并将它们添加到列表中

例如,Customer 是一个具有以下成员的类 1.名称 2. 位置

基于BAL规则的'if'条件,需要创建Customer类型的对象并添加到Customerlist中。

我尝试按照此链接下提供的步骤在 BOM 编辑器的 Customer 类中创建方法来创建对象

how to create an object (call the constructor) from a BOM member on a decision table action column? 但我得到以下错误: 'return 指令中的值不兼容'

谁能提供创建对象并将它们添加到 BAL 中的列表的详细步骤?

【问题讨论】:

    标签: ibm-odm


    【解决方案1】:

    构造函数不会在 BOM 中直接用语言表达。您可以在 XOM 中创建一个方法,该方法通过构造函数创建对象,您可以将此方法映射到 BOM 并用语言描述它以在规则工件中使用。

    【讨论】:

      【解决方案2】:

      我对您的方案的建议是:

      1. 在 XOM 中创建语言化以接收将添加到主列表 (Composite pattern) 的元素。
      2. 说出来
      3. 将其添加到您的操作列中(即在决策表中)

      我在几个场景中使用这种方法取得了巨大的成功,而且性能并不差。

      希望这会有所帮助。

      【讨论】:

        【解决方案3】:

        创建一个对象并将其添加到列表中应该是两个独立的方法。

        创建:假设您按照您提供的链接的方法,您应该在 Customer BOM 类上有一个名为 createCustomer() 的 BOM 方法。由于没有 XOM 支持该 BOM 方法,因此您必须为该方法提供 B2X 代码。大多数人将这种方法称为虚拟 BOM 方法。查看该方法的 B2X 代码会很有帮助。您的 BOM 和 XOM 类是同一类型吗?如果不是,您将指定 Customer BOM 类的执行名称。在这种情况下,您可能需要将 createCustomer() BOM 方法的返回值转换为 Customer BOM 类。

        // 表述为:新客户
        客户 Customer.createCustomer()

        return (Customer) new OtherCustomerClassFromXOM();
        

        添加:在某个类上定义另一个虚拟 BOM 方法,并将该方法命名为 addCustomer(Customer customer)。通常它会在包含列表变量作为成员的类上。但如果列表变量是全局变量(即规则集变量),那么该方法可以是任何类的静态成员,甚至是您的 Customer 类。

        // 表述为:将 {0} 添加到 {1}
        void Customer.addCustomer(Customer customer, java.util.Collection customerList)

        if (customerList == null) { 
            customerList = new java.util.ArrayList(); 
        }
        customerList.add(customer);
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-01-23
          • 2017-02-02
          • 1970-01-01
          • 2011-03-06
          相关资源
          最近更新 更多