일반 배치

본 장에서는 일반 배치의 개념과 아키텍처의 특성과 일반 배치를 생성하고 테스트 및 디버깅 과정을 설명한다.

1. 개요

일반 배치는 UNIX Command에서 실행하는 배치 프로그램으로 가장 일반적인 형태의 배치를 의미한다.

일반 배치는 온라인 서비스와는 다르게 대용량 데이터를 처리하고 반복적인 작업을 수행한 후 결과를 반환하는 특징이 있다.

온라인 서비스 일반 배치

데이터 처리 단위

1건 단위

N건 단위

트랜잭션 관리 단위

1건 단위 관리

N건 단위 관리

결과 응답

1건 처리 후 즉시 응답

N건 처리 후 결과 응답

기본 구조

일반 배치 아키텍처는 온라인 서비스의 계층적 구조를 따른다. 다시 말해 일반 배치 모듈을 기준으로 시스템의 선/후처리 모듈이 존재하므로 계층 구조를 이룬다는 의미이다. 그리고 온라인 서비스 모듈 내부에서 사용하는 DBIO, FileIO 그리고 공통 유틸리티 대부분을 일반 배치 모듈 내부에서도 사용할 수 있다.

일반 배치는 Script Layer와 업무 Layer를 분리하여 배치 프로그램을 작성한다.

Layer 설명

Script Layer

입력 처리, 업무 분기 그리고 일반 배치 서버에 필요한 기타 환경설정 내용을 작성하는 Layer

업무 Layer

업무 모듈을 호출하기 위해 필요한 실행 프로그램으로서 배치 파라미터의 거래 제어 및 배치 서버 내부 흐름 제어 등을 담당하는 Layer

일반 배치는 위와 같이 Layer별로 역할의 구분을 두어 효율적으로 일반 배치 프로그램을 작성할 수 있도록 지원한다.

다음은 일반 배치 프로그램의 구조와 각 구성요소 간의 실행되는 과정에 대한 설명이다.

figure2 1
일반 배치의 아키텍처 구조
  • 실행 인터페이스

    UNIX Command에서 배치 프로그램을 실행하거나 JOB 스케줄러를 이용하여 배치 프로그램을 수행하는 인터페이스이다.

  • 배치 스크립트

    배치 서버를 수행시키는 스크립트로서 배치 서버의 인자 처리 및 업무 분기 등의 내용을 포함한다. 단, SQL(Structured Query Language)과 같은 구조화된 업무 내용은 포함하지 않는다.

  • 일반 배치 서버

    데이터베이스 접속, CommBuff, 로그 그리고 Global 변수 등의 초기화 로직을 수행하고 Flow 처리를 이용한 업무 커스터마이즈 영역을 제공한다.

  • Flow Control

    배치 모듈의 호출 순서를 제어하는 기능을 제공한다.

  • 배치 파라미터

    ProFrame에서 개발된 배치 서비스를 제어하기 위한 배치 테이블이다.

  • 배치 모듈

    배치 프로그램을 수행하는 모듈이다.

  • 시스템 선/후처리

    배치 파라미터의 로딩 및 거래 제어, CommBuff 업무 데이터 설정 그리고 배치 Job Information의 시작과 끝 정보를 작성하는 등의 처리를 수행한다.

2. 일반 배치 생성

일반 배치 생성은 배치 생성 절차에서 언급했듯이 크게 3단계로 나누어 진행된다. 즉, 일반 배치 서버 작성, 일반 배치 모듈 작성 및 일반 배치 생성 확인 단계를 거쳐야 비로소 일반 배치를 생성할 수 있다.

다음은 일반 배치를 생성하는 세부 절차이다.

  1. 일반 배치 서버 작성

    • 일반 배치 서버 환경설정

      만약 ProFrame가 기본적으로 제공하는 일반 배치 서버의 환경설정을 그대로 사용하는 경우 이 단계는 생략할 수 있다.

    • 일반 배치 서버 생성

  2. 일반 배치 모듈 작성

    • 일반 배치 모듈 환경설정

      만약 ProFrame이 기본적으로 제공하는 일반 배치 모듈의 환경설정을 그대로 사용하는 경우 이 단계는 생략할 수 있다.

    • 일반 배치 모듈 생성

  3. 일반 배치 생성 확인

    • 일반 배치 모듈 테스트

    • 디버깅

      작성된 일반 배치 모듈에 오류가 발생된 경우 오류가 제거될 때까지 일반 배치 모듈을 수정하는 과정을 반복한다.

다음 절에서는 위와 같은 절차에 따라 일반 배치를 생성하는 방법에 대해 설명한다.

2.1. 일반 배치 서버 작성

일반 배치 서버 환경설정

다음은 WebAdmin에서 일반 배치 서버와 관련된 환경설정 정보를 확인하고 설정하는 절차이다.

  1. 인터넷 브라우저의 주소 표시줄에 다음과 같은 URL을 입력한다.

    http://IP_ADDRESS:PORT/pfmdevsvr/login.jsp

    'IP_ADDRESS’는 통합 서버가 설치된 Host의 IP 주소이고, 'PORT’는 WEBMain.xml에 설정된 통합 서버의 Listen 포트 번호이다.

  2. 다음과 같이 WebAdmin의 로그인 화면이 나타난다.

    WebAdmin 접속할 때 계정에 대한 설정이 존재하지 않으면 기본 값으로 설정된 아이디와 패스워드를 사용하여 접속이 가능하다.

    기본으로 설정된 계정 정보는 아이디와 패스워드가 각각 ‘Tester’와 ‘1234’로 설정되어 있다. 접속하려는 해당 프로젝트의 'PROJECT ID'를 선택하고 'ID''PW'를 입력한 이후 [Login] 버튼을 클릭하면 WebAdmin에 접속된다.

    figure2 2
    WebAdmin – 로그인 화면
  3. 로그인이 정상적으로 완료되면 WebAdmin의 메인 화면이 다음과 같이 나타난다.

    figure2 3
    WebAdmin – 메인 화면
  4. 접속된 WebAdmin 메인 화면에서 [환경설정] > [기본환경설정] > [환경관리] > [기본환경관리] 메뉴를 선택한다.

  5. 기본환경관리 화면이 나타나면 '환경구성그룹'에서 'COMPILE_CONFIG'를 선택한다.

    figure2 4
    WebAdmin – 기본환경관리 화면

    COMPILE_CONFIG는 일반 배치 서버 생성과 관련된 환경설정 정보를 포함하는 환경구성그룹이다. 이 환경설정은 실제 업무 처리에 맞추어 커스터마이즈할 수 있다.

  6. COMPILE_CONFIG 환경구성그룹을 선택하면 현재 설정되어 있는 환경설정 정보가 다음과 같이 자동으로 조회된다. 결과 개수는 최대 100건까지 조정할 수 있다.

    figure2 5
    WebAdmin – COMPILE_CONFIG 조회 결과 화면

    다음은 항목에 대한 설명이다.

    항목 설명

    GENERAL_BATCH_SERVER_COMPILE_BASE

    일반 배치 서버의 컴파일 디렉터리 경로를 설정하는 기능으로 디렉터리 경로를 다음과 같이 설정내용 항목에 입력한다.

    (예: /compile/${resourceGroup}/src/batchServer/gen/)

    GENERAL_BATCH_SERVER_HOME

    일반 배치 서버가 생성되는 홈 디렉터리 경로를 설정한다.

    (예: /compile/${resourceGroup}/src/batchServer/gen/)

    GENERAL_BATCH_SERVER_LIB_HOME

    일반 배치 서버의 라이브러리 디렉터리 경로를 설정한다.

    (예: /release)

    GENERAL_BATCH_SERVER_MAKE_FILE

    일반 배치 서버를 Make하는 명령어를 설정한다.

    (예: make -f ${sourceFile}.mk)

    GENERAL_BATCH_SERVER_MAKE_FILE_HOME

    일반 배치 서버의 Make 파일이 생성되는 디렉터리 경로를 설정한다.

    (예: /compile/${resourceGroup}/src/batchServer/gen/)

    GENERAL_BATCH_SERVER_SHELL_FILE

    일반 배치 서버의 Shell 파일이 생성되는 디렉터리 경로를 설정한다.

    (예: /compile/${resourceGroup}/src/batchServer/gen/)

    GENERAL_BATCH_SERVER_SHELL_FILE_HOME

    일반 배치 서버의 Shell 파일이 생성되는 홈 디렉터리 경로를 설정한다.

    (예 : /compile/${resourceGroup}/src/batchServer/gen/)

    GENERAL_BATCH_SERVER_SOURCE_HOME

    일반 배치 서버의 소스가 생성되는 디렉터리 경로를 설정한다.

    (예: /compile/${resourceGroup}/src/batchServer/gen/)

    GENERAL_BATCH_SERVER_TEMPLATE_BASE

    일반 배치 서버의 템플릿이 생성되는 디렉터리 경로를 설정한다.

    (예: /compile/${resourceGroup}/src/batchServer/gen/)

  7. 위와 같이 조회된 결과 중에서 각 환경설정 항목의 ‘설정내용’ 값을 확인하고 변경할 값으로 수정한다.

    1. 변경할 환경설정 항목을 선택한다.

    2. 선택한 환경설정 정보를 확인한다.

    3. 변경할 환경설정의 정보('사용유무', '설정내용', '부가설명')를 수정한 후 [저장] 버튼을 클릭한다.

    4. 수정된 환경설정 항목을 다시 조회한 후 변경된 내용을 확인한다.

WebAdmin에 대한 상세한 내용은 ProFrame 관리자 안내서를 참고한다.

일반 배치 서버 생성

다음은 일반 배치 서버를 생성하는 절차에 대한 예이다.

  1. 작업영역 내비게이터에서 오른쪽 마우스 버튼을 클릭한 후 [New] > [Server] 메뉴를 선택한다.

    figure2 6
    Server 메뉴
  2. 다음과 같이 새로운 서버 프로젝트 대화상자가 나타난다. 각 항목은 일반 배치 서버를 생성하는데 필수 사항이다.

    figure2 7
    일반 배치 서버 – 새로운 서버 프로젝트 대화상자

    다음은 새로운 서버 프로젝트 대화상자의 각 항목에 대한 설명이다.

    항목 설명

    리소스 그룹

    WebAdmin에 등록된 리소스 그룹만 표시되며 필수선택 항목이다. 만약 선택할 리소스 그룹이 없는 경우 WebAdmin에서 추가할 수 있다.

    리소스 그룹을 추가하기 위해서는 WebAdmin에 접속한 후 [메타관리] > [메타시스템] > [리소스 그룹 관리] 메뉴를 선택한다. 리소스 그룹관리 화면에서 현재 설정되어 있는 리소스 그룹을 확인하고 추가할 리소스 그룹을 등록한다.

    물리명

    일반 배치 서버의 물리명을 입력하는 항목이다.

    논리명

    일반 배치 서버의 논리명을 입력하는 항목이다.

    데이터베이스 유형

    XA MODE 또는 NON-XA MODE를 선택한다.

    • XA MODE : TP 서비스의 XA 연동을 하는 경우 선택한다. 실제로는 pfmTpStart() 함수를 추가적으로 호출하여 TP 서비스를 실행하려는 주된 목적이 있다.

    • NON-XA MODE : 일반적인 데이터베이스 연결 방식이다.

    배치는 데이터베이스 타입이 XA MODE이든 NON-XA MODE이든 간에 배치 내부는 NON-XA MODE 방식으로 데이터베이스를 연결한다.

    본 안내서에서는 데이터베이스 타입을 XA MODE로 선택하는 예로 하되, XA MODE는 TP 서비스의 XA 연동을 하기 위한 목적으로 사용한다는 것을 숙지해야 한다.

    서버 유형

    일반 배치 서버를 생성하려면 GENERAL_BATCH을 선택해야 한다.

    • GENERAL_BATCH : 일반 배치 서버를 생성할 때 선택한다. 자세한 내용은 일반 배치를 참고한다.

    • RESIDENT_UCS_BATCH : 상주 배치 서버를 생성할 때 선택한다. 자세한 내용은 상주 배치를 참고한다.

    • POD_BATCH : POD 배치 서버를 생성할 때 선택한다. 자세한 내용은 POD 배치를 참고한다.

  3. 위와 같은 필수 항목을 모두 설정한 후 [완료] 버튼을 클릭하면, 일반 배치 서버를 생성한 결과물인 총 3개의 파일이 다음과 같이 나타난다.

    소스파일명 설명

    Server Source

    일반 배치 서버의 소스 파일이다.

    Make File

    일반 배치 서버의 Make 파일이다.

    Shell File

    일반 배치를 실행하기 위한 Shell 파일이다.

    위 파일은 ProFrame가 기본적으로 제공하는 소스 파일들이며 개발자가 실제 업무 처리에 맞추어 커스터마이즈(customize)할 수 있다. 본 안내서에서는 커스터마이즈를 하지 않고 기본으로 제공하는 소스 파일을 그대로 사용하여 설명한다.

    main(int argc, char *argv[])
    {
        long rc = RC_NRM;
        int   a = -1;
        PfmBatchContext _ctx;
        PfmBatchContext *ctx;
    
        bzero( ctx, sizeof(PfmBatchContext) );
    
        /* 배치 초기화 :  DB 접속(XA, NAA), Load bat_flow.cfg   */
        rc = pfmBatchInit( argc, argv );
        if( rc != RC_NRM ) {
           ctx->err_ret_flag = rc;
           goto PFM_CATCH;
        }
    
        /* 실제 배치 Flow를 실행 */
        PFM_STRY (pfmBatchFrameControlProcessing( ctx, &flow_cfg ) );
    
        /* 배치 후처리 DB 접속 해제, 메모리 해제 등.*/
        pfmBatchFini();
    
        return (int)RC_NRM;
    
    PFM_CATCH;
        pfmBatchFini();
        return (int)ctx->err_ret_flag;
    }
  4. 작업영역 내비게이터에서 생성된 일반 배치 서버 리소스를 선택하고 오른쪽 마우스 버튼을 클릭한 후 [Compile Resource] 메뉴를 선택한다.

    figure2 8
    일반 배치 서버 – Compile Resource
  5. 다음과 같이 컴파일 진행 상태를 표시하는 Compile Resource 창이 나타난다.

    figure2 9
    일반 배치 서버 – Compile Resource 창

    이때 컴파일 완료 여부는 스튜디오 콘솔 뷰에 다음과 같이 나타난다.

    ====> 완료 ExitCode = [0]
  6. 위와 같이 정상적으로 컴파일이 완료되면 일반 배치 서버가 생성된다. 생성된 결과는 일반 배치와 관련된 소스 파일이 있는 디렉터리에서 확인할 수 있다.

    [pfmtpqa@fwsol:/home2/pfmtpqa/proframe5.0/compile/team/src/batchServer/gen]$ ls –al
    총 88
    drwxrwxrwx   2 pfmtpqa  qa   512   10월  7일  16:21 .
    drwxrwxrwx   4 pfmtpqa  qa   512   10월  7일  16:19 ..
    -rwxrwxrwx   1 pfmtpqa  qa   36256 10월  7일  16:21 GENBATCH01
    -rw-rw-rw-   1 pfmtpqa  qa    2545 10월  7일  16:19 GENBATCH01.c
    -rwxrwxrwx   1 pfmtpqa  qa    1443 10월  7일  16:19 GENBATCH01.mk
    -rwxrwxrwx   1 pfmtpqa  qa      37 10월  7일  16:19 GENBATCH01.sh
    파일명 설명

    GENBATCH01

    생성된 일반 배치 서버이다.

    GENBATCH01.c

    생성된 일반 배치 서버의 소스 파일이다.

    GENBATCH01.mk

    생성된 일반 배치 서버의 Make 파일이다.

    GENBATCH01.sh

    생성된 일반 배치의 Shell 파일이다.

2.2. 일반 배치 모듈 작성

일반 배치 모듈 환경설정

본 절에서는 일반 배치 서버 작성에서 언급한 WebAdmin의 접속과정을 일부 생략하고 일반 배치 모듈과 관련된 환경설정 정보를 확인하고 설정하는 절차만을 설명한다.

다음은 WebAdmin에서 일반 배치 모듈과 관련된 환경설정 정보를 확인하고 설정하는 절차이다.

  1. WebAdmin 화면에서 [환경설정] > [기본환경설정] > [환경관리] > [기본환경관리] 메뉴를 선택한다.

  2. 기본환경관리 화면이 나타나면 '환경구성그룹'에서 'COMPILE_CONFIG’를 선택한다. COMPILE_CONFIG는 일반 배치 서버뿐만 아니라 일반 배치 모듈과 관련된 환경설정 내용도 포함하는 환경구성 그룹이다. 이 환경설정은 실제 업무 처리에 맞추어 커스터마이즈할 수 있다.

    figure2 5
    일반 배치 모듈 환경설정

    다음은 위 그림의 조회 결과 항목 중에서 일반 배치 모듈과 관련된 환경설정에 대한 설명이다.

    항목 설명

    BATCH_MODULE_COMPILE_BASE

    일반 배치 모듈이 컴파일되는 디렉터리 경로를 설정한다.

    (예: /compile/${resourceGroup}/src/batch/)

    BATCH_MODULE_DLUPDATE

    생성된 일반 배치 모듈을 Dlupdate하는 명령어를 설정한다.

    (예: pfmdlupdate lib${sourceFile}.so)

    BATCH_MODULE_HOME

    일반 배치 모듈의 홈 디렉터리 경로를 설정한다.

    (예: /compile/${resourceGroup}/src/batch/)

    BATCH_MODULE_LIB_HOME

    일반 배치 모듈의 라이브러리 경로를 설정한다.

    (예: /release)

    BATCH_MODULE_MAKE_FILE

    일반 배치 모듈을 Make하는 명령어를 설정한다.

    (예: make_bm.sh ${sourceFile})

    BATCH_MODULE_MAKE_FILE_HOME

    일반 배치 모듈의 Make 파일이 생성되는 경로를 설정한다.

    ( 예: make_bm.sh ${sourceFile})

    BATCH_MODULE_SHELL_FILE

    일반 배치 모듈의 Shell 파일이 생성되는 디렉터리 경로를 설정한다.

    ( 예: /compile/${resourceGroup}/src/batch/)

    BATCH_MODULE_SHELL_HOME

    일반 배치 모듈의 Shell 파일이 생성되는 홈 디렉터리 경로를 설정한다.

    (예: /compile/${resourceGroup}/src/batch/)

  3. 위와 같이 조회된 결과 중에서 각 환경설정 항목의 ‘설정내용’ 값을 확인하고 변경할 값으로 수정한다.

    1. 변경할 환경설정 항목을 선택한다.

    2. 선택한 환경설정 정보를 확인한다.

    3. 변경할 환경설정의 정보('사용유무', '설정내용', '부가설명')를 수정한 후 [저장] 버튼을 클릭한다.

    4. 수정된 환경설정 항목을 다시 조회한 후, 변경된 내용을 확인한다.

WebAdmin에 대한 상세한 내용은 ProFrame 관리자 안내서를 참고한다.

일반 배치 모듈 생성

다음은 일반 배치 모듈을 생성하는 절차에 대한 예이다.

  1. 스튜디오 내장된 DBIO 편집기를 이용하여 DBIO를 생성한다.

    1. 데이터베이스 테이블을 생성한다. 본 예제에서는 일반 배치를 실행할 때 특정 값을 CRUD(CREATE, READ, UPDATE, DELETE)하기 위해 필요한 데이터베이스 테이블을 생성한다.

      다음은 테이블 스크립트의 작성 예이다.

      CREATE TABLE EMP (
        EMPNO NUMBER(4) NOT NULL,
        ENAME VARCHAR(10),
        JOB VARCHAR(9),
        MGR NUMBER(4)
      )
    2. 생성된 데이터베이스 테이블의 DBIO 모듈을 생성한다.

      DBIO를 생성하기 위해서는 다음과 같은 정보를 입력해야 한다. 각 항목은 필수 항목이다. DBIO 생성에 대한 상세한 내용은 ProFrame DBIO 개발 안내서를 참고한다.

      figure2 10
      일반 배치 모듈 – DBIO 생성
      figure2 11
      일반 배치 모듈 – DBIO 편집기 작성
    3. 위와 같이 작성된 DBIO를 컴파일한다. 컴파일이 완료되면 스튜디오의 콘솔 뷰에 다음과 같은 결과가 나타난다.

      figure2 12
      일반 배치 모듈 – DBIO 생성

      일반 배치 모듈 – DBIO 생성 화면에서 등록한 물리명에 해당하는 .pc 파일이 생성된다. 각 DBMS 벤더에 따라 생성되는 파일의 확장자가 다르다. 예를 들어 Oracle은 .pc, Tibero는 .tbc, Sysbase는 .cp, DB2는 .sqc로 생성된다.

  2. 스튜디오에 내장된 ProMapper 편집기를 이용하여 입출력 구조체를 생성한다.

    1. 필수 항목인 각 항목의 정보를 입력하고 [완료] 버튼을 클릭한다.

      figure2 13
      일반 배치 모듈 – 입력 구조체 생성
    2. ProMapper 편집기 화면이 다음과 같이 나타난다.

      figure2 14
      일반 배치 모듈 – ProMapper 편집기

      필요한 컬럼 정보를 ProMapper 편집기에 추가한다. 컬럼 정보를 추가하는 방법은 2가지가 있다.

      추가 방법

      Property Pool

      Property Pool View에서 추가할 컬럼을 마우스로 드래그 앤드 드롭해서 ProMapper 편집기에 추가한다. 이때 추가되는 컬럼은 Delimiter 배치 입력 타입을 선택하여 설정한다.

      Include 구조체

      구조체를 검색하여 ProMapper 편집기에 추가한다.

      Message 생성 영역에서 'Delimiter' 전문 타입을 선택하면 구조체를 기반으로 한 전문이 생성된다. 만약 기본으로 생성된 전문을 수정하려면 아래에 기술된 절차를 수행한다.

      figure2 15
      일반 배치 모듈 – 구조체 추가 화면
    3. 기본으로 생성된 전문을 수정한다. 전문을 수정하려면 전문 생성 영역에 표시된 전문 타입(FixedLength, Delimiter)을 선택한다.

      figure2 16
      일반 배치 모듈 – 전문 수정

      선택된 전문 타입에 따라 [편집]의 콤보상자 값 또는 설정해야 하는 값도 달라진다. 기본으로 생성된 전문을 수정한 후 [저장] 버튼을 클릭하면 수정된 전문에 대한 소스가 생성된다. 만약 기본으로 생성된 전문을 수정하는 않는 경우 이 과정은 생략해도 된다.

    4. 출력 구조체를 생성한다.

      일반 배치에서 출력 구조체 생성은 의미가 없다. 왜냐하면, 일반 배치는 데이터베이스 및 파일만 처리하고, 처리 후에는 정상인지 비정상인지에 대한 결과 값만 반환하기 때문에 출력 구조체를 생성할 필요가 없다. 구조체 생성에 대한 상세한 내용은 ProFrame ProMapper 개발 안내서를 참고한다.

    5. 생성된 입출력 구조체를 컴파일 및 Dlupdate를 수행한다. 이 과정을 끝으로 입출력 구조체 생성이 완료된다.

  3. 스튜디오에 내장된 EMB Designer를 이용하여 일반 배치를 디자인한다.

    1. 작업영역 내비게이터에서 오른쪽 마우스 버튼을 클릭한 후 [New] > [EMB Batch Design] 메뉴를 선택한다

      figure2 17
      일반 배치 모듈 – EMB Batch Design 메뉴
    2. 다음과 같이 신규 배치모듈 생성 대화상자가 나타난다.

      figure2 18
      일반 배치 모듈 – 신규 배치모듈 생성 대화상자
      항목 설명

      리소스 타입

      생성할 배치 모듈의 리소스를 선택한다.

      • Batch Module : 배치 모듈을 생성할 때 사용한다.

      • Batch Template : 배치 모듈을 생성하기 위한 템플릿을 만들 때 사용한다.

      논리명

      생성할 배치의 리소스 논리명을 입력한다.

      물리명

      생성할 배치의 리소스 물리명을 입력한다.

      리소스 그룹

      리소스 그룹은 개발의 편의를 위해 리소스를 분류한 일종의 폴더라고 할 수 있으며, WebAdmin에 등록된 리소스 그룹만 표시된다. 만약 원하는 리소스 그룹이 없는 경우 WebAdmin에서 추가할 수 있다.

      리소스 그룹을 추가하기 위해서는 WebAdmin에 접속한 후 [메타관리] > [메타시스템] > [리소스 그룹 관리] > [리소스 그룹관리] 메뉴를 선택한다. 리소스 그룹관리 화면에서 현재 설정된 리소스 그룹을 확인하고 추가할 리소스 그룹을 등록한다.

      라이브러리 경로

      외부 모듈의 라이브러리가 존재하는 디렉터리 경로를 설정한다.

      입력 구조체, 출력 구조체

      배치 모듈의 입출력 파라미터로 사용될 구조체를 지정한다. 본 예제에서는 일반 배치 모듈 – ProMapper 편집기에서 생성한 입출력 구조체를 선택하여 설정한다.

      배치 코드

      배치 모듈 실행을 위한 코드를 설정한다. 이 배치코드는 배치 파라미터를 조회하기 위한 키 값으로 매우 중요한 역할을 담당하는 항목이다.

      설명

      생성하려는 배치 모듈에 대해 부가 설명을 입력한다.

      figure2 19
      일반 배치 모듈 – 입출력 구조체 지정 화면
    3. 위와 같이 신규 배치모듈 생성 대화상자에서 일반 배치 모듈 생성을 위한 기본 정보를 모두 설정한 후 [완료] 버튼을 클릭한다. 그러면 일반 배치 모듈을 디자인할 수 있는 EMB Designer 화면으로 이동한다.

      figure2 20
      일반 배치 모듈 – 배치 디자인

      여기서 일반 배치 모듈을 생성하고 디자인하는 과정은 온라인 서비스의 서비스 모듈을 생성하는 방법과 동일하다. 온라인 서비스의 서비스 모듈을 생성하는 과정에 대한 상세한 내용은 ProFrame EMB 개발 안내서를 참고한다.

      배치 모듈은 온라인 서비스 모듈과는 다르게 스튜디오에 내장된 EMB Designer[Palette] 메뉴에 Batch 항목이 추가되어 있다.

      배치 모듈은 데이터베이스 트랜잭션 관리를 내부적으로 할 수 있기 때문에 위와 같은 항목들이 추가되어 있다. 일반 배치에서 TX와 관련된 API는 TP-Monitor와 연동을 수행할 때 TP 서비스의 트랜잭션을 관리하기 위한 API이며, DB와 관련된 API는 배치 서버가 직접 접속해 있는 데이터베이스의 트랜잭션을 관리하기 위한 API이다.

      [FileIO 루프 모듈] 항목은 FileIO의 Loop를 만들기 위해 사용하며, [배치 호출] 항목은 다른 배치를 직접 호출하기 위해 사용한다.

      figure2 21
      EMB Designer – [Palette] 메뉴의 Batch 항목
      항목 상세 설명

      Tx Begin

      TP-Monitor의 XA 서버의 서비스와 연동할 때 트랜잭션을 시작하기 위해 사용되는 API를 생성한다.

      Tx Commit

      TP-Monitor의 XA 서버의 서비스와 연동할 때 트랜잭션을 commit하기 위해 사용되는 API를 생성한다.

      Tx Rollback

      TP-Monitor의 XA 서버의 서비스와 연동할 때 트랜잭션을 rollback하기 위해 사용되는 API를 생성한다.

      DB Commit

      배치 서버와 직접 연결된 데이터베이스의 commit을 수행하기 위한 API를 생성한다.

      DB Rollback

      배치 서버와 직접 연결된 데이터베이스의 rollback을 수행하기 위한 API를 생성한다.

      FileIO 루프 모듈

      FileIO를 사용할 때 Loop 모듈을 생성한다.

      배치 호출

      동일한 서버에 존재하는 다른 배치 프로그램을 호출할 수 있도록 소스를 생성한다.

2.3. 일반 배치 생성 확인

일반 배치 모듈 테스트

위와 같이 생성된 일반 배치 모듈을 테스트하는 방법은 2가지가 있다.

  • UNIX Command에서 생성된 일반 배치 Shell를 실행하여 테스트한다.

  • 생성된 일반 배치 서버를 실행한 후 배치 로그를 확인하여 테스트한다.

배치 처리 정보를 DB에 쌓기 위해서는 Customizing Source의 pfmBatchEx를 Dlupdate해야 한다. 또한, PFM_BATCH 테이블에서 해당 배치 모듈의 JOB_INFO_FLAG(1 : Batch 로깅 Off, 0 : Batch 로깅 On[Default])를 0(On)으로 설정한다.

배치 처리 정보 결과는 PFM_BATCH_JOB 테이블에 처리시간 및 처리 건수 정보내역이 쌓인다.

본 예제에서는 첫 번째 방법으로 일반 배치 모듈을 테스트한다.

일반 배치를 수행하기 위한 Shell 파일을 다음과 같이 작성하여 테스트한다.

./GENBATCH01 -c 'GEN_BAT01' -d 'GEN;01;TEST;'
항목 설명

GENBATCH01

일반 배치 서버 이름이다.

-c

배치 코드를 입력하기 위한 파라미터이다.

Gen_bat01

배치 코드이며, 입력되지 않은 경우 일반 배치 서버 이름을 배치 코드 값으로 인식한다.

-d

Delimiter 형태의 입력 데이터이다.

RI/WS 반영된 ProFrame에서 WorkSpace에 생성한 배치 모듈을 call할 때에는 Shell에 다음의 문구를 추가하여 테스트한다.

### Work Space 영역에 있는 배치 모듈 call할 때
export PFM_WS_DLCALL_YN=Y

### Release Image 영역에 있는 배치 모듈 call할 때
export PFM_WS_DLCALL_YN=N

다음은 일반 배치 모듈을 테스트할 때 지원되는 일반 배치 파라미터에 대한 설명이다.

  • 사용법

    [배치서버명] [–d [data]] [-f [data]] [-c ] [-N]
    파라미터 설명

    - d [data]

    Delimiter 전문 타입의 입력 데이터일 때 사용한다.

    - f [data]

    Fixed length 전문 타입의 입력 데이터일 때 사용한다.

    - c

    배치 코드 입력 데이터일 때 사용한다. 기본으로 설정된 배치 코드는 배치 서버의 파일명이다.

    - N

    입출력 업무 데이터가 없는 경우에 사용한다.

  • 예제

    다음은 일반 배치 파라미터의 종류에 따라 일반 배치를 실행하는 예이다.

    • Delimiter 입력

      [배치서버명] –d ’data1;data2;data3;’
    • Fixed length 입력

      [배치서버명] –f ’data1     data2     data3     ’
    • Delimiter 입력, 배치 코드를 동시에 입력

      [배치서버명] –d ’data1;data2;data3;’ –c ‘batchcode1’
    • 입출력 데이터가 없는 경우

      [배치서버명] –N
    • 입출력 데이터가 없고 배치 코드를 입력하는 예

      [배치서버명] –N –c ‘batchcode1’
일반 배치 디버깅

일반 배치 모듈을 테스트한 후 디버깅이 필요한 경우에는 배치 로그 파일을 확인한다. 배치 로그 파일은 환경변수 PFM_BAT_LOG_DIR에 설정된 디렉터리에 위치하며 “[배치서버명]_bat_yyyymmdd.log”로 생성된다.