노드에 대한 ESQL 작성

ESQL 파일 내에서 Compute, Database 또는 Filter 노드의 작동을 사용자 정의하기 위한 ESQL을 작성하십시오.

시작하기 전에

이 작업을 완료하려면 먼저 다음 작업을 완료해야 합니다.

ESQL 파일 내에서 메시지 플로우의 노드와 연관된 모듈을 작성하십시오. 각 모듈은 특정 유형의 한 노드(Compute, Database 또는 Filter)와만 연관될 수 있습니다. 모듈 내에서 제공된 명령문과 함수뿐만 아니라, 함수와 프로시저를 작성하여 사용할 수 있습니다. 또한, 로컬 상수와 변수를 작성할 수도 있습니다.

브로커 스키마 레벨에서 상수, 함수 또는 프로시저를 작성한 경우, 모듈 내에서 이를 참조할 수도 있습니다. 서로 다른 여러 모듈이 루틴을 사용할 수 있는 레벨에서 루틴을 정의할 수 있습니다. 그러면, 개발 시간 및 유지보수 노력을 줄일 수 있습니다.

노드에 ESQL을 작성하려면 다음을 수행하십시오.

  1. 브로커 응용프로그램 개발 perspective로 전환하십시오.
  2. 네비게이터 보기에서 ESQL을 작성하려는 노드를 포함하는 메시지 플로우를 두 번 누르십시오. 편집기 보기에서 메시지 플로우가 열립니다.
  3. 노드(Compute, Database 또는 Filter여야 함)를 마우스 오른쪽 단추로 누르고 ESQL 열기를 누르십시오. 편집기 보기에서 이 메시지 플로우의 디폴트 ESQL 파일인 <message_flow_name>.esql이 열립니다. (이 파일이 없으면 작성됩니다.)

    (디폴트 파일을 이미 작성한 경우 ESQL 열기를 누르면, 편집기 보기에서 파일이 열리고 새 모듈이 작성되고, 강조표시됩니다.)

    이 노드의 윤곽 모듈은 ESQL 파일 끝에 작성됩니다. 정확한 컨텐츠는 노드 유형에 따라 다릅니다.

    다음 모듈이 Compute 노드용으로 작성되었습니다.

    CREATE COMPUTE MODULE <module_name>
                  CREATE FUNCTION Main() RETURNS BOOLEAN
           BEGIN
                                -- CALL CopyMessageHeaders();
                                -- CALL CopyEntireMessage();
                                 RETURN TRUE;
            END;
    
           CREATE PROCEDURE CopyMessageHeaders() BEGIN
                  DECLARE I      INTEGER 1;
                  DECLARE J INTEGER CARDINALITY(InputRoot.*[]);
                  WHILE I < J DO
                         SET OutputRoot.*[I] = InputRoot.*[I];
                                 SET I = I + 1;
                  END WHILE;
            END;
    
                  CREATE PROCEDURE CopyEntireMessage() BEGIN
                        SET OutputRoot = InputRoot;
            END;
      END MODULE;
    선행 ESQL을 버전 2.1 브로커로 전개 가능하게 하도록 InputRootOutputRoot 모듈 레벨 변수를 다음 예에서 굵은 텍스트로 표시된 프로시저 또는 함수로 전달해야 합니다.
    CREATE COMPUTE MODULE <module_name>
                  CREATE FUNCTION Main() RETURNS BOOLEAN
           BEGIN
                  -- CALL CopyMessageHeaders(InputRoot, OutputRoot);
                  -- CALL CopyEntireMessage(InputRoot, OutputRoot);
                                 RETURN TRUE;
            END;
    
           CREATE PROCEDURE CopyMessageHeaders(IN InputRoot REFERENCE, IN
                  OutputRoot REFERENCE) BEGIN
                  DECLARE I      INTEGER 1;
                  DECLARE J INTEGER CARDINALITY(InputRoot.*[]);
                  WHILE I < J DO
                   CREATE LASTCHILD OF OutputRoot DOMAIN FIELDNAME (
                  InputRoot.*[I] ); /*create the parser for OutputRoot*/
                         SET OutputRoot.*[I] = InputRoot.*[I];
                                 SET I = I + 1;
                  END WHILE;
            END;
    
           CREATE PROCEDURE CopyEntireMessage(IN InputRoot REFERENCE, IN
                  OutputRoot REFERENCE) BEGIN
                        SET OutputRoot = InputRoot;
            END;
      END MODULE;

    모듈 이름은 해당 노드 등록 정보에 대해 설정한 값에 의해 결정됩니다. 디폴트는 <message_flow_name>_<node_type>입니다. Main 함수는 아래 설명된 두 개의 프로시저를 호출하고, 함수 Main을 따라 Compute 노드 내에서 선언됩니다. 이 호출은 주석으로 기록됩니다. 제공하는 함수를 포함하려면, 행에 주석을 기록하지 말고 Main용으로 작성한 ESQL의 적절한 지점에 배치하십시오.

    CopyMessageHeaders
    이 프로시저는 입력 메시지를 포함한 헤더 사이를 순환하고 각 프로시저는 출력 메시지로 복사됩니다.

    버전 2.1에서 이주 중이면 Compute 노드 등록 정보 대화 상자에서 메시지 헤더 복사 단추를 선택할 때 생성되는 코드와 동일합니다.

    CopyEntireMessage
    이 프로시저는 헤더를 포함하여 입력 메시지의 전체 컨텐츠를 출력 메시지에 복사합니다.

    버전 2.1에서 이주 중이면 Compute 노드 등록 정보 대화 상자에서 전체 메시지 복사 단추를 선택할 때 생성되는 코드와 동일합니다.

    Database 노드에 대해 ESQL 모듈을 작성하는 경우, 다음과 같은 모듈이 작성됩니다.

    CREATE DATABASE MODULE <module_name>
                  CREATE FUNCTION Main() RETURNS BOOLEAN
           BEGIN
                                  RETURN TRUE; 
            END;
      END MODULE;

    Filter 노드에서 모듈은 첫 줄을 제외하고 Database 노드용으로 작성된 것과 동일합니다.

    CREATE FILTER MODULE <module_name>
  4. 노드의 작동을 사용자 정의하려면 ESQL을 이 파일에 추가하십시오.

    ESQL 문을 Main 함수 내에 추가해야 합니다. 이 함수는 BEGIN 문 뒤와 RETURN TRUE 앞에 옵니다. Main 함수 내에 없는 모듈에 DECLARE문을 추가할 수 있습니다. 파일에 새 행을 추가하려면 Enter를 누르십시오.

    올바른 ESQL을 코딩하는 데 도움을 주기 위해, 편집기가 커서 위치에 올바른 명령문 및 함수 목록을 표시합니다. 이 지원을 호출하려면 편집 > 컨텐츠 지원을 누르십시오. 일부 시스템에서는 Ctrl+Space 키 결합을 사용할 수도 있습니다. 표시된 목록을 화면이동하여 원하는 항목을 강조표시하고 Enter를 누르십시오. 적절한 코드가 모듈에 삽입되고 목록이 사라집니다.

    컨텐츠 보조는 다음 영역에서 제공됩니다.

    • 언어 구문에 기초한 적용 가능한 키워드
    • BEGIN END; 등과 함께 작동되는 코드 블록
    • 정의한 상수, ID, 레이블, 함수 및 프로시저를 사용할 수 있으며, 현재 프로젝트에서 참조하지 않은 경우에도 루틴은 어느 프로젝트에도 삽입할 수 있습니다.
    • 데이터베이스 상관 이름 뒤의 데이터베이스 스키마 및 테이블 이름과 INSERT, UPDATE, DELETE, SELECT문의 테이블 열이름, 대부분의 경우 이러한 명령문의 WHERE절.
    • 메시지 필드 참조 요소: 런타임 도메인(구문 분석기) 이름, 유형 표현식의 형식, 네임스페이스 ID, 네임스페이스 규정 요소, 속성 이름 및 색인 표현식의 형식.
    • 출력 메시지 루트 아래의 등록 정보 폴더에 있는 컨텐츠.
    • DECLARE NAMESPACE문의 경우, 메시지 세트 및 스키마 이름의 대상 네임스페이스

    컨텐츠 보조는 ESQL을 올바르게 구문 분석할 수 있는 경우에만 실행됩니다. BEGIN 다음에 END 누락과 같은 오류 및 기타 종료되지 않은 블록 명령문으로 인해 구문 분석기가 실패하고 컨텐츠 보조가 제공되지 않습니다. 컨텐츠 보조가 작업하지 않는 명령문 주위의 다른 영역에서 이를 실행하여 오류 지점을 좁히십시오. 또는, ESQL 파일을 저장하십시오. 파일을 저장하면 유효성 검증이 수행되고 모든 구문 오류가 타스크 보기에 기록됩니다. 기록된 오류를 참조하여 ESQL 구문을 이해하고 수정하십시오. 컨텐츠 보조를 사용하여 대부분의 명령문(예: 블록 명령문)을 생성하면, 명령문이 올바르게 입력되므로 오류가 발생할 가능성이 적습니다.

  5. 이 모듈에 대한 작업이 완료되면 ESQL 파일을 닫을 수 있습니다. 파일을 닫기 전에 파일을 저장하여 모든 변경사항을 보유하고 ESQL의 유효성을 검증하십시오.

원하는 경우, 편집기를 사용하여 ESQL 파일을 직접 열고 파일 내에서 모듈을 작성할 수 있습니다. 그러기 위해서는 다음을 수행하십시오.

  1. 브로커 응용프로그램 개발 perspective로 전환하십시오.
  2. 모듈을 작성하려는 ESQL 파일을 선택하십시오. 편집기 보기에서 이 파일을 두 번 눌러 열거나, 마우스 오른쪽 단추를 누르고 열기를 누르십시오.
  3. 편집기 보기에서 커서를 새 행에 위치시키고 컨텐츠 보조를 사용하여 이 노드 유형에 적절한 모듈 윤곽을 선택하십시오. 예를 들면, CREATE COMPUTE MODULE END MODULE;을 선택하십시오. 원할 경우, 윤곽을 직접 입력할 수 있지만 입력하는 윤곽이 위에 표시된 필수 윤곽과 일치해야 합니다. 필요한 위치에 올바른 ESQL만 삽입하고 일치하는 종료 명령문(예: END MODULE;)을 삽입하여 추가 도움말을 제공하려면 컨텐츠 보조를 사용하십시오.
  4. 모듈의 코딩을 적절하게 완료하십시오.

ESQL 파일을 열기 위해 어느 방법을 사용하든, 편집기에서 ESQL을 코딩하는 데 도움이 되는 기능을 제공합니다. 이 절에서는 컨텐츠 보조를 참조하나, 편집기에서 사용 가능한 추가 기능이 있습니다. 이러한 기능에 대한 자세한 정보는 ESQL 편집기를 참조하십시오.

관련 개념
메시지 플로우 개요
브로커 스키마
ESQL 모듈
관련 태스크
메시지 플로우 개발
노드에 대한 ESQL 수정
ESQL 편집기 설정 변경
관련 참조
내장 노드
ESQL 참조
ESQL 편집기
주의사항 | 등록상표 | 다운로드 | 라이브러리 | 지원 | 피드백
Copyright IBM Corporation 1999, 2006 마지막 갱신 날짜: 2006/08/21
ak09033_