거기에는 여러 가지 방법이 있습니다. 예를 들어 순수한 자바의 예제와 같은 논리를 어떻게 수행하고 Camel로 옮기고 싶은지 생각해보십시오. 예상되는 행동 흐름에서 차이점은 없습니다. 조건이 있습니다 - 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>
등등 ...
을