0

私はつい最近 drools を使い始めたばかりで、心拍数データを処理する必要があります。過去 1 時間の平均よりも 60 以上高い心拍数データに 3 つ以上のスパイクがある場合に起動する drools fusion のルールを作成する必要があります。下の写真は、私が心拍数で発見したい例です。

ここに画像の説明を入力

私の HeartRate イベントには次のフィールドがあります。

int heartRate;
Date timeStamp;
String macAddress;

スライディングタイムウィンドウについては知っていますが、最小、最大、平均などの基本的な機能しか使用できません。このルールを作成する方法を誰か説明してもらえますか?

4

1 に答える 1

1

プロパティを使用して、スパイクを検出し、Spike ファクトを挿入および更新するルールを記述します。

declare Spike
  @role( event )
  int maxHeartRate;   ## max/avg rate from events of this spike  
  Date startTS;       ## from first HeartRate to exceed avg+60
  Date lastTS;        ## from last HeartRate to exceed avg+60
  String macAddress;
end

2 つの累積を使用して、1 時間以内のスパイク数を 1 時間の HeartRate の平均心拍数に関連付けることができます。

最初のスパイクの前の平均は、2 回目または 3 回目のスパイクの前の平均よりもほぼ確実に低いため、これにはスパイクのレートが含まれるため、戦略全体に (微妙な) 「あいまいさ」があることに注意してください。理想的には、これらを平均計算から除外します。

window:time を避け、タイムスタンプからすべてを計算する方が簡単だと思います。おそらく、移動平均を「手動で」維持することさえできます。しかし、テスト ケースを含むすべてのコードを作成してこれを調査することは、私がここで費やしたい以上のことです。

于 2016-04-18T10:34:04.050 に答える