このフローでは、フィルターが「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 ブランチの後のフローの次の部分に渡されるように見えます。フィルターが含まれています。