주문이 가능한지 여부를 표시하는 EPL 문을 작성하려고합니다.Esper에서 쿼리 및 사용자 정의 함수를 작성하십시오.
두 개의 이벤트, EventA (처리됨) 및 EventB (처리되지 않음)가 있습니다.
스키마 작성 EventA (유형 문자열, percentCompleted 정수);
스키마 작성 EventB (유형 문자열);
문은 요소의 유형 (문자열)을 기반으로 처리 된 모든 요소와 일치해야합니다. 결과에는 부울 값이 포함되어야합니다. 부울 값은 주문 처리 여부를 나타냅니다.
나는 성공적인 성냥이 이루어질 때 (그리고 명령을 내릴 수있을 때) 진실을 되돌리기 위해 아래 진술을 얻었다. 그러나 주문을 제출할 수없는 경우에도 false를 반환하고 싶습니다.
케이스는 여기 테스트 :
http://esper-epl-tryout.appspot.com/epltryout/mainform.html
create schema EventA(type string, percentCompleted integer);
create schema EventB(type string);
@Name('Out') select * from pattern [every a=EventA -> every b=EventB(a.type = b.type AND a.percentCompleted > 20) ]
순서 :
이EventA={type="1",percentCompleted=0}
EventA={type="2",percentCompleted=0}
EventA={type="1",percentCompleted=20}
EventA={type="1",percentCompleted=40}
EventB={type="1"}
이 결과 : (만 진정한 결과를 반환) :
이Out-output={a={EventA={type='1', percentCompleted=40}}, b={EventB={type='1'}}}
내가 돌아 내 문을 원하는 전체 결과 대신 TRUE 및 "유형"을 또한 쿼리가 거짓을 반환하고 "유형"을 입력하면 a.percentCompleted가 표시됩니다. < 20.
네, 매번 false를 얻는 것이 좋습니다. 사실 조금 혼란 스럽습니다.이 사건에 대한 질문을 진술 해 주시겠습니까? – Umer
'EPStatement cepStatement1 = cepAdm.createEPL ("모든 * EventA -> 모든 b = EventB (a.type = b.type AND a.percentCompleted> 20)" "패턴에서 선택 *"); cepStatement1.addListener (새 CEPListener1()); ' ------------------------------------------------- --- EPStatement cepStatement2 = cepAdm.createEPL ("select * from pattern [모든 a = EventA -> b = EventB (a.type = b.type AND a.percentCompleted <= 20)]"); cepStatement2.addListener (새 CEPListener2()); ------------------------------------------------- ------------- 괜찮습니까? – Umer
그리고 EventA의 최신 값으로 만 확인하고 이전의 모든 값을 검사하는 방법은 없습니다. – Umer