在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规则中使用函数;是应该避免还是没有表现或行为优势或劣势?
感谢。