Siddhi 3.0.3 を Java ライブラリとして使用。
クラスを拡張してカスタム集計関数を開発しましたが、メソッドが呼び出されたAttributeAggregator
後に奇妙な動作が見られました。processRemove()
がprocessRemove()
呼び出されると、値を削除して新しい集計結果を返します。ただし、結果ハンドラーによって返されるイベントは、まだ古い値を受け取っています。ただし、processAdd()
正しく動作しています。デバッグを行った後、 を呼び出すたびにprocessAdd()
、 を最後に呼び出したときに返されたオブジェクトが結果イベントに含まれていることに気付きましたprocessAdd()
。ただし、 を呼び出した後、イベントには、によって返された最後のオブジェクトではなく、processRemove()
以前と同じオブジェクト ( last からのオブジェクト) が含まれます。processAdd()
processRemove()
コレクションを維持し、そこから削除を追加し、常に同じコレクション オブジェクトを返す場合、すべて問題ありません。ただし、数値を返す集計関数の場合、各processAdd()
/processRemove()
はボックス化されたを返しますLong
が、これは from の戻り値に置き換えられませんprocessRemove()
。
組み込みの集計関数を使用しても、これと同じ動作に気付きましたcount()
。