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

相關問題