このフローでは、フィルターが「false」を返してもフローが継続することを確認しました。しかし、ペイロードはわずかに異なります。これらのメッセージを完全に停止する必要があります。
<foreach doc:name="For Each">
<choice doc:name="Choice">
式="#[payload['event'] に 'delete' が含まれている場合]">
<!-- このパスはこの質問とは関係ありません -->
</when>
<そうでなければ>
<flow-ref name="getMessages" doc:name="FlowToGetMessages"/>
<!-- これ (以下) は、上記のフローから返された配列から単一の行の値 (マップ) を抽出します -->
<collection-splitter doc:name="コレクション スプリッター"/>
<expression-filter 式="#[ペイロード['アクティビティ'] != null && ペイロード['アクティビティ'] != "" ]" doc:name="空の行をブロック"/>
<custom-filter class="package.BlockNullAnnouncementEvents" doc:name="Block null"/>
</それ以外の場合>
</選択>
...
次のプロセッサ (選択後) は、A) メッセージがフィルタ テスト BlockNullAnnouncementEvents に合格した場合は単一の値、または B) null が存在し、フィルタが同じテストに失敗した場合は 1 つの値の配列を取得します。
これは、メッセージがフィルター テストに失敗した場合、フロー getMessages への呼び出しの結果が for-each の先頭に返され、choice ブランチの後のフローの次の部分に渡されるように見えます。フィルターが含まれています。