다음을 통해 공유


BizTalk Server 사용하여 Oracle Database에서 오버로드된 함수 및 프로시저 호출

저장 프로시저 및 함수는 Oracle 데이터베이스에서 오버로드할 수 있습니다. Oracle Database 어댑터는 작업의 대상 네임스페이스를 변경하여 오버로드된 함수 및 프로시저를 지원합니다. 예를 들어 오버로드된 두 프로시저의 메시지 구조는 다음과 같습니다.

Stored Procedure Overload 1:  
<[SP_NAME] xmlns="http://Microsoft.LobServices.OracleDB/2007/03/[SCHEMA]/Package/[PACKAGE_NAME]/[SP_NAME]/overload1">    
  <[PRM1_NAME]>value1</[PRM1_NAME]>  
  <[PRM2_NAME]>value1</[PRM2_NAME]>  
  …  
</[SP_NAME]>  
  
Stored Procedure Overload 2:  
<[SP_NAME] xmlns="http://Microsoft.LobServices.OracleDB/2007/03/[SCHEMA]/Package/[PACKAGE_NAME]/[SP_NAME]/overload2">    
  <[PRM1_NAME]>value1</I_[PRM1_NAME]>  
  <[PRM2_NAME]>value1</I_[PRM2_NAME]>  
  …  
</[SP_NAME]>  

SOAP 메시지 구조 및 오버로드된 함수 또는 프로시저를 호출하는 데 필요한 SOAP 작업은 함수 및 프로시저 에 대한 메시지 스키마에 설명된 대로 함수 및 프로시저를 호출하는 것과 유사합니다.

오버로드된 프로시저를 호출하는 것은 BizTalk Server 사용하여 Oracle Database에서 함수 및 프로시저 호출에 설명된 대로 다른 함수를 호출하는 것과 유사합니다. 그러나 오버로드된 함수를 구분하기 위해 Oracle Database 어댑터는 노드 ID와 오버로드된 아티팩트용으로 표시되는 네임스페이스에 고유한 문자열을 추가합니다. 이 문자열은 첫 번째 오버로드의 경우 "overload1", 다음 오버로드의 경우 "overload2" 등입니다.

오버로드된 함수 및 프로시저를 호출하는 방법

BizTalk Server Oracle Database 어댑터를 사용하여 Oracle 데이터베이스에서 작업을 수행하려면 구성 요소에 설명된 절차 작업을 수행하여 Oracle Database를 사용하여 BizTalk 애플리케이션을 개발합니다. Oracle 데이터베이스에서 함수를 호출하려면 다음 작업을 수행합니다.

  1. BizTalk 프로젝트를 만들고 Oracle 데이터베이스에서 호출하려는 오버로드된 함수에 대한 스키마를 생성합니다.

  2. Oracle 데이터베이스에서 메시지를 보내고 받기 위한 메시지를 BizTalk 프로젝트에 만듭니다. 각 오버로드에 대한 메시지를 만들어야 합니다.

  3. Oracle 데이터베이스에서 오버로드된 함수를 호출하는 오케스트레이션을 만듭니다.

  4. BizTalk 프로젝트를 빌드하고 배포합니다.

  5. 물리적 송신 및 수신 포트를 만들어 BizTalk 애플리케이션을 구성합니다.

  6. BizTalk 애플리케이션을 시작합니다.

    이 항목에서는 이러한 작업을 수행하는 지침을 제공합니다.

이 항목을 기반으로 하는 샘플

이 항목을 기반으로 하는 샘플 InvokeOverloadedProc도 BizTalk 어댑터 팩과 함께 제공됩니다. 자세한 내용은 어댑터 샘플을 참조하세요.

스키마 생성

이 항목에서는 오버로드된 함수 또는 프로시저를 호출하는 방법을 설명하기 위해 SCOTT\Package\ACCOUNT_PKG 스키마에서 GET_ACCOUNT 프로시저를 호출합니다. 이 패키지는 샘플과 함께 제공되는 SQL 스크립트를 실행하여 SCOTT 스키마 아래에 만들어집니다. 오버로드된 프로시저입니다. 여기서는 다음을 수행합니다.

  • 하나의 오버로드는 계정 ID를 IN 매개 변수로 사용하고 ACCOUNT%ROWTYPE을 OUT 매개 변수로 반환합니다.

  • 두 번째 오버로드는 계정 이름을 IN 매개 변수로 사용하고 ACCOUNT%ROWTYPE을 OUT 매개 변수로 반환합니다.

    샘플 및 SQL 스크립트에 대한 자세한 내용은 스키마 샘플을 참조하세요.

    오버로드된 함수를 호출하기 위해 오버로드된 프로시저(GET_ACCOUNT.1 및 GET_ACCOUNT.2)에 대한 스키마를 생성합니다. 스키마를 생성하는 방법에 대한 자세한 내용은 Visual Studio에서 Oracle Database 작업에 대한 메타데이터 검색 을 참조하세요.

메시지 및 메시지 형식 정의

이전에 생성한 스키마는 오케스트레이션의 메시지에 필요한 "형식"을 설명합니다. 메시지는 일반적으로 해당 스키마에 의해 정의된 형식인 변수입니다. 첫 번째 단계에서 생성한 스키마를 BizTalk 프로젝트의 오케스트레이션 뷰 창의 메시지에 연결해야 합니다.

이 항목에서는 두 개의 요청-응답 메시지 집합( 첫 번째 오버로드된 프로시저에 대해 하나의 요청-응답 집합 및 두 번째 오버로드된 프로시저에 대한 두 번째 요청-응답 집합)을 만들어야 합니다.

다음 단계를 수행하여 메시지를 만들고 스키마에 연결합니다.

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

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

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

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

    사용 항목 원하는 작업
    ID 요청을 입력합니다.
    메시지 유형 드롭다운 목록에서 스키마를 확장하고 InvokeOverloadedProc.OracleDBBindingSchema.GET_ACCOUNT 선택합니다. 여기서 InvokeOverloadedProc 는 BizTalk 프로젝트의 이름입니다. OracleDBBindingSchema 는 GET_ACCOUNT 프로시저에 대해 생성된 스키마입니다.
  5. 이전 단계를 반복하여 세 개의 메시지를 더 만듭니다. 새 메시지의 속성 창에서 다음을 수행합니다.

    식별자를 로 설정 메시지 유형을 로 설정
    응답 InvokeOverloadedProc.OracleDBBindingSchema.GET_ACCOUNTResponse
    Request2 InvokeOverloadedProc.OracleDBBindingSchema1.GET_ACCOUNT
    Response2 InvokeOverloadedProc.OracleDBBindingSchema1.GET_ACCOUNTResponse

오케스트레이션 설정

Oracle 데이터베이스에서 오버로드된 프로시저를 호출하는 데 BizTalk Server 사용하려면 BizTalk 오케스트레이션을 만들어야 합니다. 이 오케스트레이션에서는 정의된 수신 위치에 오버로드된 각 프로시저에 해당하는 두 개의 요청 메시지를 삭제합니다. Oracle 데이터베이스 어댑터는 메시지를 사용하고 ODP를 통해 Oracle 데이터베이스에 전달합니다. Oracle 데이터베이스의 응답이 다른 위치에 저장됩니다.

오케스트레이션은 두 개의 요청을 동시에 선택하므로 오케스트레이션에 병렬 작업 셰이프를 포함해야 합니다. 각 병렬 작업에 대해 Oracle 데이터베이스에 메시지를 보내고 응답을 받으려면 보내기 및 받기 셰이프를 포함해야 합니다. 그러나 두 작업에 대해 메시지를 보내고 받는 데 동일한 포트를 사용할 수 있습니다. 오버로드된 프로시저를 동시에 호출하기 위한 일반적인 오케스트레이션에는 다음이 포함됩니다.

  • Oracle 데이터베이스에 메시지를 보내고 응답을 받을 셰이프를 보내고 받습니다.

  • Oracle 데이터베이스로 보낼 요청 메시지를 수신하는 단방향 수신 포트입니다.

  • Oracle 데이터베이스에 요청 메시지를 보내고 응답을 수신하는 양방향 송신 포트입니다.

  • Oracle 데이터베이스에서 폴더로 응답을 보내는 단방향 송신 포트입니다.

    GET_ACCOUNT 프로시저에 대한 첫 번째 및 두 번째 오버로드를 호출하는 샘플 오케스트레이션은 다음과 유사합니다.

    f8e4ad6f-9140-43b1-b931-28c9ba11cc8e오버로드된 패키지

메시지 셰이프 추가

각 메시지 셰이프에 대해 다음 속성을 지정해야 합니다. Shape 열에 나열된 이름은 방금 언급한 오케스트레이션에 표시된 메시지 셰이프의 이름입니다. 다음 표에서는 병렬 작업 중 하나에 포함해야 하는 셰이프를 나열합니다.

도형 도형 유형 속성
ReceiveMessage Receive - 이름을ReceiveMessage로 설정
- 활성화True로 설정
SendMessage Send - 이름을SendMessage로 설정
ReceiveResponse Receive - 이름을ReceiveResponse로 설정
- 활성화False로 설정
SendResponse Send - 이름을SendResponse로 설정

다음 표에서는 다른 병렬 작업에 포함해야 하는 셰이프를 나열합니다.

도형 도형 유형 속성
ReceiveMessage2 Receive - 이름을ReceiveMessage2로 설정
- 활성화True로 설정
SendMessage2 Send - 이름을SendMessage2로 설정
ReceiveResponse2 Receive - 이름을ReceiveResponse2로 설정
- 활성화False로 설정
SendResponse2 Send - 이름을SendResponse2로 설정

포트 추가

각 논리 포트에 대해 다음 속성을 지정해야 합니다. 포트 열에 나열된 이름은 오케스트레이션에 표시된 포트의 이름입니다.

포트 속성
FileIn - 식별자를FileIn으로 설정
- TypeFileInType으로 설정
- 통신 패턴을단방향으로 설정
- 수신통신 방향 설정
LOBPort - 식별자를LOBPort로 설정
- 형식LOBPortType으로 설정
- 통신 패턴을Request-Response로 설정
- 통신 방향을Send-Receive로 설정
SaveResponse - 식별자를SaveResponse로 설정
- TypeSaveResponseType으로 설정
- 통신 패턴을단방향으로 설정
- 통신 방향을전송으로 설정

이러한 포트를 사용하여 두 개의 요청 및 응답 메시지를 처리하므로 각 포트에 대해 두 개의 작업을 만들어야 합니다. 여기서 각 작업은 하나의 메시지 유형에 해당합니다. 작업을 만들려면 포트 셰이프를 마우스 오른쪽 단추로 클릭한 다음 새 작업을 선택합니다. 각 포트에 대한 첫 번째 작업의 이름을 Overload1 로 지정하고 각 포트에 대한 두 번째 작업의 이름을 Overload2로 지정합니다.

상관 관계 사용

상관 관계는 들어오는 메시지를 해당 오케스트레이션 인스턴스와 일치시키는 프로세스입니다. 오케스트레이션에서 각 오버로드에 대해 하나씩 두 개의 요청 메시지를 삭제합니다. 상관 관계를 사용하여 요청 메시지를 올바른 오케스트레이션과 연결합니다. 상관 관계에 대한 자세한 내용은 오케스트레이션에서 상관 관계 사용을 참조하세요.

상관 관계를 사용하려면
  1. 오버로드된 각 함수에 대해 생성된 스키마에서 속성을 승격합니다. 예를 들어 첫 번째 오버로드에 대한 스키마에서 AID 속성을 승격합니다. 두 번째 오버로드의 스키마에서 ANAME 속성을 승격합니다. 속성을 승격하려면 스키마 보기에서 속성을 마우스 오른쪽 단추로 클릭하고 승격을 가리킨 다음 빠른 승격을 선택합니다. 그러면 BizTalk 프로젝트에 PropertySchema.xsd 파일이 추가됩니다.

    속성 승격에 대한 자세한 내용은 속성 승격을 참조하세요.

  2. 오케스트레이션 뷰에서 상관 관계 유형을 마우스 오른쪽 단추로 클릭한 다음 새 상관 관계 유형을 선택합니다.

  3. 상관 관계 속성 대화 상자에는 1단계에서 승격한 속성이 나열됩니다. 속성을 선택한 다음 추가를 클릭합니다.

  4. 확인을 클릭합니다.

  5. 다른 승격된 속성에 대한 상관 관계 형식을 만들려면 다음 단계를 반복합니다.

  6. 연결된 속성에 따라 상관 관계 형식의 이름을 바꿉니다. 상관 관계 형식의 이름을 CORRELATIONTYPE_AID (AID 속성의 경우) 및 CorrelationType_ANAME (ANAME 속성의 경우)로 바꿀 수 있습니다.

  7. 오케스트레이션 보기에서 상관 관계 집합을 마우스 오른쪽 단추로 클릭한 다음 새 상관 관계 집합을 선택합니다.

  8. 새로 추가된 상관 관계 집합을 마우스 오른쪽 단추로 클릭한 다음 속성을 클릭합니다. 속성 창에서 다음을 수행합니다.

    사용 항목 원하는 작업
    상관 관계 유형 InvokeOverloadedProc.CorrelationType_AID
    ID Correlation_AID
  9. 다른 상관 관계 집합을 추가하고 속성 창에서 다음 속성을 지정합니다.

    사용 항목 원하는 작업
    상관 관계 유형 InvokeOverloadedProc.CorrelationType_ANAME
    ID Correlation_ANAME

작업 셰이프에 대한 메시지를 지정하고 포트에 연결

다음 표에서는 작업 셰이프에 대한 메시지를 지정하고 메시지를 포트에 연결하도록 설정해야 하는 속성 및 해당 값을 지정합니다. Shape 열에 나열된 이름은 앞에서 언급한 오케스트레이션에 표시된 메시지 셰이프의 이름입니다.

도형 속성
ReceiveMessage - 상관 관계 집합 초기화를Correlation_AID
- 메시지를요청으로 설정
- 작업을FileIn.Overload1.Request로 설정
SendMessage - 메시지를요청으로 설정
- 작업을 LOBPort.Overload1.Request로 설정
ReceiveResponse - 메시지를응답으로 설정
- 작업을 LOBPort.Overload1.Response로 설정
SendResponse - 메시지를응답으로 설정
- 작업을SaveResponse.Overload1.Request로 설정
ReceiveMessage2 - 상관 관계 집합 초기화를Correlation_ANAME
- 메시지를Request2로 설정
- 작업을FileIn.Overload2.Request로 설정
SendMessage2 - 메시지를Request2로 설정
- 작업을 LOBPort.Overload2.Request로 설정
ReceiveResponse2 - 메시지를Response2로 설정
- 작업을 LOBPort.Overload2.Response로 설정
SendResponse2 - 메시지를Response2로 설정
- 작업을SaveResponse.Overload2.Request로 설정

이러한 속성을 지정하면 메시지 셰이프와 포트가 연결되고 오케스트레이션이 완료됩니다.

이제 BizTalk 솔루션을 빌드하고 BizTalk Server 배포해야 합니다. 자세한 내용은 오케스트레이션 빌드 및 실행을 참조하세요.

BizTalk 애플리케이션 구성

BizTalk 프로젝트를 배포한 후에는 이전에 만든 오케스트레이션이 BizTalk Server 관리 콘솔의 오케스트레이션 창 아래에 나열됩니다. 애플리케이션을 구성하려면 BizTalk Server 관리 콘솔을 사용해야 합니다. 연습은 연습 : 기본 BizTalk 애플리케이션 배포를 참조하세요.

애플리케이션 구성에는 다음이 포함됩니다.

  • 애플리케이션에 대한 호스트를 선택합니다.

  • 오케스트레이션에서 만든 포트를 BizTalk Server 관리 콘솔의 실제 포트에 매핑합니다. 이 오케스트레이션의 경우 다음을 수행해야 합니다.

    • 하드 디스크의 위치와 요청 메시지를 삭제할 해당 파일 포트를 정의합니다( 오버로드된 각 프로시저마다 하나씩). BizTalk 오케스트레이션은 요청 메시지를 사용하고 Oracle 데이터베이스로 보냅니다.

    • 하드 디스크의 위치와 BizTalk 오케스트레이션이 Oracle 데이터베이스의 응답을 포함하는 오버로드된 각 프로시저에 대해 하나씩 응답 메시지를 삭제하는 해당 파일 포트를 정의합니다.

    • 물리적 WCF-Custom 정의하거나 Oracle 데이터베이스에 메시지를 보낼 포트를 WCF-OracleDB. 또한 송신 포트에서 작업을 지정해야 합니다. WCF-Custom 또는 WCF-OracleDB 포트를 만드는 방법에 대한 자세한 내용은 Oracle 데이터베이스 어댑터에 대한 물리적 포트 바인딩 수동 구성을 참조하세요. WCF-Custom 또는 WCF-OracleDB 송신 포트는 둘 이상의 스키마를 준수하고 두 개의 작업을 수행하는 메시지를 보내고 받기 때문에 두 작업에 대해 동적 작업을 설정해야 합니다. 작업에 대한 자세한 내용은 Oracle Database에 대한 SOAP 작업 구성을 참조하세요. 이 오케스트레이션의 경우 작업은 다음과 같이 설정되어야 합니다.

      <BtsActionMapping>  
        <Operation Name="Overload1" Action="http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Package/ACCOUNT_PKG/GET_ACCOUNT/overload1" />  
        <Operation Name="Overload2" Action="http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Package/ACCOUNT_PKG/GET_ACCOUNT/overload2" />  
      </BtsActionMapping>  
      

      참고

      어댑터 서비스 사용 BizTalk 프로젝트 추가 기능을 사용하여 스키마를 생성하면 포트에 대한 정보와 해당 포트에 대해 설정할 작업이 포함된 바인딩 파일도 만들어집니다. BizTalk Server 관리 콘솔에서 이 바인딩 파일을 가져와 송신 포트(아웃바운드 호출의 경우) 또는 수신 포트(인바운드 호출의 경우)를 만들 수 있습니다. 자세한 내용은 Oracle Database에 대한 포트 바인딩 파일을 사용하여 물리적 포트 바인딩 구성을 참조하세요.

애플리케이션 시작

Oracle 데이터베이스 테이블에서 함수를 호출하려면 BizTalk 애플리케이션을 시작해야 합니다. BizTalk 애플리케이션 시작에 대한 지침은 오케스트레이션을 시작하는 방법을 참조하세요.

이 단계에서는 다음을 확인합니다.

  • 오케스트레이션에 대한 요청 메시지를 받을 FILE 수신 포트가 실행 중입니다.

  • 오케스트레이션에서 응답 메시지를 받을 FILE 송신 포트가 실행 중입니다.

  • oracle 데이터베이스에 메시지를 보내는 WCF-Custom 또는 WCF-OracleDB 전송 포트가 실행 중입니다.

  • 작업에 대한 BizTalk 오케스트레이션이 실행 중입니다.

작업 실행

애플리케이션을 실행한 후에는 두 개의 요청 메시지(오버로드된 프로시저마다 하나씩)를 FILE 수신 위치에 삭제해야 합니다. 요청 메시지의 스키마는 이전에 생성한 프로시저의 스키마를 준수해야 합니다. Oracle Database 어댑터를 사용하여 함수를 호출하기 위한 요청 메시지 스키마에 대한 자세한 내용은 함수 및 프로시저 에 대한 메시지 스키마를 참조하세요.

예를 들어 GET_ACCOUNT 프로시저의 첫 번째 오버로드를 호출하는 요청 메시지는 다음과 같습니다.

<GET_ACCOUNT xmlns="http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Package/ACCOUNT_PKG/GET_ACCOUNT/overload1">  
  <AID>100001</AID>  
</GET_ACCOUNT>  

마찬가지로 GET_ACCOUNT 프로시저의 두 번째 오버로드를 호출하는 요청 메시지는 다음과 같습니다.

<GET_ACCOUNT xmlns="http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Package/ACCOUNT_PKG/GET_ACCOUNT/overload2">  
  <ANAME>Mindy Martin</ANAME>  
</GET_ACCOUNT>  

첫 번째 요청 메시지는 GET_ACCOUNT 프로시저를 호출하여 계정 ID가 100020과 같은 레코드를 검색합니다. 두 번째 요청 메시지는 GET_ACCOUNT 프로시저를 호출하여 계정 이름이 "John Smith"인 레코드를 검색합니다.

오케스트레이션은 요청 메시지를 사용하고 Oracle 데이터베이스로 보냅니다. Oracle 데이터베이스의 응답은 오케스트레이션의 일부로 정의된 다른 FILE 위치에 저장됩니다. 예를 들어 첫 번째 오버로드된 프로시저를 호출하는 응답은 다음과 같습니다.

<?xml version="1.0" encoding="utf-8"?>  
<GET_ACCOUNTResponse mlns="http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Package/ACCOUNT_PKG/GET_ACCOUNT/overload1">  
 <ACCT>  
  <ACCTID>100001</ACCTID>  
  <NAME>Ty Carlson</NAME>  
  <BALANCE>9000</BALANCE>  
 </ACCT>  
</GET_ACCOUNTResponse>  

가능한 예외

BizTalk Server 사용하여 오버로드된 패키지를 호출하는 동안 발생할 수 있는 예외에 대한 자세한 내용은 예외 및 오류 처리를 참조하세요.

모범 사례

BizTalk 프로젝트를 배포하고 구성한 후에는 바인딩 파일이라는 XML 파일로 구성 설정을 내보낼 수 있습니다. 바인딩 파일을 생성한 후에는 동일한 오케스트레이션을 위해 송신 포트, 수신 포트 등을 만들 필요가 없도록 파일에서 구성 설정을 가져올 수 있습니다. 바인딩 파일에 대한 자세한 내용은 Oracle 데이터베이스 어댑터 바인딩 다시 사용을 참조하세요.

참고 항목

Oracle 데이터베이스를 사용하여 BizTalk 애플리케이션을 개발하는 구성 요소