노드(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 브로커로 전개 가능하게 하도록
InputRoot 및
OutputRoot 모듈
레벨 변수를 다음 예에서 굵은 텍스트로 표시된 프로시저 또는 함수로 전달해야 합니다.
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>
노드의 작동을 사용자 정의하려면 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
구문을 이해하고 수정하십시오. 컨텐츠 보조를 사용하여 대부분의 명령문(예: 블록 명령문)을 생성하면,
명령문이 올바르게 입력되므로 오류가 발생할 가능성이 적습니다.