0

私は以下のようなxmlを持っています:

<Beans>
        <Bean>
                <Type>D</Type> <!--type can be D, B, C-->  
           <Name>Dental</Name> 
           <Transaction>121</Transaction>  
           <Amount></Amount> 
        </Bean>
        <Bean>
           <Type>D</Type> <!--type can be D, B, C-->
           <Name>Dental</Name>
           <Transaction>12312</Transaction>
           <Amount>123.45</Amount>
         </Bean>
</Beans>

このxmlのビジネスルール:各Beanについて、タイプがDの場合1:名前をnullにしないでください2:量とトランザクションをnullにしないでください3:量とトランザクションは、データベーステーブル内の同じトランザクションの既存の値と一致する必要があります。4:タイプがD以外の場合、異なるルールがあります。

これをDroolsルール言語で表現するにはどうすればよいですか。

4

1 に答える 1

0

私の提案は、制約ごとに 1 つのルールを使用することです。

rule "D Type - Name shouldnt be null"
when
    Bean(type == "D", name == null)
then
    //do whatever you want
end

... (you can figure out the other null checking rules)

rule "D Type - Amount must match DB value"
when
    $b: Bean(type == "D", amount != null)
    Double(doubleValue != $b.amount) from someGlobalService.getAmmount($b) 
then
    //do whatever you want
end

...

2 番目のルールでは、グローバル サービスを使用して DB から目的の情報を取得し、何らかのキャッシュを実装することをお勧めします。もう 1 つの可能性は、db からの値をファクトまたはグローバルとして ksession に事前設定することです。

よろしくお願いします、

于 2012-11-16T09:05:39.047 に答える