1

我有 2 个类型为 TYPE1 的数组列表(可以这么说)作为我的规则项目的规则集参数。一个用于 IN 另一个用于 OUT。在我的规则流中,我有一个初始化 OUT 规则集参数的初始操作任务。由于我们有一个 arrayList 作为输入,我将不得不“迭代”它,我知道该怎么做。

我的问题随之而来。在我的规则流的下一个任务中,我有一个规则任务,我在其中添加了所有具有一些先决条件的决策表。在大多数决策表上,可以触发多个规则。我想要实现的是对于每个触发的规则,我想将 TYPE1 类型的新对象添加到输出数组列表中。问题来了。如果我有 3 个规则触发,我实际上有 3 个类型为 TYPE1 的对象被添加到输出数组列表中,但所有 3 个对象都具有相同的值。看起来所有人都“指向”同一个对象。

我的问题是,有没有办法在操作列上创建一个类型为 TYPE1 的新对象(调用构造函数),所以在执行规则的其余操作时,它写在 TYPE1 的新对象上?我知道如果我创建与我拥有的规则一样多的 TYPE1 类型的规则集变量并为每个规则使用每个规则,我可以实现这一点,但是这样我的表会变得很大(横向),这不是我们想要的方式。

TYPE1 和数组列表都是 BOM 成员。

编辑:忘了提到我正在使用 RetePlus 算法,以“none”作为退出标准,排序和动态 BAL 用于运行时规则选择。

我希望我对自己的解释足够好,以便有人能够帮助我。提前致谢。

4

1 回答 1

2

以下是实现您想要的技术,分 3 个步骤:

在 BOM 编辑器中,在 TYPE1 类(或实际上的任何其他类)中创建一个方法。将其返回类型设置为 TYPE1。例如,将其称为 createTYPE1。根据需要添加尽可能多的方法参数来初始化对象。使其成为静态的。

以对规则作者有意义的方式表达它。类似于:一个新的 TYPE1,名称设置为 {0},值设置为 {1} // 这是一个示例,将其调整为您想要的参数列表。

将该方法实现为 B2X 脚本:

// calling the appropriate constructor from the XOM class.
return new mypackage.TYPE1(arg1, arg2); 

保存 BOM。

在以下结构中使用这个新短语:添加一个新的 TYPE1,名称设置为“Joe”,值设置为 12 到输出列表;

通常,您可以在决策表的操作列中使用它。编辑器会将短语的每个占位符映射到一个子列。

于 2014-07-30T13:49:59.293 回答