BizTalk Server 사용하여 Oracle Database 변경 알림을 증분 방식으로 수신
중요
간결함을 위해 이 항목에서는 알림을 증분 방식으로 받는 방법만 설명합니다. 비즈니스 시나리오에서 오케스트레이션은 수신된 알림 메시지의 종류를 추출한 다음 후속 작업을 수행하는 논리를 이상적으로 포함해야 합니다. 즉, 이 항목에 설명된 오케스트레이션은 프로세스 알림 메시지에 설명된 오케스트레이션을 기반으로 빌드되어 BizTalk Server 사용하여 Oracle Database의 특정 작업을 완료해야 합니다.
이 항목에서는 Oracle에서 증분 쿼리 알림 메시지를 받도록 Oracle 데이터베이스 어댑터를 구성하는 방법을 보여 줍니다. 증분 알림을 보여 주려면 "처리됨" 열이 있는 ACCOUNTACTIVITY 테이블을 고려합니다. 이 테이블에 새 레코드를 삽입하면 "Processed" 열의 값이 'n'으로 설정됩니다. 다음을 수행하여 증분 알림을 받도록 어댑터를 구성할 수 있습니다.
"Processed" 열이 'n'인 모든 레코드를 검색하는 SELECT 문을 사용하여 알림을 등록합니다. NotificationStatement 바인딩 속성에 대한 SELECT 문을 지정하여 이 작업을 수행할 수 있습니다.
알림을 받은 행의 경우 "Processed" 열을 'y'로 업데이트합니다.
이 항목에서는 BizTalk 오케스트레이션을 만들고 이를 위해 BizTalk 애플리케이션을 구성하는 방법을 보여 줍니다.
Oracle 데이터베이스 어댑터 바인딩 속성을 사용하여 알림 구성
다음 표에서는 Oracle 데이터베이스에서 알림 수신을 구성하는 데 사용하는 Oracle 데이터베이스 어댑터 바인딩 속성을 요약합니다. BizTalk Server 관리 콘솔에서 수신 포트를 구성하는 동안 이러한 바인딩 속성을 지정해야 합니다.
참고
필수는 아니지만 알림 작업에 대한 스키마를 생성할 때 이러한 바인딩 속성을 지정하도록 선택할 수 있습니다. 이렇게 하면 어댑터 서비스 사용 추가 기능이 메타데이터 생성의 일부로 생성하는 포트 바인딩 파일에도 바인딩 속성에 대해 지정한 값이 포함됩니다. 나중에 BizTalk Server 관리 콘솔에서 이 바인딩 파일을 가져와 바인딩 속성이 이미 설정된 WCF 사용자 지정 또는 WCF-OracleDB 수신 포트를 만들 수 있습니다. 바인딩 파일을 사용하여 수신 포트를 만드는 방법에 대한 자세한 내용은 Oracle Database에 대한 포트 바인딩 파일을 사용하여 물리적 포트 바인딩 구성을 참조하세요.
Binding 속성 | Description |
---|---|
InboundOperationType | 수행할 인바운드 작업을 지정합니다. 알림 메시지를 받으려면 알림으로 설정합니다. |
NotificationPort | Oracle 데이터베이스에서 데이터베이스 변경 알림을 수신 대기하기 위해 ODP.NET 열어야 하는 포트 번호를 지정합니다. |
NotificationStatement | 쿼리 알림에 등록하는 데 사용되는 SELECT 문을 지정합니다. 어댑터는 지정된 SELECT 문에 대한 결과 집합이 변경될 때만 알림 메시지를 가져옵니다. |
NotifyOnListenerStart | 수신기가 시작될 때 어댑터가 어댑터 클라이언트에 알림을 보낼지 여부를 지정합니다. |
이러한 속성에 대한 자세한 설명은 BizTalk Adapter for Oracle 데이터베이스 바인딩 속성 작업을 참조하세요. Oracle 데이터베이스 어댑터를 사용하여 Oracle 데이터베이스에서 알림을 받는 방법에 대한 자세한 내용은 자세히 알아보세요.
이 항목에서 알림 메시지 수신을 보여 주는 방법
이 항목에서는 Oracle 데이터베이스 어댑터가 Oracle 데이터베이스에서 증분 데이터베이스 변경 알림 메시지 수신을 지원하는 방법을 설명하기 위해 ACCOUNTACTIVTY 테이블 변경에 대한 알림을 받도록 어댑터를 구성합니다. ACCOUNTACTIVITY 테이블에 "TID", "Account" 및 "Processed" 열이 있다고 가정해 보겠습니다. 새 레코드가 추가될 때마다 "Processed" 열의 값이 'n'으로 설정됩니다. 따라서 증분 알림을 받으려면 BizTalk 오케스트레이션의 일부로 다음 작업을 수행해야 합니다.
"Processed"가 'n'인 모든 레코드에 대한 알림을 받습니다. SELECT 문을 알림 문으로 지정하여 이 작업을 수행할 수 있습니다.
특정 레코드에 대한 알림을 받은 후 "Processed"를 'y'로 설정합니다. "처리됨" 열을 업데이트하는 저장 프로시저 PROCESS_RECORDS 실행하여 이 작업을 수행할 수 있습니다.
증분 알림 수신을 보여 주려면 다음을 수행합니다.
ACCOUNTACTIVITY 테이블에서 알림 (인바운드 작업) 및 PROCESS_RECORDS (아웃바운드 작업)에 대한 스키마를 생성합니다.
다음이 포함된 오케스트레이션을 만듭니다.
알림 메시지를 받을 수신 위치입니다. SELECT 문을 다음과 같이 지정하여 알림을 구성할 수 있습니다.
SELECT TID,ACCOUNT,PROCESSED FROM SCOTT.ACCOUNTACTIVITY WHERE PROCESSED = ‘n’
참고
스키마 이름과 함께 테이블 이름을 지정해야 합니다. 예:
SCOTT.ACCOUNTACTIVITY
.알림이 이미 전송된 행을 업데이트하는 송신 포트입니다. 이 포트에서 PROCESS_RECORDS 저장 프로시저를 실행하여 알림을 받은 레코드에 대해 "Processed" 열 값을 'y'로 설정합니다.
처리된 행이 업데이트되도록 알림 메시지를 받은 후에 이 작업을 실행해야 합니다. 알림 응답을 받기 위해 대기하는 오버헤드를 없애고 PROCESS_RECORDS 프로시저를 실행하기 위해 요청 메시지를 수동으로 삭제하려면 오케스트레이션 자체 내에서 PROCESS_RECORDS 프로시저에 대한 요청 메시지를 생성합니다. 오케스트레이션 내에서 메시지 생성 셰이프를 사용하여 이 작업을 수행할 수 있습니다.
Oracle 데이터베이스에서 알림 메시지를 받는 방법
BizTalk Server Oracle Database 어댑터를 사용하여 Oracle 데이터베이스에서 작업을 수행하려면 구성 요소에 설명된 절차 작업을 수행하여 Oracle Database를 사용하여 BizTalk 애플리케이션을 개발합니다. 알림 메시지를 받도록 어댑터를 구성하려면 다음 작업을 수행합니다.
BizTalk 프로젝트를 만든 다음 ACCOUNTACTIVITY 테이블에서 알림 (인바운드 작업) 및 PROCESS_RECORDS 프로시저(아웃바운드 작업)에 대한 스키마를 생성합니다. 필요에 따라 InboundOperationType, NotificationPort 및 NotificationStatement 바인딩 속성에 대한 값을 지정할 수 있습니다.
Oracle 데이터베이스에서 알림을 받기 위한 메시지를 BizTalk 프로젝트에 만듭니다.
PROCESS_RECORDS 저장 프로시저를 실행하고 응답 메시지를 수신하기 위한 메시지를 BizTalk 프로젝트에 만듭니다.
다음을 수행하는 오케스트레이션을 만듭니다.
Oracle 데이터베이스에서 알림 메시지를 받습니다.
PROCESS_RECORDS 프로시저를 실행하는 메시지를 만듭니다.
이 메시지를 Oracle 데이터베이스에 보내 레코드를 선택하고 업데이트하고 응답을 받습니다.
BizTalk 프로젝트를 빌드하고 배포합니다.
물리적 송신 및 수신 포트를 만들어 BizTalk 애플리케이션을 구성합니다.
참고
알림 메시지 수신과 같은 인바운드 작업의 경우 단방향 WCF-Custom 구성하거나 수신 포트를 WCF-OracleDB 합니다. 양방향 수신 포트는 인바운드 작업에 지원되지 않습니다.
BizTalk 애플리케이션을 시작합니다.
이 항목에서는 이러한 작업을 수행하는 지침을 제공합니다.
스키마 생성
알림 작업 및 PROCESS_RECORDS 프로시저에 대한 스키마를 생성해야 합니다. 스키마를 생성하는 방법에 대한 자세한 내용은 Visual Studio에서 Oracle 작업에 대한 메타데이터 검색 을 참조하세요. 스키마를 생성할 때 다음 작업을 수행합니다. 디자인 타임에 바인딩 속성을 지정하지 않으려면 첫 번째 단계를 건너뜁니다.
스키마를 생성하는 동안 InboundOperationType, NotificationPort 및 NotificationStatement 바인딩 속성에 대한 값을 지정합니다. 이 바인딩 속성에 대한 자세한 내용은 BizTalk Adapter for Oracle 데이터베이스 바인딩 속성 작업을 참조하세요. 바인딩 속성을 지정하는 방법에 대한 지침은 바인딩 속성 지정을 참조하세요.
계약 유형을 서비스(인바운드 작업)로 선택합니다.
알림 작업에 대한 스키마를 생성합니다.
계약 유형을 클라이언트(아웃바운드 작업)로 선택합니다.
PROCESS_RECORDS 프로시저에 대한 스키마를 생성합니다. 이 절차는 ACCOUNT_PKG 패키지에서 사용할 수 있습니다.
메시지 및 메시지 형식 정의
이전에 생성한 스키마는 오케스트레이션의 메시지에 필요한 "형식"을 설명합니다. 메시지는 일반적으로 해당 스키마에 의해 정의된 형식인 변수입니다. 스키마가 생성되면 BizTalk 프로젝트의 오케스트레이션 보기에서 메시지에 연결해야 합니다.
이 항목에서는 Oracle 데이터베이스에서 알림을 수신하는 메시지, PROCESS_RECORDS 프로시저를 실행하는 메시지, 프로시저에 대한 응답을 받는 메시지 등 세 개의 메시지를 만들어야 합니다.
다음 단계를 수행하여 메시지를 만들고 스키마에 연결합니다.
메시지를 만들고 스키마에 연결하려면
BizTalk 프로젝트에 오케스트레이션을 추가합니다. 솔루션 탐색기 BizTalk 프로젝트 이름을 마우스 오른쪽 단추로 클릭하고 추가를 가리킨 다음 새 항목을 클릭합니다. BizTalk 오케스트레이션의 이름을 입력한 다음 추가를 클릭합니다.
아직 열려 있지 않은 경우 BizTalk 프로젝트의 오케스트레이션 보기 창을 엽니다. 보기를 클릭하고 다른 창을 가리킨 다음 오케스트레이션 보기를 클릭합니다.
오케스트레이션 보기에서 메시지를 마우스 오른쪽 단추로 클릭한 다음 새 메시지를 클릭합니다.
새로 만든 메시지를 마우스 오른쪽 단추로 클릭한 다음 속성 창을 선택합니다.
Message_1속성 창에서 다음을 수행합니다.
사용 항목 원하는 작업 ID NotifyReceive
.메시지 유형 드롭다운 목록에서 스키마를 확장하고 OracleNotifyIncremental.OracleDBBinding.Notification을 선택합니다. 여기서 OracleNotifyIncremental 은 BizTalk 프로젝트의 이름입니다. OracleDBBinding 은 알림 작업에 대해 생성된 스키마입니다. 3단계를 반복하여 두 개의 새 메시지를 만듭니다. 새 메시지의 속성 창에서 다음을 수행합니다.
식별자를 로 설정 메시지 유형을 로 설정 프로시저 OracleNotifyIncremental.OracleDBBinding1.PROCESS_RECORDS여기서 OracleDBBinding1 은 PROCESS_RECORDS 프로시저에 대해 생성된 스키마입니다. ProcedureResponse OracleNotifyIncremental.OracleDBBinding1.PROCESS_RECORDSResponse
오케스트레이션 설정
Oracle 데이터베이스에서 알림 메시지를 받은 다음 알림을 받은 행을 업데이트하는 데 BizTalk Server 사용할 BizTalk 오케스트레이션을 만들어야 합니다. 이 오케스트레이션에서 어댑터는 NotificationStatement 바인딩 속성에 지정된 SELECT 문을 기반으로 알림 메시지를 받습니다. 알림 메시지는 FILE 위치에서 수신됩니다. 응답이 수신되면 오케스트레이션은 알림을 받는 행을 업데이트하는 PROCESS_RECORDS 프로시저를 호출하는 메시지를 생성합니다. 이 메시지에 대한 응답도 동일한 FILE 위치에서 수신됩니다.
따라서 오케스트레이션에는 다음이 포함되어야 합니다.
단방향 WCF-Custom 또는 WCF-OracleDB 알림 메시지를 수신하는 포트를 수신합니다.
양방향 WCF-Custom 또는 WCF-OracleDB 포트를 보내 메시지를 보내 PROCESS_RECORDS 프로시저를 실행합니다.
오케스트레이션 내에서 PROCESS_RECORDS 프로시저를 실행하기 위해 메시지를 생성하는 메시지 생성 셰이프입니다.
알림 메시지와 PROCESS_RECORDS 프로시저에 대한 응답을 저장할 FILE 송신 포트입니다.
셰이프를 받고 보냅니다.
샘플 오케스트레이션은 다음과 유사합니다.
Oracle
메시지 셰이프 추가
각 메시지 셰이프에 대해 다음 속성을 지정해야 합니다. Shape 열에 나열된 이름은 방금 언급한 오케스트레이션에 표시된 메시지 셰이프의 이름입니다.
도형 | 도형 유형 | 속성 |
---|---|---|
ReceiveNotification | Receive | - 이름을ReceiveNotification으로 설정 - 활성화를 True로 설정 |
SaveNotification | Send | - 이름을SaveNotification으로 설정 |
SendProcMessage | Send | - 이름을SendProcMessage로 설정 |
ReceiveProcResponse | Receive | - 이름을ReceiveProcResponse로 설정 |
SaveProcResponse | Send | - 이름을SaveProcResponse로 설정 |
생성 메시지 셰이프 추가
메시지 생성 셰이프를 사용하여 오케스트레이션 내에서 요청 메시지를 생성하여 PROCESS_RECORDS 프로시저를 실행할 수 있습니다. 이렇게 하려면 메시지 생성 셰이프와 메시지 할당 셰이프 내에 오케스트레이션에 추가해야 합니다. 이 예제의 경우 메시지 할당 셰이프는 프로시저를 실행하기 위해 Oracle 데이터베이스로 전송되는 메시지를 생성하는 코드를 호출합니다. 또한 메시지 할당 셰이프는 메시지를 Oracle 데이터베이스로 보낼 작업을 설정합니다.
생성 메시지 셰이프의 경우 Message Constructed 속성을 Procedure로 설정합니다.
응답을 생성하는 코드는 BizTalk 프로젝트와 동일한 Visual Studio 솔루션의 일부일 수 있습니다. 응답 메시지를 생성하기 위한 샘플 코드는 다음과 같습니다.
namespace SampleMessageCreator
{
public class SampleMessageCreator
{
private static XmlDocument Message;
private static string XmlFileLocation;
private static string ResponseDoc;
public static XmlDocument XMLMessageCreator()
{
XmlFileLocation = "C:\\TestLocation\\MessageIn";
try
{
ResponseDoc = (Directory.GetFiles(XmlFileLocation, "*.xml", SearchOption.TopDirectoryOnly))[0];
}
catch (Exception ex)
{
Console.WriteLine("Trying to get XML from: " + XmlFileLocation);
Console.WriteLine("EXCEPTION: " + ex.ToString());
throw ex;
}
//Create Message From XML
Message = new XmlDocument();
Message.PreserveWhitespace = true;
Message.Load(ResponseDoc);
return Message;
}
}
}
위의 코드 발췌에서 요청 메시지를 생성하려면 변수에 대해 지정된 XmlFileLocation
위치에 XML 요청 메시지(PROCESS_RECORDS 프로시저용)가 있어야 합니다.
참고
프로젝트를 빌드한 후 프로젝트 디렉터리에 MessageCreator.dll 만들어집니다. 이 DLL을 GAC(전역 어셈블리 캐시)에 추가해야 합니다. 또한 BizTalk 프로젝트에서 MessageCreator.dll 참조로 추가해야 합니다.
다음 식을 추가하여 메시지 할당 셰이프에서 이 코드를 호출하고 메시지에 대한 작업을 설정합니다. 식을 추가하려면 메시지 할당 셰이프를 두 번 클릭하여 식 편집기를 엽니다.
Procedure = SampleMessageCreator.SampleMessageCreator.XMLMessageCreator();
Procedure(WCF.Action) = "http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Package/ACCOUNT_PKG/PROCESS_RECORDS";
포트 추가
각 논리 포트에 대해 다음 속성을 지정해야 합니다. 포트 열에 나열된 이름은 오케스트레이션에 표시된 포트의 이름입니다.
포트 | 속성 |
---|---|
OracleNotifyPort | - 식별자를OracleNotifyPort로 설정 - 형식을 OracleNotifyPortType으로 설정 - 통신 패턴을단방향으로 설정 - 수신할 통신 방향 설정 |
SaveMessagePort | - 식별자를SaveMessagePort로 설정 - Type을 SaveMessagePortType으로 설정 - 통신 패턴을단방향으로 설정 - 통신 방향을전송으로 설정 - 알림 작업을 만듭니다. 이 작업은 알림 메시지에 사용됩니다. - 작업 프로시저를 만듭니다. 이 작업은 응답 메시지 선택에 사용됩니다. |
OracleOutboundPort | - 식별자를OracleOutboundPort로 설정 - 형식을 OracleOutboundPortType으로 설정 - 통신 패턴을Request-Response로 설정 - 통신 방향을Send-Receive로 설정 |
작업 셰이프에 대한 메시지 지정 및 포트에 연결
다음 표에서는 작업 셰이프에 대한 메시지를 지정하고 메시지를 포트에 연결하도록 설정해야 하는 속성 및 해당 값을 지정합니다. Shape 열에 나열된 이름은 앞에서 언급한 오케스트레이션에 표시된 메시지 셰이프의 이름입니다.
도형 | 속성 |
---|---|
ReceiveNotification | - NotifyReceive로 메시지 설정 - 작업을OracleNotifyPort.Notify.Request로 설정 |
SaveNotification | - NotifyReceive로 메시지 설정 - 작업을SaveMessagePort.Notify.Request로 설정 |
SendProcMessage | - 메시지를프로시저로 설정 - 작업을 OracleOutboundPort.Procedure.Request로 설정 |
ReceiveProcResponse | - 메시지를ProcedureResponse로 설정 - 작업을OracleOutboundPort.Procedure.Response로 설정 |
SaveProcResponse | - 메시지를ProedureResponse로 설정 - 작업을SaveMessagePort.Procedure.Request로 설정 |
이러한 속성을 지정하면 메시지 셰이프와 포트가 연결되고 오케스트레이션이 완료됩니다.
이제 BizTalk 솔루션을 빌드하고 BizTalk Server 배포해야 합니다. 자세한 내용은 오케스트레이션 빌드 및 실행을 참조하세요.
BizTalk 애플리케이션 구성
BizTalk 프로젝트를 배포한 후에는 이전에 만든 오케스트레이션이 BizTalk Server 관리 콘솔의 오케스트레이션 창 아래에 나열됩니다. 애플리케이션을 구성하려면 BizTalk Server 관리 콘솔을 사용해야 합니다. 연습은 연습 : 기본 BizTalk 애플리케이션 배포를 참조하세요.
애플리케이션 구성에는 다음이 포함됩니다.
애플리케이션에 대한 호스트를 선택합니다.
오케스트레이션에서 만든 포트를 BizTalk Server 관리 콘솔의 실제 포트에 매핑합니다. 이 오케스트레이션의 경우 다음을 수행해야 합니다.
물리적 WCF-Custom 정의하거나 단방향 수신 포트를 WCF-OracleDB. 이 포트는 Oracle 데이터베이스에서 오는 알림을 수신 대기합니다. 수신 포트를 만드는 방법에 대한 자세한 내용은 Oracle 데이터베이스 어댑터에 대한 물리적 포트 바인딩 수동 구성을 참조하세요. 수신 포트에 대해 다음 바인딩 속성을 지정해야 합니다.
중요
디자인 타임에 바인딩 속성을 지정한 경우에는 이 단계를 수행할 필요가 없습니다. 이러한 경우 어댑터 서비스 사용 추가 기능에서 만든 바인딩 파일을 가져와 필요한 바인딩 속성이 설정된 수신 포트를 만들 수 있습니다. 자세한 내용은 Oracle Database에 대한 포트 바인딩 파일을 사용하여 물리적 포트 바인딩 구성을 참조하세요.
Binding 속성 값 InboundOperationType 이를 알림으로 설정합니다. NotificationPort Oracle 데이터베이스에서 데이터베이스 변경 알림을 수신 대기하기 위해 ODP.NET 열어야 하는 포트 번호를 지정합니다. Windows 방화벽 예외 목록에 추가해야 하는 동일한 포트 번호로 설정합니다. Windows 방화벽 예외 목록에 포트를 추가하는 방법에 대한 지침은 을 참조하세요 https://go.microsoft.com/fwlink/?LinkID=196959.
중요: 이 값을 기본값 -1로 설정하면 Windows 방화벽을 완전히 사용하지 않도록 설정하여 알림 메시지를 수신해야 합니다.NotificationStatement 다음으로 설정합니다.
SELECT TID,ACCOUNT,PROCESSED FROM SCOTT.ACCOUNTACTIVITY WHERE PROCESSED = ‘n’
참고: 스키마 이름과 함께 테이블 이름을 지정해야 합니다. 예:SCOTT.ACCOUNTACTIVITY
.NotifyOnListenerStart True 로 설정합니다. 다양한 바인딩 속성에 대한 자세한 내용은 Oracle 데이터베이스 바인딩 속성용 BizTalk 어댑터 작업을 참조하세요.
참고
Oracle Database 어댑터를 사용하여 인바운드 작업을 수행하는 동안 트랜잭션 격리 수준 및 트랜잭션 시간 제한을 구성하는 것이 좋습니다. WCF-Custom 구성하거나 수신 포트를 WCF-OracleDB 서비스 동작을 추가하여 수행할 수 있습니다. 서비스 동작을 추가하는 방법에 대한 지침은 트랜잭션 격리 수준 및 트랜잭션 시간 제한 구성을 참조하세요.
물리적 WCF-Custom 정의하거나 PROCESS_REOCRDS 프로시저를 실행하기 위해 Oracle 데이터베이스에 메시지를 보내는 포트를 보낼 WCF-OracleDB 있습니다. 또한 송신 포트에서 작업을 지정해야 합니다.
BizTalk 오케스트레이션이 Oracle 데이터베이스에서 메시지를 삭제할 하드 디스크의 위치와 해당 파일 포트를 정의합니다. 이는 Oracle 데이터베이스에서 받은 알림 메시지와 WCF-Custom 또는 WCF-OracleDB 송신 포트를 통해 실행하는 PROCESS_RECORDS 프로시저에 대한 메시지입니다.
애플리케이션 시작
Oracle 데이터베이스에서 알림 메시지를 받고 PROCESS_RECORDS 프로시저를 실행하려면 BizTalk 애플리케이션을 시작해야 합니다. BizTalk 애플리케이션 시작에 대한 지침은 오케스트레이션을 시작하는 방법을 참조하세요.
이 단계에서는 다음을 확인합니다.
Oracle 데이터베이스에서 실행 중인 알림 메시지를 수신하는 WCF-Custom 또는 WCF-OracleDB 단방향 수신 포트입니다.
PROCESS_RECORDS 프로시저를 실행하기 위한 WCF-Custom 또는 WCF-OracleDB 송신 포트가 실행 중입니다.
Oracle 데이터베이스에서 메시지를 수신하는 FILE 송신 포트가 실행 중입니다.
작업에 대한 BizTalk 오케스트레이션이 실행 중입니다.
작업 실행
ACCOUNTACTIVITY 테이블에 이미 일부 레코드가 있다고 가정합니다. 또한 PROCESS_RECORDS 프로시저를 실행할 XML 메시지를 C:\TestLocation\MessageIn에서 사용할 수 있는지 확인합니다. XML 파일은 다음과 유사합니다.
<PROCESS_RECORDS xmlns="http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Package/ACCOUNT_PKG"/>
BizTalk 오케스트레이션이 시작되면 다음과 같은 작업 집합이 동일한 순서로 수행됩니다.
어댑터는 다음과 유사한 알림 메시지를 받습니다.
\<?xml version="1.0" encoding="utf-8" ?\> <Notification xmlns="http://Microsoft.LobServices.OracleDB/2007/03/Notification/"> <Info>ListenerStarted</Info> <Source>OracleDBBinding</Source> <Type>Startup</Type> </Notification>
이 메시지는 알림 메시지를 받기 위한 수신 포트가 시작되었음을 알 수 있습니다. 요소의
<Info>
값은 "ListnerStarted"입니다.어댑터는 PROCESS_RECORDS 프로시저를 실행합니다. Oracle 데이터베이스의 다음 응답은 프로시저에 대한 것입니다.
<?xml version="1.0" encoding="utf-8" ?> <PROCESS_RECORDSResponse xmlns="http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Package/ACCOUNT_PKG"> <TABLE_DATA> <xs:schema id="NewDataSet" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> <xs:element msdata:IsDataSet="true" name="NewDataSet"> <xs:complexType> <xs:sequence> <xs:element minOccurs="0" maxOccurs="unbounded" name="NewTable"> <xs:complexType> <xs:sequence> <xs:element minOccurs="0" name="TID" type="xs:decimal" /> <xs:element minOccurs="0" name="ACCOUNT" type="xs:decimal" /> <xs:element minOccurs="0" name="PROCESSED" type="xs:string" /> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:schema> <diffgr:diffgram xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1"> <NewDataSet xmlns=""> <NewTable> <TID>1</TID> <ACCOUNT>100001</ACCOUNT> <PROCESSED>n</PROCESSED> </NewTable> <NewTable> ...... ...... </NewTable> ...... ...... </NewDataSet> </diffgr:diffgram> </TABLE_DATA> </PROCESS_RECORDSResponse>
이는 PROCESS_RECORDS 프로시저의 일부로 실행되는 SELECT 문에 대한 응답입니다.
또한 PROCESS_RECORDS 프로시저는 행을 업데이트하여 PROCESSED를 'y'로 설정합니다. 따라서 어댑터는 업데이트 작업에 대한 또 다른 알림을 받습니다.
<?xml version="1.0" encoding="utf-8" ?> <Notification xmlns="http://Microsoft.LobServices.OracleDB/2007/03/Notification/"> <Details> <NotificationDetails> <ResourceName>SCOTT.ACCOUNTACTIVITY</ResourceName> <Info>32</Info> <QueryId>0</QueryId> </NotificationDetails> </Details> <Info>Update</Info> <ResourceNames> <string xmlns="http://schemas.microsoft.com/2003/10/Serialization/Arrays">SCOTT.ACCOUNTACTIVITY</string> </ResourceNames> <Source>Data</Source> <Type>Change</Type> </Notification>
요소에는
Info
"Update"가 포함되어 있습니다.두 번째 알림 후 어댑터는 다시 PROCESS_RECORDS 프로시저를 실행합니다. 그러나 이제 PROCESSED 열이 'n'으로 설정된 레코드가 없으므로 프로시저는 다음과 유사한 빈 응답을 반환합니다.
<?xml version="1.0" encoding="utf-8" ?> <PROCESS_RECORDSResponse xmlns="http://Microsoft.LobServices.OracleDB/2007/03/SCOTT/Package/ACCOUNT_PKG"> <TABLE_DATA> <xs:schema id="NewDataSet" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> <xs:element msdata:IsDataSet="true" name="NewDataSet"> <xs:complexType> <xs:sequence> <xs:element minOccurs="0" maxOccurs="unbounded" name="NewTable"> <xs:complexType> <xs:sequence> <xs:element minOccurs="0" name="TID" type="xs:decimal" /> <xs:element minOccurs="0" name="ACCOUNT" type="xs:decimal" /> <xs:element minOccurs="0" name="PROCESSED" type="xs:string" /> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:schema> <diffgr:diffgram xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1"> <NewDataSet xmlns="" /> </diffgr:diffgram> </TABLE_DATA> </PROCESS_RECORDSResponse>
모범 사례
BizTalk 프로젝트를 배포하고 구성한 후에는 구성 설정을 바인딩 파일이라는 XML 파일로 내보낼 수 있습니다. 바인딩 파일을 생성한 후에는 파일에서 구성 설정을 가져올 수 있으므로 송신 포트를 만들고 동일한 오케스트레이션에 대한 포트를 받을 필요가 없습니다. 바인딩 파일에 대한 자세한 내용은 Oracle 데이터베이스 어댑터 바인딩 다시 사용을 참조하세요.