2016-09-29 3 views
0

CEP Proton 사용 시간 간격으로받은 이벤트의 경우 첫 번째 이벤트에서 오는 배열 유형의 속성에 두 번째 및 다음 이벤트의 ID가 포함되는지 확인하고 싶습니다. 첫 번째 이벤트가 정수 배열 (10, 20, 30) 인 group이라는 속성을 사용한다고 가정 해 봅시다. 다음 이벤트는 id가 20, 25 등으로 표시됩니다. 해당 이벤트의 ID가 첫 번째 이벤트에 포함 된 속성 그룹에 포함되어 있는지 확인하고 싶습니다. 그 내가 뭔가 잘못을하고 있습니까EPA 내의 배열 조건 CEP PROTON

Error Error in EPA: expression error of undefined myepa 

내가 클릭 확인 오류를 받고 있어요 그러나 나는

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

EPA

에 조건을 만든 들어 ? 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인지는 확실하지 않습니다. (일련의 이벤트에 액세스하려면 statefull EPA가 필요하며 가능할 수있는 방법으로 신청서를 작성해야합니다 첫 번째 사건과 후속 사건을 구별하기 위해).

또한 표현식의 두 부분에서 동일한 이벤트 인스턴스 - myevent에 액세스하려고하는 이유가 명확하지 않습니다.

Array 배열은 피연산자로 (배열, 값)를받습니다. "myevent.id"도 배열이라고 가정하면이 값 (값, 값)을 전달합니다. 설명에서 이해하지 못하는 것은 무엇입니까?

어쨌든 표현식에 잠재적 인 문제점이 많아서 전체 JSON 또는 "myepa"EPA와 관련된 부분을보고 싶습니다.

0

JSON 응용 프로그램을 검토 한 결과 여러 가지 문제가 있습니다. 1) 집계 유형의 EPA를 사용하여 COUNT를 계산하고 있습니다. 카운트는 이벤트를 세는 데 사용됩니다. 정수 변수입니다. 부울 값을 할당 할 수 없습니다. "count == true"와 같은 비교 표현식 또는 부울 값의 할당은 "count : ArrayContains (ArrayGet (gupsyupdate.neighbours, 0), ArrayGet (gupsyupdate.id, ArraySize (gupsyupdate.id) -1))) 유효하지 않습니다.

2) 또한이 표현식을 카운트 변수가 아닌 어딘가에서 사용한다고 가정하면 - gupsyupdate 이벤트에는 "id"속성이 없으므로 표현식에서 사용할 수 없습니다. -ArrayGet은 (gupsyupdate.neighbours, 0) - ... 배열 내에서 하나의 객체를 반환합니다 그래서 당신은 배열

3) EPA의 정책은 '아무튼를받을 예정이다 ArrayContains의 표현식에서 사용할 수 없습니다 이해가된다. 그것은 집합 EPA이지만, "Immediate"의 evaluationPolicy와 카디널리티 정책 "Single"과 함께 사용한다. 이는 첫 번째 gupsyupdate 이벤트를 수신하는 즉시이 EPA가 한 번만 평가된다는 것을 의미합니다. 그래서 그것은 실제 aggregator로서의 역할을하지 않을 것입니다 ....

이 입력에 따라 애플리케이션을 수정하십시오.