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



我在BAL规则中有创建对象并将其添加到列表的要求

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

根据BAL规则的"if"条件,需要创建Customer类型的对象并将其添加到Customerlist中。

我试图通过以下链接下提供的步骤,在BOM编辑器中的Customer类中创建方法来创建对象

如何从决策表操作列上的BOM成员创建对象(调用构造函数)?但我得到了以下错误:'返回'指令'中的值不兼容

有人能提供创建对象并将其添加到BAL中的列表的详细步骤吗?

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

我对您的场景的建议是:

  1. 在XOM中创建一个动词化,以接收将添加到主列表中的元素(复合模式)
  2. 用语言表达
  3. 将其添加到您的行动列中(即在决策表中)

我在几个场景中成功地使用了这种方法,并且不乏性能。

希望这能有所帮助。

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

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

//表述为:新客户
客户客户.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);

相关内容

  • 没有找到相关文章

最新更新