오류 핸들링 서브플로우 작성

오류 핸들링 서브플로우를 작성하려면 다음 지시사항을 따르십시오. 자세한 정보는 각 단계의 끝에서 제공되는 링크를 누르십시오.

  1. Message Broker Toolkit에서 브로커 응용프로그램 개발 Perspective로 전환하십시오.
  2. Error Handler Messageflows라는 새 메시지 플로우를 작성하십시오.
    지시사항은 메시지 플로우 프로젝트 작성을 참조하십시오.
  3. Error_Handler라는 새 메시지 플로우를 작성하십시오.
    지시사항은 메시지 플로우 작성을 참조하십시오.
  4. 메시지 플로우 편집기에서 다음 표에 나열된 노드를 추가하고 노드의 이름을 바꾸십시오.
    지시사항은 노드 추가를 참조하십시오. 아래의 표에 있는 Input 및 Output은 MQInput 및 MQOutput과는 다릅니다. 모든 서브플로우는 Input 노드로 시작하여 Output 노드로 끝납니다.
    노드 유형 노드 이름
    Input Start Subflow
    Filter Check Backout Count
    TryCatch TryCatch
    Database Update Error Database
    Throw Throw To Complete Rollback
    Output Back To Main Flow
  5. 다음 표에 나열된 대로 노드를 서로 연결하십시오.
    지시사항은 노드 연결을 참조하십시오.
    노드가 서로 올바르게 연결되었는지 확인하려면 Error Handler 샘플 정보의 그림을 참조하십시오.
    노드 이름 터미널 연결할 노드
    Input Out Check Backout Count
    Check Backout Count True TryCatch
    TryCatch Try Back To Main Flow
    Catch Update Error Database
    Update Error Database Out Throw To Complete Rollback
  6. 다음 표에 나열된 대로 노드 등록 정보를 구성하십시오. 표에 대체 값이 제시된 경우를 제외하고 모든 등록 정보의 디폴트 값을 사용하십시오.
    지시사항은 노드 구성을 참조하십시오.
    노드 이름 페이지 등록 정보
    Update Error Database 기본 데이터 소스 ERRORDB
    기본 트랜잭션 확약
    Throw To Complete Rollback 기본 메시지 번호 3002
    기본 메시지 텍스트 Error_Handler 메시지 플로우에서. 세부사항은 ERRORDB를 참조하십시오.
  7. 다음 ESQL 코드 모듈을 Error_Handler.esql 파일에 추가하십시오. 원하는 경우 ESQL 코드를 복사하여 직접 ESQL 파일에 붙여넣을 수 있습니다.
    지시사항은 ESQL 개발을 참조하십시오.
    CREATE FILTER MODULE Error_Handler_Filter
       CREATE FUNCTION Main() RETURNS BOOLEAN
       BEGIN
          IF Root.MQMD.BackoutCount='0' THEN
          RETURN TRUE;
          ELSE
             RETURN FALSE;
          END IF;
       END;
    END MODULE;
    
    CREATE DATABASE MODULE Error_Handler_Database
    CREATE FUNCTION Main() RETURNS BOOLEAN
    BEGIN
    
    DECLARE Error INTEGER;
    DECLARE Text CHARACTER;
    DECLARE Place INTEGER;
    DECLARE LastPlace INTEGER;
    DECLARE NodeName CHARACTER;
    DECLARE Label CHARACTER;
    DECLARE FlowName CHARACTER;
    
    -- Set the start point
    DECLARE start REFERENCE TO ExceptionList.*[1];
    WHILE start.Number IS NOT NULL DO
       SET Error = start.Number;
          IF Error = 3001 THEN
             SET Text = SUBSTRING(start.Insert.Text FROM 1 FOR 250);
             ELSE
             SET Text = SUBSTRING(start.Text FROM 1 FOR 250);
          END IF;
       SET Label = start.Label;
       SET Place = POSITION('.' IN Label); 
       SET LastPlace = Place;
          WHILE Place <>0 DO
             SET Label=SUBSTRING(Label FROM (Place+1));
             SET Place=POSITION('.' IN Label);
             SET LastPlace = LastPlace + Place;
          END WHILE;
       SET Label=start.Label;
       SET FlowName=SUBSTRING(Label FROM 1 FOR (LastPlace-1));
       SET NodeName=SUBSTRING(Label FROM (LastPlace+1));
    -- Move start to the last child of the field to which it currently points
       MOVE start LASTCHILD;
    END WHILE;
    INSERT INTO Database.ERRORS(MSGID,TEXT,ERRORNUM, ERRORDATE,MSGDATA,FLOWNAME,NODENAME)
    VALUES(CAST(Root.MQMD.MsgId AS BLOB),Text,Error,CURRENT_TIMESTAMP,BITSTREAM(Root),
    FlowName,NodeName);
          RETURN TRUE;
       END;
    END MODULE;

이제 서브플로우를 통합하는 기본 메시지 플로우를 작성할 수 있습니다. 기본 메시지 플로우 작성을 참조하십시오.

기본 페이지 아이콘   Error Handler 샘플 빌드로 돌아가기