2016-10-24 6 views
1

私のケースは次のとおりです:私の銀行口座の引き出しの合計が1000ドルを上回る場合は、10分、例えば0m-10m、0m1s-10m1s、0m2s- 10m2s、銀行システムは私に警告メッセージを送るべきです。Droolsによるスライドウィンドウの時間チェックを続けるには?

だから誰でも私がDroolsによってルールを書くのを助けることができますか?

私の最初のアイデアは以下の通りです:

when 
       Number($total : intValue, intValue >= 1000) 
       from accumulate (Withdraw ($money : money) 
       over window:time(10m) 
       from entry-point ATMEntry, 
       sum($money)) 
then 
    System.out.println("Warning! too more withdraw:"+$total); 

しかし、それだけで1時間のために、今後10メートルをチェックします。最初の10mを過ぎると、ATMEntryに挿入するオブジェクトをどれだけ取り除いても、警告メッセージは表示されません。

例えば、1mごとに違うセッションでルールインターバルを超えて発砲すると、ATMEntryに異なるセッションのwithdrawオブジェクトを挿入する方法を混乱させてしまいます。

私の場合、Droolsを使用することは可能ですか?

おかげで、

答えて

1

あなたは別の撤回イベントによって評価をトリガする必要があります:あなたは、個々のイベントが必要な場合は

when 
      Withdraw() 
      Number($total : intValue >= 1000) 
       from accumulate (Withdraw ($money : money) 
        over window:time(10m) 
        from entry-point ATMEntry, 
        sum($money)) 
then 
    System.out.println("Warning! " + $total); 
end 

リストにそれらを収集するために、より良いかもしれません。これは、余分な引き出しをして1つの間隔を閉じ、別の間隔を開くのにも役立ちます。アララームを鳴らすタイミングと、いつレイズするか、レイズしないかは、次のアラームになります。

+0

ご返信ありがとうございます。実際、次のイベントがいつ来るのか分かりません。だから、リストに集めることができなかった。 だから、私は10分ごとにオブラを観察する必要があります。たとえば、0m-10m、0m1s-10m1s、0m2s-10m2s、これはスライディングウィンドウです。そして私はちょうどリアルタイムで1つのセッションATMEntryで各イベントを送ります。 Droolsはこの機能をサポートできますか? – capcom923

+0

引退が発生したときに発生するルールを書くことができます。その後、過去10分間に他人を探すことができます。 - あなたが一定の時間を見ると、何かが恋しくなることがあります。 – laune

+0

新しい撤退が来たときにルールを守る必要があるということですね。セッションはどうですか?私はそれを発射するために同じセッションを使用する必要がありますか? – capcom923

関連する問題