2016-09-29 3 views
0

CEPプロトンの使用時間間隔内に受け取ったイベントについて、2番目以降のイベントのIDが最初のイベントに入るarray型の属性に含まれているかどうかを確認したいと思います。最初のイベントに、整数の配列(10,20,30)であるgroupという属性が設定されているとします。次のイベントには、id、ex 20、25などが付きます。私は、それらのイベントのIDが最初のイベントに含まれる属性グループに含まれているかどうかをチェックしたいと思います。そのために 私が確認しEPA内の配列条件CEP PROTON

Error Error in EPA: expression error of undefined myepa 

をクリックしたときに私はエラーを取得していますしかし、私は私が間違って何をやっているか?EPA

ArrayContains(ArrayGet(myevent.group,0),ArrayGet(myevent.id,ArraySize(myevent.id)-1)) 

で条件を作成しましたか ArrayGetを使用して属性配列にアクセスできませんか?またはArrayContainsArrayGetの結果では動作しない可能性がありますか?

JSON

{"epn":{"events":[{"name":"GupsyContextUpdate","createdDate":"Thu Sep 29 2016","attributes":[{"name":"entityId","type":"String","dimension":0},{"name":"entityType","type":"String","dimension":0,"description":"The cost of this event occurrence. Negative if this is an opportunity"},{"name":"SF","type":"Integer","dimension":0,"description":"Used in case the this event occur within an interval"},{"name":"occupied","type":"Integer","dimension":"0"},{"name":"framecounter","type":"Integer","dimension":"0"},{"name":"RSSI","type":"String","dimension":"0"},{"name":"hwversion","type":"String","dimension":"0"},{"name":"swversion","type":"String","dimension":"0"},{"name":"compassz","type":"String","dimension":"0"},{"name":"MACBS","type":"String","dimension":"0"},{"name":"SNR","type":"String","dimension":"0"},{"name":"devEUI","type":"String","dimension":"0"},{"name":"battery","type":"String","dimension":"0"},{"name":"devicetype","type":"String","dimension":"0"},{"name":"compassx","type":"String","dimension":"0"},{"name":"compassy","type":"String","dimension":"0"},{"name":"compasst","type":"String","dimension":"0"},{"name":"neighbours","type":"String","dimension":"1"},{"name":"timestamp","type":"String","dimension":"0"}]},{"name":"gupsyoutput","createdDate":"Thu Sep 29 2016","attributes":[{"name":"Certainty","type":"Double","defaultValue":"1","dimension":0,"description":"The certainty that this event happen (value between 0 to 1)"},{"name":"OccurrenceTime","type":"Date","dimension":0,"description":"No value means it equals the event detection time, other option is to use one of the defined distribution functions with parameters"},{"name":"ExpirationTime","type":"Date","dimension":0},{"name":"Cost","type":"Double","dimension":0,"description":"The cost of this event occurrence. Negative if this is an opportunity"},{"name":"Duration","type":"Double","defaultValue":"0","dimension":0,"description":"Used in case the this event occur within an interval"},{"name":"test","type":"String","dimension":"1"}]}],"epas":[{"name":"gupsyepa","createdDate":"Thu Sep 29 2016","epaType":"Aggregate","context":"gupsyct","inputEvents":[{"name":"GupsyContextUpdate","alias":"gupsyupdate","consumptionPolicy":"Consume","instanceSelectionPolicy":"First"}],"computedVariables":[{"name":"count","aggregationType":"Count","gupsyupdate":"ArrayContains(ArrayGet(gupsyupdate.neighbours,0),ArrayGet(gupsyupdate.id,ArraySize(gupsyupdate.id)-1))"}],"assertion":"count == true","evaluationPolicy":"Immediate","cardinalityPolicy":"Single","internalSegmentation":[],"derivedEvents":[{"name":"gupsyoutput","reportParticipants":false,"expressions":{"Duration":"0","test":"ArrayContains(ArrayGet(gupsyupdate.neighbours,0),ArrayGet(gupsyupdate.devEUI,ArraySize(gupsyupdate.devEUI)-1))"}}]}],"contexts":{"temporal":[{"name":"gupsyct","createdDate":"Thu Sep 29 2016","type":"TemporalInterval","atStartup":false,"neverEnding":false,"initiators":[{"initiatorType":"Event","initiatorPolicy":"Ignore","name":"GupsyContextUpdate"}],"terminators":[{"terminatorType":"RelativeTime","terminationType":"Terminate","relativeTime":"15000"}]}],"segmentation":[],"composite":[]},"consumers":[{"name":"gupsyconsumer","createdDate":"Thu Sep 29 2016","type":"Rest","properties":[{"name":"URL","value":"http://127.0.0.1/ProtonParser/TestEvent2Log.php"},{"name":"contentType","value":"application/xml"},{"name":"formatter","value":"xml"},{"name":"delimiter","value":";"},{"name":"tagDataSeparator","value":"="},{"name":"dateFormat","value":"dd/MM/yyyy-HH:mm:ss"}],"events":[{"name":"gupsyoutput"}]}],"producers":[],"name":"gupsy"}} 
+0

「fiware-cep」というタグを付けてください。 – urishani

答えて

1

アプリケーションの全体JSON定義を共有してください。

あなたが提供した情報から、それがどのタイプのEPAであるかはわかりません(一連のイベントにアクセスするにはステートフルEPAが必要です。また、できるだけアプリケーションを書くようにする必要があります最初と次のイベントを区別するために)。

さらに、式の両方の部分で同じイベントインスタンスmyeventにアクセスしようとする理由は明確ではありません。

ArrayContainsは、オペランドとして(配列、値)を受け取ります。 "myevent.id"も配列であると仮定して、値(value、value)とそれを渡します。

とにかく、あなたの表現に潜在的な問題がたくさんあるので、私はJSON全体、または少なくとも "myepa" EPAに関連する部分を見たいと思います。

0

私はJSONアプリケーションをレビューしましたが、複数の問題があります: 1)集計タイプのEPAを使用して、COUNTを計算しています。カウントはイベントをカウントするためのものです。これは整数変数です。ブール値を割り当てることはできません。 "count == true"のような比較式 またはブール値のように "count:ArrayContains(ArrayGet(gupsyupdate.neighbours、0)、ArrayGet(gupsyupdate.id、ArraySize(gupsyupdate.id)-1))) 有効ではありません。

2)さらに、count変数にはなく、この式をどこかに使用すると仮定します。 - gupsyupdateイベントには属性 "id"がないため、これを式で使用することはできません。 -ArrayGet(gupsyupdate.neighbours、0) - 配列内の単一のオブジェクトを返します...配列を受け取るはずのArrayContains式では使用できません。

3)EPAのポリシーは、意味があります...これは集約EPAですが、evaluationPolicyを "Immediate"、カーディナリティーポリシー "Single"と組み合わせて使用​​します。つまり、このEPAは最初のgupsyupdateイベントを受信するとただちに評価されます。したがって、実際にはアグリゲータとしては機能しません。

この入力に従ってアプリケーションを修正してください。