遍历对象列表列表

时间:2015-04-01 22:40:48

标签: drools rules

我有一个名为Customer的对象。客户对象由股票对象列表组成,股票由报价列表和内部报价组成,其中有一个名为status的字段。这是我的对象图。

class Customer{
List<Stock> stocks;
//getter and setters
}

class Stock{
List<Quote> quotes;
//getter and setters
}

class Quote{
String status;
//getter and setters
}

现在我需要在drl中编写一个规则来验证股票报价对象列表中的状态是否为“启动”,然后客户所有股票的所有其他报价状态值应仅为“启动”。

如果状态为“启动”,则表示只启动是客户所有股票的所有报价的有效值。这仅适用于“启动”状态。

我花了一天时间写一条规则但没有成功。我只能将整个Customer对象传递给规则引擎。任何人都可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

如果客户处于状态状态,则以下规则触发一次&#34;初始化&#34;在所有股票的所有报价中或没有&#34;初始化&#34;完全,即当客户是&#34;清洁&#34;。

rule checkini
  dialect "java"
when
  $c: Customer( $ss: stocks )
  Boolean( booleanValue ) 
     from accumulate( Stock( $qs: quotes ) from $ss,
     init( int notini = 0; int isini = 0; ),
     action( for( Object q: $qs )
               if( "Initiate".equals(((Quote)q).getStatus())) isini++;
               else notini++;  ),
     result( notini == 0 || isini == 0 ) )
then
  System.out.println( "clean" );
end

查看客户是否有一个混合的&#34;发起&#34;等等,否定结果条件。