これを行うには多くの方法があります。たとえば純粋なJavaの例をどうやってキャロルに移したいか考えてみてください。将来の行動フローからは違いはありません。あなたは条件を持っています - あなたはIFかSWITCH操作を持っている必要があります。
ストレートフォワード方式。 前のサービスを呼び出した後、次の呼び出しの決定要因である属性を持つ本文に応答があります。 Camelの "choice-when-otherwise"構造(Javaの "switch"文のアナログ)を使用し、 "when"では体からの状態をチェックするために利用可能な方法を使用します(例: "simple"、 "xpath"、 "xquery"など)。 )
次のコールを識別するロジックが複雑な場合 - 次のコールを識別するカスタムプロセッサを作成し、特別な交換プロパティを設定してから同じ「choice-when-otherwise」ブロックに移動してください 例の場合< "previous-result"、 "next-call">というマップを持つことができます。
とあなたのルートが(私は春を使用)のように見えることがあります。
<cml:to uri="previous_uri"/>
<cml:processor ref="my_selector"/> <!-- it sets Exchange property "next_call" based on result from previous -->
<cml:choice>
<cml:when>
<cml:simple>${exchangeProperty.next_call} =="SERVICE1"/>
<cml:to uri="next_service1_uri"/>
... process Service1 result logic ...
</cml:when>
<cml:when>
<cml:simple>${exchangeProperty.next_call} =="SERVICE2"/>
<cml:to uri="next_service2_uri"/>
... process Service2 result logic ...
</cml:when>
のように...