如何从决策表操作列上的BOM成员创建对象(调用构造函数)?

时间:2014-07-30 10:26:39

标签: ibm-odm

我有2个TYPE1类型的arraylist(让我们说它)作为我的Rule Project上的规则集参数。一个用于IN另一个用于OUT。在我的规则流程中,我有一个初始化操作任务,初始化OUT规则集参数。由于我们有一个arrayList作为输入,我将不得不重复"迭代"在它上面,我知道该怎么做。

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

我的问题是,在动作列上是否有任何方法可以创建TYPE1类型的新对象(调用构造函数),因此在执行规则的其余操作时,它会在TYPE1的新对象上写入?我知道如果我创建尽可能多的TYPE1类型的规则集变量,并且每个规则都使用每个规则,我可以实现这一点,但这样我的表变得庞大(横向)并且它不是我们想要的方式它

TYPE1和arraylists都是BOM成员。

编辑:忘记提及我使用RetePlus算法,使用"无"作为运行时规则选择的退出标准和排序以及动态BAL。

我希望我能够解释自己能够帮助我的人。提前谢谢。

1 个答案:

答案 0 :(得分:1)

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

在BOM编辑器中,在TYPE1类(或其他任何类)中创建一个方法。将其返回类型设置为TYPE1。例如,将其命名为createTYPE1。添加尽可能多的方法参数来初始化对象。让它静止。

以对规则作者有意义的方式对其进行语言描述。就像是 : 一个新的TYPE1,名称设置为{0},值设置为{1} //这是一个示例,使其适应您想要的参数列表。

将该方法实现为B2X脚本:

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

保存物料清单。

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

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