我有一个包含多个相同类型导入的决策表:be.example.Person。一个人是罪犯,另一个人是法定监护人。
决策表的编译是成功的,但是在运行时,它不会返回预期的结果。我为决策表插入事实的方式如下:
input id
似乎当我触发规则时,drools似乎插入对象2次为p:Person而不是:第一个是p:Person,第二个是q:Person。
或者换句话说,执行似乎是:
然而,我原本期望它表现得像:
drools不支持这种功能吗?在过去,我们使用类似的决策表,其中不同的对象类型似乎工作正常。但在这种情况下,如果对象的类型相同,那么就不会这样做。
任何人都知道如果不可能,或者我是否以不正确的方式注入对象?
正在使用的drools版本是5.5.0.Final。
答案 0 :(得分:0)
对两个相当不同的实体使用同一个类并不是一个好的设计。好与坏有几个共同的属性:名称,年龄等。但已经被定罪的旗帜应仅限于违法者。
为获得最佳效果,请考虑继承Person:
class Offender extends Person { private boolean alreadyConvicted; //... } class Guardian extends Person { }
根据您应该拥有的一些信息创建并插入它们。
决策表应该有p:Offender
和q:Guardian
。
如果你在人群的海洋中捕鱼可能成对的罪犯和守护者,你必须通过使用咒语this != p
和第二个人模式来确保p和q不同