【问题标题】:Memory Management in IBM ODM. Issues with response object creation in IBM Operational decision ManagerIBM ODM 中的内存管理。 IBM Operational decision Manager 中的响应对象创建问题
【发布时间】:2015-06-02 04:29:05
【问题描述】:

我想知道,我们应该如何执行用 IBM ODM 编写的规则。我正在使用 ODM V8.0.1。我已经尝试如下。

我创建了一个 XOM,它有一个带有字符串变量的请求类和一个带有布尔值的响应类

public class Request{ private String xyz;
public Request(String s1){
this.xyz=s1;
}//to set DVS
with getters & setters
}

public class Response{
private boolean x; and getters and setters
}

我创建了一个规则项目,添加了这个 XOM 来创建相应的 BOM。

我已将请求对象添加为 IN 规则集参数并响应 OUT 然后用下面的代码创建了一个规则

如果 “请求”的 xyz 是 {" "," " "," "}

之一

然后

在“请求”上将 x 设置为 true;

创建了一个具有操作函数()和一个规则包的规则流

我已经创建了

prepareWorkMemory(){
Request r=new Request();
r.x=true;
insert(r);
}

我已经生成了一个 DVS excel 文件并填充了输入和预期结果。

然后我用 excel 表运行这个规则流

运行方式 --> 运行配置

我的执行引发了 Nullpointer 异常和其他一些 ExecutionUnit 异常。当我调试时,我发现问题是在 prepWorkingMemory() 函数之后以及规则尝试设置布尔值时未创建响应对象。

我尝试将 Ruleset 参数设置为 IN_OUT,然后执行为自己创建了响应对象,而没有 prepWorkingMemory() 函数。但它甚至期望布尔值作为输入,这不适合我的场景。

有人可以帮我解决我出错的地方吗?我坚信问题出在功能上。请纠正我。

如果可能,您能否详细说明 IBM ODM 中的内存管理。

谢谢。非常感谢您的帮助和时间:)

【问题讨论】:

    标签: ibm-odm


    【解决方案1】:

    如果您使用的是经典规则引擎,您实际上不需要编写 preWorkMem 类的函数。如果您的规则集参数的方向是 IN_OUT,则不需要像您所做的那样创建两个 XOM 类,即请求和响应。您将在规则条件和操作中使用 XOM 类的相同对象。

    但是,您是否注意到您创建了两个 XOM 类,即 Request 和 Response 并且您正在使用 IN_OUT 规则集参数方向?如何以及为什么?

    另一个问题是你的 prepareWorkMemory() 函数。您正在创建 Request 对象并设置“x”的值,它实际上是 Response 类的成员。

    阅读我的第一段,它将帮助您编写一个简单的规则集,其中单个参数集为 IN_OUT。我们不需要手动在工作内存中输入对象,除非做一些不寻常的事情。

    如果您需要任何帮助,请对答案发表评论。快乐的规则发展。 :)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-25
      • 2019-03-28
      • 2018-03-11
      相关资源
      最近更新 更多