1

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

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

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

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

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

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

4

3 回答 3

1

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

于 2018-12-22T09:40:10.520 回答
0

我对您的方案的建议是:

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

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

希望这可以帮助。

于 2016-04-29T19:11:41.080 回答
0

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

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

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

return (Customer) new OtherCustomerClassFromXOM();

Add:在某个类上定义另一个虚拟 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);
于 2019-03-29T14:17:07.070 回答