2012-11-21 3 views
4

이 질문은 쉽게 대답 할 수 없습니다. 그래서 나는 명확한 방법으로 묻기 위해 최선을 다할 것입니다. 우리는 이미 Enterprise SOA Suite 10G 시스템을 운영하고 있습니다. 작은 과정으로, 나는 이렇게 설명 할 것이다.BPEL-ESB 링크가 WSDL의 새로운 연산으로 중단됩니까?

Consumer-> ESB-> BPEL-> ESB-> 제공자 Webservice를

소비자가 차례로 다시는 ESB를 호출 BPEL에 요청을, forwrds 우리의 ESB 프로세스 중 하나를 호출합니다. 이 최종 ESB는 공급자가 제공하는 외부 WebService를 호출합니다.

이제 더 명확하게 만들 수 있습니다.

소비자 C1 - WSDLExt1 -> ESB1 -> WSDLInt1 -> BPEL - WSDLInt1 -> ESB2 - WSDLExt2 -> 제공자 Webservice를

  • 이를 설명하기 위해, 소비자가 C1은, 첫 번째 ESB는 ESB1입니다. 그들 사이에 사용되는 WSDL은 WSDLExt1입니다.
  • 변환 후 ESB1은 요청을 BPEL로 전달합니다. 그런 다음 BPEL은 요청을 ESB2로 전달합니다. ESB2와 BPEL이 동일한 WSDLInt1을 사용하기 때문에 BPEL에 변형이 없습니다
  • ESB2는 요청을 변환하여 Provider Webservice로 보냅니다. ESB2와 Provider Webservice 사이에서 사용되는 WSDL은 WSDLExt2입니다.

여기에 문제가 있습니다. 이상한 새로운 요구 사항으로 인해 WSDLExt2에 새로운 작업을 추가해야합니다. 참고 : 새 작업 만. 그러나 여기에 비틀어 선다. 1. 새로운 조작을 위해 새 메쉬를 정의한다고 가정합니다. 2. 또는이 새로운 작업을 위해 WSDL에서 기존 (정의 된) 메시지를 계속 사용합니다.

각 상황에서 WSDLInt1을 수정하고 BPEL을 수정해야합니까?

간단히 말해서, 내 질문은 새로운 작업을 추가 할 때 이전 프로세스에 영향을 미칠 것인가라는 것입니다. 이것은 어떤 잘못을 초래할 것입니까?

답변

1

ESB의 역할 중 하나는 예를 들어. BPEL 같은 변화로부터. ESB는 여기에서 프록시으로 작동합니다. 메시지 라우팅/조정은 ESB 내의 BPEL 호출로 발생하며 BPEL에서는 볼 수 없습니다.

따라서, WSDLExt2의 변화는 오랫동안 당신이 WSDLInt1 정의 (및 데이터 유형 등)에 접촉하지 않는 BPEL에 영향을 미치지 않을 것입니다.

BPEL에서이 새로운 조작을 사용하지 않을 경우, BPEL 또는 WSDLInt1을 수정할 필요가 없습니다.

ESB에서 프록시 처리 한 WSDLInt1의 작업 중 하나가 WSDLExt2을 호출하는 경우, 이는 모두 ESB 레벨에서 내부적으로 처리 될 수 있으며 BPEL이 통지하지 않도록 투명하게 수행 할 수 있습니다 어떤 변화. ESB 용어로는 번역 및 변환/프로토콜 변환/서비스 오케스트레이션이라고 할 수 있습니다.