Compute 노드

이 주제는 다음 절을 포함합니다.

목적

하나 이상의 새 출력 메시지를 구성하려면 Compute 노드를 사용하십시오. 이 출력 메시지는 입력 메시지에 제공되는 정보를 수정하여 작성하거나 데이터베이스에서 취할 수 있는(또는 취할 수 없는) 새 정보만 사용하여 작성할 수 있습니다. 입력 메시지의 요소(예: 헤더, 헤더 필드 및 본문 데이터), 연관 환경 및 해당되는 예외 목록을 사용하여 새 출력 메시지를 작성할 수 있습니다.

메시지 플로우 ESQL 자원 파일에서 ESQL을 코드화하여 새 메시지를 작성하는 방법을 지정합니다. ESQL 표현식을 사용하여 메시지의 구성요소를 작성 및 수정할 수 있으며 외부 데이터베이스에서 입력 메시지 및 데이터를 모두 참조할 수 있습니다. 표현식에서는 산술 연산자, 텍스트 연산자(예: 결합) 및 기타 내장 함수를 사용할 수 있습니다.

다음과 같은 경우에 Compute 노드를 사용하십시오.

  • 지정 명령문 세트를 사용하여 새 메시지를 빌드할 경우
  • 구문 분석기 간에 메시지를 복사할 경우
  • 코드 세트 간에 메시지를 변환할 경우
  • 형식 간에 메시지를 변환할 경우

이 메시지 플로우와 연관된 ESQL .esql 파일에 이 노드와 연관된 모듈의 ESQL문을 정의합니다. 메시지 플로우의 정의를 완료하려면 이 파일을 작성해야 합니다.

Compute 노드는 Workbench에서 다음 아이콘으로 표시됩니다.

Compute 노드 아이콘

메시지 플로우에서 노드 사용

이 노드를 사용하는 방법을 보려면 다음 샘플을 참조하십시오.

감사 목적으로 메시지 플로우를 수신하는 순서에 따라 고유한 ID를 부여하고자 한다고 고려하십시오. Compute 노드는 해당 입력 메시지를 수정하지 않고, 출력 메시지로서 메시지 사본을 수정한 새 메시지를 작성합니다. Compute 노드를 사용하여 순서에 고유한 ID를 메시지 플로우의 후속 노드에서 사용할 수 있는 출력 메시지에 삽입할 수 있습니다.

Compute 노드 구성

Compute 노드 인스턴스를 메시지 플로우에 넣었으면 이 노드를 구성할 수 있습니다. 편집기 보기에서 이 노드를 마우스 오른쪽 단추로 누른 후 등록 정보를 누르십시오. 노드의 기본 등록 정보가 표시됩니다.

값을 입력해야 하는 모든 필수 등록 정보(정의된 디폴트 값이 없는 등록 정보)는 등록 정보 대화 상자에서 별표(*)로 표시됩니다.

다음과 같은 방법으로 Compute 노드를 구성하십시오.

  1. 데이터베이스 상호작용 정의
  2. ESQL 지정
  3. 모드 설정
  4. 메시지 유효성 검증

구성을 완료했으면 적용을 누르십시오. 그러면 등록 정보 대화 상자를 닫지 않고도 Compute 노드를 변경할 수 있습니다. 확인을 눌러 변경사항을 적용하고 등록 정보 대화 상자를 닫으십시오. 대화 상자를 닫고 등록 정보에서 작성한 모든 변경을 제거하려면 취소를 누르십시오.

데이터베이스 상호작용 정의

이 노드의 데이터베이스에 액세스하려면 다음을 수행하십시오.

  • 데이터 소스에 이 메시지 플로우를 실행할 시스템에서 해당 데이터베이스가 알려져 있는 이름을 지정하십시오. 브로커는 mqsicreatebroker, mqsichangebroker 또는 mqsisetdbparms 명령을 사용하여 설정한 사용자 ID로 이 데이터베이스에 연결합니다.

    z/OS 시스템에서는 브로커가 브로커 시작 작업 ID나, 사용자 정의 데이터 세트 <hlq>.SBIPPROC에서 mqsisetdbparms 명령 JCL, BIPSDBP에 지정한 사용자 ID 및 암호를 사용합니다.

  • 드롭다운 메뉴에서 트랜잭션 설정을 선택하십시오. 값은 다음과 같습니다.
    • 자동(디폴트). 완료될 경우, Compute 노드가 속한 메시지 플로우가 확약됩니다. 즉, ESQL 모듈에 정의한 조치가 메시지에서 수행되며 계속해서 메시지 플로우를 거칩니다. 메시지 플로우가 실패하면 롤백됩니다. 자동을 선택한 경우 데이터베이스에서 Compute 노드의 조치를 확약 또는 롤백하는 기능은 전체 메시지 플로우의 성공 또는 실패에 따라 달라집니다.
    • 확약. 메시지 플로우 전체의 성공 또는 실패 여부에 관계없이, 데이터베이스에서 Compute 노드의 조치를 확약하려면 확약을 선택하십시오. 메시지 플로우 자체가 실패하더라도 데이터베이스 갱신은 확약됩니다.

    추가한 하나 이상의 데이터베이스 테이블에 대해 선택한 값이 구현됩니다. 테이블마다 다른 값을 선택할 수는 없습니다.

  • 등록 정보 대화 상자 네비게이터에서 기본을 선택하고 두 개의 선택란을 선택하거나 지우십시오.
    • 데이터베이스 경고 메시지를 오류로 처리하고 출력 메시지를 노드에서 failure 터미널로 전달하려는 경우, 경고를 오류로 처리 선택란을 선택하십시오. 선택란은 처음에는 선택되어 있지 않습니다.

      상자를 선택하면, 노드는 데이터베이스에서 리턴된 모든 양의 리턴 코드를 오류로 핸들링하고 음의 리턴 코드 또는 그 이상의 심각한 오류에서와 같은 방법으로 예외를 생성합니다.

      선택란을 선택하지 않으면, 노드에서는 경고를 정상 리턴 코드로 처리하고 예외를 전달하지 않습니다. 발생하는 경고 중 가장 중요한 것은 없음으로서, 대부분의 환경에서 정상적인 리턴 코드로 안전하게 핸들링될 수 있습니다.

    • 데이터베이스 오류가 감지되었을 때 브로커가 예외를 생성하게 하려면, 데이터베이스 오류 시 예외 전달 선택란을 선택하십시오. 선택란은 처음에는 선택되어 있습니다.

      선택란을 선택하지 않을 경우, 각 데이터베이스 호출 이후에 리턴될 수 있는 임의의 데이터베이스 오류를 점검하려면 ESQL을 포함시켜야 합니다(SQLCODE 및 SQLSTATE를 사용하여 수행할 수 있음). 오류가 발생한 경우, 브로커와 데이터베이스의 무결성을 보장하려면 메시지 플로우 내의 오류를 핸들링해야 합니다. 자체 처리를 통해 오류를 핸들링하지 않을 경우, 브로커가 디폴트 오류 핸들링을 호출하도록 선택하지 않았으므로 오류가 무시됩니다. 예를 들면, ESQL THROW문을 포함시켜 이 노드에서 예외를 전달하거나 Throw 노드를 사용하여 메시지 플로우에서 나중에 고유의 예외를 생성할 수 있습니다.

ESQL 지정

Compute 노드의 작동을 사용자 정의하려면 ESQL문을 코딩하십시오. 입력 메시지나 데이터베이스 컨텐츠(변경되지 않았거나 수정됨) 또는 새 데이터를 사용하여 새 출력 메시지 또는 메시지를 작성하기 위해 사용자 정의할 수 있습니다. 예를 들면, 데이터베이스의 값을 추가하여 입력 메시지의 값을 수정한 다음 결과를 출력 메시지의 필드에 저장하고자 할 수 있습니다.

이 Compute 노드 인스턴스에 포함시킨 메시지 플로우와 연관된 ESQL 파일에 원하는 ESQL문을 코딩하십시오. ESQL 파일(디폴트 이름은 <message_flow_name>.esql)은 파일이 필요한 메시지 플로우 내의 모든 노드에 대한 ESQL을 포함합니다. 특정 노드와 연관된 코드의 각 부분을 모듈이라고 합니다.

ESQL 파일이 아직 이 메시지 플로우에 존재하지 않으면, Compute 노드를 마우스 오른쪽 단추로 누른 다음 ESQL 열기를 누르십시오. 그러면 새 ESQL 파일이 작성되어 ESQL 편집기 보기에서 열립니다.

파일이 이미 존재하면 ESQL 모듈 등록 정보 옆에 있는 찾아보기 단추를 누르십시오. 그러면 이 메시지 플로우에 의해 액세스 가능한 ESQL 파일에 정의되어 있는 사용 가능한 Compute 노드 모듈을 나열하는 모듈 선택 대화 상자가 표시됩니다(ESQL 파일은 종속된 다른 프로젝트에 정의될 수 있음). 적절한 모듈을 선택한 후 확인을 누르십시오. 적당한 모듈이 사용 가능하지 않으면 목록은 비어 있습니다.

지정된 모듈이 존재하지 않을 경우, 모듈이 작성되며 편집기는 파일을 표시할 수 있도록 배치합니다. 파일 및 모듈이 존재할 경우, 편집기는 파일을 배치하여 올바른 모듈을 표시 및 강조표시합니다.

원할 경우, 자원 네비게이터에서 적절한 ESQL 파일을 열어 아웃라인 보기에서 이 노드를 선택할 수 있습니다.

새 ESQL 또는 기존의 ESQL 파일에 이 노드에 대한 모듈 구조가 작성된 경우, 이는 다음과 같은 ESQL로 구성되어 있습니다. 이 예에는 디폴트 모듈 이름이 나와 있습니다.

CREATE COMPUTE MODULE <flow_name>_Compute
              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;
주: 이 Compute 노드를 포함하는 메시지 플로우를 5.0 이전 버전의 브로커로 전개하려면 위에 표시된 모듈의 골격에서 ESQL을 다음과 같이 변경해야 합니다.
  • 바꾸기
    DECLARE I      INTEGER 1;
    by
    DECLARE I INTEGER; SET I=1;
  • 바꾸기
    DECLARE J INTEGER CARDINALITY(InputRoot.*[]);
    by
    DECLARE J INTEGER; SET J=CARDINALITY(InputRoot.*[]);

사용자 고유의 ESQL 모듈을 작성하는 경우 프로시저 호출 및 정의를 제외하고 표시된 대로 정확히 이 구조를 작성해야 합니다(아래 설명됨). 디폴트 이름을 변경할 수 있으나 지정한 이름이 해당 노드 등록 정보인 ESQL 모듈의 이름과 일치하는지 확인하십시오. 모듈 이름에 하나 이상의 공백을 포함시키려면 ESQL 모듈 등록 정보에서 이름을 큰따옴표로 묶으십시오.

이 노드를 사용자 정의하려면 CREATE FUNCTION을 따르는 BEGIN문 뒤, RETURN TRUE문 앞에 자신의 ESQL을 추가하십시오. 구조에 포함된 두 개의 CopyEntireMessage 및 CopyMessageHeaders 프로시저 호출을 사용할 수 있습니다.

Main 기능 뒤에 정의되는 이러한 프로시저는 메시지 조작 시 필요한 공용 기능을 제공합니다. 구조에서 호출은 주석 처리됩니다. 프로시저를 사용하려면 주석 마커를 제거하십시오. 프로시저를 사용하지 않으려면 모듈에서 호출 및 프로시저 정의를 모두 제거하십시오.

이전 릴리스에서는 등록 정보 대화 상자에 있는 두 개의 동등한 Compute 노드 단일 선택 단추에서 이러한 프로시저에서 수행되는 기능을 제공하였습니다.

파일 > 새로 작성 > 메시지 플로우 ESQL 파일을 사용하여 ESQL 파일을 작성할 수도 있습니다.

모드 설정

처리 모드를 선택할 때 노드 내에서 생성되거나 들어오는 메시지 내에 포함되는 Message, LocalEnvironment(이전에는 DestinationList로 지정됨) 및 ExceptionList 구성요소가 출력 메시지에서 디폴트로 사용되는지 여부를 지정합니다.

이 디폴트는 노드에서의 처리가 완료된 경우 변환된 메시지가 Out 터미널로 라우트될 때 사용됩니다. 디폴트는 또한 PROPAGATE 문이 해당되는 출력 메시지의 작성을 지정하지 않을 때마다 사용됩니다.

선택에 포함되지 않은 구성요소는 변경되지 않고 전달됩니다. 사용자가 이러한 구성요소를 수정해도 갱신은 이 노드에만 해당됩니다.

메시지 트리의 환경 구성요소는 모드 설정의 영향을 받지 않습니다. 해당 컨텐츠(있는 경우)는 출력 메시지의 이 노드에서 전달됩니다.

필요한 출력 메시지 형식을 올바르게 반영하려면 이 등록 정보를 설정해야 합니다. 특정 메시지 파트를 포함하지 않는 옵션을 선택한 경우(또는 디폴트 값을 승인한 경우), 메시지의 해당 부분은 구성된 출력 메시지에 포함되지 않습니다.

다음 표에는 옵션이 설명되어 있습니다.

모드 설명
Message(디폴트) 노드에서 수정되는 대로 Compute 노드를 통해 생성되거나 전달되는 메시지.
LocalEnvironment 로컬 환경 트리 구조는 노드 내에서 수정된 대로 Compute 노드를 통해 생성되거나 전달됩니다.
LocalEnvironment 및 Message LocalEnvironment 트리 구조 및 메시지는 노드에서 수정되는 대로 Compute 노드를 통해 생성되거나 전달됩니다.
Exception Exception List는 노드에 의해 수정되는 대로 Compute 노드를 통해 생성되거나 전달됩니다.
Exception 및 Message Exception List는 노드에 의해 수정되는 대로 Compute 노드를 통해 생성되거나 전달됩니다.
Exception 및 LocalEnvironment Exception List 및 LocalEnvironment 트리 구조는 노드에서 수정된 대로 Compute 노드를 통해 생성되거나 전달됩니다.
모두 Message, Exception List 및 LocalEnvironment는 노드에서 수정되는 대로 Compute 노드를 통해 생성되거나 전달됩니다.

Compute 노드에는 입력 및 출력 메시지가 모두 들어 있으므로 ESQL을 사용하여 두 필드를 참조할 수 있습니다. 입력 및 출력 메시지 본문뿐 아니라 InputLocalEnvironment 및 OutputLocalEnvironment, InputExceptionList 및 OutputExceptionList에 대해서도 작업할 수 있습니다.

메시지 유효성 검증

Compute 노드에서 생성되는 메시지의 유효성을 검증할 방법을 정의하려면 유효성 검증 등록 정보를 설정하십시오. 이 등록 정보는 입력 메시지의 유효성 검증은 수행하지 않습니다. 입력 메시지의 유효성 검증이 필요할 경우 입력 노드나 이전의 validation 노드에 의해 이미 유효성 검증이 수행되었을 것입니다.

자세한 정보는 메시지 유효성 검증MRM 도메인에서 메시지의 유효성 검증 등록 정보를 참조하십시오.

터미널 및 등록 정보

다음 표에는 Compute 노드 터미널이 설명되어 있습니다.

터미널 설명
In 노드가 처리할 메시지를 승인하는 입력 터미널.
Failure 처리 중에 핸들링하지 않은 예외가 발생할 경우 입력 메시지가 라우트될 출력 터미널.
Out 노드에서의 처리가 완료되었을 때 변환된 메시지가 라우트되는 출력 터미널. 변환된 메시지는 PROPAGATE 문에 의해 이 터미널로 라우트될 수도 있습니다.
Out1 PROPAGATE 문이 변환된 메시지를 라우트할 수 있는 첫 번째 대체 출력 터미널.
Out2 PROPAGATE 문이 변환된 메시지를 라우트할 수 있는 두 번째 대체 출력 터미널.
Out3 PROPAGATE 문이 변환된 메시지를 라우트할 수 있는 세 번째 대체 출력 터미널.
Out4 PROPAGATE 문이 변환된 메시지를 라우트할 수 있는 네 번째 대체 출력 터미널.
주: PROPAGATE문의 구문은 PROPAGATE문을 참조하십시오.

다음 표에는 노드 등록 정보가 설명되어 있습니다. 앞에 M이 표시된 열은 등록 정보가 필수임을 나타내며(디폴트가 정의되지 않았을 때 값을 입력해야 하는 경우 등록 정보 대화 상자에 별표(*)로 표시됨) 앞에 C가 표시된 열은 등록 정보가 구성 가능함을 나타냅니다(메시지 플로우를 Bar 파일에 추가하여 전개할 때 값을 변경할 수 있음).

다음 표에는 Compute 노드 기본 등록 정보가 설명되어 있습니다.

등록 정보 M C 디폴트 설명
데이터 소스 아니오   이 메시지 플로우(ESQL 모듈 등록 정보에서 식별)와 연관된 ESQL 파일에서 참조하는 테이블이 상주하는 데이터베이스에 대한 ODBC 데이터 소스 이름. 노드에 대해 하나의 데이터 소스만 지정할 수 있습니다.
트랜잭션 아니오 자동 노드의 트랜잭션 모드. 이는 자동 또는 확약일 수 있습니다. 입력으로 데이터베이스 테이블을 선택한 경우에만 올바릅니다.
ESQL 모듈 아니오 Compute 데이터베이스에 대해 실행하는 명령문과 입력 및 출력 메시지를 포함하는 ESQL 파일 내의 모듈 이름.
처리 모드 아니오 메시지 다음에서 선택하십시오.
  • Message
  • LocalEnvironment
  • LocalEnvironment 및 Message
  • Exception
  • Exception 및 Message
  • Exception 및 LocalEnvironment
  • 모두
모드 설정에 설명되어 있습니다.
경고를 오류로 처리 아니오 지우기 데이터베이스 SQL 경고를 오류로 처리합니다. 이 선택란을 선택하면 이 조치가 수행됩니다.
데이터베이스 오류 시 예외 전달 아니오 선택 데이터베이스 오류가 발생할 때 브로커가 예외를 전달하도록 합니다. 이 선택란을 선택하면 이 조치가 수행됩니다.

다음 표에는 Compute 노드의 유효성 검증 등록 정보가 설명되어 있습니다.

등록 정보 M C 디폴트 설명
유효성 검증 없음 유효성 검증이 발생하는지의 여부. 올바른 값은 없음, 컨텐츠 및 값, 컨텐츠상속입니다.
실패 조치 아니오 예외 유효성 검증 실패가 발생할 경우에 취할 조치. 유효성 검증컨텐츠 또는 컨텐츠 및 값으로 설정한 경우에만 이 등록 정보를 설정할 수 있습니다. 올바른 값은 사용자 추적, 로컬 오류 로그, 예외예외 목록입니다.
모든 값 제한조건 포함 아니오 선택 이 등록 정보는 편집할 수 없습니다. 선택될 선택란에 표시되는 디폴트 조치는 유효성 검증 내에 모든 값 제한조건이 포함되어 있는 것입니다.
수정사항 아니오 없음 이 등록 정보는 편집할 수 없습니다. 최소 수정이 제공됩니다. 올바른 값은 없음전체입니다.

다음 표에는 MQGet 노드의 일반 메시지 옵션 등록 정보가 설명되어 있습니다.

등록 정보 M C 디폴트 설명
구문 분석 타이밍 아니오 요청시 이 등록 정보는 입력 메시지를 구문 분석하는 시기를 제어합니다. 올바른 값은 요청시, 즉시완료입니다.

이 등록 정보에 대한 자세한 설명은 요청시 구문 분석을 참조하십시오.

MQRFH2 도메인에 MQRFH2C 압축 구문 분석기 사용 아니오 아니오 False 이 등록 정보는 MQRFH2 헤더에 MQRFH2 구문 분석기 대신 MQRFH2C 압축 구문 분석기를 사용하는지 여부를 제어합니다.

다음 표에는 Compute 노드의 XMLNSC 구문 분석기 옵션이 설명되어 있습니다.

등록 정보 M C 디폴트 설명
XMLNS 도메인에 XMLNSC 압축 구문 분석기 사용 지우기 아니오 변경 시작이 등록 정보를 설정하는 것은 보내는 MQRFH2가 XMLNSC 구문 분석기 대신 XMLNS를 지정하도록 하므로, 나머지 외부 응용프로그램을 변경하지 않을 수 있습니다. 보내는 메시지가 MQRFH2 헤더를 포함하고 있지 않으면 이 등록 정보는 아무런 영향을 미치지 않습니다. 변경 끝
혼합 컨텐츠 보유 모드 아니오 없음 이 등록 정보는 XMLNSC 구문 분석기가 입력 메시지에서 혼합 텍스트를 발견할 경우 메시지 트리에서 요소를 작성하는지 여부를 제어합니다. 올바른 값은 없음모두입니다. 모두를 선택하면 혼합 텍스트에 대해 요소가 작성됨을 의미합니다. 없음을 선택하면 혼합 텍스트가 무시되고 요소가 작성되지 않음을 의미합니다.
주석 보유 모드 아니오 없음 이 등록 정보는 XMLNSC 구문 분석기가 입력 메시지에서 주석을 발견할 경우 메시지 트리에서 요소를 작성하는지 여부를 제어합니다. 올바른 값은 없음모두입니다. 모두를 선택하면 주석에 대해 요소가 작성됨을 의미합니다. 없음을 선택하면 주석이 무시되고 요소가 작성되지 않음을 의미합니다.
처리 지시사항 보유 모드 아니오 없음 이 등록 정보는 XMLNSC 구문 분석기가 입력 메시지에서 처리 지시사항을 발견할 경우 메시지 트리에서 요소를 작성하는지 여부를 제어합니다. 올바른 값은 없음모두입니다. 모두를 선택하면 처리 지시사항에 대해 요소가 작성됨을 의미합니다. 없음을 선택하면 처리 지시사항이 무시되고 요소가 작성되지 않음을 의미합니다.

다음 표에는 Compute 노드 설명 등록 정보가 설명되어 있습니다.

등록 정보 M C 디폴트 설명
간단한 설명 아니오 아니오   노드에 대한 간략한 설명.
자세한 설명 아니오 아니오   메시지 플로우에서 노드의 목적을 설명하는 텍스트.
주의사항 | 등록상표 | 다운로드 | 라이브러리 | 지원 | 피드백
Copyright IBM Corporation 1999, 2006 마지막 갱신 날짜: 2006/08/21
ac04660_