Drools - 在内存中插入函数创建的对象

时间:2017-03-27 17:27:05

标签: drools

在Drools DRL文件中,我有一个返回自定义对象的函数。 在规则中,我调用此函数,然后将函数结果插入内存。 但是,后来的规则似乎没有拿起这个插入的对象。

如果我在规则中创建对象(而不是通过函数)并插入它,后续规则就能看到并运行正常。

下面的代码示例:

declare SomeObject
    value : String
end


function SomeObject createSomeObject() {
    SomeObject obj = new SomeObject();
    obj.setValue("something");
    return obj;
}


rule "run first" ruleflow-group "testrules-test"
dialect "mvel"
when
    eval(true)
then
    insert(createSomeObject());     // this does not trigger the "object exists" rule
    insert(new SomeObject());       // this triggers the "object exists" rule
end


rule "object exists" ruleflow-group "testrules-test"
dialect "mvel"
when
    SomeObject()
then
    info("the object exists");
end

(请注意,我已经显示了两种插入方法,但当然没有同时运行两种方法)。

我明显的问题是为什么函数创建的对象不会插入到内存中?

这也促使我在Drools规则中使用函数;是应该避免还是没有表现或行为优势或劣势?

感谢。

0 个答案:

没有答案