0

歩数計データを送信するセンサーごとに複数の用途があります。macAddress に基づいてルールを起動するルール ファイルがあります。

declare Steps
    @role(event)
end

declare User
    @role(fact)
end

rule "MAC"
when
  User( $mac: macAddress ) from entry-point "entrySteps"
then end

rule "ACC STEPS RULE" extends "MAC"
when
    accumulate( Steps( $s : steps , macAddress == $mac )
            over window:time( 1h ) from entry-point "entrySteps"; 
        $fst: min( $s ), $lst: max( $s );
        $lst - $fst < 50 )
then
    System.out.println($lst + "   " + $fst);
    Action.handleAction($mac,"STEPS RULE: get moving!");
end

My User にはフィールドのみがmacAddressあり、Steps イベントには次のフィールドがあります。

double steps;
Date timeStamp;
String macAddress;

ここで、各 macAddress に対してイベントを挿入すると、その macAddress を持つユーザーの過去 1 時間のステップ数が 50 未満である場合にルールが起動します。したがって、この条件が満たされた場合、ルールはすべての macAddress に対して起動します。しかし、挿入された Step イベントの macAddress に対してのみルールが起動できるようにしたいと考えています。ルールを調整するにはどうすればよいですか?

4

1 に答える 1