지정된 ODBC 데이터 소스의 데이터베이스와 상호작용하려면 Database 노드를 사용하십시오. 입력 메시지의 데이터를 지정하고 이를 몇 가지 방법(예: 계산 수행)으로 변환하여 결과를 데이터베이스 테이블에 지정하는 ESQL문을 코딩하여 상호작용의 성질을 정의합니다.
데이터베이스를 즉시 확약할지, 갱신이 확약된 메시지 플로우가 완료될 때까지 지연시킬지 또는 메시지 플로우의 전반적인 완료 상태에 따라 롤백할 것인지를 제어하는 등록 정보를 설정할 수 있습니다.
이 노드를 사용하여 데이터베이스를 갱신할 수는 있어도 메시지는 갱신할 수 없습니다.
Database 노드는 Workbench에서 다음 아이콘으로 표시됩니다.
이 노드를 사용하는 방법을 보려면 다음 샘플을 참조하십시오.
20개의 모니터 주문을 받는 상황을 고려해 봅시다. 창고에 모니터가 충분하여 재고 데이터베이스의 재고 레벨을 줄이려고 합니다. Database 노드를 사용하여 사용 가능한 모니터가 충분한지를 점검하여 데이터베이스의 수량 필드를 줄일 수 있습니다.
Database 노드 인스턴스를 메시지 플로우에 넣었으면 이 노드를 구성할 수 있습니다. 편집기 보기에서 이 노드를 마우스 오른쪽 단추로 누른 후 등록 정보를 누르십시오. 노드의 기본 등록 정보가 표시됩니다.
값을 입력해야 하는 모든 필수 등록 정보(정의된 디폴트 값이 없는 등록 정보)는 등록 정보 대화 상자에서 별표(*)로 표시됩니다.
다음과 같이 Database 노드를 구성하십시오.
z/OS 시스템에서는 브로커가 브로커 시작 작업 ID나, 사용자 정의 데이터 세트 <hlq>.SBIPPROC에서 mqsisetdbparms 명령 JCL, BIPSDBP에 지정한 사용자 ID 및 암호를 사용합니다.
테이블과 상호작용하는 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 파일을 작성할 수도 있습니다.
이 모듈에 SET, WHILE, DECLARE 및 IF를 비롯하여 모든 ESQL문을 사용할 수 있으나, Compute 노드와는 달리 Database 노드는 입력 터미널에서 수신한 변경되지 않은 메시지를 출력 터미널로 전달합니다. 이는 Filter 노드에서와 같이 Database 노드에서도 하나의 메시지만 참조한다는 의미입니다.
메시지의 어떤 부분도 수정할 수 없으므로, 지정 명령문(INSERT문의 SET절이 아닌 SET문)은 임시 변수에만 값을 지정할 수 있습니다. 따라서 지정 명령문에 취할 수 있는 조치의 범위는 제한됩니다.
원할 경우, 자원 네비게이터에서 적절한 ESQL 파일을 열어 아웃라인 보기에서 이 노드를 선택할 수 있습니다.
상자를 선택하면, 노드는 데이터베이스에서 리턴된 모든 양의 리턴 코드를 오류로 핸들링하고 음의 리턴 코드 또는 그 이상의 심각한 오류에서와 같은 방법으로 예외를 생성합니다.
선택란을 선택하지 않으면, 노드에서는 경고를 정상 리턴 코드로 처리하고 예외를 전달하지 않습니다. 발생하는 경고 중 가장 중요한 것은 없음으로서, 대부분의 환경에서 정상적인 리턴 코드로 안전하게 핸들링될 수 있습니다.
선택란을 선택하지 않을 경우, 각 데이터베이스 호출 이후에 리턴될 수 있는 임의의 데이터베이스 오류를 점검하려면 ESQL을 포함시키십시오(SQLCODE 및 SQLSTATE를 사용하여 수행할 수 있음). 오류가 발생한 경우, 브로커와 데이터베이스의 무결성을 보장하려면 메시지 플로우 내의 오류를 핸들링해야 합니다. 자체 처리를 통해 오류를 핸들링하지 않을 경우, 브로커가 디폴트 오류 핸들링을 호출하도록 선택하지 않았으므로 오류가 무시됩니다. 예를 들면, ESQL THROW문을 포함시켜 이 노드에서 예외를 전달하거나 Throw 노드를 사용하여 나중에 자체적으로 예외를 생성하게 할 수 있습니다.
대화 상자를 닫고 등록 정보에서 작성한 모든 변경을 제거하려면 취소를 누르십시오.
다음 표에는 Database 노드 터미널이 설명되어 있습니다.
터미널 | 설명 |
---|---|
In | 노드가 처리할 메시지를 승인하는 입력 터미널. |
Failure | 처리 중에 실패가 감지될 경우 입력 메시지가 전달될 출력 터미널. 경고를 오류로 처리를 선택했으면, 처리가 완료되었더라도 노드는 메시지를 이 터미널로 전달합니다. |
Out | 노드에서의 처리가 완료되었을 때 변환된 메시지가 라우트되는 출력 터미널. 변환된 메시지는 PROPAGATE 문에 의해 이 터미널로 라우트될 수도 있습니다. |
Out1 | PROPAGATE 문이 변환된 메시지를 라우트할 수 있는 첫 번째 대체 출력 터미널. |
Out2 | PROPAGATE 문이 변환된 메시지를 라우트할 수 있는 두 번째 대체 출력 터미널. |
Out3 | PROPAGATE 문이 변환된 메시지를 라우트할 수 있는 세 번째 대체 출력 터미널. |
Out4 | PROPAGATE 문이 변환된 메시지를 라우트할 수 있는 네 번째 대체 출력 터미널. |
다음 표에는 노드 등록 정보가 설명되어 있습니다. 앞에 M이 표시된 열은 등록 정보가 필수임을 나타내며(디폴트가 정의되지 않았을 때 값을 입력해야 하는 경우 등록 정보 대화 상자에 별표(*)로 표시됨) 앞에 C가 표시된 열은 등록 정보가 구성 가능함을 나타냅니다(메시지 플로우를 Bar 파일에 추가하여 전개할 때 값을 변경할 수 있음).
다음 표에는 Database 노드 기본 등록 정보가 설명되어 있습니다.
등록 정보 | M | C | 디폴트 | 설명 |
---|---|---|---|---|
데이터 소스 | 아니오 | 예 | 이 등록 정보는 이 노드와 연관된 ESQL에서 참조하는 테이블이 상주하는 데이터베이스의 ODBC 데이터 소스 이름(명령문 등록 정보에 의해 식별됨). | |
명령문 | 예 | 아니오 | 데이터베이스 | 데이터베이스에 대해 실행하는 명령문을 포함하는 ESQL 파일 내의 모듈 이름. |
트랜잭션 | 예 | 아니오 | 자동 | 노드의 트랜잭션 모드. 자동 또는 확약일 수 있습니다. |
경고를 오류로 처리 | 예 | 아니오 | 지우기 | 데이터베이스 SQL 경고를 오류로 처리합니다. 이 선택란을 선택하면 이 조치가 수행됩니다. |
데이터베이스 오류 시 예외 전달 | 예 | 아니오 | 선택 | 데이터베이스 오류가 발생할 때 브로커가 예외를 전달하도록 합니다. 이 선택란을 선택하면 이 조치가 수행됩니다. |
다음 표에는 Database 노드의 설명 등록 정보가 설명되어 있습니다.
등록 정보 | M | C | 디폴트 | 설명 |
---|---|---|---|---|
간단한 설명 | 아니오 | 아니오 | 노드에 대한 간략한 설명. | |
자세한 설명 | 아니오 | 아니오 | 메시지 플로우에서 노드의 목적을 설명하는 텍스트. |