PROPAGATE문

PROPAGATE 문은 메시지를 다운스트림 노드로 전달합니다.

구문

Compute 및 Database 노드에서 PROPAGATE 문을 사용할 수 있지만 Filter 노드에서는 사용할 수 없습니다. 이 명령문이 추가되어 오류 핸들링을 지원합니다. 오류 핸들링을 위한 ESQL 코딩을 참조하십시오.

TO TERMINAL 절
TO TERMINAL절이 있는 경우 TerminalExpression이 평가됩니다. 결과가 CHARACTER 유형인 경우 규칙에 따라 메시지가 터미널로 전달됩니다.변경 시작
‘nowhere’ : no propagation
‘failure’ : Failure
 ‘out’    : Out 
 ‘out1'  : Out1
 ‘out2'  : Out2
 ‘out3'  : Out3
 ‘out4’  : Out4
변경 끝
팁: 터미널 이름은 대소문자 구분되므로 "Out1"은 모든 터미널과 일치하지 않습니다.
TerminalExpression의 결과가 INTEGER 유형인 경우 규칙에 따라 메시지는 터미널로 전달됩니다.
-2 : no propagation
-1 : failure
 0 : out 
 1 : out1
 2 : out2
 3 : out3
 4 : out4

TerminalExpression의 결과가 CHARACTER나 INTEGER가 아닌 경우 브로커에서 예외가 발생합니다.

TO TERMINAL 절이나 TO LABEL 절이 없는 경우 브로커에서 메시지를 "out" 터미널로 전달합니다.

팁: 터미널 표현식에서 문자값을 사용하면 가장 자연스럽고 읽기 가능한 코드가 생성됩니다. 그러나 정수 값은 루프로 조작하기 쉽고 약간 더 빠릅니다.
TO LABEL 절
TO LABEL절이 있는 경우 LabelExpression이 평가됩니다. 결과가 CHARACTER 유형 이고 동시에 동일한 플로우에 LabelExpression과 일치하는 레이블 속성이 있는 Label 노드가 있는 경우 브로커에서 해당 노드에 메시지를 전달합니다.
팁: 터미널과 같은 레이블은 대소문자가 구분됩니다. 또는 Label 노드에 대한 라우트가 있는 것처럼 노드의 레이블 자체가 아니라 대상을 정의하는 Label 노드의 labelName 속성입니다.

LabelExpression의 결과가 널(null)이거나 CHARACTER 유형이 아니거나 플로우에 일치하는 Label 노드가 없는 경우 브로커에서 예외가 발생합니다.

TO TERMINAL 절이나 TO LABEL 절이 없는 경우 브로커에서 메시지를 "out" 터미널로 전달합니다.

MessageSources 절

MessageSources 절은 전달할 메시지 트리를 선택합니다. 이 절은 Compute 노드에만 적용됩니다(Database 노드에는 영향을 주지 않음).

MessageSources 절에서 지정할 수 있는 값은 다음과 같습니다.
ENVIRONMENT : 
  InputLocalEnvironment 
  OutputLocalEnvironment 

Message : 
  InputRoot 
  OutputRoot

ExceptionList : 
  InputExceptionList
  OutputExceptionList

MessageSources 절이 없는 경우 전달할 메시지를 판별하는 데 노드의 "compute mode" 속성이 사용됩니다.

FINALIZE 절
완료는 헤더 체인을 고정하고 Properties 폴더가 헤더와 일치하도록 하는 과정입니다. 필요한 경우 FINALIZE 절을 사용하여 완료를 제어할 수 있습니다.

이 절은 Compute 노드에만 적용됩니다(Database 노드에는 영향을 주지 않음).

Compute 노드를 사용하면 다른 노드(출력 메시지를 변경하는 다른 노드)에서 출력 메시지를 변경할 수 있습니다. 그러나 Compute 노드에서 작성한 메시지는 다음과 같은 경우 다른 노드에서 변경할 수 없습니다.
  • 완료된 경우
  • 비트스트림을 생성하는 출력 또는 다른 노드에 도달한 경우

FINALIZE가 DEFAULT로 설정되거나 FINALIZE절이 없으면 전달되기 전에 출력 메시지(Environment, Local Environment 또는 Exception List는 아님)가 완료됩니다.

변경 시작FINALIZE가 NONE으로 설정된 경우 완료되지 않습니다. 메시지 플로우의 다운스트림 노드가 전체 출력 메시지를 보존하거나 갱신할 수 있게 하려면 이 옵션이 필요하며, 이 옵션은 다음 절에 설명된 것처럼 DELETE NONE과 함께 사용됩니다. 변경 끝

DELETE 절
DELETE 절을 사용하면 출력 로컬 환경, 메시지 및 예외 목록에 대한 지우기를 제어할 수 있습니다.

DELETE 절은 Compute 노드에만 적용됩니다(Database 노드에는 영향을 주지 않음).

DELETE가 DEFAULT로 설정되거나 DELETE절이 없는 경우 출력 로컬 환경, 메시지 및 예외 목록이 모두 지워지고 전달 후에 메모리가 즉시 복구됩니다.

변경 시작DELETE가 NONE으로 설정되는 경우에는 아무 것도 지워지지 않습니다. 다운스트림 노드가 출력 로컬 환경 메시지의 단일 인스턴스 및 예외 목록 트리를 볼 수 있게 하려면 DELETE NONE을 사용하십시오. 각 전달은 비어있는 트리와 함께 시작하지 않고 이전 전달에 의해 생성되는 이 트리의 컨텐츠와 함께 시작합니다. 이 노드가 출력을 갱신할 수 있게 하려면 앞 절에 설명된 것처럼 FINALIZE NONE 옵션과 함께 DELETE NONE을 사용해야 합니다. 변경 끝

전달되는 사항에 상관없이 완료되고 지워지는 출력 트리입니다.

전달은 동기적 프로세스입니다. 즉, 다운스트림 노드의 모든 메시지 처리가 완료될 때까지 다음 명령문이 실행되지 않습니다. 이 처리에 의해 예외가 발생할 수 있으며 이 예외가 발견되지 않는 경우 PROPAGATE 호출 다음의 명령문에 도달하지 않음에 주의하십시오. 이것이 플로우의 논리에 필요한 사항일 수 있지만 그렇지 않은 경우 핸들러를 사용하여 예외를 포착하여 필수 조치를 수행할 수 있습니다. 포착하지 않은 경우 전달의 예외 발생 다운스트림은 Compute 또는 Database 노드의 마지막 자동 조치(예: COMMIT Transaction set to Commit 발행)가 발생하지 않도록 합니다.

DECLARE i INTEGER 1;
DECLARE count INTEGER;
SET count = CARDINALITY(InputRoot.XML.Invoice.Purchases."Item"[])

WHILE i <= count DO 
  --use the default tooling-generated procedure for copying message headers 
  CALL CopyMessageHeaders(); 
  SET OutputRoot.XML.BookSold.Item = InputRoot.XML.Invoice.Purchases.Item[i]; 
      PROPAGATE; 
      SET i = i+1; 
END WHILE; 
RETURN FALSE;

다음은 PROPAGATE문의 의해 OUT 터미널에서 생성되는 메시지입니다.

<BookSold>
 <Item>
  <Title Category="Computer" Form="Paperback" Edition="2">The XML Companion </Title>
  <ISBN>0201674866</ISBN>
  <Author>Neil Bradley</Author>
  <Publisher>Addison-Wesley</Publisher>
  <PublishDate>October 1999</PublishDate>
  <UnitPrice>27.95</UnitPrice>
  <Quantity>2</Quantity>
 </Item>
</BookSold>
<BookSold>
 <Item>
  <Title Category="Computer" Form="Paperback" Edition="2">A Complete Guide to 
   DB2 Universal Database</Title>
  <ISBN>1558604820</ISBN>
  <Author>Don Chamberlin</Author>
  <Publisher>Morgan Kaufmann Publishers</Publisher>
  <PublishDate>April 1998</PublishDate>
  <UnitPrice>42.95</UnitPrice>
  <Quantity>1</Quantity>
 </Item>
</BookSold>
<BookSold>
 <Item>
  <Title Category="Computer" Form="Hardcover" Edition="0">JAVA 2 Developers
  Handbook</Title>
  <ISBN>0782121799</ISBN>
  <Author>Phillip Heller, Simon Roberts </Author>
  <Publisher>Sybex, Inc.</Publisher>
  <PublishDate>September 1998</PublishDate> <UnitPrice>59.99</UnitPrice>
  <Quantity>1</Quantity>
 </Item>
</BookSold>
관련 개념
ESQL 개요
오류 핸들링을 위한 ESQL 코딩
관련 태스크
ESQL 개발
다중 출력 메시지 생성
데이터베이스 갱신사항 확약
관련 참조
구문 다이어그램: 사용 가능한 유형
ESQL문
RETURN문
메시지 예
주의사항 | 등록상표 | 다운로드 | 라이브러리 | 지원 | 피드백
Copyright IBM Corporation 1999, 2006 마지막 갱신 날짜: 2006/08/21
ak05110_