2017-03-18 65 views
0

我試圖收集使用此代碼Drools的一些對象後做一個清單:如何比較兩個列表

rule "Evalua Anexo 10" salience 300 when 
    jul: ArchJuliano() 
    reg551: Registro551(fraccAne10 : getFraccion()) from jul.getListReg551() 
    exists (Anexo10(getFraccion() == fraccAne10) from jul.getListFraccAne10()) 
then 
    // get pojo reg551 
end 

時fraccAne10在jul.getListFraccAne10存在上述規則將每個Registro551火一次。但是,我想要獲取Registro551的列表,而不僅僅是對象。

rule "Evalua Anexo 10" salience 300 when 
    jul: ArchJuliano() 
    listOfReg551: List() from collect (
    Registro551(fraccAne10 : getFraccion()) from jul.getListReg551() 
    exists (Anexo10(getFraccion() == fraccAne10) from jul.getListFraccAne10()) 
) 
then 
    // trying to get List<Registro551> 
    // fires error: mismatched input 'exists' in rule name-of-rule 
end 

事實:

public class Anexo10 { 
    private String fraccion; 
    // getters and setters 

public class Registro551 { 
    private String fraccion; 
    // getters and setters 

public class ArchJuliano { 
    private List<Anexo10> listFraccAne10; 
    private List<Registro551> listReg551; 
    // getters and setters 

非常感謝你。

回答

0
rule "Evalua Anexo 10" 
when 
    jul: ArchJuliano($lAne: listFraccAne10, $lReg: listReg551) 
    accumulate(Anexo10($fA: fraccion) from $lAne; 
       $fraccionsA: collectSet($fA)) 
    accumulate(Registro551($fR: fraccion memberOf $fraccionsA) from $lReg; 
       $fraccionsR: collectList($fR)) 
then 
    ...List<Registro551> $fraccionsR... 
end 

(我沒有測試過這一點。)

+0

它的工作原理就像一個魅力! –