我有2个类型TYPE1的数组列表(让我们说它)作为我的规则项目的规则集参数。一个是IN,另一个是OUT。在我的规则流上,我有一个初始化OUT规则集参数的初始操作任务。因为我们有一个数组列表作为输入,我将不得不"迭代"它,我知道怎么做。
我的问题在后面。在我的规则流的下一个任务中,我有一个规则任务,我在其中添加了所有具有一些先决条件的决策表。在大多数决策表中,可以触发多个规则。我想要实现的是,对于每个触发的规则,我想要向输出数组列表中添加一个类型为TYPE1的新对象。问题就在这里。如果我有3条规则触发,我实际上有3个类型为TYPE1的对象被添加到输出数组列表中,但所有3个都具有相同的值。看起来它们都"指向"同一个对象。
我的问题是,是否有任何方法在操作列上创建类型为TYPE1的新对象(调用构造函数),因此在执行规则的其余操作时,它写在类型为TYPE1的新对象上?我知道我可以做到这一点,如果我创建类型为TYPE1的规则集变量和我有多少规则一样多,并为每个规则使用每个变量,但这样我的表就会变得很大(横向),这不是我们想要的方式。
TYPE1和数组列表都是BOM成员。
编辑:忘了说我正在使用RetePlus算法,以"none"作为退出标准,并为运行时规则选择排序和动态BAL。
我希望我解释得足够好,有人能帮助我。
这里有一个技巧,可以实现你想要的,三个步骤:
在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;
通常,您可以在决策表的操作列中使用它。编辑器将把短语的每个占位符映射到子列。