0

私は Esper + Mule を使用しており、POJO とイベントを定義しようとしていますが、Espero のドキュメントを読んだ後、本当に必要なものが見つかりませんでした。

POJO で表される私のイベントには、次のようなプロパティがあります。

List<String> Words;

私がやりたいのは、キーワード IN を使用して別の単語のリストと比較することです。そのため、パターンは次のようになります。

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

しかし、私はこのエラーが発生します:

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

これを達成する方法はありますか?

どうもありがとうございました

4

2 に答える 2

1

1 つの方法は、目的を実行するメソッドを作成し、そのメソッドを esper に登録して、EPL ステートメントからそのメソッドを参照することです。

ヘルパー クラスを作成します (この例では、EsperUtils.java を使用します)。

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;
  }
}

aem.esper.config.xml で esper にメソッドを登録します。

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

EPL でヘルパー メソッドを使用します。

select * from myEvent where contains(Words,AnotherListOfWords)

ヘルパー クラスの代わりにヘルパー メソッドをイベント POJO に追加することもできます。

于 2013-08-28T17:20:03.143 に答える
0

列挙方法を調べたい場合は、http://esper.codehaus.org/esper-4.9.0/doc/reference/en-US/html_single/index.html#enumerationreference を参照してください。 countOf」の組み合わせが適しています。

于 2013-08-26T11:59:12.780 に答える