2016-04-20 2 views
0

Je les deux classes de fréquence cardiaque avec des champs suivants:Esper règle langue: contexte d'imbrication

int heartrate; 
String heartratesTimestamp; 
String macAddress; 

et les étapes avec des champs:

int steps; 
String stepsTimestamp; 
String macAddress; 

La règle que j'ai écrit incendies lorsque le nombre d'étapes est plus de 100 à la dernière minute et la fréquence cardiaque est supérieure à 160.

EPStatement cepStatementRule7 = cepRule.createEPL("context PartitionByMac select * from " 
      + "Steps.win:time(1 min) S, HeartRate.win:time(1 min) H " 
      + "having (max(S.steps)-min(S.steps) > 100) and (H.heartrate > 160)"); 
    cepStatementRule7.addListener(new rule7Listener()); 

Je voudrais cha nge cette règle pour qu'elle soit basée sur le contexte de macAddress. Alors que la règle ne considère que les étapes et heartrates avec le même macAddress. J'ai écrit une règle de contexte pour la macAddress des étapes et une pour le macAddress de Heartrate. Ils travaillent tous les deux individuellement mais quand j'essaye de les imbriquer, la règle ne se déclenche plus.

cepRule.createEPL("create context PartitionByMac 
context PartitionByMacSteps partition by macAddress from Steps, 
context PartitionByMacHeartRate partition by macAddress from HeartRate"); 

Qu'est-ce que je fais mal?

Répondre

1

Qu'est-ce que vous voulez est

create context PartitionByMac 
partition by macAddress from Steps, macAddress from HeartRate; 

Cela fait que les mêmes terres de valeur macaddress dans la même partition pour l'analyse des étapes et des événements de la fréquence cardiaque.

Le contexte imbriqué se comporte différemment.