2013-08-26 5 views
0

내가 에스퍼 + 뮬 함께 일하고 있어요 그리고 나는 POJO 및 이벤트를 정의하기 위해 노력하고있는 문자열의 다른 목록에있는 경우, 그러나 Espero I 천국의 설명서를 읽은 후 찾기 내가 정말로 필요로하는 것을 찾지 못했습니다. POJO로 표현'문자열 목록에서 문자열 에스퍼

내 사건은,이 같은 속성이 있습니다

List<String> Words; 

는 내가 뭘하고 싶은 것은 단어의 또 다른 목록과 비교하기에 키워드를 사용입니다, 그래서 패턴이 보일 것이다 같은 :

Collection or array comparison is not allowed for the IN, ANY, SOME or ALL keywords 

t을 달성하기 위해 어떤 방법이 있나요 :

... Words in ('word1', 'word2', 'word3) ... 

그러나 나는이 오류 그의?

답변

1

한 가지 방법은 에스퍼와 방법 및 참조하여 EPL 문에서 방법 있음을, 당신이 원하는 것을 할 수있는 방법을 만들어 등록하는 것입니다

헬퍼 클래스 (이 예를 들어, 내가 EsperUtils.java 사용) 만들기 : aem.esper.config.xml에서 에스퍼와

package my.package; 

class EsperUtils { 
    public static boolean contains(List<String> list1, List<String> list2) { 

    // Check for list1 and list2 to contain same word 
    for (String s1 : list1) { 
     for (String s2 : list2) { 
     if (s1.equals(s2)) return true; 
     } 
    } 
    return false; 
    } 
} 

등록 방법 :

<plugin-singlerow-function name="contains" function-class="my.package.EsperUtils" function-method="contains" /> 

은 EPL에서 도우미 메서드를 사용

select * from myEvent where contains(Words,AnotherListOfWords) 

도우미 클래스 대신 도우미 메서드를 POJO 이벤트에 추가 할 수 있습니다.

관련 문제