我有一个名为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对象传递给规则引擎。任何人都可以帮忙吗?
答案 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;等等,否定结果条件。