그림은 비디오 메시지 세트 에서 메시지를 구성하는 오브젝트와 논리 형식을 보여줍니다. 여기에 있는 그림의 설명을 읽을 수도 있습니다.
비디오 메시지 세트는 Video Rental 샘플 메시지 모델의 구성요소입니다. 메시지 모델에서 논리적 메시지 모델 및 이와 연관된 물리적 형식을 빌드하는 방법을 볼 수 있습니다. Video Rental 샘플의 메시지 모델에는 비디오를 대여 중인 고객의 데이터가 포함됩니다. 메시지에 포함되는 데이터는 다음과 같습니다.
자세한 정보는 WebSphere Message Broker 문서에 있는 메시지 모델을 읽으십시오.
메시지 모델의 요소는 복합 및 단순 유형에 기초합니다. 음영 처리된 상자는 복합 유형에 기초하는 요소를 나타내고, 음영이 없는 상자는 단순 유형에 기초하는 요소를 나타냅니다. 그림에서처럼 메시지 모델에는 단순 유형에 기초한 14개의 요소가 포함됩니다. 단순 유형은 문자열, 정수 및 바이트와 같은 데이터 유형입니다. 이 단순 유형은 그림에서 음영 처리되지 않은 요소의 기초가 됩니다. Customer의 하위인 'Magazine' 및 'ID' 요소를 제외한 메시지 모델 내의 모든 단순 요소는 복합 요소 또는 그룹의 하위입니다. 이러한 복합 요소와 그룹은 Customer 복합 유형의 하위입니다. 복합 유형은 실제로 유형 내에 포함되는 데이터의 템플리트인 구조 정의입니다. 이 복합 유형은 그림에서 음영 처리된 요소의 기초가 됩니다.
복합 유형은 이름을 지정하거나 익명이 될 수 있습니다. Video 메시지 모델에서 Address 및 Borrowed의 복합 유형은 익명(로컬)이고, Name의 복합 유형에는 이름이 지정(전역)되었습니다. 이름 지정된 복합 유형은 다른 스키마와 같은 모든 위치에서 사용할 수 있지만, 익명 복합 유형은 이 유형을 포함하는 선언에서만 사용할 수 있습니다. 따라서 이름 지정된 복합 유형을 사용하는 것이 더 유리합니다. 예를 들어, 이름 지정된 복합 유형을 사용하면 조직 간에 정보를 더 쉽게 공유할 수 있습니다. 그러나 익명의 복합 유형을 사용하는 것이 더 바람직한 경우가 있습니다. 예를 들어, 복합 유형을 어디에서나 재사용해서는 안되는 경우가 그렇습니다.
IdGroup 오브젝트는 그룹이라는 점에서 메시지에 있는 다른 요소와는 다릅니다. IdGroup은 PassportNo, DrivingLicenseNo 및 CreditCardNo 요소의 작동 방식을 정의하는 데 도움이 됩니다. 고객이 비디오 대여점에서 새 계정을 개설할 때, 신원을 증명하기 위해 한 가지 유형의 ID만 필요합니다. 그룹을 작성한 후 그룹의 구성원으로 PassportNo, DrivingLicenseNo 및 CreditCardNo를 정의하면 세 유형의 ID 중 하나만 선택할 수 있도록 메시지 모델을 구성할 수 있습니다. 즉, 세 요소가 위의 유형 내에서 하나의 선택 항목으로 간주됩니다. 요소를 유형에 직접 포함시키면, 세 요소를 모두 동시에 입력할 수 있습니다.
메시지 모델의 다른 구성 방식을 보여주기 위해 LastName 오브젝트가 요소가 아닌 속성으로 작성됩니다. 오브젝트를 속성으로 작성하면 XML의 구성 방식에 영향을 미칩니다.
자세한 정보는 WebSphere Message Broker 문서에 있는 메시지 모델 오브젝트를 읽으십시오.
Video Rental 샘플에서는 또한 메시지 모델, XML 입력 메시지 및 메시지 플로우가 메시지 부분을 참조하는 데 사용되는 ESQL에서 네임스페이스의 사용을 보여줍니다. Video Rental 샘플은 세 개의 메시지 정의가 포함됩니다. Customer 정보에 대한 메시지 정의 파일은 대상 네임스페이스를 가지고 있지 않습니다. 그러나 Address 및 Borrowed 정보에 대한 메시지 정의 파일은 대상 네임스페이스를 가지고 있습니다. Address 및 Borrowed에 대한 메시지 정의 파일을 Customer 정보에 대한 메시지 정의 파일로 들여옵니다. Address와 Borrowed를 서로 다른 네임스페이스에 위치시킨다는 것은 이 요소를 다른 업무용으로 어느 곳에서나 쉽게 사용할 수 있다는 것을 의미합니다.
정보의 논리적 그룹화는 회사의 고객 서비스 부서 등에서 수집한 데이터를 송장(invoice) 담당 부서 또는 판매부와 같은 기타 부서와 쉽게 공유할 수 있음을 의미합니다. 공유해야 하는 오브젝트를 서로 다른 네임스페이스에 위치시킬 필요는 없지만, 이 방법이 공유하는 데 도움이 되는 경우도 있습니다. 예를 들어, 서로 무관하게 작업하는 개발자가 같은 이름으로 오브젝트를 작성할 수 있지만, 업무적 의미는 서로 다를 수 있습니다. 오브젝트를 서로 다른 네임스페이스에 두면 이름 충돌 없이 독립적으로 오브젝트 세트를 개발할 수 있습니다.
네임스페이스는 한 그룹의 개발자가 오브젝트를 개발하는 경우에도 도움이 됩니다. 예를 들어, Name이라는 오브젝트에는 여러 가지 의미가 있을 수 있습니다. 즉, 고객 이름 또는 제품 이름을 의미할 수 있습니다. 문제가 발생하지 않도록 하는 한 가지 방법은 CustomerName 및 ProductName과 같은 이름으로 오브젝트를 작성하는 것이지만, 이 경우 이름이 너무 길어집니다. 다른 방법은 고객 정보와 관련된 모든 오브젝트를 한 네임스페이스에 두고 제품과 관련된 오브젝트를 모두 다른 네임스페이스에 두는 것입니다. 그러면 오브젝트가 속하는 네임스페이스가 네임스페이스의 컨텍스트를 판별할 수 있습니다.
자세한 정보는 WebSphere Message Broker 문서의 네임스페이스를 읽으십시오.
WebSphere Message Broker는 메시지의 물리적 표현을 자세히 정의할 수 있도록 여러 물리적 형식을 지원합니다. 예를 들어, 사용자 정의 Wire 형식(CWF)을 메시지 세트에 추가하면 이 형식의 입력 메시지를 처리하고, 이 형식의 출력 메시지를 구성하며, 메시지를 CWF에서 TDS나 XML로 또는 TDS나 XML에서 CWF로 변환할 수 있습니다. 세 가지 물리적 형식의 입력 메시지는 다음 절에 설명되어 있습니다.
자세한 정보는 WebSphere Message Broker 문서의 물리적 형식을 읽으십시오.
아래에 CWF 물리적 형식의 Video 고객 메시지가 표시되어 있습니다. (전체 메시지를 보려면 오른쪽으로 화면이동해야 할 수도 있습니다.)
Mr Fred Bloggs 12 Willow Avenue Salisbury CJ123456TT Fast Cars 2003-05-233.00Cut To The Chase 2003-05-233.751
사용자 정의 Wire 형식은 태그를 사용하지 않습니다. 예를 들어, 위의 메시지에서 첫 번째
필드(Mr 값 필드)의 길이는 3이지만, 필드의 끝을 나타내는 태그가 없습니다. 다른 필드를 읽기 쉽도록 하기 위해 서로 다른 행으로 분리할 경우,
사용자 정의 Wire 형식의 Video 고객 메시지는 다음과 같이 표시됩니다.
Mr Fred Bloggs 12 Willow Avenue Salisbury C J123456TT Fast Cars 2003-05-23 3.00 Cut To The Chase 2003-05-23 3.75 1
Video 고객 메시지는 다음과 같이 XML 형식으로 구성됩니다.
<Customer xmlns:addr="http://www.ibm.com/AddressDetails" xmlns:brw="http://www.ibm.com/BorrowedDetails">
<Name LastName="Bloggs">
<Title>Mr</Title>
<FirstName>Fred</FirstName>
</Name>
<addr:Address>
<HouseNo>13</HouseNo>
<Street>Oak Street</Street>
<Town>Southampton</Town>
</addr:Address> <ID>P</ID>
<PassportNo>J123456TT</PassportNo>
<brw:Borrowed>
<VideoTitle>Fast Cars</VideoTitle>
<DueDate>2003-05-23T01:00:00</DueDate>
<Cost>3.50</Cost>
</brw:Borrowed>
<brw:Borrowed>
<VideoTitle>Cut To The Chase</VideoTitle>
<DueDate>2003-05-23T01:00:00</DueDate>
<Cost>3.00</Cost>
</brw:Borrowed>
<Magazine>0</Magazine>
</Customer>
아래에 TDS 형식의 Video 고객 메시지가 표시되어 있습니다(데이터를 쉽게 읽을 수 있도록 하기 위해 여러 행으로 분할).
{Name:[Title:Mr*FirstName:Fred*LastName:Bloggs] &Address:[HouseNo:12*Street:Willow Avenue*Town:Salisbury] &ID:P &PassportNo:J123456TT &Borrowed:[Fast Cars+2003-05-23+3.00] &Borrowed:[Cut To The Chase+2003-05-23+3.75] &Magazine:1}
메시지에서 오브젝트 IdGroup은 고객이 대여 중인 비디오의 ID 유형에 대한 선택을 나타냅니다. 이 ID는 여권 번호, 운전면허증 번호 또는 신용카드 번호가 될 수 있습니다. 입력 메시지에 제공된 번호는 PassportNo, DrivingLicenseNo 또는 CreditCardNo와 같이 세 가지 가능한 (선택) 필드 중 하나로 맵핑됩니다. XML 및 TDS 메시지에서 이 선택은 메시지 자체에 있는 태그 및 디리미터를 사용하여 해석할 수 있습니다. 단, CWF 메시지에는 태그 또는 디리미터가 들어 있지 않으므로, 이 선택은 메시지의 ID 필드 값 및 ESQL을 사용하여 해석해야 합니다. ID 필드에는 고객이 제공하는 ID의 유형을 나타내는 단일 문자가 들어 있는데, P는 PassportNo, D는 DrivingLicenseNo를 나타내고 C는 CreditCardNo를 나타냅니다.
해석되지 않는 선택이 들어 있는 CWF 메시지가 입력 노드로 올 때, MRM 구문 분석기는 경고 메시지(메시지 플로우를 추적할 때 볼 수 있음)를 트리거합니다. 이 메시지의 처리는 계속되지만, 선택을 해석하는 ESQL 코드를 포함하는 후속 노드가 없으면 완료할 수 없습니다. Compute 노드의 ESQL 코드는 초기 구문 분석의 결과로 빌드된 논리적 메시지 트리를 참조하는 방법을 제공합니다. 입력 메시지가 해석되지 않았으므로 이 트리에 대한 참조는 널(null)을 리턴합니다.
ID 번호가 지정된 필드(PassportNo, DrivingLicenseNo 또는 CreditCardNo)를 결정하려면 ID라는 추가 필드를 사용합니다. 이 ID 필드에는 P, D 또는 C와 같은 ID의 유형을 나타내는 문자가 들어 있습니다. 메시지 트리에서 이 필드는 IDGroup 선택 필드 앞에 옵니다. 이는 선택을 해석하기 전에 ID 필드의 값을 구문 분석할 수 있다는 것을 의미합니다. ID 필드가 구문 분석되면 이 값을 ESQL문에 사용하여 선택을 해석할 수 있습니다.
선택 핸들링의 작동 방법을 보려면 Video Rental 샘플 실행을 참조하여 선택적 추적 작업을 시도하십시오. 샘플에 대한 ESQL의 내용을 보려면 메시지 플로우 작성을 참조하십시오.
메시지 세트 파일을 Workbench로 들여온 후, Video 메시지 모델의 요소 등록 정보를 탐색할 수 있습니다. Workbench에 표시되는 내용은 위의 메시지 구조 그림에 해당합니다. 예를 들어, Name 요소를 탐색하려면 다음을 수행하십시오.
유사한 방식으로 다른 요소를 볼 수 있습니다. 메시지 구조의 구성 방식에 대한 자세한 정보를 보려면 Video Rental 샘플 빌드를 참조하십시오.