Mule で foreach コンポーネントを使用しています。Foreach を使用してコレクション オブジェクトを反復しています。ForEach コンポーネントについては、コレクション ペイロードを入力として送信しています。Foreach はコレクション ペイロードを反復します。しかし問題は、次のコンポーネントで Iterated foreach ペイロードを取得できないことです。
ここに私のコードSnippnetがあります
<choice doc:name="Choice">
<when expression="#[ognl:instance=='Lamp']">
<processor-chain>
<message-properties-transformer scope="invocation" doc:name="Message Properties">
<add-message-property key="loops" value="0"/>
</message-properties-transformer>
<component class="com.Lamp" doc:name="Java"/>
<foreach doc:name="Foreach">
<component class="com.Candle" doc:name="Java"/>
<logger message="DDD #[message:payload]" level="INFO" doc:name="Logger"/>
<set-variable variableName="foreachPayload" value="#[message:payload]" doc:name="Payload"/>
</foreach>
</processor-chain>
</when>
ここでは foreach コンポーネントのペイロードを直接取得できないため、そのペイロードを「foreachPayload」という名前の変数に設定しようとしました。しかし、次のコンポーネントで変数にアクセスしている間、反復されたコレクション オブジェクトの最後の値は、反復されたコレクション オブジェクトの値全体ではありません。
セッション変数にアクセスするコード スニペットを次に示します。
eventContext.getMessage().getInvocationProperty("foreachPayload")
ここで何が問題なのか、これを解決する方法をお知らせください。
以下は私のメッセージフローのスクリーンショットです