다음을 통해 공유


7단계(온-프레미스의 경우): 오케스트레이션 만들기

비즈니스 시나리오에 따라 BizTalk Server Service Bus 큐에서 판매 주문 메시지를 받은 후 메시지에서 주문한 수량이 100보다 큰지 여부를 검사 합니다. 수량이 100보다 크면 메시지가 SalesOrder 테이블에 삽입됩니다. 그렇지 않으면 공유 파일 위치로 전송됩니다. Northwind는 오케스트레이션을 만들어 이러한 비즈니스 논리를 이루어냅니다. 이 항목에서는 오케스트레이션을 만드는 방법에 대한 단계별 지침을 제공합니다.

BizTalk Server 프로젝트에 오케스트레이션을 추가하려면

  1. 이미 만든 BizTalk Server 프로젝트를 마우스 오른쪽 단추로 클릭하고 추가를 가리킨 다음 새 항목을 클릭합니다.

  2. 새 항목 대화 상자에서 BizTalk Orchestration을 선택하고 맵 이름을 로 OrderProcessing.odx입력한 다음 추가를 클릭합니다.

오케스트레이션 메시지 만들기

오케스트레이션의 메시지에 필요한 "유형"에 대해서는 앞서 생성한 스키마에 나와 있습니다. 일반적으로 메시지는 변수이며 그 유형은 해당 스키마를 통해 정의됩니다. 이제 오케스트레이션 메시지를 만든 다음 이전에 생성한 스키마에 연결해야 합니다. 다음과 같은 3가지 메시지를 만들어야 합니다.

메시지 이름 해당 스키마
Message1_SO_Inbound 이 메시지는 ECommerceSalesOrder.xsd 스키마의 instance.
Message2_SO_Inbound 이 메시지는 Message1_SO_Inbound 복사본입니다. 메시지 복사본을 만든 다음 새 메시지를 수정하고 원본 메시지는 그대로 유지하는 것이 가장 좋습니다. 자세한 내용은 BizTalk Server 메시지를 참조하세요.
Message1_SO_Outbound 이 메시지는 TableOperations.dbo.SalesOrder(삽입) 스키마의 instance.

메시지를 만들려면

  1. 아직 열려 있지 않은 경우 BizTalk 프로젝트의 오케스트레이션 보기 창을 엽니다. 이렇게 하려면 보기를 클릭하고 다른 창을 가리킨 다음 오케스트레이션 보기를 클릭합니다.

  2. 오케스트레이션 보기에서 메시지를 마우스 오른쪽 단추로 클릭한 다음 새 메시지를 클릭합니다.

  3. 새로 만든 메시지를 마우스 오른쪽 단추로 클릭한 다음 속성 창을 선택합니다.

  4. Message_1속성 창에서 다음을 수행합니다.

    속성 이름 수행 작업
    ID Message1_SO_Inbound을 입력합니다.
    메시지 유형 드롭다운 목록에서 스키마를 확장한 다음 OrderProcessingDemo.ECommerceSalesOrder를 선택합니다. 여기서 OrderProcessingDemo 는 BizTalk 프로젝트의 이름입니다. ECommerceSalesOrder 는 Service Bus 큐에서 받은 판매 주문 메시지의 스키마입니다.
  5. 다음 세부 정보를 지정하면서 메시지 만드는 단계를 반복합니다.

    메시지 이름 작업 수행
    Message2_SO_Inbound - 식별자를 로 설정 Message2_SO_Inbound
    - 메시지 유형을OrderProcessingDemo.ECommerceSalesOrder로 설정
    Message1_SO_Outbound - 식별자를 로 설정 Message1_SO_Outound
    - 메시지 유형을OrderProcessingDemo.TableOperation_dbo_SalesOrder.Insert로 설정

오케스트레이션에 셰이프 추가

오케스트레이션 셰이프는 BizTalk Server 애플리케이션의 흐름을 정의합니다. 이 섹션에서는 필요한 셰이프를 오케스트레이션에 추가합니다.

오케스트레이션에 셰이프를 추가하려면

  1. 시작하려면 수신 셰이프를 추가해야 합니다. 이 셰이프는 Service Bus 큐에서 들어오는 판매 주문 메시지를 수신합니다. 다음과 같이 Receive 셰이프 속성을 설정합니다.

    1. 활성화True로 설정합니다.

    2. 메시지를Message1_SO_Inbound 설정합니다.

    3. 이름을ReceiveOrder로 설정합니다.

  2. 앞에서 설명한 바와 같이 오케스트레이션에서 수신한 원본 판매 주문 메시지의 복사본을 만들어야 합니다.

    1. ReceiveOrder 셰이프 아래에 생성 메시지 셰이프를 끌어서 놓습니다. 이 셰이프를 사용하여 Message2_SO_Inbound 형식의 메시지를 생성하기 때문에 Messages Constructed 속성을 Message2_SO_Inbound 설정합니다.

    2. 메시지 생성 셰이프 내에 메시지 할당 셰이프를 추가합니다. 셰이프를 두 번 클릭하여 식 편집기를 열고 다음을 추가합니다.

      Message2_SO_Inbound = Message1_SO_Inbound; //copy the message  
      Message2_SO_Inbound(*) = Message1_SO_Inbound(*); //copy the context properties on the message  
      

      확인을 클릭합니다.

  3. 비즈니스 시나리오에 따라 메시지는 주문 항목 수량을 기준으로 다른 대상에게 보내져야 합니다. 따라서 들어오는 판매 주문 메시지에서 수량 값을 추출해야 합니다.

    1. 인바운드 메시지(ECommerceSalesOrder.xsd)의 Quantity 요소에는 정렬된 수량의 값이 포함됩니다. 수량 요소를 오케스트레이션의 식에 사용할 수 있도록 이 속성을 승격해야 합니다. 속성을 승격하려면 ECommerceSalesOrder.xsd 스키마를 열고 수량을 마우스 오른쪽 단추로 클릭하고 승격을 가리킨 다음 빠른 승격을 클릭합니다.

    2. 수량 값이 저장될 변수를 만듭니다. 변수를 만들려면 오케스트레이션 뷰에서 변수를 마우스 오른쪽 단추로 클릭한 다음 새 변수를 클릭합니다. 이 변수에는 다음 속성을 설정합니다.

      속성 이름
      ID quantityOrdered을 입력합니다.
      형식 Int32를 선택합니다.
    3. 이제 Quantity 요소의 값을 quantityOrdered 변수에 할당해야 합니다. 메시지 생성 셰이프 뒤의 식 편집기를 끌어서 놓습니다. 편집기를 열고 다음 식을 입력합니다.

      quantityOrdered = Message2_SO_Inbound.Quantity;  
      

      확인을 클릭합니다.

  4. 주문 수량을 추출하고 나면 판단 블록을 만들어야 합니다. 메시지 흐름이 발생될 두 경로가 이 블록을 통해 배치됩니다. 결정 셰이프를 추가하여 오케스트레이션에서 의사 결정 블록을 만듭니다.

    1. 식 편집기 셰이프 뒤의 결정 셰이프를 끌어서 놓습니다.

    2. Rule_1 셰이프를 선택하고 속성 창에서 다음을 지정합니다.

      속성 이름
      ID Yes를 입력합니다. 참고: 다른 경로는 기본적으로 Else입니다.
      quantityOrdered > 100를 입력합니다.

      이제 두 개의 경로를 사용할 수 있습니다. quantityOrdered 변수의 값이 100보다 크면 메시지는 경로를 사용합니다. 그렇지 않으면 Else 경로를 사용합니다. 이제 각 경로에서 수행될 작업을 정의해야 합니다.

  5. 비즈니스 시나리오에 따라 주문 수량이 100보다 크면 메시지가 SalesOrder 테이블에 삽입되어야 합니다. 따라서 경로에서 ECommerceSalesOrder.xsd 스키마를 TableOperations.SalesOrder.Insert 스키마로 변환해야 합니다. 5단계(온-프레미스): 메시지 inito SalesOrder 테이블을 삽입하기 위한 스키마 생성 항목에서 삽입 스키마를 만들었습니다. 스키마를 변환한 후에는 메시지를 SQL Server 데이터베이스 테이블로 나가는 메시지로 보내야 합니다.

    1. 경로 내에서 생성 메시지 셰이프를 끌어서 놓습니다. 셰이프의 Messages Constructed 속성을 Message1_SO_Outbound 설정합니다.

    2. 생성 메시지 셰이프 내에 변환 셰이프를 추가합니다. 셰이프를 두 번 클릭하여 구성 변환 대화 상자를 엽니다. 다음을 수행합니다.

      1. 기존 맵 옵션을 선택합니다.

      2. 정규화된 맵 이름 드롭다운에서 OrderProcessingDemo.SalesOrder_SQL 선택합니다.

      3. 원본에서 Message2_SO_Inbound 선택합니다.

      4. 대상에서 Message1_SO_Outound 선택합니다.

    3. 메시지 생성 셰이프 뒤의 Send 셰이프를 끌어서 놓고 셰이프Message1_SO_OutboundMessage 속성을 로 설정합니다.

  6. 비즈니스 시나리오에 따라 주문 수량이 100보다 작으면 메시지가 공유 파일 위치로 보내져야 합니다. 따라서 Else 경로에서 보내기 셰이프를 추가해야 합니다.

    1. Else 경로 내에서 보내기 셰이프를 끌어서 놓고 셰이프Message2_SO_InboundMessage 속성을 로 설정합니다.

      참고

      Service Bus 큐로부터 받는 동일한 메시지가 아무런 처리 없이 파일 위치로 보내지므로 메시지 속성을 Message2_SO_Inbound로 설정합니다. Message2_SO_Inbound는 Service Bus 큐에서 받은 메시지임을 나타냅니다.

오케스트레이션에 포트 추가

포트는 오케스트레이션과 관련하여 메시지의 입력 및 출력 미디어를 나타냅니다. 메시지는 수신 포트를 사용하여 오케스트레이션에서 사용되며 송신 포트를 사용하여 전송됩니다. 비즈니스 시나리오에서 메시지는 한 미디어(Service Bus 큐)로부터 수신된 다음 메시지 처리 방식이 각기 다른 두 군데 위치(SQL Server 데이터베이스 또는 파일 공유 위치)로 보내집니다. 따라서 오케스트레이션의 일부로서 하나의 수신 포트와 두 개의 송신 포트를 만들어야 합니다.

포트를 추가하려면

  1. 포트 셰이프를 오케스트레이션 Designer포트 Surface 창으로 끌어서 놓아 포트 구성 마법사를 시작합니다. Welcome 페이지에서 다음을 클릭합니다.

  2. 포트 속성 페이지에서 포트 이름을 로 지정 ReceiveSO 하고 다음을 클릭합니다.

  3. 포트 유형 선택 페이지에서 새 포트 유형 만들기 옵션을 선택하고 단방향 통신 패턴을 선택하고 액세스 제한에 대한 기본값을 그대로 두고 다음을 클릭합니다.

  4. 포트 바인딩 페이지의 포트 방향에서 이 포트에서 항상 메시지를 받도록 선택하고 포트를 기본값으로 둡니다. 그런 다음 다음을 클릭합니다.

  5. 마지막 페이지에서 마침을 클릭합니다.

  6. 이 단계를 반복하여 두 개의 송신 포트를 만듭니다. 이 때 속성을 다음과 같이 지정합니다.

    포트 이름 속성
    SendToSQL - 이름을SendToSQL로 설정
    - 새 포트 유형 만들기를 선택합니다.
    - 통신 패턴을 단방향으로 설정
    - 항상 이 포트에서 메시지를 보내도록 포트 방향을 로 설정합니다.
    SendToFile - 이름을SendToFile으로 설정
    - 새 포트 유형 만들기를 선택합니다.
    - 통신 패턴을 단방향으로 설정
    - 항상 이 포트에서 메시지를 보내도록 포트 방향을 로 설정합니다.

Ports와 Message 셰이프 연결

이제 Ports와 Message 셰이프를 연결하여 오케스트레이션을 완성합니다. 오케스트레이션은 ReceiveOrder 셰이프에서 메시지를 수신하고 두 송신 셰이프에서 메시지를 보낼 때 오케스트레이션이 종료될 때 시작됩니다. 이 조건을 사용하여 Ports와 Message 셰이프를 연결합니다.

포트를 Message 셰이프와 연결하려면

  1. ReceiveSO 수신 포트를 ReceiveOrder 셰이프에 연결합니다.

  2. 경로 아래의 Send 셰이프를 SendToSQL 송신 포트에 연결합니다. 메시지가 이 경로(quantityOrdered> 100)에 들어가면 SQL Server 데이터베이스의 SalesOrder 테이블로 전송됩니다.

  3. Else 경로 아래의 보내기 셰이프를 SendToFile 송신 포트에 연결합니다. 이는 메시지가 이 경로(quantityOrdered<= 100)에 들어가면 지정된 파일 위치로 전송된다는 것을 나타냅니다.

    오케스트레이션은 다음과 유사해야 합니다.

    오케스트레이션

참고 항목

자습서 4: BizTalk Server 2013을 사용하여 하이브리드 애플리케이션 만들기