Недавно я начал программировать с помощью Drools Fusion, и у меня есть умное носимое устройство, которое отправляет данные о шагомере и частоте сердечных сокращений на мой ноутбук. Затем я обрабатываю эти данные с помощью языка правил drools. Но предположим, что у меня есть несколько умных носимых устройств с уникальным MAC-адресом. Я использую временные окна, и мой вопрос заключается в том, как я могу изменить свой файл правил, чтобы правила срабатывали только для событий с одним и тем же MAC-адресом и предпринимали соответствующие действия на основе этого MAC-адреса. Мой текущий файл правил выглядит следующим образом:
import hellodrools.Steps
import hellodrools.HeartRate
import hellodrools.AppInfo
declare AppInfo
@role(event)
end
declare Steps
@role(event)
end
declare HeartRate
@role(event)
end
rule "ACC STEPS RULE"
when
accumulate( Steps( $s : steps )
over window:time( 1h ) from entry-point "entrySteps";
$fst: min( $s ), $lst: max( $s );
$lst - $fst < 50 )
then
System.out.println("STEPS RULE: get moving!");
System.out.println($lst + " " + $fst);
end
rule "HEARTRATE RULE 1"
when
$heartrate : HeartRate(heartRate >= 150) from entry-point "entryHeartRate"
then
System.out.println("Heartrate is to high!");
end
rule "HEARTRATE RULE 2"
when
$heartrate : HeartRate(heartRate <= 50 && heartRate >= 35) from entry- point "entryHeartRate"
then
System.out.println("Heartrate is to low!");
end
rule "HEARTRATE RULE 3"
when
$heartrate : HeartRate(heartRate < 35 && heartRate >= 25) from entry-point "entryHeartRate"
then
System.out.println("Heartrate is critical low!");
end
rule "HEARTRATE RULE 4"
when
$max : Double() from accumulate(
HeartRate( $heartrates : heartRate ) over window:time( 10s ) from entry-point "entryHeartRate",
max( $heartrates ) )&&
$min : Double() from accumulate(
HeartRate( $heartrates : heartRate ) over window:time( 10s ) from entry-point "entryHeartRate",
min( $heartrates ) )&&
eval( ($max - $min) >= 50 )
then
System.out.println("Heartrate to much difference in to little time!");
end
Мои события HeartRate имеют следующие поля:
int heartRate;
Date timeStamp;
String macAddress;
События Мои шаги имеют следующие поля:
double steps;
Date timeStamp;
String macAddress;