比较两个列表后如何制作列表

时间:2017-03-18 17:31:41

标签: drools business-rules

我正在尝试使用以下代码收集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

当jrac.getListFraccAne10中存在fraccAne10时,上述规则将针对每个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
非常感谢你。

1 个答案:

答案 0 :(得分: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

(我没有测试过这个。)