0

我正在使用drools进行业务级别验证。 是否可以在工作内存中加载两个对象并比较它们的值? 可以说我有2个对象:Drools:如何比较drools中两个不同对象的属性?

Object1{ 
String name; 
} 

Object2{ 
String sname; 
} 

我可以比较的DRL文件名(Object1)与的sname(对象2)?

Object1(name)==Object(name) 

我试图在DRL文件中加入这一行,但它给出了一个错误“意外令牌名”

也有助于我在工作记忆中插入这些对象。我正在使用下面的纪伊会话步骤

KieContainer container=KieServices.Factory.get().getKieClasspathContainer(); 

KieSession kieSession = container.newKieSession("SampleSession"); 

现在可以将object1并同时使用插入方法Object2的?

kieSession.insert(object); 

回答

0

如何插入对象:

Object1 o1 = ...; 
Object2 o2 = ...; 
kieSession.insert(o1); 
kieSession.insert(o2); 

如何把自己的属性比较:

rule namecomp 
when 
    Object1($n1: name) 
    Object2(sname == $n1) 
then 
    System.out.println("Names are equal"); 
end 

这些都是基本的问题。请务必阅读Drools文档。

+0

感谢您的帮助。我将在drl文件中添加其他规则。只有前两个事实有什么办法可以限制上述规则的解雇吗?我将在会议中插入4条事实,上述规则仅应解释前两条事实 –

+0

“插入顺序”决定的“第一个”和“第二个”?你将不得不为这些序数维护一个属性,并根据它来写一些约束。但这是一个奇怪的要求。 - 也许你写另一个问题,提供所有背景,为什么每次4个,为什么只有#1和#2应该匹配等等。 – laune

相关问题