다음을 통해 공유


BPEL 가져오기(BizTalk Server 샘플)

BPEL 가져오기 샘플은 BPEL(비즈니스 프로세스 실행 언어) 프로세스 설명과 관련 아티팩트에서 오케스트레이션을 만드는 방법을 보여 줍니다.

이 샘플의 용도

Wide World Importers는 자동화된 운송 서비스를 소매업체에 제공하는 운송 회사입니다. 특히 Wide World Importers를 통해 소매업체는 다음을 수행할 수 있습니다.

  • 주문 배송 요청

  • 배송 추적

  • 배송 확인

  • 배송에 대한 구매 및 지불 확인

    이러한 서비스 가용성은 WSDL(웹 서비스 기술 언어) 문서를 사용하여 나타낼 수 있지만 BPEL 문서에서 제품 회사가 서비스를 요청하는 일반적인 방식과 Wide World Importers의 응답을 예상하는 방법에 대해 설명합니다.

    Northwind Traders에서 배송을 처리하기 위해 Wide World Importers를 고용하면 BPEL 파일과 전체 상호 작용에 대해 설명하는 관련 아티팩트가 일부 제공됩니다. Northwind Traders는 BPEL 파일을 사용하여 BPELShipping(BizTalk Server 애플리케이션)을 만들어 Wide World Importers를 통해 주문을 자동으로 처리합니다.

    이 샘플은 BPELShipping 응용 프로그램에서 수행하는 다음 시나리오 과정을 단계별로 설명합니다.

  1. Northwind Traders 고객 주문 시스템에서 주문을 받습니다.

  2. Wide World Importers에 배송 요청을 보내고 확인을 요청합니다.

  3. Wide World Importers로부터 배송 요청 확인을 받습니다.

  4. Wide World Importers로부터 픽업 알림을 받습니다.

  5. 고객이 배송품을 받을 때까지 배송 상태 메시지를 받습니다.

  6. Wide World Importers로부터 송장을 받습니다.

  7. Wide World Importers에 송장 승인으로 응답합니다.

  8. Wide World Importers로부터 지불 확인을 받습니다.

  9. 주문 시스템으로 최종 배송 확인을 보냅니다.

    별도의 BizTalk 응용 프로그램(ShipperProcess)은 이 샘플에 대해 Wide World Importers를 시뮬레이트하는 데 사용됩니다. BPELShipping 응용 프로그램은 FILE 전송을 사용하여 ShipperProcess와 통신합니다. 이때 통신을 위해 일반적인 파일 시스템 위치가 사용됩니다.

이 샘플이 디자인된 방식 및 이유

웹 서비스용 BPEL은 XML 기반 언어로 웹 서비스를 사용하여 다른 회사와 비즈니스를 수행하려는 여러 회사에서 쉽게 공유할 수 있도록 비즈니스 프로세스에 대해 설명합니다. BPEL은 비즈니스 프로토콜 수준에서 비즈니스 프로세스를 처리하는 방법에 대해 설명하지만 회사에서 파트너로부터 구매 주문을 받은 이후 해당 주문을 처리하기 위해 수행하는 단계와 같은 회사의 내부 프로세스에 대해서는 설명하지 않습니다. 이 샘플은 사용자에게 BPEL 및 해당 WSDL 파일을 가져와 오케스트레이션으로 변환한 다음 파트너와 비즈니스 프로세스를 실행하기 위해 시작하는 방법에 대해 보여 주기 위해 디자인되었습니다.

다음은 BPEL 및 WSDL 파일을 가져와 오케스트레이션으로 변환하여 사전에 빌드된 BizTalk 응용 프로그램(ShipperProcess)과 상호 작용하는 방법을 보여 주는 단계별 절차입니다. 다음 단계를 완료하면 "BPELShipping 응용 프로그램을 빌드 및 초기화하려면"에 설명된 단계를 수행하지 않아도 됩니다.

작업 솔루션을 BPEL에서 가져와 빌드하려면

  1. Microsoft Visual Studio의 파일 메뉴에서 새로 만들기를 클릭한 다음 프로젝트를 클릭합니다.

    참고

    이 절차를 완료하려면 먼저 ShipperProcess 응용 프로그램에서 지원 프로세스 및 스키마 프로젝트를 만들도록 설정해야 합니다.

  2. 새 프로젝트 대화 상자의 프로젝트 형식 창에서 BizTalk(프로젝트)를 선택합니다. 템플릿 창에서 BizTalk(서버) BPEL 가져오기 프로젝트를 선택합니다.

  3. 이름 상자에 BPELShipping을 입력합니다.

    참고

    다른 이름을 사용하는 경우 마지막 바인딩 단계에서 문제가 발생할 수 있습니다.

  4. 프로젝트의 위치를 선택한 다음 확인을 클릭하여 BPEL 가져오기 마법사를 시작합니다.

  5. Welcome 페이지에서 다음을 클릭합니다.

  6. BPEL, WSDL 및 XSD 파일 선택 페이지에서 찾아보기를 클릭합니다.

  7. 샘플 경로>\Orchestrations\BPELImport\BPELSource 폴더에서 < 모든 파일을 선택하고 열기를 클릭한 다음 다음을 클릭합니다.

    참고

    이 단계에서 비즈니스 프로세스 및 XSD 파일에 대해 설명할 BPEL 및 WSDL 파일을 선택하여 비즈니스 문서 스키마를 나타냅니다.

  8. 호출된 WebServices에 대한 WSDL 파일 선택 페이지에서 마침을 클릭합니다.

  9. BPEL 가져오기 마법사에서 가져오기가 성공했음을 보고하고 나면 마법사를 닫습니다. 이제 프로젝트가 만들어졌습니다.

  10. Visual Studio 명령 프롬프트에서 디렉터리(cd)를 프로젝트 위치로 변경합니다.

  11. 다음 명령 실행:

    sn –k BPELShipping.snk

  12. 솔루션 탐색기 BPELShipping 프로젝트를 마우스 오른쪽 단추로 클릭한 다음 속성을 클릭합니다.

  13. 공통 속성\어셈블리에서 11단계에서 만든 어셈블리 키 파일 BPELShipping.snk를 선택하고 확인을 클릭합니다.

  14. 솔루션 탐색기에서 모든 .xsd 파일을 선택하여 삭제합니다.

  15. 솔루션 탐색기 참조 추가를 선택하고 프로젝트 탭에서 찾아보기를 클릭합니다.

  16. 샘플 경로>\Orchestrations\BPELImport\Solution\ShipperProcess\ShippingSchemas\bin\Development 위치에서 <ShippingSchemas.dll 선택하고 확인을 클릭합니다.

    참고

    "ShipperProcess 응용 프로그램을 빌드 및 초기화하려면" 섹션에는 이 파일을 빌드하는 방법에 대한 지침이 있습니다.

  17. 솔루션 탐색기 OrderShippingProcess.bpel.odx를 두 번 클릭합니다.

  18. 보기 메뉴에서 다른 Windows/오케스트레이션 보기를 선택합니다.

  19. 오케스트레이션 보기 창에서 오케스트레이션 속성을 마우스 오른쪽 단추로 클릭한 다음 속성 창을 클릭합니다.

  20. 속성 창 Orchestration Exportable 속성을 False로 설정합니다.

  21. 솔루션 탐색기 OrderShipping.wsdl.odx를 두 번 클릭합니다.

  22. 오케스트레이션 보기 창에서 형식/다중 파트 메시지 형식을 확장합니다.

  23. InvoiceAckMessageType을 확장한 다음 InvoiceAckMessagePart를 클릭합니다.

  24. 속성 창 형식 필드를 확장하고 스키마/참조된 어셈블리에서 선택을 선택합니다.

  25. 아티팩트 유형 선택 대화 상자에서 ShippingSchemas를 클릭하고 Imported_InvoiceAckMessage 형식을 선택한 다음 확인을 클릭합니다.

    참고

    23~25단계에서는 BPEL 프로세스에 참여한 서비스의 메시지 유형을 ShippingSchemas에서 설명한 해당 메시지 유형으로 바꿉니다.

  26. 다음 값을 사용하여 각 메시지 유형별로 23~25단계를 반복합니다.

    메시지 파트 메시지 유형
    InvoiceMessagePart ShippingSchemas.Imported_InvoiceMessage
    OrderAckMessagePart ShippingSchemas.Imported_OrderAckMessage
    OrderMessagePart ShippingSchemas.Imported_OrderMessage
    PaymentConfirmationMessagePart ShippingSchemas.Imported_PaymentConfirmationMessage
    PickupNotificationMessagePart ShippingSchemas.Imported_PickupNotificationMessage
    ShipConfirmationMessagePart ShippingSchemas.Imported_ShipConfirmationMessage
    ShippingHistoryPart ShippingSchemas.Imported_ShippingHistory
    ShipRequestAckMessagePart ShippingSchemas.Imported_ShipRequestAckMessage
    ShipRequestMessagePart ShippingSchemas.Imported_ShipRequestMessage
    ShipStatusMessagePart ShippingSchemas.Imported_ShipStatusMessage
  27. 솔루션 탐색기 BPELShipping 프로젝트를 마우스 오른쪽 단추로 클릭하고 추가를 가리킨 다음 기존 항목을 클릭합니다.

  28. 샘플 경로>\오케스트레이션\BPELImport\Solution\BPELShipping\BPELShipping 위치에서 < 모든 .btm 파일을 선택합니다.

  29. 오케스트레이션 보기 창에서 ConstructMessage1에서 MessageAssignment_1이라는 메시지 할당 셰이프를 찾아 삭제합니다.

  30. 도구 상자에서 변환 셰이프를 ConstructMessage1 도형으로 끌어옵니다.

  31. 속성 창 줄임표 단추(...)를 클릭하고 구성 변환 대화 상자를 엽니다.

  32. 기존 맵을 선택합니다.

  33. 정규화된 맵 이름을 BPELShipping.Order2ShipRequest로 선택합니다.

  34. 원본을 순서대로 선택합니다 . OrderMessagePart.

  35. 대상을 ship_request 선택합니다 . ShipRequestMessagePart 를 클릭하고 확인을 클릭합니다.

  36. 메시지 할당 셰이프에 대해 29~35단계를 반복하고 다음 표에 따라 변환 셰이프로 바 니다.

    바꿀 셰이프 사용할 맵 원본 문서 대상 문서
    MessageAssignment_2 BPELShipping.Order2OrderAck order.OrderMessagePart order_ack.OrderAckMessagePart
    MessageAssignment_3 BPELShipping.Order2OrderNAck order.OrderMessagePart order_ack.OrderAckMessagePart
    MessageAssignment_4 BPELShipping.Order2ShipHistory order.OrderMessagePart ship_history.ShippingHistoryPart
    MessageAssignment_5 BPELShipping.ShipHistory2Completed order.OrderMessagePart ship_history.ShippingHistoryPart
    MessageAssignment_6 BPELShipping.Invoice2Ack invoice.InvoiceMessagePart invoice_ack.InvoiceAckMessagePart
    MessageAssignment_7 BPELShipping.Order2FinalConfirmation order.OrderMessagePart order_shipped.OrderAckMessagePart
  37. 오케스트레이션을 저장합니다.

  38. 셰이프 결정Decision_1Rule_1 두 번 클릭합니다.

  39. BizTalk 식 편집기에서 다음을 바꿉니다.

    ship_request_ack(BPELShipping.Ship_Acknowledged) == true

    다음과 같이 바꿉니다.

    ship_request_ack(ShippingSchemas.Ship_Acknowledged) == true

  40. Loop_1루프 셰이프를 두 번 클릭합니다.

  41. BizTalk 식 편집기에서 다음을 바꿉니다.

    ship_history(BPELShipping.Ship_Completed) == true

    다음과 같이 바꿉니다.

    ship_history(ShippingSchemas.Ship_Completed) == true

  42. 셰이프 결정 Decision_2Rule_2 두 번 클릭합니다.

  43. BizTalk 식 편집기에서 다음을 바꿉니다.

    ship_status(BPELShipping.ShipStatus) == "DONE"

    다음과 같이 바꿉니다.

    ship_status(ShippingSchemas.ShipStatus) == "DONE"

  44. 오케스트레이션 뷰에서 형식/상관 관계 형식을 확장하고 OrderCorrelationSet_Type\를 클릭합니다.

  45. 속성 창 상관 관계 속성에서 줄임표 단추(...)를 클릭합니다.

  46. 속성 창에서 BPELShipping.OrderID를 클릭한 다음 제거를 클릭합니다.

  47. 사용 가능한 속성 창에서 배송 스키마를 확장하고 주문 ID를 선택한 다음 추가를 클릭합니다.

  48. 확인을 클릭합니다.

  49. 모든 파일을 저장하고 솔루션을 빌드합니다.

  50. 솔루션을 배포합니다.

  51. 샘플 경로>\오케스트레이션\BPELImport\Solution\BPELShipping 위치를 < 찾아 BindAndStartOnly.bat 두 번 클릭하여 오케스트레이션을 바인딩하고 시작합니다.

이 샘플이 있는 위치

<샘플 경로>\오케스트레이션\BPELImport

다음 표는 이 샘플의 파일을 보여 주고 각각의 용도에 대해 설명합니다.

파일 Description
BPELSource\InvoiceAckMessage.xsd 송장 승인 스키마입니다.
BPELSource\InvoiceMessage.xsd 송장 스키마입니다.
BPELSource\OrderAckMessage.xsd 주문 승인 스키마입니다.
BPELSource\OrderHeader.xsd 주문 헤더 스키마입니다.
BPELSource\OrderMessage.xsd 주문 메시지 스키마입니다.
BPELSource\OrderShipping.wsdl BPEL에서 참조하는 WSDL 파일입니다.
BPELSource\OrderShippingProcess.bpel BPEL 프로세스 흐름입니다.
BPELSource\PaymentConfirmationMessage.xsd 지불 확인 메시지입니다.
BPELSource\PickupNotificationMessage.xsd 픽업 알림 메시지입니다.
BPELSource\ShipConfirmationMessage.xsd 배송 확인 메시지입니다.
BPELSource\ShippingHistory.xsd 배송 기록 문서입니다.
BPELSource\ShipRequestAckMessage.xsd 배송 요청 승인입니다.
BPELSource\ShipRequestMessage.xsd 배송 요청 메시지입니다.
BPELSource\ShipStatusMessage.xsd 배송 상태 메시지입니다.
Solution\bindings\BPELBindings.xml BPELShipping 오케스트레이션에 대한 포트 바인딩을 지정하는 바인딩 파일입니다.
Solution\bindings\ShipperBindings.xml ShipperProcess 오케스트레이션에 대한 포트 바인딩을 지정하는 바인딩 파일입니다.
Solution\BPELShipping\BindAndStartOnly.bat BPELImport 오케스트레이션을 수동으로 빌드하고 배포한 후에 바인딩하고 시작하기 위해 사용하는 일괄 처리 파일입니다.
Solution\BPELShipping\cleanup.bat BPELShipping 프로세스를 제거하기 위해 사용하는 일괄 처리 파일입니다.
Solution\BPELShipping\Setup.bat 제공된 BPELShipping 샘플을 설치 및 시작하기 위해 사용하는 일괄 처리 파일입니다.
Solution\BPELShipping\BPELShipping.sln 사전에 빌드된 BPELShipping 샘플입니다.
olution\BPELShipping\BPELShipping\Invoice2Ack.btm 송장 대 송장 승인 맵입니다.
Solution\BPELShipping\BPELShipping\Order2FinalConfirmation.btm 주문 메시지에서 마지막 배송 확인으로 변환하는 맵입니다.
Solution\BPELShipping\BPELShipping\Order2OrderAck.btm 주문 메시지에서 주문 승인으로 변환하는 맵입니다.
Solution\BPELShipping\BPELShipping\Order2OrderNack.btm 주문 메시지에서 주문 부정 승인으로 변환하는 맵입니다.
Solution\BPELShipping\BPELShipping\Order2ShipHistory.btm 주문 메시지에서 배송 기록 문서로 변환하는 맵입니다.
Solution\BPELShipping\BPELShipping\Order2ShipRequest.btm 주문 메시지에서 배송 요청으로 변환하는 맵입니다.
Solution\BPELShipping\BPELShipping\ShipRequest2Completed.btm 배송 기록을 완료됨으로 설정하는 맵입니다.
Solution\ShipperProcess\setup.bat ShipperProcess 도우미 오케스트레이션 및 해당 포트를 빌드, 배포, 바인딩 및 시작할 일괄 처리 파일입니다.
Solution\ShipperProcess\cleanup.bat ShipperProcess 도우미 오케스트레이션 및 해당 포트를 중지, 등록 취소 및 배포 취소할 일괄 처리 파일입니다.

이 샘플 빌드 및 초기화

첫 번째 단계는 Wide World Importers를 시뮬레이트션하는 데 사용되는 ShipperProcess 응용 프로그램을 빌드 및 초기화하는 것입니다.

ShipperProcess 응용 프로그램을 빌드 및 초기화하려면

  1. Visual Studio 명령 프롬프트를 시작합니다.

  2. Visual Studio 명령 프롬프트에서 디렉터리(cd)를 다음 폴더로 변경합니다.

    <Samples Path>\Orchestrations\BPELImport\Solution\ShipperProcess

  3. 다음 작업을 수행하는 Setup.bat 파일을 실행합니다.

    • ShipperProcess 및 BPELShipping 프로세스에서 사용된 스키마가 포함되어 있는 ShippingSchemas 프로젝트 빌드

    • ShipperProcess 빌드

    • ShippingSchemas 및 ShipperProcess 프로젝트 배포

    • ShipperProcess에서 사용되는 송신 및 수신 포트를 만들고 바인딩

    • ShipperProcess에서 사용되는 포트 시작

    • ShipperProcess 오케스트레이션 등록 및 시작

    이 샘플을 실행하기 전에 빌드 및 초기화 프로세스 동안 보고된 오류가 없는지 확인해야 합니다. 다음 경고 중 하나 이상이 표시될 수 있습니다. 이 경고는 무시해도 됩니다.

The 'http://contoso.org/samples/Fragments:XXXX' element is not declared. An error occurred at , (35, 16).  
<SAMPLE_LOCATION>\Orchestrations\BPELImport\Solution\ShipperProcess\ShipperProcess\ShipperProcess.odx(701,13): warning X4014: convoy processing will not occur -- check your protocol if you were expecting it  
<SAMPLE_LOCATION>\Samples\Orchestrations\BPELImport\Solution\ShipperProcess\ShipperProcess\ShipperProcess.odx(667,22): convoy found at 'activate receive(Receive_ShipOrder.Operation_1, Request, initialize Correl)'  
<SAMPLE_LOCATION>\Samples\Orchestrations\BPELImport\Solution\ShipperProcess\ShipperProcess\ShipperProcess.odx(701,13): and 'receive(ReceiveInvoiceAck.Operation_1, Invoice_Ack, Correl)'  

참고

"작업 솔루션을 BPEL에서 가져와 빌드하려면"에 설명된 단계를 완료한 경우 다음 단계를 수행하지 않아도 됩니다.

BPELShipping 응용 프로그램을 빌드 및 초기화하려면

  1. 경고

    이 단계를 수행하려면 먼저 위츼 “ShipperProcess 응용 프로그램을 빌드 및 초기화하려면" 제목에 있는 단계를 완료해야 합니다.

    Visual Studio 명령 프롬프트에서 디렉터리(cd)를 다음 폴더로 변경합니다.

    <샘플 경로>\오케스트레이션\BPELImport\Solution\BPELShipping

  2. 다음 작업을 수행하는 Setup.bat 파일을 실행합니다.

    • BPELShipping 프로젝트 빌드

    • BPELShipping 프로젝트 배포

    • BPELShipping 프로세스에서 사용되는 송신 및 수신 포트를 만들고 바인딩

    • BPELShipping 프로세스에서 사용되는 포트 시작

    • BPELShipping 오케스트레이션 등록 및 시작

이 샘플 실행

BPEL 가져오기 샘플을 실행하려면

  1. Samples Path>\Orchestrations\BPELImport\Solution 폴더의<Order.xml파일을 Samples Path>\Orchestrations\BPELImport\Solution\Ports\ReceiveOrder 폴더로 복사합니다.<

  2. BPELShipping 오케스트레이션은 고객 주문 처리 시스템에서 주문으로 이 파일을 선택하고, 배송 프로세스를 통해 실행되며, Samples Path>\Orchestrations\BPELImport\Solution\Ports\SendOrder 폴더와 <Samples Path>\Orchestrations\BPELImport\Solution\Ports\FinalConfirmation 폴더에 각각 < 하나의 파일을 생성합니다. 이러한 파일의 이름 형식은 <MessageID>.xml. 여기서 <MessageID> 는 메시지를 고유하게 식별하기 위해 생성된 GUID입니다.

이 샘플 제거

BPEL 가져오기 샘플을 제거하려면

  1. Visual Studio 명령 프롬프트에서 디렉터리(cd)를 <샘플 경로>\오케스트레이션\BPELImport\BPELShipping으로 변경합니다.

  2. Cleanup.bat를 실행합니다.

  3. <샘플 경로>\오케스트레이션\BPELImport\ShipperProcess로 이동합니다.

  4. Cleanup.bat를 실행합니다.

참고 항목

오케스트레이션(BizTalk Server 샘플 폴더)