【问题标题】:how to create an object (call the constructor) from a BOM member on a decision table action column?如何从决策表操作列上的 BOM 成员创建对象(调用构造函数)?
【发布时间】:2014-07-30 10:26:38
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

  • 谢谢@Nicolas。完美运行!

标签: ibm-odm


【解决方案1】:

这里是实现你想要的技术,分 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;

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-23
    • 2018-12-21
    • 2011-03-06
    • 1970-01-01
    • 2019-07-25
    相关资源
    最近更新 更多