배치 실행 어플리케이션이란 개발된 배치 응용 프로그램을 스케줄링하여 실행이 가능하도록 해주는 어플리케이션으로 배치 실행 어플리케이션에서 각 개별 배치 응용 프로그램을 등록, 스케줄링하여 Process Fork 하는방식으로 실행하고 실행이력을 저장하는 기능을 수행하는 Stand Alone 어플리케이션이다.
시스템 구성
단순 산술적인 계산으로 동시실행 배치프로그램의 최적 건수는 CPU – 1개이다.(배치실행 어플리케이션 1CPU + 배치별 1CPU)
중소규모이거나 서버의 용량이 현재 동시 실행 배치를 수행할수 있을 정도의 Scale Up이 가능하다면 기본 단일 Node로 구성한다.
Active: 현재 배치 실행 어플리케이션 및 배치 응용 프로그램을 실행
Standby: Active 서버가 장애 발생 시 대체될 서버
응용어플리케이션의 설치 및 설정은 동일하게 유지되어야 하며 deploy 디렉터리에 배포된 배치 응용 프로그램도 항상 Active + Standby 양쪽 모두 배포되어 현행화 되어있어야 한다.
Ps. Oracle RAC , MySQL Galera Cluster 등 DBMS의 HA구성은 여기서는 다루지 않는다. DBMS의 경우 해당 프로젝트의 구성에 따른다.
배치 실행 어플리케이션 설치
배치 실행 어플리케이션 최초 설치 및 설정에 관한 내용은 [배치_실행어플리케이션_설치가이드.doc]을 참조한다.
디렉터리 및 파일 구조
설치 후의 어플리케이션의 디렉터리 구조는 다음과 같다..
디렉토리
설명
수정가능여부
./lib
실행 어플케이션에서 사용하는 라이브러리 JAR가 위치하는 디렉터리
N
./webapp
웹 어플리케이션 디렉터리
N
./conf
실행 어플리케이션 설정파일 디렉터리
N
./conf/application.xml
실행 어플리케이션의 설정파일 초기 설정 후 관리자 웹콘솔의 포트 및 SSL 인증서 등의 변경이 없다면 수정할 필요는 없음.
Y
./conf/application.properties
실행 어플리케이션의 설정 프로퍼티 파일 실행 어플리케이션에서 사용하는 데이터베이스 접속정보 등이 기술되어있음. 마찬가지로 초기 설정 후 데이터베이스 접속정보등이 변경되지 않는다면 변경될 내용은 없음.
Y
./conf/message-manager.xml
배치 실행 시 전송할 알림메시지에 대한 설정 메시지 전송 Broker 클래스, 메시지 템플릿 등을 정의
Y
./conf/log4j2.xml
Logj4 로깅 설정 파일 운영환경은 로그레벨 ‘INFO’를 권장함.
Y
./conf/mybatis.xml
실행 어플리케이션 MYBATIS 설정파일
N
./conf/spring-batch.log4j2.xml
개별 배치 프로그램에서 사용되는 log4j2 설정파일
N
./conf/spring-batch.xml
개별 배치 프로그램 중 Spring Batch에서 사용하는 설정파일
N
./conf/project
실제 개발된 배치 프로그램에서 사용할 설정파일이 위치하는 디렉터리
Y
./conf/project/project.xml
개발된 배치 프로그램에서 사용할 spring or spring batch 설정파일이다.
Y
./deploy
실제 개발된 배치 프로그램의 jar 및 class들이 deploy되는 위치
N
./application.sh
배치 실행어플리케이션의 기동,종료 shellscript
N
./application.profile
배치 실행 어플리케이션 실행 시 사용할 프로파일 정보 기본으로 JAVA_OPTS 등 java 실행시 옵션이 정의 되어있음. java 옵션값에 대한 커스터마이징이 필요하다면 applicatin.sh 가 아니라 해당 application.profile을 수정
Y
./chamomile-batch-xxx.jar
배치 실행 어플리케이션의 JAR 바이너리
N
어플리케이션 설정
관리자 접속화면 접속 포트 변경
관리자 어드민 웹어플리케이션은 배치 실행 어플리케이션 내부의 Embedded Tomcat 으로 구동된다. 포트를 변경하기 위해서는 어플리케이션 설정파일(./conf/application.xml)을 변경 후 재기동한다.
데이터베이스의 접속 정보를 수정하는 경우 배치 실행 어플리케이션 설정 프로퍼티(./conf/application.properties)를 수정 후 재기동한다. 수정할 범주는 아래와 같다.
chamomile@host> vim ./conf/application.properties
…
# 데이터베이스 아이디 설정(오라클:ORACLE, MariaDB/MySQL: MYSQL, SQLServer: MSSQL, 티베로: TIBERO)
databaseId=MYSQL
# OLTP connection pool
dataSource.oltp.driver=com.mysql.jdbc.Driver
dataSource.oltp.url=jdbc:mysql://[데이터베이스서버]:3306/chamomile
dataSource.oltp.username=[사용자]
dataSource.oltp.password=ENC([패스워드PBE])
dataSource.oltp.initialSize=5
dataSource.oltp.maxActive=10
dataSource.oltp.validationQuery=select 1 from dual
# OLAP connection pool
dataSource.olap.driver=com.mysql.jdbc.Driver
dataSource.olap.url=jdbc:mysql://10.131.7.140:3306/chamomile
dataSource.olap.username=[사용자]
dataSource.olap.password=ENC(([패스워드PBE])
dataSource.olap.initialSize=5
dataSource.olap.maxActive=10
dataSource.olap.validationQuery=select 1 from dual
# BATCH connection pool
dataSource.batch.driver=com.mysql.jdbc.Driver
dataSource.batch.url=jdbc:mysql://[데이터베이스서버]:3306/chamomile
dataSource.batch.username=[사용자]
dataSource.batch.password=ENC([패스워드PBE])
dataSource.batch.initialSize=2
dataSource.batch.maxActive=5
dataSource.batch.validationQuery=select 1 from dual
…
데이터베이스 유형 설정(databaseId): 데이터베이스의 유형코드로 ORACLE, MYSQL, MSSQL, TIBERO 4종료의 DBMS를 지원한다.
OLTP 접속정보 : 온라인 트랜잭션에서 사용하는 데이터소스로 온라인 트랜잭션의 특성 상 socket read timeout이 짧은 편이다. (관리성격의 웹어플리케이션이 이므로 Request 가 많지 않음으로 특별히 설정이 없어도 무방하다.)
OLAP 접속정보 : 배치 실행 등 백그라운드 작업에서 사용되는 데이터소스로 배치 프로그램의 이력저장 및 백그라운드에서 처리되는 트랜잭션을 담당한다. 특성 상 Long Transaction을 수행해야되는 경우가 있음으로 read timeout의 경우 OLTP에 비하여 긴 편이다.
BATCH 접속정보 : 구동되는 배치 프로그램(spring-batch)의 JobRepository 에서 사용되는 데이터 소스이다. SPRING BATCH 배치 프로그램을 실행 할때에 기본적으로 로딩되는 데이터소스로 socket read time은 매우 긴 편이며(실제 배치 쿼리의 경우 몇시간씩 수행되는 경우도 있음) Capacity의 경우는 정책에 따라 다르겠지만 다수 적은 편이다.
Ps .일반적인 경우 데이터베이스 접속정보가 동일함에도 불구하고 OLTP,OLAP,BACH로 분리되어 있는 이유는 1) 접속정보에 대한 옵션들이 상이할 수가 있음 2) 데이터베이스 구성 자체가 Writable, Readonly로 나누어지는 환경일수가 있음(예를 들어 Mysql 클러스터링 구성에서 readable 영역을 따로 구축하는 경우) 에 기인한다.
다국어처리 설정 변경.
캐모마일 배치에서는 다국어처리와 관련하여 스프링 18n 기능을 활용하여 구현하였기 때문에 관련 설정을 참고하여 세팅하면 된다.
기본 언어 설정은 application.properties에서 설정하며,
chamomile@host> vim ./conf/application.properties
…
# 기본 언어셋 설정 (한국어:ko, 영어:en 디폴드값은 ko)
defaultLocale=ko
메시지 파일은 webapp/application/WEB-INF/message 에 존재하며 ‘message_국가코드명.properies’로 되어있다.
chamomile@host> vim ./webapp/application/WEB-INF/message/message_ko.properties
…
# menu
menu.logout=로그아웃
menu.monitor=모니터링
menu.workflowManage=배치워크플로우 관리
menu.serviceRequest=서비스 요청
menu.executionHistory=실행이력 조회
menu.executionStatistic=실행이력 통계
menu.apiTest=API 테스트
...
지원 언어를 추가하려면 message_ko.properties을 복사하고, 해당 폴더에 message_국가코드명.properties이름을 변경한 후 관련 언어로 수정하면 된다.
웹 브라우져 접속 시 해당 언어 사용자 접속 시 lang 파라미터를 통해 언어 설정이 가능하다.
chamomile@host> ./application.sh crypto
Please enter 1.Encryption or 2.Decryption:1
enter original value:ENC([password])
encrypted:ENC(Ofo0P6xkjZH8R1rdlMoq6oIXEvitpU4B)
decrypted:[password]
로그레벨 변경 (log4j2.xml)
배치 실행 어플리케이션의 Logge는 Log4j2를 사용한다. 로그레벨의 변경을 위해서는 아래와 같이 log4j2.xml 설정파일을 수정한다. 수정된 내용은 어플리케이션의 재기동없이 몇초 후 적용된다.
기본적으로 어플리케이션의 종료는 Graceful Shutdonw으로 처리된다. (내부적으로는 SIGKILL(9-Kill Signal)이 아닌 SIGTERM(15-Terminatin Signal) 시그널 전송)
현재 스케줄러를 shutdown 후 현재 실행중인 배치가 존재한다면 모두 완료될때까지 대기한다.
강제로 KILL 시그널을 보내는 경우 실행중이던 배치 프로그램은 모두 RUNNING 상태로 종료되어 버리므로 꼭 필요한 상황이 아닌 경우 Graceful Shutdown 할것을 권한다.
# 배치 실행 어플리케이션 프로세스 종료
chamomile@host> ./application.sh stop
shutting down.....................
shutdown is complete.
chamomile@host>
배치 응용 프로그램의 배포
배포 바이너리 종류
배치 실행 어플리케이션에서 실행하기 위해 개발된 배치 응용프로그램의 배포 과정에 대하여 설명한다.
기본적으로 배치 응용 프로그램의 배포 버전은
JAR 바이너리 형태
*.class 바이너리 형태 (단 class 단위 배포인 경우 package path가 일치해야함)
모두를 지원한다.
배포 디렉터리 경로
해당 배치 응용 프로그램을 deloy 할 디렉터리 경로는
${CHAMOMILE_BATCH_HOME}/deploy
에 위치 시킨다.
배치 응용프로그램에서 사용하는 JDBC driver 및 JAR 라이브러리 역시 동일한 경로에 위치 시킨다.
ps. 배포 프로세스는 ftp 전송을 하던지 CI구성을 할지에 관련된 내용은 프로젝트의 정책을 따른다.
배치 응용 프로그램의 SPRING-BATCH 설정 정보
배치 응용 프로그램을 Spring-batch 기반의 프로그램으로 개발할 경우 해당 프로젝트에서 사용하는 데이터베이스 접속 정보 및 기타 설정은 다음의 위치에 작성한다.
${CHAMOMILE_BATCH_HOME}/conf/project/project.xml
기본설치시 default로 chamomile-batch-template프로젝트의 Spring-batch 설정파일이 해당 경로에 위치해 있다. 별도의 경로를 사용하거나 파일명을 변경하고자 하는 경우는 ./conf/application.xml에서 spring batch 설정파일 경로를 수정한다.(chamomile-batch-template기반으로 개발된 경우는 추천하지 않는다.)
chamomile@host> vim ./conf/application.xml
…
<!-- Spring Batch Project Configuration -->
<springJobLauncher>
<contextFiles>conf/project/project.xml</contextFiles>
<javaOpts>-Xms256m -Xmx512m</javaOpts>
</springJobLauncher>
…
배치 워크플로우 관리
개요
배치 워크플로우란 하나의 배치업무처리를 여러 배치 프로그램들의 플로우로 구성한 집합을 의미한다.
좌측 메뉴에서 [배치 워크프로우 관리] 메뉴를 클릭하여 등록화면으로 이동한다.
카테고리 관리
각각의 배치 프로그램을 업무별 카테고리로 계층화, 그룹화 하여 관리할 수 있는 기능이다.
카테고리 등록,설정
(1)버튼을 클릭하여 카테고리 설정 팝업을 오픈한다.
카테고리 아이디 : 해당 카테고리의 고유식별아이디
상위 카테고리: [변경] 버튼을 클릭하여 상위 카테고리를 변경할 수 있다.
카테고리 이름: 해당 카테고리에 대한 명칭이다.
카테고리 관리자: [+] 버튼을 클릭하여 해당 카테고리의 관리자를 추가할 수 있다. 카테고리 관리자는 해당 카테고리의 배치 워크플로우에 대한 추가, 수정, 삭제, 실행등을 직접 처리할 수 있는 권한을 가진다. (일반 사용자는 주요 처리에 대해서는 승인 프로세스가 필요)
카테고리 위치 변경
(2),(3) 버튼을 클릭하여 해당 레벨에서의 출력 순서를 변경할수 있다.
하위 카테고리 추가
(4) 버튼을 클릭하여 하위 카테고리를 추가할수 있다.
배치 워크플로우 등록(수정)
위의 배치 워크플로우 관리 화면에서 신규 추가의 경우 우측 상단의 [+] 버튼을클릭, 기존 등록건을 확인 또는 수정하기 위해서는 해당 건을 클릭한다
배치 워크플로우 정보
아이디: 배치워크플로우의 고유 아이디이다. 각 아이디는 중복될수 없다. 신규등록시에는 [중복체크]버튼을 클릭하여 등록전 체크 하여야한다.
이름: 해당 워크플로우의 명칭이다.
카테고리: 해당 배치 워크플로우를 위치할 업무 카테고리를 [변경]버튼을 클릭하여 선택한다.
스케줄 사용여부: 스케줄 사용여부를 선택한다. 주기적으로 수행되어야 되는 배치 프로그램의 경우 사용을 선택하고, 수시 작업 같이 특정 이벤트 시에만 수행되어야되는 배치 프로그램의 경우 사용않함으로 설정 후 이벤트 발생될때만 매뉴얼로 실행한다.
설명: 해당 배치 워크플로우에 대한 설명을 입력한다. 유지보수 차원에서 해당 배치업무의 설명 및 특이사항등을 기술한다.
패라미터: 배치 프로그램에서 사용할 패라미터를 설정한다. 해당 패라미터는 아래와 같이 고정값을 사용할수도 있으며
[상수 패라미터 설정의 예]
시스템 일자 등 실행 시 동적으로 생성 되어야 하는 패라미터의 경우 제공되는 매크로 함수 문법을 사용하여 등록할수 있다.
[시스템 시간 설정의 예]
![](media/60afbe81af6550c1bd1ba4cc58c4cf9d.png)
SYSDATE_YYYYMMDD = ${SYSDATE(‘yyyyMMdd’)} 로 설정할 경우 실행 시 시간을 yyyyMMdd 날짜 포맷으로 SYSDATE_YYYYMMDD=20181231 이라는 값으로 변환된다.
[영업일자 설정의 예]
![](media/e572525ae4675d1305c0b8e9f07a4a2a.png)
BIZDATE_YYYYMMDD=\${BIZDATE('yyyyMMdd','HOUR',-9)}로 설정할 경우 실행 시 BIZDATE_YYYMMDD라는 패라미터는 -9 시간 딜레이된 시간의 yyyyMMdd 날짜 포맷으로 변환된다.
시스템시간이 7일 새벽 03시라면 위의 BIZDATE_YYYYMMDD는 -9시간 딜레이된 업무시간이므로 6일이된다. 해당 영업일자를 딜레이 시간으로 처리하는 이유는 보통 새벽에 수행되는 7일자의 배치 패라미터로 수행시간이 아닌 영업일자가 입력되는 경우가 많기 때문임. (보통 마감배치들이 존재하는 시스템에서는 영업시간이 9시 부터이므로 -9시간 딜레이 한 시간으로 처리된다.)
조건: 실행 시 체크할 실행 조건을 입력할 수 있다. 조건 선택 후 해당 조건에 부합되는 경우 처리를 어떻게 할지를 선택한다.
SKIP : 실행을 SKIP한다. (실행이력에는 SKIP으로 이력은 존재)
FAILED: 실행 오류로 처리한다. (실행이력에는 FAILED로 이력 등록) .
현재는 아래 두가지의 조건체크 함수를 지원한다.
Name
Arguments
Description
IS_HOLIDAY
일자(포맷 yyyyMMdd)
등록된 공유일이면 true, 아닐 경우는 false 반환
FILE_NOT_FOUND
파일 Path (절대경로,상대경로 모두 가능
파일이 존재하지 않으면 true, 존재할 경우는 false (미존재이거나 파일이 writing 중일 경우 기본 1시간 대기)
[IS_HOLIDAY – 공휴일 체크] 공휴일 여부를 체크 true일 경우 SKIP하거나 FAILED 처리된다. 아래 예제의 경우 패라미터 정보에서 BIZDATE_YYYYMMDD라는 패라미터로 영업일자를 설정 후 해당 영업일자(BIZDATE_YYYYMMDD)가 공휴일인지 여부를 조건으로 설정한 예이다. IS_HOLIDAY = #{BIZDATE_YYYYMMDD}
[FILE_NOT_FOUND – 파일 존재여부 체크] 입력된 값의 경로에 파일이 존재하는지 여부를 체크, true 일경우(파일이 존재하지 않을 경우) SKIP하거나 FAILED 처리한다. (해당 함수의 경우 파일이 미존재할 경우 1시간을 체크하며 대기한다.)
배치 Job 플로우
개발된 배치 프로그램을 Job으로 등록하는 과정이다. 각각의 Job들은 실행 순서를 설정할 수 있다.
아래 화면은 최초 설치 시 샘플로 등록되는 배치 워크플로우의 Job설정으로 JOB-1 > JOB-2 > JOB-3이 순차적으로 실행되는 예제이다.
아이디: 선택한 JOB의 고유식별아이디로 최초 등록 후에는 변경은 불가능하다.
이름: 선택한 JOB을 나타내는 이름을 입력한다.
유형: 해당 JOB의 유형을 선택한다. 현재는 기본 spring-batch 프로그램과의 연계이므로 기본CLI 유형과 SPRING 유형 2가지가 존재한다. * CLI (Command Line Interface) : 시스템 명령어로 실행하는 배치 프로그램 또는 쉘스크립트를 호출하거나 직접 리눅스 명령어를 실행 * SPRING(spring-batch): spring-batch 프레임워크로 개발된 배치프로그램을 호출
ps. 그외 [built-in Job] 버튼을 클릭하여 단순한 작업에 대해서는 개발 없이 내장된 배치 모듈을 사용하여 JOB을 구성할수 있다.
로그레벨: 배치 프로그램 실행 시 배치프로그램 내부에서 작성된 로그의 로그레벨이다. 해당 로그 레벨은 배치 프로그램이 log4j2를 기반으로 로깅될때만 작동한다. 제공되는 템플릿 프로젝트 역시 log4j2 기반이다. 로그래벨은 기본 아래 3가지 레벨을 지원한다. * DEBUG레벨: 개발환경에 적합한 로그 레벨로 운영시에는 설정하지 않을 것을 권장한다. Spring batch 프레임워크에서 로깅되는 내용이 모두 출력되므로 로그 량 및 부하가 상당히 심한편. * INFO레벨: 운영(또는 통합테스트) 환경에 적합한 로그 레벨이다. LOGGER.info 이상으로 출력된 내용이 로깅된다. * ERROR레벨: LOGGERerror 이상으로 출력된 내용이 로깅된다. 운영환경에서 INFO레벨의 로그도 필요 없으며 오류발생 로그만 출력하고싶다면 해당 로그레벨을 설정한다.
다음 Job : 해당 Job의 실행 결과에 따른 다음 Job의 연결정보가 존재한다면 다음에 실행할 Job의 아이디를 선택한다. 아래 다이어그램에서 JOB-1을 선택 후
아래의 다음 Job 입력란은
아래와 같다.
JOB-1 이 정상적으로 종료되었을 경우(ON = COMPETED) 다음 Job JOB-2를 실행
알림 메시지 수신자 등록
해당 배치 워크플로우 실행 시 시작,종료,오류 발생 시 그에 대한 메시지를 수신할 사용자를 등록하는 패널이다.
[알림 레벨]
각 사용자 별 메시지 수신의 레벨을 설정할수 있다.
알림 레벨 코드값
알림 레벨
DEBUG
전체(시작+종료)
배치 프로그램의 시작, 종료 시 메시지 발송
INFO
종료 시
배치 프로그램이 정상 종료되었을 때 메시지 발송
ERROR
에러 시
배치 프로그램 오류 발생시 메시지 전송
배치 워크플로우 실행 이력
해당 배치 워크플로우의 최근 실행이력을 확인할수 있는 패널이다.
배치 워크플로우 (재)실행 ,중지, 결과 확인
배치 워크플로우 상세 화면을 통하여 매뉴얼로 해당 배치 프로그램을 실행, 중지 할수 있다.
해당 기능은 개발환경 또는 테스트 환경에서의 테스트 배치 실행이 주목적이며
실제 운영환경에서
장애발생 배치에 대한 재처리
수시작업 배치프로그램의 실행
현재 시스템의 상태확인을 위한 테스트 배치 실행
등의 사유를 제외하고는 대부분 스케줄 되어 처리된다.
실행 요청
[실행] 버튼을 클릭하여 실행 요청 한 후 웹화면에서는 연결된 웹소켓을 통하여 해당 배치 워크플로우의 실행 메시지를 수신하여 화면에 표시하게 된다. (일부 네트워크 상황에 따라 화면 표시에 문제가 발생할 수 있으나 실제 배치 실행과는 무관함)
중지 요청
[중지]버튼을 클릭하여 현재 실행 중인 배치 워크플로우에 대하여 중지요청을 할수 있다.
중지요청시 현재 RUNNING 상태인 Job은 STOPPING으로 변경되며 일정시간이 지나면 STOPPTED로 변경된다.
배치 실행 중 중지 요청은
강제 중지가 아니다. (실제는 Process에 Interrupt신호를 보내거나 Spring-batch의 경우 jobOperator에게 중지를 요청하는 개념)
Spring-batch 로 구현 된 Job의 경우 JobOperator에게 요청을 한것으로 Srping-batch에서 판단하여 STOP이 될수도 있고 COMPLTETE까지 진행할 수도 있다.(판단 기준은 commit count와 관련이 있으며 마지막 transaction 의 chunk들을 처리중일 경우는 STOP요청이 들어와도 완료되는 경우가 많음)
으로 배치 실행 어플리케이션에서는 interrupt 를 요청하는 개념이지 강제kill하는 개념이 아니다.
배치Job 실행이력 확인
화면 우측 하단 워크플로우 실행이력 패널에서 [상세보기] 팝업 버튼을 클릭하면 실행 배치Job의 상세목록을 확인할 수 있다.
아럐와 같은 팝업화면에서 실행된 배치 Job목록을 확인할 수 있다. 순서는 실제 배치Job이 실행된 순서이다.
로그파일 내용 확인
화면 우측 하단 워크플로우 실행이력 패널에서 [로그] 버튼을 클릭하여 해당 실행에 대한 로그파일을 조회할수 있다.
클릭시 새창으로 아래와 같이 로그파일의 내용이 브라우저에 출력된다. (웹기반이므로 로그파일이 대용량일 경우는(DEBUG레벨 같은 경우) 정해진 사이즈만큼만 툴력하며 전체로그는 서버에서 직접 확인)
실행이력 상세화면 및 결과 강제 변경
아래와 같이 실행 아이디를 클릭하면 각 배치 워크플로우 실행이력 상세화면을 오픈할 수 있다.
레이아웃 구성은 배치워크플로우 셍세내역 화면과 동일하며 실제 실행된 결과들이 화면에 표시된다.
해당 화면으로 통하여 수행할수 있는 기능은
장애발생건이나 일시중지건에 대한 재실행
실행결과코드 및 메시지등을 매뉴얼로 변경(예를 들어 장애건에 대한 매뉴얼 조치
후 메시지에 이력을 남긴 후 상태를 COMPLETED로 강제 변경
배치 프로그램의 실행이력을 기반으로 한 통계데이터 조회화면이다. 입력된 기간의 일별,월별,년별 실행 건수를 상태별로 조회할 수 있다.
서비스 요청
운영 시 일반 사용자와 관리자가 분리된 정책으로 운영될 경우 배치 프로그램의 등록,수정,삭제 및 실행 등은 관리자 권한을 소유한 사용자만 처리할 수 있으며 일반 사용자는 배치 프로그램의 등록,수정,삭제 및 실행 등은 서비스 요청을 등록하여 관리자가 승인하는 프로세스로 진행할 수 있다.
배치 워크플로우 신규등록,수정,삭제 요청
일반 사용자는 배치 워크플로우 상세 화면에서 신규등록,수정,삭제 할 내역을 편집 후 우측 상단 [변경요청] 또는 [삭제요청] 버튼을 클릭한다.
승인 요청 하는 팝업이 열리면 해당 화면에 요청에 대한 내용을 입력 후 [승인요청] 버튼을 클릭한다.
입력해야하는 내용은 다음과 같다.
요청 제목: 승인요청 내용에 대한 제목이다.
요청 내용: 승인요청에 대한 내용으로 등록, 변경, 삭제에 대한 사유나 기타 필요한 내용을 입력한다.
예약 여부: 승인 시 처리유형을 선택한다. 처리유형은[즉시 처리] 와 [예약 처리] 가 있다.
즉시처리: 승인 시 즉시 처리된다. 현재 운영중인 배치에 영향이 가지 않는 경우
예약처리: 특정 시간 이후에 처리되어야되는 내용인 경우 해당 항목을 선택
배치 워크플로우 실행 요청(수시 작업 시)
보통 상시 배치작업은 스케줄링을 통하여 작업이 진행된다. 그러나 업무에 따라서 특정 이벤트 발생 시 수시로 또는 일회성으로 작업이 진행되어야하는 배치 워크플로우에 대해서는 해당 업무 담당자가 해당 배치 워크플로우에 대한 실행요청을 관리자에게 요청할 수 있다.
입력 내용은 변경/삭제요청과 동일하나 배치 업무의 특성 상 기존 스케줄링 되어 수행 중인 다른 배치 작업에 영향을 주지 않는 시간대에 [예약처리]로 요청 한다.
배치 워크플로우 재실행 요청(장애발생 건 재처리 시)
배치 수행 중 장애가 발생되어 FAILED 처리된 배치를 재처리 하고 할 경우 일반 사용자는 관리자에게 해당 건에 대한 재수행을 요청할 수 있다.
먼저 실행이력 화면에서 재처리 대상건을 선택 하여 [배치 워크플로우 상세이력 화면]으로 진입 후 오류에 대한 내용을 먼저 확인 한다.
먼저 수행 당시의 시스템 환경적 문제로 비정상 종료되었다면 변경없이 재요청을, 만약 수행 시 패라미터 값들의 문제로 비정상 종료되었다면 해당 패라미터들을 변경 후 재요청한다.
입력내용은 동일하며 수시 작업 요청시와 동일하게 기존 스케줄링 되어 수행 중인 다른 배치 작업에 영향을 주지 않는 시간대에 [예약처리]로 요청한다.
서비스 요청 조회 및 승인(반려)
관리자 권한을 소유한 사용자는 해당 서비스 요청건에 대하여 승인 또는 반려 처리를 수행할 수 있다.
대상 건의 요청 번호를 클릭하여 상세내용 팝업을 호출한다.
요청 내용을 확인 후 승인(반려) 내용을 입력, [승인] 또는 [반려] 버튼을 클릭한다.
처리결과는 서비스 요청 목록에서 확인한다.
처리에 관련 항목의 의미는 다음과 같다.
처리상태 : 요청 시점에는 WAIT(대기) 상태이다.
즉시처리 또는 예약처리에 따라 처리되는 시점이 상이한데 즉시처리 요청건인 경우에는 승인 후 대략 10초 후 처리가 완료 되지만 예약 처리인 경우 예약처리 시간이 되기 전까지는 대기상태로 남아있게 된다.
처리시간: 백그라운드 프로세스에서 승인된 요청건에 대하여 처리한 시간이 입력된다.
PS. [실행],[재실행] 요청건에 대한 처리 완료는 실행(재실행)을 요청 했다는 완료됬다는 내용이지 실제 요청한 배치 프로그램이 끝까지 오류 없이 완료됬다는 의마가 아니다. 해당 배치 프로그램이 정상수행되었는지는 요청한 담당자가 확인하여야 한다.
환경 설정
사용자 관리
실행 어플리케이션의 사용자는 배치 업무의 운영자로 크게 일반사용자, 관리자(관리자권한을 가진 사용자)로 분류된다.
최초 관리자 로그인
브라우저에서 https://[설치서버주소]:6100 로 접속한다.
최초 초기 관리자 아이디 및 패스워드는 ADMIN/1111이다.
신규 사용자 등록
좌측 메뉴에서 [환경설정 > 사용자관리] 화면으로 이동 후 [사용자 추가] 버튼을 클릭한다.
신규 사용자 정보를 등록한다.
ps.관리자 여부 체크 시 해당 사용자는 관리자 권한을 가지게 된다
사용자 정보 수정
변경할 사용자 아이디를 클릭하여 사용자정보 변경 팝업 화면을 호출한다.
변경할 내용을 변경 한 후 [저장] 버튼을 클릭한다.
사용자 패스워드 변경
목록에서 변경할 사용자의 [비밀번호 변경] 버튼을 클릭하여 비밀번호 변경 팝업화면을 호출한다.
기존 패스워드와 변경할 패스워드를 입력 후 [저장]버튼을 클릭한다.
사용자 삭제
사용자 정보 변경 화면을 오픈 후 [삭제] 버튼을 클릭한다. (주의사항: 사용자 정보는 완전 삭제처리된다.)
디렉터리 관리
데이터파일이 위치할 디릭터리 경로를 업무별 Alias 설정하여 배치 워크플로우 패라미터로 사용하기 위한 기능이다. 등록 시 간단한 Permissin정보, 전체 공간, 남은 공간의 정보가 출력된다.
(필수 기능이 아니므로 사용 여부에 대해서는 프로젝트 정책에 따라 결정)
등록 후 배치 워크플로우에서 패라미터로 사용 할경우는 다음과 같이 사용이 가능하다.
SYNTAX : ${DIR([등록한 디렉터리의 아이디])}
공휴일 관리
배치 프로그램을 스케줄할 때 주중,주말은 Cron Expression으로 등록이 가능하지만 공휴일에 대한 처리는 지원하지 않음으로 해당 화면을 통해 공휴일테이블(CHMM_BAT_HOLIDAY_INFO)에 입력 하여 해당 등록된 공유일을 체크 할수 있는 기능을 제공한다.
등록된 공휴일 정보는 배치 워크플로우에서 실행 시 조건 체크로 다음과 같이 사용이 가능하다.