IBM ODM中的内存管理。 IBM Operational Decision Manager中创建响应对象的问题

时间:2015-06-02 04:29:05

标签: ibm-odm

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

我创建了一个XOM,它有一个带有String变量的Request类和一个带有boolean

的Response类
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。

我已将Request Object添加为IN ruleset参数并响应OUT 然后使用以下代码

创建一个规则

如果 xyz'请求'是{" "" " "" "}

然后

在请求';

上将x设置为true

创建了一个具有action function()和一个规则包

的规则流

我创建了

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

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

然后我使用Excel工作表运行此规则流程

以 - >运行运行配置

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

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

有人可以帮助我解决我出错的地方我坚信这个问题与功能有关。请纠正我。

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

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

1 个答案:

答案 0 :(得分:1)

如果您使用的是经典规则引擎,则实际上您不需要编写preWorkMem类功能。如果Ruleset Param的方向是IN_OUT,则不需要像创建的那样创建两个XOM类,即Request和Response。您将在规则条件和操作中使用XOM类的相同对象。

但是,你没注意到你创建了两个XOM类,即Request&响应并且您正在使用IN_OUT规则集参数方向?怎么样和为什么?

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

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

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