0

在此流程中,我已验证当过滤器返回“false”时,流程仍将继续。但有效载荷略有不同。我需要完全停止这些消息。

<foreach doc:name="For Each">
            <选择文档:名称=“选择”>
                当表达式="#[payload['event'] 包含'delete' ]">
                    <!-- 此路径与此问题无关-->  
                </当>  
                <否则>
                    <flow-ref name="getMessages" doc:name="FlowToGetMessages"/>  
<!-- 这(下)将从上述流程返回的数组中提取单行值(映射)-->
                    <collection-splitter doc:name="Collection Splitter"/>
                    <expression-filter expression="#[payload['activity'] != null && payload['activity'] != "" ]" doc:name="Block Empty Rows"/>
                    <custom-filter class="package.BlockNullAnnouncementEvents" doc:name="Block null"/>
                </否则>  
            </选择>
...

下一个处理器(在选择之后)获得 A)如果消息通过了过滤器测试 BlockNullAnnouncementEvents 的单个值或 B)如果存在 null 并且过滤器未通过相同的测试,则具有一个值的数组

在我看来,如果一条消息未通过过滤器测试,那么对流 getMessages 的调用结果将返回到 for-each 的顶部,后者将其传递到选择分支之后的流的下一部分包含过滤器。

4

1 回答 1

1

执行后,foreach 将恢复原始消息,如此处所述

如果您希望停止执行,您应该使用消息过滤器并将 Throw On Unaccepted 配置为 true

于 2013-10-09T12:20:10.240 回答