Database 노드

목적

지정된 ODBC 데이터 소스의 데이터베이스와 상호작용하려면 Database 노드를 사용하십시오. 입력 메시지의 데이터를 지정하고 이를 몇 가지 방법(예: 계산 수행)으로 변환하여 결과를 데이터베이스 테이블에 지정하는 ESQL문을 코딩하여 상호작용의 성질을 정의합니다.

데이터베이스를 즉시 확약할지, 갱신이 확약된 메시지 플로우가 완료될 때까지 지연시킬지 또는 메시지 플로우의 전반적인 완료 상태에 따라 롤백할 것인지를 제어하는 등록 정보를 설정할 수 있습니다.

이 노드를 사용하여 데이터베이스를 갱신할 수는 있어도 메시지는 갱신할 수 없습니다.

이 노드의 특별한 형식을 사용하여 다음을 수행할 수 있습니다.
  • 데이터베이스 테이블(DataUpdate 노드) 내의 값을 갱신합니다.
  • 데이터베이스 테이블(DataInsert 노드)에 행을 삽입합니다.
  • 데이터베이스 테이블(DataDelete 노드)에서 행을 삭제합니다.
  • Warehouse(Warehouse 노드)에 메시지 또는 메시지의 일부를 저장합니다.

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

Database 노드 아이콘

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

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

20개의 모니터 주문을 받는 상황을 고려해 봅시다. 창고에 모니터가 충분하여 재고 데이터베이스의 재고 레벨을 줄이려고 합니다. Database 노드를 사용하여 사용 가능한 모니터가 충분한지를 점검하여 데이터베이스의 수량 필드를 줄일 수 있습니다.

Database 노드 구성

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

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

다음과 같이 Database 노드를 구성하십시오.

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

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

  2. 명령문에서, 이 노드에서 실행될 ESQL문을 포함하는 ESQL 파일 내의 모듈을 식별하십시오. 모듈 이름에 하나 이상의 공백을 포함시키려면 명령문 등록 정보에서 이름을 큰따옴표로 묶으십시오.

    테이블과 상호작용하는 ESQL문을 코드화할 경우, 테이블이 이 데이터베이스 내에 있다고 가정합니다. 그렇지 않을 경우 런타임 시 브로커에서 데이터베이스 오류가 생성됩니다.

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

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

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

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

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

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

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

    자신의 ESQL 모듈을 작성할 경우, 이 구조대로 작성하십시오. 디폴트 이름을 갱신할 수 있으나 지정한 이름이 해당 노드 등록 정보인 명령문의 이름과 일치하는지 확인하십시오.

    이 노드를 사용자 정의하려면 BEGIN문 뒤, RETURN TRUE문 앞에 자신의 ESQL을 추가하십시오.

    파일 > 새로 작성 > 메시지 플로우 ESQL 파일을 눌러 ESQL 파일을 작성할 수도 있습니다.

    이 모듈에 SET, WHILE, DECLARE 및 IF를 비롯하여 모든 ESQL문을 사용할 수 있으나, Compute 노드와는 달리 Database 노드는 입력 터미널에서 수신한 변경되지 않은 메시지를 출력 터미널로 전달합니다. 이는 Filter 노드에서와 같이 Database 노드에서도 하나의 메시지만 참조한다는 의미입니다.

    메시지의 어떤 부분도 수정할 수 없으므로, 지정 명령문(INSERT문의 SET절이 아닌 SET문)은 임시 변수에만 값을 지정할 수 있습니다. 따라서 지정 명령문에 취할 수 있는 조치의 범위는 제한됩니다.

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

  3. 드롭다운 메뉴에서 트랜잭션 설정을 선택하십시오. 값은 다음과 같습니다.
    • 자동(디폴트). 완료될 경우, Database 노드가 속한 메시지 플로우가 확약됩니다. 즉, ESQL 모듈에 정의한 조치가 수행되며 메시지는 계속해서 메시지 플로우를 거칩니다. 메시지 플로우가 실패하면 롤백됩니다. 자동을 선택한 경우, 데이터베이스에서 Database 노드의 조치를 확약 또는 롤백하는 기능은 전체 메시지 플로우의 성공 또는 실패 여부에 따라 달라집니다.
    • 확약. 메시지 플로우 전체의 성공 또는 실패 여부에 관계없이, 이 노드에 연결된 데이터베이스에서 메시지 플로우에 수행된 미확약 조치를 확약하려면 확약을 선택하십시오. 메시지 플로우 자체가 실패하더라도 데이터베이스 변경사항은 확약됩니다.
  4. 등록 정보 대화 상자 네비게이터에서 기본을 선택하고 두 개의 선택란을 설정하거나 지우십시오.
    • 데이터베이스 경고 메시지를 오류로 처리하고 출력 메시지를 노드에서 failure 터미널로 전달하려는 경우, 경고를 오류로 처리 선택란을 선택하십시오. 이 선택란은 처음에는 선택되어 있지 않습니다.

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

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

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

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

  5. 간단한 설명, 자세한 설명 또는 둘 다를 입력하려면, 등록 정보 대화 상자 네비게이터에서 설명을 선택하십시오.
  6. 적용을 누르면 등록 정보 대화 상자를 닫지 않고도 Database 노드를 변경할 수 있습니다. 확인을 눌러 변경사항을 적용하고 등록 정보 대화 상자를 닫으십시오.

    대화 상자를 닫고 등록 정보에서 작성한 모든 변경을 제거하려면 취소를 누르십시오.

터미널 및 등록 정보

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

터미널 설명
In 노드가 처리할 메시지를 승인하는 입력 터미널.
Failure 처리 중에 실패가 감지될 경우 입력 메시지가 전달될 출력 터미널. 경고를 오류로 처리를 선택했으면, 처리가 완료되었더라도 노드는 메시지를 이 터미널로 전달합니다.
Out 노드에서의 처리가 완료되었을 때 변환된 메시지가 라우트되는 출력 터미널. 변환된 메시지는 PROPAGATE 문에 의해 이 터미널로 라우트될 수도 있습니다.
Out1 PROPAGATE 문이 변환된 메시지를 라우트할 수 있는 첫 번째 대체 출력 터미널.
Out2 PROPAGATE 문이 변환된 메시지를 라우트할 수 있는 두 번째 대체 출력 터미널.
Out3 PROPAGATE 문이 변환된 메시지를 라우트할 수 있는 세 번째 대체 출력 터미널.
Out4 PROPAGATE 문이 변환된 메시지를 라우트할 수 있는 네 번째 대체 출력 터미널.
주: PROPAGATE문의 구문은 PROPAGATE문을 참조하십시오.

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

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

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

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

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