如何从BAL规则中的BOM成员创建对象(调用构造函数)? IBM ODM

时间:2016-01-13 13:36:33

标签: ibm-odm

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

例如,客户是一个以下成员的班级 1.姓名 2.位置

根据BAL规则的“if”条件,需要创建Type Customer对象并将其添加到Customerlist。

我尝试通过按照此链接

下提供的步骤在BOM编辑器中的Customer类中创建方法来创建对象

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

中的值不兼容

有人可以提供详细的步骤来创建对象并将它们添加到BAL中的列表中吗?

3 个答案:

答案 0 :(得分:0)

我对你的情景的建议是:

  1. 在XOM中创建语言表达,以接收将添加到主列表(Composite pattern)的元素。
  2. 用语言表达
  3. 将其添加到您的操作列(即在决策表中)
  4. 我在几种情况下都使用这种方法取得了巨大成功,并且不乏性能。

    希望这有帮助。

答案 1 :(得分:0)

构造函数不会直接在BOM中表述。您可以在XOM中创建一个方法,该方法通过构造函数创建对象,并且可以将此方法映射到BOM上并进行口述以用于规则工件中。

答案 2 :(得分:0)

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

创建:假设您遵循提供的链接的配方,则应该在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)。通常它将位于包含list变量作为成员的类上。但是,如果list变量是全局变量(即规则集变量),则该方法可能是任何类(甚至是Customer类)的静态成员。

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

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