J-Jobs

Guides -J-Jobs Ent. v2.1 사용자 가이드

페이지 개요

  1. J-Jobs Enterprise v2.1 사용자 가이드
    1. 브라우저 호환성
  2. J-Jobs 구성
    1. 구성요소
      1. J-Jobs Manager
      2. J-Jobs Server
      3. J-Jobs Agent
  3. 작업계획 (Job Plan)
    1. 개요
    2. 작업목록
      1. 구성
      2. 신규 작업(Job) 추가
      3. Job 속성 변경
      4. Job 편집기 활용
      5. 스케줄 설정
      6. 수시/정기 작업계획 실행
      7. 폴더 파라미터
      8. 글로벌 파라미터
      9. 내 것만 보기
      10. 엑셀 다운로드
      11. 엑셀 업로드 (관리자 전용)
    3. 정기 작업계획 목록
      1. 구성
      2. 조회 조건 및 상태 값
      3. 정기 작업계획 추가 (실행)
      4. 정기 작업계획 실행 중지/재시작/폐기
      5. 정기 작업계획 실행내역
    4. 수시 작업계획 실행
      1. 구성
      2. 수시 작업계획 실행
      3. 수시 작업계획 실행내역
    5. 작업계획 실행내역
      1. 구성
      2. 조회 조건 및 상태 값
      3. 작업계획 실행 중지/재시작/폐기
      4. 작업계획 실행 상세 정보화면으로 이동
      5. 정기 작업계획으로 이동
    6. 작업계획 실행 상세 정보
      1. 구성
      2. 상태 값
      3. 작업계획 실행 중지/재시작/폐기
      4. Job 중지/재실행
      5. Job Skip Success / Skip Fail
      6. Job Hold/Release
      7. Job Confirm
      8. Job 상태 추적 조회
      9. Job 실행 상세 정보
      10. Job 요청 내역
      11. Job 속성 편집
      12. 폴더/Job 파라미터 편집
  4. 단일 작업
    1. 개요
      1. Job, Step, Template 용어
    2. 단일 작업목록
      1. 구성
      2. 기본 예제 Job 추가
      3. Job 업로드/다운로드
      4. 내 것만 보기
      5. Job 추가/수정/이동/삭제
      6. Job 속성 편집
      7. Job 스케줄
      8. Job Lock(잠금) 설정/해제
      9. Job 소유자 변경
      10. Job 즉시실행
    3. Job 편집
      1. 기본 기능
      2. 편집 기능
      3. 기본 엘리먼트
      4. 템플릿
      5. Plug-In 템플릿
      6. 템플릿 공통기능
      7. 작업 관리
      8. 보기
      9. 실행 관리
    4. 단일작업 스케줄 목록
      1. 구성
      2. 스케줄 추가
      3. 스케줄 수정/삭제
      4. 스케줄 시작/중지
      5. 스케줄 실행내역
      6. 내 것만 보기
    5. 단일 작업실행
      1. 구성
      2. 단일 작업실행
      3. 단일 작업실행내역
    6. 단일 작업 실행내역
      1. 실행 단계 이해하기
      2. 구성
      3. 상태 값
      4. 로그 확인
      5. 실행/대기중인 요청 강제 종료
      6. 내 것만 보기
      7. Job 인스턴스 상세 정보 (Job Instance)
      8. Job 실행 상세 정보
  5. 모니터링
    1. 서버 모니터링
    2. 에이전트 모니터링
  6. 부록
    1. 사용자 정보
    2. 이메일 알림 설정
      1. 알림 서버 설정
      2. Job 알림 설정
      3. 스케줄 알림 설정
      4. 수신 내용 확인
    3. 파티션 설정
      1. 정적 파티션
      2. 동적 파티션

J-Jobs Enterprise v2.1 사용자 가이드

최종 작성일 : 2018년 11월 30일

기준 버전 : J-Jobs Enterprise v2.1.0

Copyright ⓒ LG CNS LG CNS의 사전 승인 없이 본 내용의 전부 또는 일부에 대한 복사, 배포 사용을 금합니다.

본 문서는 J-Jobs 사용자의 이해를 돕기 위한 문서로 Manager 의 메뉴 구성 중심으로 작성되어 있다. v2.1 중 하위 버전의 개발자 가이드는 j-jobs@lgcns.com 으로 별도 요청한다. 또한 J-Jobs의 시스템 설정 및 운영에 대한 전반적인 사항은 운영자 가이드를 참고한다.

브라우저 호환성

본 문서에서 주로 설명하게 될 J-Job Manager의 브라우저 호환성은 내부적으로 사용하고 있는 다양한 오픈소스의 호환성을 종합하여 판단한다. 현재는 표준브라우저에서 안정적으로 제공되며 특별히 IE 인 경우는 IE11 이상의 버전을 사용할 것을 권장한다.

  • 지원가능 브라우저 목록 IE11+, Chorme lastest, Firefox lastest, Opera lastest, Safari lastest

J-Jobs 구성

구성요소

J-Jobs는 Job 편집 및 실행과 스케줄링 그리고 각 종 모니터링 화면을 제공하는 Web Application 형태의 Manager, Manager로부터 Job과 스케줄 실행을 의뢰받아 이를 각 Agent에서 실행할 수 있도록 전달하는 Server, 그리고 실제 Job을 실행하는 Agent까지 총 3-tier로 구성된다. Manager와 Server는 REST API를 통해 Job 실행을 의뢰하고 결과를 전달한다. Agent는 TCP 방식으로 Server와 통신하며 Job 실행을 전달받는다. Manager, Server는 WAS 상에서 기동되며, Agent는 JVM 프로세스로 동작한다.

J-Jobs Manager

  • 웹 브라저 기반의 WYSIWYG 방식의 Job Editor 제공
    • Job 편집부터 실행, 스케줄링, 부하분산 설정 등 Editor 내에서 한번에 작업 가능
  • 현재 실행 중인 Job 상태 및 수행 결과에 대한 직관적 모니터링 기능 제공
  • Job 실행 및 정지, 재처리 기능
  • 사용자 및 권한 관리 등

J-Jobs Server

  • 이벤트 기반의 Job 스케줄링 기능 담당
  • Job 부하분산(Load Balance) 처리
    • Agent의 부하 상태를 동적으로 고려하여 신규 Job 실행 노드를 결정하는 방식
    • 특정 Agent의 과부하 발생 시, 다른 Agent로 분산 시켜 거래 안정성 보장
  • Job 처리 가용성 제공
    • 접속된 Agent들의 상태를 체크하여 비정상 또는 비가용 Agent 대신 다른 Agent에서 처리

J-Jobs Agent

  • Job 처리를 의뢰받아 step 단위로 프로그램 실행
  • Agent는 내부 Runtime을 기동, File Queue를 통해 Job 실행 요청 전달

작업계획 (Job Plan)

개요

J-Jobs에서는 폴더 하위에 있는 작업(Job)의 선/후행을 지정하여 실행하는 작업 계획(Job Plan) 기능을 제공한다. J-Jobs에서 사용하는 폴더, 작업, 작업 계획에 대한 개념은 다음과 같다.

  • 폴더 - 작업을 구분하는 논리적인 개념이다. 폴더는 하위로 작업이나 또 다른 폴더를 가질 수 있다. 최상위 폴더는 서버 그룹을 의미하는 폴더로 임의로 삭제할 수 없다. 폴더는 Windows에서 파일을 분류하는 폴더와 유사하다고 할 수 있다.
  • 작업 (Job) - Job은 반드시 하나의 폴더에 속해야 한다. Windows에서 폴더 하위에 있는 파일과 유사하다. Job은 속성 정보를 가지고 있고 속성 창에서 선/후행 관계, 알람 설정 등 다양한 설정이 가능하다. Job은 J-Jobs의 실행 단위가 되며 하위로 한개 또는 여러개의 Step을 둘 수 있다. Job은 작업 계획에 포함되어 실행하는 정기/수시 Job과 Job을 단독으로 실행할 수 있는 단일 Job으로 구분된다. 작업 본 문서에서는 작업과 Job이라는 용어를 상황에 따라 혼용하여 사용한다.
  • 작업계획 (Job Plan) - 폴더 단위로 Job의 실행 계획을 관리하는 개념이다. 최상위 폴더에서 작업계획을 실행한다면 하위의 모든 폴더와 Job을 포함하여 실행 계획이 세워지고 선/후행 관계나 스케줄에 의해 순차적으로 실행된다. 작업 계획의 전체 상태를 한 눈에 확인할 수 있는 화면이 Map과 목록 형태로 제공된다. 작업 계획은 하루 단위로 계획되고 실행되며, 매일 자동 반복 여부에 따라 정기 작업계획과 수시 작업계획으로 구분된다.

작업목록

**[작업계획 > 작업목록]**은 작업계획을 구성하는 작업(Job)을 정의하는 화면이다. Job을 추가하거나 속성 변경, 작업 계획 실행 등이 가능하다. 작업 목록은 목록 형식과 Map 형식이 있다. 화면은 우측 상단의 [Map 형식 보기] 또는 [목록 형식 보기] 버튼을 이용해 전환이 가능하다.

구성

목록 형식

목록 형식의 기본 모습이다. 좌측 폴더 영역에서 특정 폴더를 선택하면 우측에 리스트 형태로 Job이 표시된다.

우측 상단의 검색 바에서 사용 가능한 검색 조건은 다음과 같다. 검색 버튼을 누르면 서버에 다시 요청한다.

검색조건설명
ID검색할 Job ID
이름검색할 Job 명. 부분 일치 검색
소유자소유자 ID. 부분 일치 검색

하단의 Job 목록에서 제공되는 정보는 다음과 같다.

항목설명바로 가기
IDJob IDJob 편집 화면으로 이동
이름Job 명
버전Job 버전
검증검증여부. 체크 표시가 되어야만 실행 가능하다. 검증은 Job을 저장할 때 자동으로 수행된다.
스케줄스케줄 설정 여부 (: 비 활성화, : 활성화)
알림알림 설정 여부(: 사용 안 함, : 사용)
수정날짜▼Job이 마지막으로 수정된 날짜
소유자Job 소유자

Map 형식

작업목록 Map 형식의 기본 모습이다. 기능은 목록 형식과 유사하나 특정 폴더가 아닌 모든 폴더의 Job 구조가 한 눈에 보인다는 차이점이 있다. 전체 폴더 구조는 Box 형태의 중첩으로, Job의 선후행 관계는 화살표로 표현된다. Map 화면에서 바로 선/후행 관계의 수정이 가능하며, 아웃라인을 통해 특정 위치로 이동할 수도 있다.

신규 작업(Job) 추가

신규 작업 추가 버튼을 이용해 폴더 하위로 Job을 추가할 수 있다.

  • 목록 화면 - 먼저 좌측에서 특정 폴더를 선택한 뒤에 우측 상단의 [+ 추가] 버튼을 누른다.
  • Map 화면 - 폴더 별로 있는 [+] 버튼을 선택한다.

버튼을 누르면 신규 작업 추가를 위한 팝업이 나타난다.

신규 Job 추가 팝업에서 일반 정보, 실행 정보, 선행 조건, 결과 처리, 자원 사용에 대한 내용을 작성한 뒤 [저장] 버튼을 누르면 Job이 추가된다.

입력해야 할 정보를 구역별로 나누어 설명한다.

일반 정보

일반 정보에서는 Job 과 관련된 기본 정보와 템플릿 정보를 작성한다.

항목기본 값설명비고
폴더선택된 폴더Job이 속한 폴더
서버그룹선택된 폴더의 서버 그룹 번호로 폴더 선택 시 자동 설정된다.
Job IDJob ID 값으로 중복될 수 없다. 길이는 최소 2자리에서 최대 50자리로 알파벳, 숫자, 특수문자(-_,)만 허용된다.Job 속성 팝업에서는 수정 불가
Job 이름Job 이름
템플릿 종류Dummy생성되는 Job 이 가지는 기본 템플릿이다. Dummy (더미), Command/Shell (쉘 스크립트 실행), File Transfer (파일 전송) 중에서 선택할 수 있다.Job 속성 팝업에서는 수정 불가
파라미터 추가Job에 전달할 파라미터를 설정한다. 자세한 내용은 Property 설정을 참고한다.
실행 유형Normal- Normal: 기본 Job
- On-Demand: 온디맨드 호출 전용 Job을 위해 예약된 값 (개발 중)
- Cycle: 반복 수행되는 Job. 스케줄을 하루에 여러 번 수행하도록 설정하려면 실행 유형을 Cycle로 설정해야 한다.

템플릿 종류

  • Dummy

일정시간 대기 후 종료하는 Job을 만든다.

항목기본 값설명
지연시간(초)5해당 시간 동안 대기
  • Command/Shell

윈도우의 Command, 리눅스의 Shell 등을 실행시키는 Job이다.

항목기본 값설명
Command/Shell 경로실행할 Command/Shell 의 폴더 위치 (예: /bin)
Command/Shell 명실행할 Command/Shell (예: ls)
에이전트에 SSH 계정 설정이 되어 있다면 [파일 찾기] 버튼을 통해 파일을 찾아 입력할 수 있다.
Command/Shell 명이 입력되면 [실행구역 파일확인] 버튼이 나타나며, 이를 통해 각 에이전트에 해당 Command/Shell이 존재하는지 확인할 수 있다.
아규먼트Command/Shell에 넘길 아규먼트 (예: -al)
인코딩시스템 기본 값로그 파일을 기록할 때 사용할 인코딩
파라미터 인자포함사용 안 함체크하면 파라미터 추가 버튼으로 입력된 파라미터가 이름=값 형태로 아규먼트에 추가된다.

파일 찾기 기능: 특정 에이전트에 SSH로 접속하여 파일을 찾는다.

실행구역 파일 확인 기능: 모든 에이전트에 입력된 파일이 있는지 확인한다.

  • File Transfer

에이전트 간에 파일을 전송한다. 원격으로 파일을 보내거나(PUT), 원격의 파일을 받아오기(GET)가 가능하다.

항목기본 값설명
원격 에이전트 명드롭다운 버튼에서 원격 에이전트 이름을 선택
원격 파일 경로원격 에이전트의 파일 경로 (예: /home/jjobs)
에이전트에 SSH 계정 설정이 되어 있다면 직접 입력하지 않고 [경로 찾기] 버튼을 통해 파일을 찾아 입력할 수 있다.
현지 파일 경로현지 에이전트 파일 경로 (예: /home/jjobs)
파일명보내거나 가져올 파일명
메소드(Method)PUT- PUT: 원격으로 파일 내보내기
- GET: 원격에서 파일 가져오기
암호화사용 안 함파일 전송시 암호화
덮어쓰기사용중복 파일 덮어쓰기

실행 정보

실행 정보에서는 Job 실행과 관련된 정보를 작성한다.

항목기본 값설명
Job 로그레벨시스템 Job 로그레벨Job의 로그레벨을 설정한다. 로그레벨에 따라 기록되는 로그의 정도가 달라진다.
Step 로그레벨시스템 Step 로그레벨Job 하위에 있는 Step의 로그레벨을 설정한다. 로그레벨에 따라 기록되는 로그의 정도가 달라진다.
로그 합치기사용Job 로그에 Step 로그를 합쳐서 기록한다.
실행구역선택된 서버그룹 - 전체 서버 - 전체 에이전트 그룹기본적으로 Job은 서버 그룹 내 모든 서버, 모든 에이전트에서 실행된다. 만약 특정 서버나 에이전트 그룹에서 실행해야 할 Job인 경우에는 실행구역을 수정한다.
Job 최대 동시실행 개수빈 값 (제한 없음)해당 Job이 동시에 최대 몇 개까지 실행 가능한지를 지정한다. 값이 없거나 0으로 설정하면 제한하지 않는다.
Confirm 여부사용 안 함Confirm 을 사용하면 [작업계획 실행 상세정보] 화면에서 Confirm 상태가 되 관리자의 확인 후 Job이 실행된다.
주 담당자/부 담당자로그인 사용자 ID정보성 데이터로 주 담당자/부 담당자에 대한 정보를 기록한다.
  • 실행구역 설정

기본은 서버그룹으로 지정되어 있으나 특정 서버그룹, 에이전트 그룹, 에이전트에 있는 체크 버튼을 눌러 실행구역을 변경할 수 있다.

선행 조건

선행 조건에서는 실행 조건과 선행 Job을 추가할 수 있다.

항목초기 값설명
실행조건모두 성공시 다음 진행- 모두 성공 시 다음 진행: 모든 선행 Job이 실행되고 "COMPLETED" 상태가 되어야 해당 Job이 실행 됨
- 한 개 이상 성공시 다음 진행: 전체 선행 Job 중 한 개 이상의 선행 Job이 실행되고 "COMPLETED" 상태가 되면 해당 Job이 실행 됨
선행 Job 추가Job 검색하여 선행 Job으로 추가할 수 있다. 선행 Job이 추가되면 실행조건이 만족될 때까지 대기한다.

선행 Job 추가

[검색] 버튼으로 Job을 찾은 뒤 [+] 버튼으로 선행 Job을 추가할 수 있다. 선행 Job은 여러 개 등록 가능하다. 추가된 선행 Job은 [-] 버튼으로 삭제할 수 있다.

선행 조건 (Map 형식)

Map 형식의 화면에서는 선행 Job 추가를 Map 화면에서 처리할 수 있다. 단 이 기능은 Job이 생성된 이후에 가능하다.

  1. 선행 Job 편집 모드

선행 Job을 편집하고자 하는 Job에서 [↓] 버튼을 눌러 선행 Job 편집 모드로 들어간다.

  1. 선행 Job 선택

Job명 옆에 있는 체크박스를 이용하여 선행 Job을 선택한다. 여러 개의 Job을 선행 Job으로 등록할 수 있다.

  1. 저장 후 자동 새로고침

선택이 완료되었으면 우측 상단의 [저장] 버튼을 누른다. 화면이 새로고침 되면서 선행 Job이 변경된 것을 화살표를 통해 확인할 수 있다.

결과 처리

결과 처리에서는 Job 실행 후 처리 방법과 알림 조건을 설정한다.

항목초기 값설명
결과 처리오류종료- 오류종료: Job 실행 결과 오류가 발생하면 후행 Job을 실행하지 않는다.
- 오류무시: Job 실행 결과 오류가 발생해도 후행 Job을 실행한다.
- 자동재처리: Job 실행 결과 오류가 발생하면 자동으로 재처리를 수행한다. 자동재처리를 위해 횟수와 주기(초)를 추가로 입력받는다.
알림조건Job 시작, 종료와 관련된 이메일 알림을 받는 설정으로 알림 서버 설정이 선행되어 있어야 한다. 자세한 내용은 이메일 알림 설정을 참고한다.
- 작업시작: Job이 실행되면 알림
- 성공종료: Job이 실행 후 성공으로 종료하면 알림
- 오류종료: Job이 실행 후 실패로 종료하면 알림
- 처리지연: Job이 실행 후 N분이 경과하면 알림

자원 사용

자원 사용에서는 Job 우선순위와 자원 사용률에 대한 정보를 입력한다.

항목기본 값설명
Job 우선순위0동시에 많은 Job이 실행될 경우, 우선순위가 높은 순서대로 Job이 실행된다. 특별히 지정하지 않으면 0으로 지정된다.
배타처리 예약어추후 배타처리를 위한 값으로 현재는 사용하지 않는다.
예상 CPU / GPU / Memory / 작업시간추후 자원관리를 위한 값으로 현재는 정보성으로만 저장된다.

Job 속성 변경

Job 속성은 버튼으로 변경 할 수 있다. 내용은 **[신규 작업(Job) 추가]**와 동일하지만 Job ID와 템플릿 종류를 수정할 수 없다.

Job 편집기 활용

자작업 목록에서 Job 편집기로 이동할 수 있다. Map 형식에서 **[메뉴 더 보기 > Job 편집]**을 선택하면 Job 편집기로 이동한다.

  • 목록 화면: Job ID를 선택한다.
  • Map 화면: **[메뉴 더 보기 > Job 편집]**을 선택한다.

Job 편집기는 Job 속성과 유사하나 Dummy, Command/Shell, File Transfer 이외에도 다양한 템플릿을 사용할 수 있다. 또한 한 개 이상의 Step을 이용하거나 조건에 따른 분기가 있도록 구성할 수도 있다. Diagram 형태로 되어 있으며 시작과 끝을 가지고 있다. 자세한 내용은 단일작업의 Job 편집을 참고한다.

[참고]

[작업목록] 화면에서 Job 편집기로 이동하여 Step을 추가하거나 Dummy, Command/Shell, File Transfer이외의 템플릿을 사용할 수 있다. Job 편집기로 수정한 경우에는 Job 속성 변경창에서 템플릿 관련 정보를 수정할 수 없다. 이 때에는 내용은 동일하나 템플릿 정보가 없는 탭 모양의 Job 속성 편집창이 나타나게 된다.

스케줄 설정

스케줄 버튼() 을 클릭하여 스케줄을 설정할 수 있다.

작업계획 내 Job은 단 하나의 스케줄만 설정할 수 있으므로 활성화 / 비활성화 버튼이 표시된다. (반면, 단일 작업 내 Job은 여러 스케줄 등록이 가능하다.)

스케줄을 활성화하면 Date, Calendar, Interval 중 하나의 유형으로 스케줄을 설정하는 화면이 나타난다. 스케줄 설정은 단일 작업의 스케줄 추가와 유사하다. 단, 작업계획 내 Job의 스케줄은 단일 작업과는 다르게 파라미터는 입력받 수 없다. 파라미터가 필요한 경우에는 글로벌 파라미터나 폴더 파라미터를 사용해야 한다. 폴더 파라미터는 다음 챕터에서 다룬다. 스케줄 설정과 관련한 보다 자세한 내용은 단일 작업의 스케줄 추가를 참고한다.

반복 스케줄 처리

기본적으로 작업 계획은 하루 단위로 생성되고 한번만 실행된다. 만약 하루에 Job이 여러 번 실행되도록 하려면 스케줄을 반복적으로 설정한 뒤, **[Job 속성 > 일반정보 > 작업 유형]**을 Cycle로 설정해야 한다. Map 형식의 작업계획에서 Cycle 여부는 아이콘으로 표시된다.

위 그림과 같은 작업계획에서 Sample_R1에 매 1시간마다 실행되는 스케줄을 설정하였다면, Cycle 설정이 된 후행작업인 Sample_R1-2, Sample_R1-2-1은 Sample_R1에 의해 반복적으로 실행되나 Cycle 설정이 되지 않은 Sample_R1-1은 반복 실행되지 않는다.

수시/정기 작업계획 실행

작업 목록에서 수시/정기 작업계획을 실행할 수 있다.

  • 목록 화면 - 좌측 폴더를 우클릭 한 뒤 [작업계획 실행] 을 선택한다.
  • Map 화면 - 폴더에 있는 **[▶]**을 선택한다.

작업계획 실행 팝업에서는 맨 위에 있는 [정기작업 선택] 선택 유무에 따라 정기 또는 수시 작업계획을 실행할 수 있다.

항목기본 값설명
정기작업 선택사용 안 함- 사용: 정기 작업계획으로 등록 (매일 기준시간에 반복 실행)
- 사용 안 함: 수시 작업계획으로 실행 (1회만 실행)
대상 폴더선택된 폴더선택한 폴더명이 나타남
기준일자 및 시간오늘 날짜 00:00:00하루의 기준을 결정하는 값이다. 만약 2018-11-28 06:00:00 을 선택했다면 기준 일자는 2018-11-28이 되며 06:00:00 ~ 05:59:59를 하루로 본다.
정기작업에서는 기준일자는 매일 자동으로 결정되므로 기준 시간만 사용된다.
파라미터파라미 기본값대상 폴더에 등록된 폴더 파라미터로, 수시 작업계획 실행에서만 나타난다.

수시 작업계획 실행

[정기작업 선택] 을 선택하지 않고 실행하면 수시 작업계획으로 실행된다. 수시 작업계획은 **[작업계획 > 수시 작업계획 실행]**에서도 실행할 수 있다. 수시는 정기와 다르게 1회성으로 작업계획을 실행하는 개념이다. 수시 작업계획 실행에서는 실행전에 폴더 파라미터 값 수정이 가능하다.

성공적으로 실행이 되면 팝업을 통해 [작업계획 실행 상세정보] 화면으로 이동할 수 있다.

작업계획 실행 상세 정보 화면에서는 Map과 목록 형태로 작업계획 실행 상태를 한눈에 확인할 수 있다. 자세한 내용은 작업계획 실행 상세 정보를 참고한다.

수시 작업계획 단계: 폴더 선택 → 수시 작업계획 실행

정기 작업계획 실행

[정기작업 선택] 을 선택하고 실행하면 정기 작업계획으로 등록된다. 수시 작업계획은 **[작업계획 > 정기 작업계획 목록]**에서도 등록할 수 있다. 정기 작업계획은 등록되면 매일 기준시간에 맞춰 작업계획이 실행된다. 기준일자는 매일 실행되는 시스템 일자를 따르므로 별도로 입력받지 않는다.

정기작업이 정상 등록되면 [작업계획 > 정기작업계획 목록] 으로 화면이 이동된다. 이 곳에서 등록된 정기 작업계획 목록을 확인하거나 제어 할 수 있다. 정기 작업계획으로부터 실행된 작업계획도 이 화면에서 추적할 수 있다. 보다 자세한 내용은 정기 작업계획 목록을 참고한다.

정기 작업계획 단계: 폴더 선택 → 정기 작업계획 등록 → 자동으로 매일 작업계획 실행

[참고]

정기 작업계획은 폴더 당 하나만 가능하므로 이미 등록된 정기 작업계획이 있다면 실행이 실패한다. 만약 이때 정기 작업계획을 실행하고 싶다면 기존 정기작업계획을 재실행하거나 기존 정기 작업계획을 중지, 폐기하고 새롭게 등록하면 된다.

폴더 파라미터

폴더 파라미터 편집

작업목록에서 폴더 파라미터를 편집할 수 있다.

  • 목록 화면: 좌측 폴더를 우클릭 한 뒤 **[파라미터 편집]**을 선택한다.
  • Map 화면: 폴더에 있는 파라미터 버튼()을 선택한다.

파라미터 편집 팝업에서는 필요한 파라미터와 값을 입력하고 [+] 버튼으로 추가한다. 추가된 폴더 파라미터는 폴더 하위의 Job에서 이용할 수 있다.

파라미터 값은 [파라미터 예약어] 버튼을 이용하여 예약어를 사용할 수도 있다. 예약어를 사용하면 실행 시점에 적절한 값으로 변경된다. 위의 예시에서는 "today"라는 값에 ${AGENT_DATE("yyyyMMdd")}를 입력하였는데, 만약 2018년 11월 30일에 작업계획이 실행되었다면 값은 "20181130"으로 변경되어 Job으로 전달될 것이다. 파라미터 예약어에 대한 보다 자세한 내용은 Property 예약어를 참고한다.

폴더 파라미터 예)

today=${AGENT_DATE("yyyyMMdd")}

type=TEST

폴더 파라미터 사용

등록된 폴더 파라미터는 Job에서 ${PARAM("key")}를 이용하여 사용한다.

위의 그림은 Command 템플릿으로 Job을 편집하는 모습이다. today, type이라는 폴더 파라미터를 사용하기 위해 PARAM이라는 키워드를 이용하여 다음과 같이 입력한다.

Command 템플릿 아규먼트 예)

AA BB ${PARAM("today")} ${PARAM("type")}

폴더 파라미터를 이용한 실행 및 결과

등록된 폴더 파라미터가 있다면 수시 작업계획을 실행하는 화면에서 파라미터 목록이 나타난다. 사용자는 필요에 따라 파라미터 값을 수정 후 실행할 수 있다.

실행 후에 작업계획 실행 상세 정보에서 로그를 확인해 보면 Job에서 사용한 아규먼트 중에서 PARAM 키워드로 작성된 폴더 파라미터가 변경되었음을 확인할 수 있다.

폴더 파라미터 사용 예)

AA BB ${PARAM("today")} ${PARAM("type")} → AA BB 20181127 TEST

글로벌 파라미터

글로벌 파라미터 편집

관리자 계정으로 **[도구들 > 파라미터]**에 글로벌 파라미터를 등록할 수 있다. 글로벌 파라미터는 폴더 상관없이 모든 Job에서 사용할 수 있는 파라미터이다.

글로벌 파라미터 예)

ACODE=This year

BCODE=is

CCODE=SUBSTRING(PARAM("ODATE"),0,4) (PARAM("ODATE")는 기준일자를 반환하는 예약어이다.)

글로벌 파라미터 사용

등록된 글로벌 파라미터는 모든 Job에서 ${key}를 이용하여 사용할 수 있다. (PARAM 키워드 필요 없음)

Command 템플릿 아규먼트 예)

${ACODE} ${BCODE} ${CCODE}

글로벌 파라미터를 이용한 실행 결과

실행 후에 작업계획 실행 상세 정보에서 로그를 확인해 보면 Job에서 사용한 아규먼트 중에서 글로벌 파라미터가 잘 변경되었음을 확인할 수 있다.

글로벌 파라미터 사용 예)

${ACODE} ${BCODE} ${CCODE} → This year is 2018

내 것만 보기

목록 형식의 작업 목록에서 우측 상단의 **[내 것만]**을 선택하면 본인 소유의 Job만 조회된다. 내 것만 보기는 작업목록 뿐만 아니라 작업계획 실행내역 등 다른 화면에서도 유지된다.

엑셀 다운로드

Command, File Transfer, File Watcher 템플릿의 Job을 엑셀 파일로 일괄 다운로드 할 수 있다. (그 밖의 Template으로 작성된 Job도 다운로드가 가능하나 정보가 손실된다.) 작업 목록의 우측 상단의 **[엑셀 다운로드]**를 선택하면 다운로드를 위한 팝업창이 나타난다.

엑셀 다운로드를 위해서는 먼저 다운로드 할 폴더를 선택해야 한다. [다운로드] 버튼을 누르면 다운로드 상태를 나타내는 상태바가 움직인다. 다운로드 도중 나타나는 [중지] 버튼을 이용해 다운로드를 중지할 수 있다.

파일은 "선택된 폴더명_현재시간.xlsx" 형태로 저장된다.

엑셀 파일은 총 5개의 탭으로 구성되어 있다.

  • Job - 전체 Job 목록. Job 기본정보, Job 속성정보, 스케줄 정보 등이 저장된다. 현재 Job 템플릿에는 Command, File Transfer, File Watch만 가능하다. 그 밖의 Job은 Job이라고 표시된다.
  • Command - Job 탭에 있는 Job 중에 Command템플릿에 대한 상세 정보이다. Command 파일 경로등이 저장된다.
  • File Transfer - Job 탭에 있는 Job 중에 File Transfer 템플릿에 대한 상세 정보이다. 전송할 파일명등이 저장된다.
  • File Watch - Job 탭에 있는 Job 중에 File Watcher 템플릿에 대한 상세 정보이다. 감지할 파일에 대한 정보가 저장된다. File Watch는 별도 플러그인으로 설치 가능한 템플릿이다.
  • Job Parameter - Job 탭에 있는 Job 중에 파라미터가 있을 경우 이곳에 표시된다.

엑셀 업로드 (관리자 전용)

관리자 (Admin) 사용자는 엑셀을 이용하여 Command, File Transfer, File Watcher템플릿의 Job을 일괄 등록할 수 있다. 작업 목록의 우측 상단의 **[엑셀 업로드]**를 선택하면 엑셀 업로드를 위한 팝업창이 나타난다.

업로드 양식은 지정된 양식을 사용해야 하며 **[엑셀 다운로드]**를 통해 받을 수 있다. [업로드] 버튼을 누르면 업로드 상태를 나타내는 상태바가 움직인다. 업로드 도중 나타나는 [중지] 버튼을 이용해 업로드를 중지할 수 있다. 업로드가 오류가 나거나 중지되면 그 전까지 업로드 된 내용은 모두 취소된다.

[주의]

업로드 시 이미 동일한 ID의 Job이 있다 하더라도 덮어쓰게 되므로 주의를 요한다.

정기 작업계획 목록

구성

작업계획을 매일 자동 실행하기 위해서는 정기 작업계획에 등록해야 한다. 정기 작업계획 등록은 앞서 설명한 **[작업계획 > 작업목록]**에서 **[정기 작업계획 실행]**을 이용하거나 이곳 [작업계획 > 정기 작업계획 목록] 화면에서 가능하다. **[정기 작업계획 목록]**에서는 정기 작업계획 실행목록을 조회할 수 있으며 각 목록에 대해서 중지, 재시작, 삭제 등의 작업을 할 수 있으며, [+추가] 버튼을 통해 신규 등록도 가능하다. 특정 폴더의 작업계획이 이미 실행중이라면 중복실행은 할 수 없다.

조회 조건 및 상태 값

기본적으로 모든 정기 작업계획 목록이 조회되며, 상단의 조회 조건에서 특정 폴더로 필터링이 가능하다.

조회 결과 나타나는 상태 값은 다음과 같다.

상태설명
실행중. 매일 작업계획이 실행되고 있다는 의미이다.
중지. 내일부터 작업계획이 자동 실행되지 않는다.
폐기. 정기 작업계획을 폐기하면 재실행 할 수 없다.

정기 작업계획 추가 (실행)

화면 우측 상단의 [추가] 버튼을 클릭하면 정기 작업계획을 등록할 수 있는 팝업이 나타난다.

  • 폴더: 정기 작업계획으로 등록할 폴더이다. 폴더 하위의 Job을 그 대상으로 한다.
  • 기준시간: 정기 작업계획이 매일 실행되는 시간이다. 만약 정기 작업계획을 추가하는 현재 시간이 기준시간 이후라면 곧바로 작업계획이 실행되며, 다음날부터는 기준시간에 매일 반복 실행된다.

기준시간에 대한 이해

대량 작업의 경우 심야 시간에 주로 이루어지게 된다. 이 때 날짜가 지나도 이전 날짜로 처리하고 싶은 요구사항을 만족하기 위해 만들어진 개념이 기준시간이다. 따라서 같은 스케줄이라도 기준시간을 어떻게 설정하느냐에 따라 실행되는 스케줄이 달라진다. 이해를 쉽게 하기 위해 2가지의 예를 들어서 설명한다. 스케줄은 매일 반복되는 05시, 18시 스케줄이 있다.

  1. 기준시간: 00시 00분 00초

  • 28일 05시 스케줄: 스케줄 시간이 이미 지났으므로 06시 작업계획 실행과 동시에 바로 실행 됨
  • 28일 18시 스케줄: 대기하다가 18시에 실행 됨
  • 29일 05시 스케줄: 오늘 스케줄 대상 아님
  • 29일 18시 스케줄: 오늘 스케줄 대상 아님
  • 그밖에 스케줄이 설정되어 있지 않은 작업: 선행 조건이 없다면 06시 작업계획 실행과 동시에 바로 실행 됨
  1. 기준시간: 06시 00분 00초

  • 28일 05시 스케줄: 기준 시간 전 스케줄이므로 오늘 스케줄 대상 아님
  • 28일 18시 스케줄: 대기하다가 18시에 실행 됨
  • 29일 05시 스케줄: 다음 날 스케줄이지만 기준시간 기준으로 오늘의 스케줄이므로 대기하다가 다음날 05시에 실행. 기준일자도 28일로 유지
  • 29일 18시 스케줄: 오늘 스케줄 대상 아님
  • 스케줄이 설정되어 있지 않은 작업: 선행 조건이 없다면 06시 작업계획 실행과 동시에 바로 실행 됨

정기 작업계획 실행 중지/재시작/폐기

목록의 우측에서는 정기 작업계획을 제어할 수 있는 버튼이 있다. 각각에 대한 설명은 다음과 같다.

기능활성화 조건설명
중지현재시간 이후로 정기 작업계획의 반복 실행을 멈춘다. 이미 실행중인 작업계획 실행내역은 [작업계획 실행내역] 에서 별도로 중지하여야 한다.
기준 시간 변경정기 작업계획의 기준시간을 변경한다. 변경된 기준시간은 재시작 시에 적용된다.
재시작정기 작업계획을 다시 시작한다.
폐기정기 작업계획을 폐기상태(ABANDONED)로 처리한다. 폐기된 정기 작업계획은 재시작 할 수 없다.

정기 작업계획 실행내역

실행 내역 목록에서 맨 우측의 [작업계획 실행내역()] 버튼을 클릭하면, 정기 작업계획에 의해 매일 실행된 내역을 보여주는 팝업화면이 보인다. 이 팝업은 [작업계획 > 작업계획 실행내역] 화면에서 특정 폴더를 검색 조건으로 조회한 내용과 유사하다.

팝업에서 Order ID 를 클릭하면 작업계획 실행 상세 정보 화면으로 이동한다. 또한 각 작업계획 실행내역에 대해 중지 / 재시작 / 폐기 등의 필요한 작업을 바로 수행할 수 있다.

수시 작업계획 실행

구성

**[작업계획 > 작업계획 실행]**에서는 수시 작업계획(1회성 작업계획)을 실행하고 그 결과를 한 화면에서 확인할 수 있다. 화면 왼쪽에서는 작업계획 실행에 필요한 정보를 입력하고 실행할 수 있으며, 오른쪽에서는 선택된 폴더의 작업계획 실행 내역이 조회된다.

수시 작업계획 실행

화면 왼쪽에서 수시 작업계획 실행을 위해 입력해야 할 정보는 다음과 같다.

항목기본 값설명
대상 폴더수시 작업계획을 실행할 폴더를 선택한다.
기준일자 및 시간오늘 날짜 00:00:00하루의 기준을 결정하는 값이다. 만약 2018-11-28 06:00:00 을 선택했다면 기준 일자는 2018-11-28이 되며 06:00:00 ~ 05:59:59를 하루로 본다.
파라미터파라미 기본값대상 폴더에 등록된 폴더 파라미터 목록이다. 값을 수정할 수 있다.

[작업계획 실행] 버튼을 클릭하면 신규 작업계획이 실행된다. 성공적으로 실행되었다면 성공메시지가 팝업된다. 수시 작업계획은 중복 실행 될 수 있다.

수시 작업계획 실행내역

작업계획 실행내역은 선택된 폴더, 날짜 기준으로 수시 작업계획 건에 한하여 최근 50건만 조회된다. 실행 내역의 Order ID 를 클릭하면 작업계획 실행 상세 정보 화면으로 이동한다

작업계획 실행내역

구성

정기 또는 수시로 실행된 작업계획 내역을 조회하고 각 작업계획 실행건을 제어하거나 상세 조회 할 수 있는 화면이다. 수시작업과 정기작업에 따라 추가 기능이 조금씩 다르며, 화면 상단의 조회 조건영역과 하단의 조회 목록으로 되어 있다. 또한 탭을 이용하여 상태별로 조회할 수 있다.

조회 조건 및 상태 값

작업계획 실행내역에서 사용가능한 조회 조건값은 다음과 같다.

조회조건설명
서버그룹설정 된 서버그룹 리스트에서 하나를 선택한다.
Order Date작업계획이 실행된 기준 날짜의 범위를 선택한다.
폴더작업계획 실행 시 기준이 되는 폴더를 선택한다.
Order ID작업계획 실행별로 할당된 Order ID 를 입력한다.

조회 결과 나타나는 상태값은 다음과 같은 의미를 가진다.

상태설명
실행중. 아직 실행 대기중인 Job이 있거나, Cycle Job이 있어 계속 실행중임을 의미한다.
중지. 사용자가 중지한 작업계획 실행 내역이다. 재시작을 하거나 폐기할 수 있다.
정상종료. 모든 Job이 실행되었고 완료되었다.
실패종료. 작업계획을 실행하던 도중 오류가 발생하여 작업계획이 실패한 경우이다. 종류상태를 클릭하면 오류 메시지를 볼 수 있다.
폐기. 사용자가 폐기한 작업계획 실행 내역이다. 폐기된 작업계획 실행내역은 재시작할 수 없다.

에러 내역 팝업: FAILED 상태일 때 상태를 클릭하면 오류 메시지를 볼 수 있다.

작업계획 실행 중지/재시작/폐기

목록의 우측에서는 정기 작업계획을 제어할 수 있는 버튼이 있다. 각각에 대한 설명은 다음과 같다.

기능활성화 상태설명
중지작업계획 실행을 멈춘다. 작업계획의 상태값은 상태 값이 RUNNING에서 STOPPED로 변경되며, 작업계획 내 실행중인 모든 Job 이 중지된다.
재시작 작업계획을 다시 시작한다. 작업계획의 상태 값이 STOPPED에서 다시 RUNNING으로 변경된다. 재시작이 요청되면 작업 계획내 모든 Job은 순차적으로 재시작되나, COMPLETE 상태의 Job은 이미 실행되었으므로 바로 후행 Job으로 넘어간다.
폐기 작업계획을 폐기상태(ABANDONED)로 처리한다. 폐기상태가 된 작업계획 실행은 재시작 할 수 없다.

작업계획 실행 상세 정보화면으로 이동

조회 목록에서 [작업계획 실행 상세 정보 ] 버튼을 클릭하면, 작업계획 실행 상세 정보 화면으로 이동하며, Order ID 를 클릭하여도 동일하게 화면 이동한다. 작업계획 실행 상세 정보화면에서는 작업 계획의 실행 상태를 Job 레벨로 조회할 수 있다.

정기 작업계획으로 이동

정기 작업계획 실행 내역일 경우 [정기 작업계획()] 버튼이 있으며, 클릭하면 실행내역에 대한 정기 작업계획 정보가 팝업된다. 작업계획에 대한 간략한 정보가 보여지고 필요할 경우 [정기 작업계획 목록 화면으로 이동] 버튼을 클릭하여 해당 메뉴로 이동할 수 있다.

작업계획 실행 상세 정보

구성

[작업계획 > 작업계획 실행내역] 화면에서 Order ID를 클릭하면 해당하는 작업계획 실행 상세정보를 확인할 수 있다. **[작업계획 실행 상세 정보]**는 작업계획 내 전체 Job 목록과 상태를 모니터링 할 수 있는 화면이다.

작업계획 실행 상세정보 화면은 목록(List) 형식과 맵(Map) 형식 2가지를 지원하며 기본적인 기능들이 거의 동일하다. 우측 상단의 [ Map보기 / 목록 보기 ] 버튼을 클릭하여 2가지 화면을 전환할 수 있으므로 사용자의 필요에 따라 적절한 보기 형식을 선택하여 사용할 수 있다.

작업계획 실행 상세 정보 화면의 상단에는 해당 작업계획에 대한 정보가 표시되며 해당 내용의 우측 상단에 있는 [중지] 버튼을 클릭하여 실행 중인 작업계획을 중지시킬 수도 있다. 작업계획 정보 아래에는 실행 통계정보가 표시되며 실행 상태 값에 해당 되어 있는 Job 들의 통계정보가 표시된다.

작업계획 실행 상세 정보(Map)

작업계획 실행내역 화면에서 Order ID를 클릭하면 나타나는 기본화면이다. 작업계획의 대상 폴더(하위 폴더 포함)에 속한 모든 Job들의 실행 정보가 Map 형태로 표시된다. 또한 Job 간의 선/후행 관계가 화살표로 표시되어 직관적으로 확인할 수 있다. 그리고 특정 폴더를 접거나 펼칠 수 있어 지속적으로 모니터링이 필요한 폴더만 펼쳐놓는 방식으로 사용할 수 있다.

작업계획 실행 상세정보(List)

작업계획의 대상 폴더(하위 폴더 포함)에 속한 모든 Job들의 실행 정보가 트리구조의 목록 형태로 표시된다. 특정 폴더를 접거나 펼칠 수 있다. 기본적인 구조는 Map 형태와 유사하다.

상태 값

작업계획에 속한 Job들의 실행 상태 값은 다음과 같다.

상태설명
Job이 아직 실행 요청되지 않은 상태. 진입 조건(스케줄, 선행 Job의 완료 등)이 만족되어야 다음 상태로 진행 됨 (BN)
Job이 실행 요청되었으나 아직 대기열에 쌓여있는 상태 (PN)
Job이 실행 요청되었으나 Confirm을 기다리고 있는 상태로, 작업계획 실행 상세 정보 화면에서 Confirm을 처리하면 다음으로 진행 됨 (PF)
Job이 실행 요청되어 실행될 서버를 지정하는 상태 (FN)
실행 서버가 에이전트로 Job 실행을 의뢰한 상태 (FT)
실행 서버에서 요청한 의뢰를 에이전트가 받은 상태 (FC)
에이전트에 의해 프로세스가 Job을 실행한 상태 (FR)
프로세스에서 실행한 Job이 성공적으로 실행 종료됨 (CN)
프로세스에서 실행한 Job이 실패하여 실행 종료됨 (CE)
프로세스에서 실행한 Job이 중지되어 실행 종료됨 (CS)

Job 흐름에 따른 대략적인 상태값의 변화는 다음과 같다. 상태값을 통해 Job이 현재 어느 구간에 있는지를 파악할 수 있다.

작업계획 실행 중지/재시작/폐기

작업계획 실행 상세 정보 화면의 상단 내용의 우측에 있는 버튼을 이용해 작업계획 실행을 [중지/재시작/폐기] 할 수 있다. 이는 [작업계획 > 작업계획 실행내역] 화면에서도 가능하다.

각각에 대한 설명은 다음과 같다.

버튼활성화 상태설명
중지작업계획 실행을 멈춘다. 작업계획의 상태값은 RUNNING에서 STOPPED로 변경되며, 작업계획 내 실행중인 모든 Job 이 중지된다.
재시작 작업계획을 다시 시작한다. 작업계획의 상태값은 STOPPED에서 RUNNING으로 변경된다. 재시작이 요청되면 작업 계획내 모든 Job은 순차적으로 재시작되나, COMPLETE 상태의 Job은 이미 실행되었으므로 바로 후행 Job으로 넘어간다.
폐기 작업계획을 폐기상태(ABANDONED)로 처리한다. 폐기상태가 된 작업계획 실행은 재시작 할 수 없다.

중지: 실행 중이던 모든 Job이 중지되면서 후행 Job이 실행하지 않게 된다. 작업계획의 상태값은 상태 값이 RUNNING에서 STOPPED로 변경된다. 작업계획 내 실행중인 모든 Job 이 중지된다.

Job 중지/재실행

작업계획 전체를 중지/재시작 하는것도 가능하지만, 작업계획에 속해 있는 각각의 Job에 대해서도 **[중지/재실행]**을 요청을 할 수 있다.

  • Map 화면: Job에서 오른쪽 클릭을 하면 해당 Job에 대해 수행할 수 있는 항목들이 컨텍스트 메뉴로 나타나게 되는데, 그 중에서 **[중지/재실행]**을 클릭한다.
  • 목록 화면: 해당 Job이 표시된 행의 우측에 나타는 버튼 모음에서 / 버튼을 클릭한다.

중지: Running상태에 있는 Job을 [중지] 요청하면 해당 Job은 Stop 상태가 된다. 해당 Job을 선행 조건으로 설정한 모든 Job도 함께 영향을 받는다.

재실행: Stop 이나 Error상태에 있는 Job을 [재실행] 요청하면 해당 Job은 Running상태가 된다. Job이 성공 종료된 경우와 오류 종료된 경우 모두 재실행을 요청할 수 있는데, 오류 종료의 재실행 시에만 실행 파라미터를 편집할 수 있는 팝업이 나타난다. 수정된 파라미터는 원본 Job에는 반영되지 않으며 해당 Order ID로 요청된 작업계획 내에서만 유효하다.

Job Skip Success / Skip Fail

Job의 선/후행 관계가 등록된 경우 선행 Job의 실행 결과에 따라 후행 Job의 실행이 영향을 받는다. 만약 선행 Job이 Error또는 Stop 으로 비정상 종료된 경우 후행 Job이 실행되지 않을 수 있다. 이 때 Skip 기능을 사용하여 선행 Job의 실행 결과에 관계없이 후행 Job을 실행되도록 할 수 있다. 이 기능은 일회성이며 Order ID 값이 다른 작업계획에는 영향을 미치지 않는다.

경우에 따라 Skip을 하되 선행 Job을 Success로 처리하려면 [Skip Success] 기능을, Fail로 처리하려면 [Skip Fail] 기능을 사용한다.

  • Map 화면: Job에서 오른쪽 클릭을 하면 해당 Job에 대해 수행할 수 있는 항목들이 컨텍스트 메뉴로 나타나게 되는데, 그 중에서 [Skip Success/Skip Fail] 을 선택
  • 목록 화면: 우측의 버튼 모음 중 /을 선택

Skip Success: Error 상태에 있는 Job의 실행을 [Skip Success] 요청하면 해당 Job은 Success 상태가 되고, 후행 Job이 실행된다.

Skip Fail: Error 상태에 있는 Job의 실행을 [Skip Fail] 요청하면 해당 Job의 상태는 Error로 유지되고, 후행 Job이 실행된다.

Job Hold/Release

Job의 실행을 Hold(일시 중지)하고 Release(재개)하는 기능이다. Job을 Hold한 후 Release를 하기 전까지 해당 Job의 실행이 보류된다. [Hold/Release] 기능은 작업계획을 실행한 후 사용자가 수동으로 조작하는 기능이다.

  • Map 화면: Job에서 오른쪽 클릭을 하면 해당 Job에 대해 수행할 수 있는 항목들이 컨텍스트 메뉴로 나타나게 되는데, 그 중에서 [Hold/Release] 를 선택
  • 목록 화면: 우측의 버튼 모음 중 /을 선택

Job Hold: Wait 상태에 있는 Job의 실행을 [Hold] 요청하면 Job은 대기한다. 해당 Job이 선행 조건으로 설정된 모든 Job도 함께 영향을 받는다.

Job Release: Hold 상태에 있는 Job의 실행을 [Release] 요청하면 해당 Job은 다음 상태로 진행된다.

Job Confirm

[Confirm] 기능은 Job을 등록할 때 속성값으로 사전에 등록하는 기능으로 Job이 실행되기 전 사용자의 Confirm을 받아야만 실행이 되도록 하는 기능이다. 작업계획이 실행된 후 사용자가 직접 해당 Job의 실행을 Confirm 하기 전까지는 [Hold] 기능과 유사하며 Confirm을 하게되면 Job이 정상적으로 실행된다. Confirm 여부는 사전에 등록한 Job의 속성값을 따르므로 수동으로 조작하는 [Hold/Release] 기능과 구분된다.

Map보기 화면일 경우 컨텍스트 메뉴를, 목록 보기 화면일 경우 우측의 버튼 모음을 이용한다.

  • Map 화면: Job에서 오른쪽 클릭을 하면 해당 Job에 대해 수행할 수 있는 항목들이 컨텍스트 메뉴로 나타나게 되는데, 그 중에서 **[Confirm]**을 선택
  • 목록 화면: 우측의 버튼 모음 중 을 선택

Job 속성 Confirm 활성화: 먼저 **[Job 속성 > 실행정보]**에 있는 Confirm을 활성화한다.

Confirm 대기: 작업계획이 실행되면 Job 속성에 Confirm이 설정된 Job은 대기한다. 해당 Job이 선행 조건으로 설정된 모든 Job도 함께 영향을 받는다.

Confirm: 사용자가 [Confirm] 하면 해당 Job은 다음 상태로 진행된다.

Job 상태 추적 조회

Job의 상태값 라벨 부분을 클릭하면 Job 상태 추적 조회 팝업 화면이 나타난다. 작업계획이 실행된 직후부터 Job의 상태값 변경에 대한 이력이 조회되어 나타나며 실시간으로 조회할 수 있다.

  • Map 화면: Map에서 Job의 상태를 클릭하거나 Job에서 오른쪽 클릭을 하면 해당 Job에 대해 수행할 수 있는 항목들이 컨텍스트 메뉴로 나타나게 되는데, 그 중에서 **[상태 추적]**을 선택
  • 목록 화면: 목록에서 Job 상태클릭

Job 실행 상세 정보

**[작업계획 실행 상세정보]**에서 요청번호를 클릭하면 팝업을 통해 개별 Job의 실행 결과를 조회할 수 있다. Job 뿐만 아니라 Job의 하위 Step 별 실행 결과를 확인하고 에이전트에서 기록한 로그 파일의 내용을 조회할 수 있다. 기본적으로는 Job의 요청 번호를 기반으로 이에 해당하는 가장 최근값의 실행 ID의 결과를 보여준다. Job 실행 상세 정보와 관련된 보다 자세한 내용은 단일작업의 Job 실행 결과(Job Execution)을 참고한다.

  • Map 화면: Map에서 Job의 요청번호를 클릭하거나 Job에서 오른쪽 클릭을 하면 해당 Job에 대해 수행할 수 있는 항목들이 컨텍스트 메뉴로 나타나게 되는데, 그 중에서 **[결과 보기]**를 선택
  • 목록 화면: 목록에서 Job의 요청번호를 클릭

Job 요청 내역

스케줄이 등록되어 있거나, Cycle 속성이 지정된 경우 요청 번호가 여러 개일 수 있고, 각각 요청 번호 별로 실행 ID도 여러 개일 수 있는데 이 경우 [요청 목록 - 실행 목록 - 실행 결과] 흐름의 다단계 팝업을 통하여 각각의 실행 결과를 확인할 수 있다.

  • Map 화면: Job에서 오른쪽 클릭을 하면 해당 Job에 대해 수행할 수 있는 항목들이 컨텍스트 메뉴로 나타나게 되는데, 그 중에서 **[요청 내역]**을 선택
  • 목록 화면: 우측의 버튼 모음 중 을 선택

Job 요청 내역: 스케줄 또는 선행 Job에 의해 여러 번 호출된 경우에 다건이 조회된다.

Job 실행 내역: **[Job 요청내역]**에서 우측 버튼을 눌러 Job 실행 내역을 확인할 수 있다. 재시작을 할 경우에 다건이 조회된다. 이곳에서 실행 ID를 선택하면 [Job 실행 상세 정보] 팝업이 나타난다.

Job 속성 편집

[작업계획 실행 상세 정보] 화면에서 Job의 속성값을 변경할 수 있다. 단, 수정된 속성값은 원본 Job에는 반영되지 않으며 해당 Order ID로 요청된 작업계획 내에서만 유효하다. 수정된 파라미터는 작업계획 실행을 재시작 할 때 반영되며 이미 실행중인 작업계획 실행에는 영향을 주지 않는다. Job 속성 편집에 관한 자세한 내용은 신규 작업 추가를 참고한다.

  • Map 화면: Job에서 오른쪽 클릭을 하면 해당 Job에 대해 수행할 수 있는 항목들이 컨텍스트 메뉴로 나타나게 되는데, 그 중에서 **[Job 속성]**을 선택
  • 목록 화면: 우측의 버튼 모음 중 을 선택

폴더/Job 파라미터 편집

[작업계획 실행 상세 정보] 화면에서 폴더나 Job의 파라미터 값을 변경할 수 있다. 수정된 폴더 / Job 파라미터 값은 원본 폴더 / Job에는 반영되지 않으며 해당 Order ID로 요청된 작업계획 내에서만 유효하다. 수정된 파라미터는 작업계획 실행을 재시작 할 때 반영된다. 이미 실행중인 작업계획 실행에는 영향을 주지 않는다.

  • Map 화면: Job에서 오른쪽 클릭을 하면 해당 Job에 대해 수행할 수 있는 항목들이 컨텍스트 메뉴로 나타나게 되는데, 그 중에서 **[실행 파라미터 편집]**을 선택
  • 목록 화면: 우측의 버튼 모음 중 을 선택

단일 작업

개요

J-Jobs에서는 하나의 작업 단위를 Job이라고 하며, Job은 즉시 또는 스케줄에 의해 실행될 수 있다.

업무적으로 또는 기능상의 필요에 의해 Job을 생성하고 실행하게 되며, 이렇게 만들어진 하나의 작업을 관리적으로 단일 작업이라고 부른다. 단일작업은 기본적으로 다른 단일작업 실행에 영향을 주지 않고 단독으로 실행되기에 다른 업무에 영향이 없는 곳에서 사용된다.

그에 비해 단일 작업들이 업무적으로 서로 유기적인 실행관계가 필요한 상황, 즉 작업의 선후행 관계가 필요한 포괄적인 작업을 관리적으로 작업 계획이라고 부른다. 작업 계획에서는 의미적으로 연관이 있는 여러 단일 작업을 하나의 폴더에서 관리하여 폴더 단위로 계획 실행을 하게 된다.

작업 계획은 단일 작업에 비해 선후행 관계가 형성되므로 단일 작업간의 전체적인 뷰와 필요한 추가 기능(Skip, Hold, Confirm 등)을 제공한다.

Job, Step, Template 용어

Job은 하나 이상의 Step으로 구성되며 Step은 최소한의 작업 단위를 의미한다. J-Jobs에서는 Job 단위로 즉시 실행하거나 스케줄에 등록하여 실행할 수 있다.

예를 들면 계좌이체 업무의 경우 Job과 Step은 다음과 같이 구성될 수 있다.

  • Job - 계좌 이체

    Step1 - 내 계좌 잔액 조회

    Step2 - 상대방 계좌에 입금

    Step3 - 내 계좌에서 이체 금액 출금

템플릿은 사용 가능한 Step의 종류를 의미한다. 기본 템플릿은 다음과 같다.

템플릿설명
Dummy일정 시간 대기 후 종료하는 템플릿으로, Job을 테스트하기 위한 용도로 사용한다.
Command/ShellOS에 존재하는 배치파일, 쉘 스크립트를 호출하는 템플릿이다. 파일의 경로와 파라미터를 필요로 한다.
JavaJava로 작성된 배치를 호출하는 템플릿이다. Java Class 경로를 필요로 한다.
Job미리 작성된 Job을 호출하는 템플릿이다.
REST APIREST API를 호출하는 템플릿이다. 호출 결과는 로그에 남기거나 File로 저장할 수 있다.
EmailEmail 전송을 위한 템플릿이다. SMTP 서버 정보를 필요로 한다.
File Transfer에이전트 간에 파일을 전송하는 템플릿이다. PUT/GET 모드를 지원한다.

템플릿은 플러그인 형태로 추가 설치 할 수 있다. 템플릿은 계속 추가중에 있으며, 현재 제공중인 Plug-In 템플릿은 다음과 같다.

템플릿설명
FileWatcher파일의 상태를 감시하는 템플릿이다. 파일 생성, 변경, 삭제 등 다양한 감지 이벤트를 설정할 수 있다.
SQLSQL 스크립트 파일을 실행하는 템플릿이다. 파라미터로 전달된 값을 바인딩하여 실행된다.
BRLG CNS BizActor의 BR을 호출하는 템플릿이다.
Job (BR)미리 작성된 Job 중 BR Step으로만 이루어진 Job을 호출하는 Template이다.
JarJar 파일 내부의 특정 클래스의 매소드를 실행하는 템플릿이다.
Mass EmailCSV 파일에 저장된 정보를 이용하여 대량으로 Email 전송을 하는 템플릿이다.
RR스크립트 파일을 실행하는 템플릿이다.
PythonPython 스크립트 파일을 실행하는 템플릿이다.

단일 작업목록

등록된 Job 목록을 확인하고, 각각의 Job에 대한 정보와 수정, 삭제 등의 버튼을 제공한다.

구성

Job 목록 화면의 좌측은 Job 폴더 리스트로 되어 있고, 우측은 상단의 검색 바와 하단의 Job 목록으로 구성된다.

좌측의 단일작업 폴더를 선택하면 폴더 하위 작업이 자동으로 조회된다.

우측 상단의 검색 바에서 사용 가능한 검색 조건은 다음과 같으며 검색 버튼을 누르면 서버에 다시 요청한다.

검색조건설명
ID검색할 Job ID
이름검색할 Job 명. 부분 일치 검색
소유자소유자 ID. 부분 일치 검색

우측 하단의 Job 목록에서 제공되는 정보는 다음과 같다.

항목설명바로 가기
IDJob IDJob 편집 화면으로 이동
이름Job 명
버전Job 버전
검증검증여부
알림알림 설정 여부
수정날짜▼Job이 마지막으로 수정된 날짜
소유자Job 소유자

기본 예제 Job 추가

기본 템플릿을 이용하여 생성된 예제 Job이 Samples폴더에 자동 생성된다

Job설명
Dummy_Job일정시간 동안 waiting 하는 예제
Java_JobJava 파일을 호출하는 예제
Command_JobCommand 명령으로 Notepad 열기 예제
Split_JobStep을 병렬로 실행하는 예제
Dust_JobREST API, Command/Shell, Email 이 함께 사용된 예제
Decision_Job분기처리에 의한 실행 예제

Job 업로드/다운로드

화면 우측 상단의 [업로드] 버튼을 클릭하면 업로드 대화상자 팝업 화면이 나타난다. Job 업로드 기능은 Job 편집 화면에서의 기능과 동일하므로 업로드를 참고한다.

Job 다운로드 기능은 다운로드 할 Job을 선택하고 우측 상단의 [다운로드] 버튼을 누르면 선택한 Job이 압축 파일로 저장된다. 여러 개의 Job을 한번에 다운로드할 수 있고, 다운로드 한 Job 압축 파일을 업로드하여 Job을 다시 등록할 수 있다.

Tip

만약 다운로드가 되지 않는다면, 브라우저에서 팝업을 허용한 뒤 다시 실행해본다.

내 것만 보기

화면 우측 상단의 [내 것만] 토글을 클릭하면 소유자가 로그인 사용자와 동일한 것만 조회한다. 다시 한번 더 토글하면 전체보기로 돌아온다.

Job 추가/수정/이동/삭제

새로운 Job을 추가하기 위해 오른쪽 상단에 [추가] 버튼을 클릭하면 Job Editor가 열리면서 새로운 Job을 작성할 수 있다.

Job 목록 중 수정하고자 하는 Job의 ID를 클릭하면 Job Editor가 열리고 해당 Job의 내용을 수정할 수 있다.

이동하고자 하는 Job을 선택하고 상단에 있는 [이동] 버튼을 클릭하면 Job 이동 팝업이 열리면서 이동할 폴더를 선택할 수 있다.

Job을 삭제할 때는 삭제하고자 하는 Job을 모두 체크하고 오른쪽 상단에 있는 [삭제] 버튼을 클릭한다.

Job 속성 편집

[Job 속성 편집] 버튼을 클릭하면 다음과 같이 팝업이 나타난다. 각 탭마다 변경할 수 있는 정보가 다르며 좌측 하단의 [Job 편집 화면으로 이동] 버튼을 클릭하면 Job Editor가 열리면서 내용을 수정할 수 있다. 각 탭별 항목은 [Job 편집 > 작업관리 > Job 속성 편집] 과 동일하다.

Job 스케줄

Job 목록에서 Job에 대한 등록된 스케줄 목록을 조회할 수 있으며, 이는 **[Job 편집 > 작업관리 > 스케줄]**와 동일한 기능이다. Job 목록 우측에 [스케줄] 버튼을 누르면 다음과 같이 팝업이 나타난다.

해당 Job에 대해 스케줄을 등록하기 위해서는 [스케줄 추가 화면으로 이동] 버튼을 클릭하며, 다른 Job을 포함한 전체 스케줄을 보기 위해서는 [전체 스케줄 목록 조회로 이동] 버튼을 클릭한다.

스케줄에 관한 보다 자세한 내용은 단일작업 스케줄 목록을 참고한다.

Job Lock(잠금) 설정/해제

Job 목록에서 잠금 설정을 할 수 있다. Job 목록 우측에 [잠금] [잠금해제] 버튼을 클릭하여 설정한다. 잠금 상태가 되면 다른 사용자는 Job에 대해 Read 권한만 가지며 소유주만 Job을 수정, 삭제 및 실행 할 수 있다. 여기서 실행은 즉시 및 스케줄 실행 모두를 포함한다. 해당 기능은 Job의 소유자만 변경 권한을 가진다.

해당 기능은 [Job 편집 > 작업관리 > 잠금] 과 동일하다.

Job 소유자 변경

Job 목록에서 Job에 대한 소유자를 변경할 수 있다. Job 목록 우측에 [소유자 변경] 버튼을 누르면 다음과 같이 팝업이 나타난다. 드롭박스로 변경할 소유자를 선택한 뒤 **[저장]**을 누르면 Job의 소유자가 변경된다. 해당 기능은 Job의 소유자만 변경 권한을 가진다.

Job 즉시실행

Job 목록에서 한 건의 Job을 즉시 실행한다. 오른쪽에 위치한 즉시 실행 버튼을 클릭하면 [즉시실행] 화면으로 전환되며 해당 Job에 대한 파라미터 등을 설정하고 Job을 즉시 실행시킨다. 자세한 내용은 단일 작업 실행을 참고한다.

Job 편집

기본 기능

신규 Job

Job 편집기 상단 메뉴에서 [홈 > 신규 Job] 을 클릭하면 신규 Job을 작성할 수 있다. 이미 작성중인 Job이 있으면 저장 여부를 묻는 팝업이 나타날 수 있다.

불러오기

Job 편집기 상단 메뉴에서 [홈 > 불러오기] 을 클릭하거나 단축키 [Ctrl + O] 를 누르면 Job을 불러올 수 있다.

Job 불러오기 팝업은 [단일 작업 목록] 화면과 동일한 기능으로, Job을 검색하고 불러올 수 있다. 폴더를 선택하고 ID, 이름, 소유자로 조회할 수 있으며 검색 결과에서 Job ID를 클릭하면 Job을 불러온다.

새로고침

Job 편집기 상단 메뉴에서 [홈 > 새로고침] 을 클릭하면 Job 편집 화면을 새로고침한다. 만약 수정된 내용이 있다면 (저장하지 않았다면) 사라지고 최초의 불러온 상태가 된다.

저장/다른 이름으로 저장

Job 편집기 상단 메뉴에서 [홈 > 저장] 을 클릭하거나 단축키 [Ctrl + S] 를 누르면 Job을 저장한다. 최초 저장이거나 변경된 사항이 있을 경우만 저장할 수 있다.

최초 저장이거나 [홈 > 다른 이름으로 저장] (단축키 [Ctrl + Shift + S])을 눌렀을 경우에는 Job을 다른 이름으로 저장할 수 있으며, 다음과 같은 팝업이 뜬다.

항목기본값설명
IDunknownJob ID를 입력한다. ID는 중복될 수 없다. 길이는 최소 2자리에서 최대 50자리로 알파벳, 숫자, 특수문자(-_,)만 허용된다.
이름신규 JobJob의 이름을 입력한다.
폴더현재폴더Job이 소속 될 폴더를 선택한다. 필수값
스케줄 복사 여부
(다른 이름으로 저장일 경우만 )
사용 안 함최초 저장이 아닌 다른 이름으로 저장일 경우 스케줄 복사 여부를 선택할 수 있다. 스케줄 복사 여부에 사용을 선택하면 기존 Job의 스케줄을 복사한다.

다운로드

Job 편집기 상단 메뉴에서 [홈 > 다운로드] 를 클릭하면 Job을 다운로드한다. 다운로드 되는 파일은 "Job의 ID".zip 형식이며 압축파일은 Job에 대한 정보들이 저장되어 있다. 다운로드 된 Job 파일은 **[홈 > 업로드]**를 이용하여 업로드 할 수 있다. 아래 그림은 크롬에서 다운로드를 실행했을 때의 모습이다.

Tip

만약 다운로드가 되지 않는다면, 브라우저에서 팝업을 허용한 뒤 다시 실행해본다.

업로드

Job 편집기 상단 메뉴에서 [홈 > 업로드] 를 클릭하면 다운로드 했던 Job 파일을 업로드 할 수 있다.

팝업에서 [파일 선택] 을 클릭하여 업로드할 Job의 압축파일을 선택한다. 압축파일은 하나만 선택할 수 있다. 파일을 선택하면 [파일 확인] 버튼이 활성화 된다.

먼저 [파일 확인] 을 클릭하면 압축파일에 저장된 Job의 정보를 읽어온다. 그 다음 업로드할 Job을 선택 후 업로드 될 폴더를 선택한다. 마지막으로 하단에 [업로드] 를 클릭한다. 만약 Job 정보가 문제가 있거나 이미 등록되어 있다면 해당 Job을 선택할 수 없다.

Job이 업로드 되면 성공 팝업과 함께 성공여부에 SUCCESS / FAIL 여부가 표시된다.

닫기

Job 편집기 상단 메뉴에서 [홈 > 닫기] 를 클릭하면 편집을 종료하고 [단일 작업 목록] 화면으로 이동한다. 이 때, 저장되지 않은 내용이 있으면 저장 여부를 묻는 팝업이 뜬다.

편집 기능

Job 편집기 상단 메뉴에서 [편집] 을 클릭하거나 편집 화면 좌측 하단의 팔레트를 클릭하여 편집 기능을 활용할 수 있다.

실행취소/다시 실행/복사/붙여넣기/삭제

  • 실행취소 [Ctrl + Z] - 직전에 수행한 동작을 취소하고 상태를 되돌린다.
  • 다시 실행 [Ctrl + Y] - 실행취소한 동작을 다시 실행한다.
  • 복사 [Ctrl + C] - 엘리먼트/Step을 복사한다. 여러개를 한번에 복사할 수 있으며 Step의 설정값들도 복사된다.
  • 붙여넣기 [Ctrl + V] - 마지막으로 복사한 엘리먼트/Step을 붙여넣는다.
  • 삭제 [Del] - 엘리먼트/Step을 삭제한다. 여러개를 한번에 삭제할 수 있다.

확대/축소

  • 확대 [Ctrl + Wheel Up] - 편집 화면을 확대한다.

  • 축소 [Ctrl + Wheel Down]- 편집 화면을 축소한다.

    Tip

    단축키를 이용하여 확대/축소할 때 편집 화면을 클릭하여 선택하여야 편집 화면만 확대/축소 됨. 다른 영역을 선택하면 화면 전체가 확대/축소 됨.

전체 선택/영역지정

  • 전체 선택 [Ctrl + A] - 편집 화면 내의 모든 엘리먼트/Step을 선택한다.

  • 영역지정 [Ctrl + L] - 영역을 지정하여 영역 안의 여러 개의 엘리먼트/Step을 선택한다.

    Tip

    [Ctrl] 키를 누른 상태에서 엘리먼트/Step을 하나씩 클릭하면 여러 개를 선택할 수 있음.

기본 엘리먼트

J-Jobs의 기본 엘리먼트는 Job 내에서 흐름을 제어하는 역할을 한다.

Job 편집기 상단 메뉴에서 [기본 엘리먼트] 을 클릭하거나 편집 화면 좌측 상단의 팔레트에서 드래그해 편집 화면에 엘리먼트를 추가할 수 있다.

시작/정상종료/에러종료

  • - Job의 시작을 의미한다. 반드시 있어야 하며 신규 Job 추가 시에 기본으로 추가되어 있다.
  • - Job이 정상적으로 종료되었을 때를 나타낸다.
  • - Job이 에러로 종료되었을 때를 나타낸다.

흐름제어

  • - 시작으로부터 시작된 흐름(화살표)은 화살표 방향대로 순차적으로 Step이 수행됨을 의미한다.

    Tip - 작성방법

    - 엘리먼트를 클릭하면 우측에 화살표 모양이 생긴다. 화살표를 클릭한 후 다른 엘리먼트로 드래그하여 연결하면 흐름이 추가된다.

분기

  • - 조건에 따라 Job의 흐름을 분기할 때 사용한다. 분기에 여러 개의 흐름(화살표)을 연결하고 Job 실행 시점에 조건에 따라 흐름이 분기된다. 분기를 사용하려면 분기처리를 담당할 분기처리자를 필수로 선택해 주어야 한다. 사용 가능한 분기처리자는 다음과 같다.
분기처리자설명
일반 분기처리 (기본값)이전 Step의 상태를 이용하여 분기처리를 수행한다.
특정값을 이용한 분기처리이전 Step의 Input/Output 파라미터를 이용하여 분기처리를 수행한다.
두 값의 크기를 비교한 분기처리이전 Step의 Input/Output 파라미터를 비교하여 분기처리를 수행한다.

Tip - 분기처리자의 조건은?

분기처리자가 어떻게 분기할 것인지에 관한 것이라면 실제 분기에 조건으로 사용할 값은 흐름(화살표)에 상태값으로 작성한다. 예를 들어 사람을 남, 여로 분리하려고 한다고 예를 들어보면, 먼저 "사람의 이름" 이라는 주제는 분기처리자에 의해 결정되고 실제 '남', '여'라는 상태값은 분기와 연결된 두 개의 흐름에 작성되어야 한다. 분기처리자는 흐름들의 상태를 보고 다음 Step을 결정하게 된다.

일반 분기처리

일반 분기처리를 이용하면 이전 Step의 ''상태''를 이용하여 분기한다.

분기 다음에 연결된 흐름을 선택 후, 우측 설정 창에서 다음과 같은 상태를 선택하거나 직접 입력할 수 있다.

  • 이외에(*) - 앞선 Step의 상태가 명시된 다른 흐름을 제외한 상태
  • 완료(COMPLETED) - 앞선 Step의 상태가 성공
  • 경고(WARNING) - 앞선 Step의 상태가 경고
  • 중지(STOPPED) - 앞선 Step의 상태가 중지
  • 실패(FAILED) - 앞선 Step의 상태가 실패
  • 직접입력 값

예를 들어 성공과 성공이 아닌 상태로 분기하고자 한다면, 다음과 같이 분기 이후에 두 개의 흐름을 연결하고 각각 성공(COMPLETED), 이외에(*)를 입력하여 작성할 수 있다. (기본 예제 Decision_Job에서 확인)

위와 같은 Job을 실행되었을 때, 첫 번째 Step이 성공했다면 ①번 흐름으로, 그 밖의 상태(실패, 중지 등)이면 ②번 흐름으로 진행될 것이다.

Tip - 설명

흐름을 선택하고 설명란에 원하는 설명을 작성하면 다이어그램상에 표시된다.

특정값을 이용한 분기처리

특정값을 이용한 분기는 Step 처리 후 출력값이나 입력 파라미터 값을 보고 분기처리를 하는 경우이다.

비교값에 비교하고자 하는 대상값을 넣는다.

분기처리 상태값 입력에 분기하고자 하는 값을 입력하여 분기처리 되도록 한다.

예를 들어 특정 Step의 결과값을 val1 이라는 출력변수를 지정하여 넘겼다면 비교값에 ${OUTPUT.val1} 입력하고

출력변수로 넘어올 값이 "test","prod", 그 이외 인경우 분기처리시 상태값 입력에 "test","prod","*"를 각각 입력하여 분기처리 되도록 하여 원하는 흐름으로 진행될 수 있게 한다.

두 값의 크기를 비교한 분기처리

두 값의 크기를 비교한 분기처리는 Step 실행수 처리된 결과값이나 입력받은 값들 중 2개를 비교하여 그 값의 크기에 따르 분기처리 하는 경우이다.

분기처리시 상태값은 비교이기 때문에 "<","=",">","*" 4가지 경우가 입력 가능하다.

병렬처리 시작/병렬처리 종료

병렬처리(Split)는 서로 다른 Step을 동시에 실행할 수 있는 기능이다. 서로 다른 Step이 동시에 수행 가능할 때(즉, 선후관계가 없을 때) 병렬로 처리하면 수행시간을 단축시킬 수 있다. 병렬처리는 다음과 같은 엘리먼트로 감싸져야 한다.

  • - Step의 병렬처리를 시작한다. 시작에서 발생한 흐름만큼 동시에 수행된다.
  • - Step의 병렬처리를 종료한다. 병렬처리 시작에서 출발된 흐름은 모두 병렬처리 종료로 연결되어야 한다. 또한 병렬처리 종료에서는 병렬처리 시작에서 출발한 흐름이 모두 끝나야(병렬처리 Step이 모두 실행이 끝날 때 까지 대기한다) 병렬처리 종료와 연결된 다음 Step을 실행한다.

아래는 기본 예제인 Split_Job을 불러온 모습이다. 병렬로 연결되어 있으므로 앞 두 Step은 동시에 실행된다. 병렬 처리가 모두 끝나고 난 후 마지막 Step이 실행될 것이다. Dummy라는 Step은 기본적으로 5초를 대기하도록 설정되어 있으므로 Parallel_Job의 총 수행시간은 10초 + 5초 = 약 15초가 된다.

템플릿

J-Jobs에서 사용 가능한 템플릿은 Job 편집 화면 좌측 중간에 배치되어 있다. 드래그하여 편집화면으로 이동하면 템플릿이 추가된다. 각 템플릿 별로 사용법에 대해 설명한다.

Dummy

일정시간 대기 후 종료되는 간단한 Step으로 주로 Job의 흐름을 간단히 테스트할 때 사용한다. 대기시간을 반드시 입력해야 하는데, 기본값은 5(초) 이며 숫자만 입력해야 한다. 입력한 대기시간 만큼 대기 후 정상종료 처리된다. 대기시간을 입력하지 않거나 숫자 이외의 값을 입력하면 에러종료 처리된다.

항목기본값설명
대기시간(초)5(초)설정된 대기시간만큼 대기한 후 종료하는 Step

Command/Shell

윈도우의 CMD, 리눅스의 Shell 등을 실행시키는 Step이다. 작성된 커맨드의 경로와 커맨드를 필수값으로 입력해야 한다. 필요한 파라미터는 사용자 정의 Property 에서 등록할 수 있다.

항목기본값설명
커맨드 경로실행할 커멘드의 경로
예) /bin/
커맨드실행할 커맨드
예) ls
아규먼트커맨드에 넘길 아규먼트
예) -al
인코딩시스템 기본값로그 파일을 기록할 때 사용할 인코딩
파라미터 인자포함사용 안 함사용자 정의 Property에서 value을 전달할 때 name을 포함
사용자 정의 Property커맨드에 넘길 아규먼트. name=value 형식으로 전달

Java

Java 클래스의 메소드를 실행시키는 Step이다. 실행시킬 클래스의 경로와 실행시킬 메소드의 이름을 필수값으로 입력해야 한다. 필요한 파라미터는 사용자 정의 Property 에서 등록할 수 있다.

항목기본값설명
클래스 경로실행할 클래스의 전체 패키지 + 클래스 경로
예) jjob.example.batchlet.DelayTestBatch
메소드 이름실행할 메소드
예) delay
사용자 정의 Property메소드에 넘길 Parameter
메소드는 해당 Parameter를 아규먼트로 가지고 있어야 함

Java의 메소드는 파라미터와 리턴 값에 다음과 같은 구조를 가진다.

import javax.inject.Inject;
import jjob.core.annotations.ParamProperty;
import jjob.core.inject.jobcontainer.StepLogger;
import jjob.ext.batchlet.BatchletExitValue;

public class 클래스명 {						//(1)
	@Inject
	private StepLogger logger;				//(2)

	public BatchletExitValue 메소드명(@ParamProperty(name = "name") String name) {	//(3)
		logger.debug("name: ", name);			//(2)

         // Do Something

		return BatchletExitValue.SUCCESS;	//(4)
	}
}

(1) 클래스명, 메소드명

패키지 경로, 클래스 명, 메소드 명은 Step의 속성과 일치해야 한다.

(2) StepLogger

Step 내부에서 미리 정의된 Logger를 주입(Inject) 받아 사용할 수 있다. StepLogger의 주입은 Inject 애노테이션을 사용한다. 로그는 error, warn, debug, trace 등으로 작성할 수 있으며, 실행 탭에서 Log Level을 조절할 수 있다.

(3) ParamProperty

Step에 전달한 사용자 정의 Property를 메소드에서 전달 받으려면 ParamProperty 애노테이션을 사용해야 한다. name의 속성에 Property에 작성한 이름값을 적으면 실행 시점에 value에 해당하는 값이 변수 값으로 입력된다.

(4) BatchletExitValue

Step을 수행하고 나서 상태를 리턴해야 한다. 사용 가능한 리턴 타입은 다음과 같다.

  • BatchletExitValue.STOP
  • BatchletExitValue.ERROR
  • BatchletExitValue.SUCCESS
  • BatchletExitValue.WARN
  • BatchletExitValue.USER

USER 타입인 경우, 다음과 같이 상태값을 직접 입력할 수 있다.

BatchletExitValue.USER.setValue("상태값");

Job

이미 등록된 Job을 호출하여 하나의 Step으로 매핑하는 Step이다. 매핑시킬 Job의 ID를 하위 Job ID 에 필수값으로 입력해야 한다.

항목기본값설명
하위 Job ID[검색] 버튼을 눌러 팝업에서 호출할 Job 선택
- 하위 Job 파라미터편의 기능으로 개발된 기능
하위 Job에서 Param 타입으로 정의되어 있는 Property를 조회하여 해당 Step의 사용자 정의 Property에 추가함
호출유형새로운 호출하위 Job의 호출 유형을 선택
- 새로운 요청: **[즉시실행]**과 동일한 방식으로 Job을 실행
- 내부 처리: 같은 에이전트에서 Job 을 실행
타임아웃(초)0등록된 Job을 호출하는 타임아웃 시간을 설정. 0은 기본값(60초)를 의미
그룹아이디0새로운 요청시에 수행될 그룹아이디를 지정. 0이면 지정하지 않음
실행 에이전트 그룹아이디0새로운 요청시에 수행될 에이전트의 그룹아이디를 지정. 0이면 지정하지 않음
실행 에이전트새로운 요청시에 수행될 에이전트명을 지정. 빈 값이면 지정하지 않음
사용자 정의 Property하위 Job에 넘길 Property
하위 Job은 해당 Property를 파라미터 타입으로 가지고 있어야 함

REST API

REST API를 전송하는 Step이다. 메소드URL을 필수값으로 입력해야 한다. 실행 결과는 파일이나 로그로 저장할 수 있다.

항목기본값설명
메소드GET요청할 REST API의 메소드. GET, POST, PUT, DELETE 중 택일
URL요청할 REST API의 URL
타임아웃(ms)-1REST API 요청 타임아웃 값으로 밀리세크(ms) 값으로 입력
0은 무한, -1은 시스템 기본값을 의미
요청 헤더(Header)REST API 요청 헤더(Header). 키: 값 형식으로 입력하며, 여러 개일 경우 줄바꿈으로 구분
예) Content-Type: application/json
요청 내용(Body)REST API 요청 내용(Body)
결과 처리로그결과 처리 유형.
- 로그: 결과를 로그에 기록. 로그 로그레벨을 trace로 조정하여야 함.
- 파일: 결과를 파일에 기록. 파일 경로 지정.
결과를 저장할 파일 경로결과가 파일 타입일 경우 그 경로를 지정
문자 인코딩 타입UTF-8요청 내용(Body), 결과 저장 시 사용할 인코딩 타입
사용자 정의 PropertyREST API에 전달할 Property
name=value 형식으로 전달

Email

메일을 발송하는 Step이다. 일반적으로 사용하는 이메일 양식과 유사하며 메일을 보내기 위해서 SMTP 서버 주소/포트 가 필요하다.

항목기본값설명
수신자(TO)메일 수신자. 수신자가 많을 경우 세미콜론(;)으로 구분
참조자(CC)메일 참조자. 수신자가 많을 경우 세미콜론(;)으로 구분
숨은 참조자(BCC)메일 숨은 참조자. 수신자가 많을 경우 세미콜론(;)으로 구분
제목메일 제목
메일 내용메일 내용
파일 경로바이너리 파일의 경우 첨부파일이 되고, 텍스트 파일의 경우 파일을 읽어 이메일의 내용으로 지정
SMTP 서버 주소SMTP 서버 주소
예) smtp.gmail.com
SMTP 서버 포트SMTP 서버 포트
예) 587
사용자 메일 주소보내는 사용자 메일 주소
사용자 메일 계정이름보내는 사용자 메일 계정 이름
사용자 비밀번호보내는 사용자 메일 비밀번호. 암호화되어 저장됨.
문자 인코딩 타입시스템 기본값파일과 보내는 내용에 대한 인코딩 타입

File Transfer

에이전트 간에 파일을 전송하는 Step이다. 원격으로 파일을 보내거나(PUT), 원격의 파일을 받아오기(GET)가 가능하다.

항목기본값설명
원격 에이전트 이름드롭다운 버튼에서 원격 에이전트 이름을 선택
원격 파일 경로원격 에이전트의 파일 경로
현지 파일 경로현지 에이전트 파일 경로
파일명파일명
메소드PUTPUT: 원격으로 파일 보내기
GET: 원격에서 파일 받기
암호화사용 안 함파일 전송시 암호화
덮어쓰기사용중복 파일 덮어쓰기 여부

Plug-In 템플릿

Plug-In으로 추가할 수 있는 템플릿에 대한 설명이다.

FileWatcher

FileWatcher 파일의 상태를 감시하는 Template이다. 파일 생성, 변경, 삭제 등 다양한 감지 이벤트를 설정할 수 있다.

항목기본값설명
감지대상 디렉토리파일의 상태를 감지할 기본 디렉토리
감지대상 파일명 패턴기본 디렉토리 내에서 감지할 파일명의 패턴. 와일드카드(*) 사용가능
예) *.ctrl
감지이벤트CREATE감지 이벤트 종류
CREATE: 파일 생성 이벤트
DELETED: 파일 삭제 이벤트
CHANGED: 파일 변경 이벤트
COMPLETED: 파일 완료 이벤트
감지완료조건
(파일 완료이벤트만)
파일 완료 이벤트에서 완료를 판단할 세부 정보
LAST OFFSET: 파일의 끝을 알리는 예약어의 시작위치 지정
FILE_SIZE: 파일 크기가 고정인 경우
SIZE_INFO: 파일 길이 정보를 이용
파일종료 식별 시작부 위치
(LAST OFFSET 선택 시)
0파일의 끝을 알리는 예약어의 시작 위치 지정. 파일 끝에서부터의 오프셋(Byte 단위)을 입력한다.
파일종료부 식별자
(LAST OFFSET 선택 시)
파일종료 식별 시작부 위치에서 판단할 식별자가 같은지 비교할 때 사용하는 값을 입력한다.
파일사이즈
(FILE_SIZE 선택 시)
0파일 사이즈가 고정인 경우 파일 크기 입력
파일사이즈 정보 시작 위치
(SIZE_INFO 선택 시)
0파일 사이즈 정보가 있는 시작 위치 지정. 파일 앞에서부터의 오프셋(Byte 단위)을 입력한다.
파일사이즈 정보 길이
(SIZE_INFO 선택 시)
0파일사이즈 정보 시작 위치에서 읽을 파일 사이즈 정보의 길이
타임아웃(초)30파일의 상태를 감시하는 시간. 0은 무한정 대기를 의미함.

SQL

SQL 스크립트 파일을 실행하는 Template 이다. 파라미터로 전달된 값을 바인딩하여 실행된다.

항목기본값설명
SQL 스크립트 파일배포 서버에 등록되어 있는 SQL 스크립트 파일명 입력한다. 배포 서버의 배포는 [도구들 > 배포] 기능을 이용한다.
파일인코딩UTF-8UTF-8
바인딩 정규식:[a-z0-9A-Z_]+SQL 스크립트 파일에서 지정된 정규식 패턴으로 키를 찾음
타임아웃(초)쿼리 타임아웃을 설정한다. 0은 무한정 대기를 의미함.
Datasource명사용할 Datasource(데이터베이스)를 선택
사용자 정의 PropertySQL 스크립트 파일에 정규식 패턴으로 저장된 키를 찾아 Property에 지정한 값으로 바인딩한다.

SQL 파일의 예는 다음과 같다. SQL 문장에 정규식 패턴으로 name, address 키를 입력하였다. 사용자 정의 Property에서 name, address에 해당하는 값을 넣고 실행하면 실행 시점에 값이 바인딩 되어 SQL이 동작한다. 별도의 트랜젝션 관리를 하지 않으므로 SQL 파일 내에서 트랜젝션 관리를 직접 해 주어야 한다.

INSERT INTO TEST NAME, ADDRESS
VALUES (:name, :address);
COMMIT;

BR

LG CNS BizActor의 BR을 호출하는 Template이다.

항목기본값설명
BR 이름BizActor에 배포된 BR 명을 입력한다. "공개"되어 있는 BR만 호출 가능하다.
- BR 매핑BR 명을 입력한 뒤 BR 매핑을 수행하면 BR 정보를 가져와 Step에 매핑한다. 가져오는 정보는 Input Table 이름, Output Table 이름, 사용자 정의 Property이다.
Input Table 이름Input Table 이름을 입력한다. Input Table의 Column은 사용자 정의 Property에 입력한다.
Output Table 이름Output Table 이름을 입력한다.
사용자 정의 PropertyInput Table에 있는 모든 Column 에 대한 값을 Property로 입력한다. 입력 형식은 [Input Table 이름].[Column 이름] 이다. BR 매핑을 하면 자동으로 등록된다.

Job (BR)

미리 작성된 Job 중 BR Step으로만 이루어진 Job을 호출하는 Template이다. 사용법은 Job 템플릿과 동일하다.

Jar

Jar 파일 내부의 특정 클래스의 매소드를 실행하는 Template 이다.

항목기본값설명
Jar 파일배포 서버에 등록되어 있는 jar 파일명 입력한다. 배포 서버의 배포는 [도구들 > 배포] 기능을 이용한다.
실행할 클래스명Jar 파일 내부 Package명을 포함한 클래스명을 입력한다.
실행할 메소드Jar 파일 내부 클래스의 메소드명을 입력한다.
아규먼츠메소드가 가진 아규먼츠를 컴마(,)로 구분하여 순서대로 적는다. 실제 아규먼트의 값은 사용자 정의 Property를 이용한다.
사용자 정의 Property아규먼츠에 정의된 값을 키로 하여 Property를 작성한다.

Mass Email

CSV 파일에 저장된 정보를 이용하여 대량으로 Email 전송을 하는 템플릿이다. 기본 동작은 Email 템플릿과 유사하나 CSV 파일로 여러 건을 한번에 전송할 수 있다는 점이 다르다.

항목기본값설명
파일 경로에이전트가 가지고 있는 CSV 파일명을 포함한 전체 파일 경로를 입력한다.
SMTP 서버 주소SMTP 서버 주소
예) smtp.gmail.com
SMTP 서버 포트SMTP 서버 포트
예) 587
사용자 메일 주소보내는 사용자 메일 주소
사용자 메일 계정이름보내는 사용자 메일 계정 이름
사용자 비밀번호보내는 사용자 메일 비밀번호. 암호화되어 저장됨.
문자 인코딩 타입UTF-8파일과 보내는 내용에 대한 인코딩 타입

CSV 파일은 다음과 같은 형식으로 구성되어야 한다. 첫줄은 제목 줄로 to,cc,bcc,subject,text가 위치하며 다음 줄부터 데이터 영역이 된다. 순서대로 수신자, 참조자, 비밀 참조자, 제목, 내용을 입력한다.

to,cc,bcc,subject,text
honggildong@gmail.com,,,[J-Jobs] 테스트 메일,테스트 메일 전송입니다.

R

R스크립트 파일을 실행하는 Template 이다. 이 템플릿을 사용하려면 사전에 R 이 설치되어 있어야 한다.

항목기본값설명
R 스크립트 파일배포 서버에 등록되어 있는 R 스크립트 파일명 입력한다. 배포 서버의 배포는 [도구들 > 배포] 기능을 이용한다.

Python

Python 스크립트 파일을 실행하는 Template 이다. 이 템플릿을 사용하려면 사전에 Python 이 설치되어 있어야 한다.

항목기본값설명
Python 스크립트 파일배포 서버에 등록되어 있는 Python 스크립트 파일명 입력한다. 배포 서버의 배포는 [도구들 > 배포] 기능을 이용한다.
파일 인코딩스크립트 파일 대한 인코딩 타입
아규먼츠Python 스크립트 수행 시 필요한 아규먼트. 이름=값 형태의 아규먼트는 사용자 Property에서 정의하여 사용한다.
사용자 정의 Property이름=값 형태의 아규먼트를 입력한다.

템플릿 공통기능

모든 템플릿에 공통적으로 있는 기능에 대한 설명이다.

Property 설정

일반 탭 또는 파티션 탭에 존재하는 사용자 정의 Property를 이용하면 다양한 방법으로 Property를 추가할 수 있다. Step의 [일반 > 사용자 정의 Property] 에서 [Property 편집창 열기] 를 클릭하면 팝업 화면이 뜬다(해당 내용이 없는 Step은 별도의 Property 편집 기능이 없다) .

Property 종류

Property는 다음과 같은 종류가 있다.

  • 고정값: Property 값이 편집 시점에 고정된다. (상수값)

  • 파라미터: Job을 실행할 때마다 파라미터로 Property 값을 입력받아 Step에 전달한다. 파라미터로 전달되지 않으면 기본값을 사용한다.

    • 출력변수: Step 수행 후 필요한 경우 출력변수를 설정하여 이 후 Step의 입력값으로 사용하기위한 변수를 설정한다. 파라미터에서 사용시 예약어는 ${OUTVAR.key}를 이용하여 사용할 수 있다.
  • 파티션: 파티션이 실행될 때 파티션으로부터 전달될 값이다.

    종류 를 선택하고 이름 을 입력한 후 우측의 [+] 버튼을 누르면 하단에 Property가 추가된다. Property를 여러개 등록한 후 화살표 버튼으로 순서를 변경할 수 있고, 삭제할 수도 있다.

기본 예제인 Java_Job에는 다음과 같은 사용자 정의 Property가 설정되어 있다.

기본 예제인 Java_Job을 [실행관리 > 즉시실행] 하면 Java_Job에 설정된 파라미터 타입의 Property 목록이 보인다. 값은 기본값이 설정되어 있다. 필요에 따라 값을 변경하여 Job을 실행할 수 있다.

Property 예약어

예약어는 파라미터 예약어와 출력변수 예약어로 구분되고 각각의 [예약어 목록] 버튼을 누르면 예약어들을 확인할 수 있다.

  • 파라미터 예약어는 입력받은 파라미터 값, 출력변수의 값 및 기타 정보를 동적으로 가져오는 기능을 수행하며, 날짜을 Utility 및 기본적인 String Utility를 제공하고 있다. 이러한 예약어 값을 복사하여 파라미터 타입의 Property 값에 등록하면 실제 Job이 수행될 때 값이 대체된다. 특히 날짜의 경우 에이전트 시간 또는 서버 시간을 대입할 수 있으며 간단한 연산도 가능하다.
    • 파라미터 예약어목록
항목설명
${JOB_ID}Job ID를 반환
${USER_ID}실행한 사용자 ID를 반환
${AGENT_ID}실행한 에이전트 ID를 반환
${PID}에이전트의 Process ID를 반환
${INSTANCE_ID}인스턴스 ID를 반환
${SERVER_DATE("yyyyMMdd")}DB 현재시간 yyyyMMdd형태로 반환
${SERVER_DATE_ADD_SEC("yyyyMMddHHmmss",2)}DB 현재시간에 2초를 더한 시간 yyyyMMddHHmmss 형태로 반환
${SERVER_DATE_ADD_MIN("yyyyMMddHHmmss",2)}DB 현재시간에 2분을 더한 시간 yyyyMMddHHmmss 형태로 반환
${SERVER_DATE_ADD_HOUR("yyyyMMddHHmmss",2)}DB 현재시간에 2시간을 더한 시간 yyyyMMddHHmmss 형태로 반환
${SERVER_DATE_ADD_DATE("yyyyMMdd",2)}DB 현재시간에 2일을 더한 시간 yyyyMMdd 형태로 반환
${SERVER_DATE_ADD_MONTH("yyyyMMdd",2)}DB 현재시간에 2달을 더한 시간 yyyyMMdd 형태로 반환
${SERVER_DATE_ADD_YEAR("yyyyMMdd",2)}DB 현재시간에 2년을 더한 시간 yyyyMMdd 형태로 반환
${AGENT_DATE("yyyyMMdd")}에이전트 현재시간 yyyyMMdd형태로 반환
${AGENT_DATE_ADD_SEC("yyyyMMddHHmmss",2)}에이전트 현재시간에 2초를 더한 시간 yyyyMMddHHmmss 형태로 반환
${AGENT_DATE_ADD_MIN("yyyyMMddHHmmss",2)}에이전트 현재시간에 2분을 더한 시간 yyyyMMddHHmmss 형태로 반환
${AGENT_DATE_ADD_HOUR("yyyyMMddHHmmss",2)}에이전트 현재시간에 2시간을 더한 시간 yyyyMMddHHmmss 형태로 반환
${AGENT_DATE_ADD_DATE("yyyyMMdd",2)}에이전트 현재시간에 2일을 더한 시간 yyyyMMdd 형태로 반환
${AGENT_DATE_ADD_MONTH("yyyyMMdd",2)}에이전트 현재시간에 2달을 더한 시간 yyyyMMdd 형태로 반환
${AGENT_DATE_ADD_YEAR("yyyyMMdd",2)}에이전트 현재시간에 2년을 더한 시간 yyyyMMdd 형태로 반환
${SUBSTRING("1234567890",0,3)}문자열 자름
${LENGTH("yyyyMMdd")}문자열 길이 반환
${CONCAT("A","B")}문자열 결합
${PARAM("key")}입력된 파라미터 중 key값에 해당되는 값 반환
${OUTVAR("key")}출력변수 중 key값에 해당되는 값 반환
${INPUT.key}입력된 파라미터 중 key값에 해당되는 값 반환, PARAM예약어와 동일한 기능
${OUTPUT.key}출력변수 중 key값에 해당되는 값 반환, OUTVAR예약어와 동일한 기능
${ODATE()}기준일자을 yyyyMMdd형태로 반환
${SPLIT("2018-01-01","-",0)}문자열 Split
${ENV("key")}시스템 환경변수를 반환

예약어는 조합하여 사용이 가능하다.

ex) ${}내부에서 조합할 경우 ${CONCAT("A",PARAM("reqdate"))}

​ ${} 외부에서 조합할 경우 Test=${PARAM("reqdata")}_${PARAM("reqtime")}

  • 출력변수 예약어는 Step에서 출력되는 결과를 파라미터로 변환하기 위한 기능이다.
    • 예약어목록
예약어설명
GET_VALUE_FROM_STDOUT(1,2,"UTF-8")표준출력으로 출력되는 내용 중 특정 위치 값을 추출해서 반환 (첫번째 인자:시작위치, 두번째 인자:길이, 세번째 인자:인코딩)
GET_RESULT_TO_STRING(true)Step수행 후 결과값을 문자열 형태로 반환(첫번째 인자:개행문자제거여부)
GET_RESULT_TO_JSON(true)Step수행 후 결과값을 json형태로 반환(첫번째 인자:개행문자제거여부)
GET_RESULT()Step수행 후 결과값을 Object형태로 반환
GET_RESULT_LIST_SIZE()Step수행 후 결과값이 list인 경우 그 사이즈를 반환
GET_RECORD_AT_FROM_RESULT_LIST(1)Step수행 후 결과값이 list인 경우 특정 위치의 레코드를 Object로 반환(첫번째 인자:추출하고자 하는 레코드 인덱스번호)
GET_FIELD_VALUE_FROM_RESULT("key")Step수행 후 결과값이 Map형태이거나 Class형태인 경우 해당 key 또는 filed명에 해당되는 값을 반환(첫번째 인자:추출하고자 하는 필드명)
TO_STRING(object,true)입력 받은 Object를 String값으로 반환(첫번째 인자:Object, 두번째 인자:개행문자제거여부)
TO_JSON(object,true)입력 받은 Object를 json형태로 변환하여 반환(첫번째 인자:Object, 두번째 인자:개행문자제거여부)
Property 명 대체

파라미터 타입의 Property의 경우 실행시점에 값을 Step에 전달한다고 설명한 바가 있다. Job 에 속한 모든 Step에서 동일한 Name 값은 모두 전달된 값으로 대체된다. 만약 Step별로 Name은 동일한데 서로 다른 값의 파라미터를 전달하고 싶다면 대체 기능을 이용한다.

이름에 있는 [대체] 버튼을 클릭하면 대체 이름을 작성하는 팝업이 나타난다.

![](media/ job_edit_template_06.png)

Java_Job의 sleep 이라는 파라미터는 대체 이름으로 "sleep2"로 지정하면 다음과 같이 변경된다. 이렇게 수정하면 실행시점에는 sleep2를 전달받는 창이 나타나며, 실제 Java Step에는 원래 이름인 sleep을 전달하게 될 것이다.

출력 탭

Step에서 발생시킨 표준 출력(Standard Output)을 로그 또는 파일로 저장하도록 지정할 수 있는 화면이다.

항목기본값설명
출력타입출력타입
- 로그: 로그레벨이 Trace인 경우에 Step 로그파일에 표준 출력값이 출력 됨
- 파일: 별도로 지정한 파일로 해당 표준 출력이 출력 됨
출력경로출력타입이 파일일 경우, 저장할 파일의 경로를 지정
예) /output/stdout.out

실행 탭

실행과 관련된 로그레벨, 오류 발생 Skip 처리 등을 지정할 수 있는 화면이다.

항목기본값설명
로그레벨infoStep에서 작성된 로그의 출력 레벨을 설정한다. 로그는 J-Jobs에서 저장하는 Step 로그를 말한다.
- error: error 레벨 로그 출력
- warn: warn, error 레벨 로그 출력
- debug: debug, warn, error 레벨 로그 출력
- trace: trace, debug, warn, error 레벨 로그 출력
실행구역사용 안 함Step을 원격 실행할 때 사용. 해당 Step을 다른 서버그룹, 에이전트 그룹에 혹은 특정 에이전트에 할당할 수 있다.
오류 발생 시 Skip 처리사용 안 함Step 실행 중 어떤 오류가 발생하더라도 Job을 종료하지 않고 다음 Step을 계속 수행
특정 오류 발생 시 Skip 처리Step 실행 중 이 설정에 입력한 오류가 발생하더라도 Job을 종료하지 않고 다음 Step을 계속 수행. 오류를 나열할 때에는 컴마(,)로 구분한다.
예) java.sql.SQLException
재시작 시 Skip 처리사용 안 함재시작을 수행할 때, 이전 실행에서 실패(정지)했더라도 해당 Step을 다시 수행하지 않고 다음으로 진행

작업 관리

Job 속성 편집

Job 편집기 상단 메뉴에서 [작업관리 > Job 속성] 를 클릭하거나 [F4] 를 누르면 Job 속성 편집 팝업 화면이 뜬다.

항목설명
일반정보폴더Job이 속해있는 폴더명으로 [변경] 버튼을 클릭하여, 이동할 폴더를 선택할 수 있다
Job IDJob 생성시에 부여한 ID로 변경 할 수 없다
Job 이름Job 생성시에 부여한 이름으로 변경 할 수 있다
버전주요정보가 변경되면 자동으로 버전이 올라간다
실행정보Job 로그레벨Job 로그를 남길 레벨을 선택한다.기본값은 info
Step 로그레벨Step 로그를 남길 레벨을 선택한다.기본값은 info
로그합치기Job 로그에 구성 Step의 로그를 함께 기록할지 여부. 기본값은 false
실행구역Job이 실행될 구역을 설정한다. 설정되지 않는 경우에는 Job에 설정된 로드밸런스를 따른다
Job 최대 동시실행 개수Job의 동시 실행이 가능한 최대 개수를 설정한다. 기본값은 0으로 제한하지 않는다.
Confirm 여부관리자(Admin)의 확인 후 실핼할지 여부를 설정한다. 기본값은 false
주담당자Job 주담당자 정보를 등록한다. 기본값은 소유자 ID
부담당자Job 부담당자 정보를 등록한다.
결과처리결과처리오류 발생시 결과 처리 유형을 선택한다. 기본값은 오류종료
알림조건Job의 알림이 필요할 경우 설저한다.
자원사용우선순위Job의 실행 우선순위를 설정한다. 기본값 0
배타처리 예약어같은 예약어가 등록된 Job은 배타적으로 실행된다
예상 CPU 값해당 Job의 예상실행정보를 입력한다. 이 값은 실행이력에 저장되며 추후 Job 별 처리량에 따른 실행순서 조정에 반영될 수 있다
예상 GPU 값해당 Job의 예상실행정보를 입력한다. 이 값은 실행이력에 저장되며 추후 Job 별 처리량에 따른 실행순서 조정에 반영될 수 있다
예상 Memory 값해당 Job의 예상실행정보를 입력한다. 이 값은 실행이력에 저장되며 추후 Job 별 처리량에 따른 실행순서 조정에 반영될 수 있다
예상 작업시간해당 Job의 예상실행정보를 입력한다. 이 값은 실행이력에 저장되며 추후 Job 별 처리량에 따른 실행순서 조정에 반영될 수 있다

검증

Job 편집기 상단 메뉴에서 [작업관리 > 검증] 을 클릭하면 편집 화면에서 작성한 Job의 유효성을 검증한다. 검증 통과 여부는 팝업으로 알려주며, 특정 엘리먼트나 Step에 문제가 있으면 해당 엘리먼트가 색으로 강조된다.

아래는 시작 엘리먼트가 1개 이상으로 TOO_MANY_START Rule에 위배되었음을 알려주는 장면이다.

현재까지 적용된 검증 룰은 다음과 같다.

Rule 명설명
START_REQUIRED시작 엘리먼트는 반드시 있어야 한다.
TOO_MANY_START시작 엘리먼트는 1개만 있어야 한다.
VALUE_REQUIRED필수값이 누락되었다.
NUMBER_REQUIRED숫자값이 필요한 부분에 문자값이 입력되었다.
TOO_MANY_INCOMING너무 많은 흐름이 유입되었다.
예) 병렬 시작 엘리먼트는 유입되는 흐름이 1개여야 한다.
TOO_MANY_OUTGOING너무 많은 흐름이 방출되었다.
예) 병렬 종료 엘리먼트는 방출되는 흐름이 1개여야 한다.
CIRCULATION_LIMITEDJob에 순환 참조가 감지되었다.
STATUS_REQUIRED분기에서 발생한 흐름에 상태 값이 누락되었다.
SPLIT_PAIR_REQUIRED병렬 시작과 종료가 항상 쌍으로 존재해야 한다.
FLOWS_BETWEEN_SPLITS병렬 시작에서 출발한 흐름은 반드시 병렬 종료로 이어저야 한다.
VALUE_TOO_SMALL값이 요구한 값 보다 너무 작다.
예) 파티션 처리에서 쓰레드는 반드시 1개 이상이어야 한다.
PARTITION_PROP_REQUIRED파티션 처리에서 Property가 누락되었다.

잠금

Job 목록에서 잠금 설정을 할 수 있다. Job 목록 우측에 [잠금] [잠금해제] 버튼을 클릭하여 설정한다. 잠금 상태가 되면 다른 사용자는 Job에 대해 Read 권한만 가지며 소유주만 Job을 수정, 삭제 및 실행 할 수 있다. 여기서 실행은 즉시 및 스케줄 실행 모두를 포함한다. 해당 기능은 Job의 소유자만 변경 권한을 가진다.

스케줄 설정

Job 편집기 상단 메뉴에서 [작업관리 > 스케줄] 을 클릭하거나 [F10] 를 누르면 스케줄 목록 팝업 화면이 뜬다.

해당 Job에 대해 스케줄을 등록하기 위해서는 [스케줄 추가 화면으로 이동] 버튼을 클릭하며, 다른 Job을 포함한 전체 스케줄을 보기 위해서는 [전체 스케줄 목록 조회로 이동] 버튼을 클릭한다.

스케줄에 관한 보다 자세한 내용은 단일작업 스케줄 목록을 참고한다.

보기

XML 보기

Job 편집기 상단 메뉴에서 [보기 > XML 보기] 를 클릭하거나 [Ctrl + M] 을 누르면 Job XML 팝업 화면이 뜬다. 해당 팝업에서 Job에 대한 구체적인 정보(다이어그램 정보, Job 정보, Step 정보)를 확인할 수 있는데 오류 발생 시 확인을 위한 용도로 사용된다.

Job XML 팝업 화면은 세개의 탭으로 구성되어 있다.

  • [Job XML] 탭에서는 Job을 실행시키기 위한 표준 스펙인 JSL(Job Specification Language)이 XML형식으로 표시된다.
  • [Diagram XML] 탭에서는 편집화면에서 그린 Job의 엘리먼트/Step의 위치정보가 포함된 BPMN(Business Process Model and Notation)이 XML형식으로 표시된다.
  • [Model] 탭에서는 Job의 속성과 하위 엘리먼트/Step 등의 정보가 Json형식으로 표시된다.

메뉴 툴바 보기/숨김

Job 편집기 상단 메뉴에서 [보기 > 메뉴툴바 보기] 를 클릭하면 Job 편집기의 주요 기능들이 포함된 툴바를 편집 화면 상단에 표시하며 Job 편집기 상단 메뉴에서 [보기 > 메뉴툴바 숨김] 을 클릭하면 툴바가 사라진다.

팔레트 보기/숨김

Job 편집기 상단 메뉴에서 [보기 > 팔레트 보기] 를 클릭하면 편집 화면 좌측에 팔레트가 나타나며 Job 편집기 상단 메뉴에서 [보기 > 팔레트 숨김] 을 클릭하면 편집 화면 좌측에 팔레트가 사라진다.

실행 관리

즉시 실행

즉시 실행은 **단일 작업 실행**과 동일한 기능이지만 현재 편집중인 Job에 대해서 실행한다는 점이 다르다.

Job 편집기 상단 메뉴에서 [실행관리 > 즉시실행] 을 클릭하거나 [Ctrl + Enter] 을 누르면 Job 실행을 위한 팝업 화면이 뜬다. 이곳에서는 등록된 파라미터 Property의 값을 수정하여 실행할 수 있다. (다른 타입들은 목록에서 보이지 않는다.). 하단의 [실행] 버튼을 누르면 화면상에서 바로 Job을 실행해 볼 수 있다.

아래 그림은 기본 예제인 Java_Job을 즉시 실행하기 위한 팝업이다. 2개의 파라미터 Property를 확인할 수 있고 필요에 따라 값을 수정할 수 있다.

각각의 Job 실행 항목에 대한 설명은 다음과 같다.

항목설명
Job 로그레벨Job을 실행할 때 Job의 로그레벨을 설정한다.
(기본설정 : Job 일반정보에 작성되어있는 로그레벨을 따름)
Step 로그레벨Job을 실행할 때 Step의 로그레벨을 설정한다. 기본설정을 사용하지 않고 로그레벨을 설정한 경우 각각 Step에 설정한 로그레벨은 무시된다.
(기본설정 : Step정보에 작성되어있는 로그레벨을 따름)
로그 모아보기Step에 있는 로그를 Job로그에 모아볼 때 사용한다.
실행구역Job이 실행될 구역을 설정한다. 설정되지 않는 경우에는 Job에 설정된 로드밸런스를 따른다.
예상실행정보해당 Job의 예상실행정보를 입력한다. 이 값은 실행이력에 저장되며 추후 Job 별 처리량에 따른 실행순서 조정에 반영될 수 있다.

하단의 [실행] 버튼을 누르고 정상적으로 Job이 요청된 경우 성공 팝업 화면이 뜬다.

성공 팝업 화면에서 [확인] 을 누르면 Job의 실행 결과 화면으로 이동 여부를 묻는 화면이 뜬다. 팝업에서 [확인] 을 누르면 Job 실행 상세 정보 화면으로 이동한다. 실행 결과 화면에 대한 자세한 설명은 Job 실행 상세정보를 참고한다.

Tip - 실행 결과 화면 이동 시 오류

실행 결과 화면으로 이동하다가 오류가 발생할 수가 있는데, 이는 사용 가능한 서버나 에이전트가 없거나 더 이상 여유가 없는 등의 이유로 아직 실행 내역이 만들어지지 않았기 때문이다. 이때에는 **[모니터링] **에서 서버 또는 에이전트를 상태를 확인하거나, 방금 실행 요청된 Job이 [실행내역] 에서 대기 중 목록에 있는지 확인해 볼 필요가 있다. (모니터링, 단일작업 실행내역 참고)

실행 내역

실행 내역은 현재 작성중인 Job에 대한 실행 결과 화면으로 이동하는 기능이다. 이는 **[단일작업 실행내역]**에서 해당 Job ID로 조회하는 것과 동일하다. 자세한 내용은 단일작업 실행내역을 참고한다.

단일작업 스케줄 목록

J-Jobs는 주기적으로 혹은 정해진 시간/날짜에 기등록된 Job을 실행하는 스케줄 기능을 제공한다. 하나의 Job에 여러 스케줄을 등록할 수 있으며, 등록할 때 파라미터를 설정할 수 있다.

구성

스케줄링 화면은 본인이 소유한 모든 스케줄을 조회한다. 스케줄은 종류에 따라 Date(날짜 지정), Calendar(캘린더 사용), Interval(실행 간격) 탭으로 구분되어 표시된다. 전체 조회된 상태에서 상단의 검색 바에서 필터링하면 목록을 필터링 할 수 있다. 내용은 화면에 표시된 내용 중 어떤 것이든 검색 바에서 2글자 이상 입력 후 검색 버튼을 클릭하면 필터링이 동작한다. 아래는 스케줄명을 입력하여 필터링 한 예이다.

스케줄 목록에서 제공되는 정보는 다음과 같다.

항목설명바로 가기
종류Date, Calendar 타입의 경우 스케줄 주기에 따라 일/주/월/년으로 구분
스케줄명스케줄 명스케줄 수정 화면으로 이동
설명스케줄 설명
시간정보설정된 스케줄 정보를 요약하여 표시함
Job ID호출되는 Job IDJob 편집 화면으로 이동
수정날짜▼스케줄이 마지막으로 수정된 날짜
소유자스케줄 소유자

스케줄 추가

스케줄링 화면의 스케줄 목록 영역 오른쪽에 위치한 추가 버튼을 클릭한다.

스케줄 추가 화면에서는 영역에 추가하고자 하는 스케줄링 정보를 입력하고 저장 버튼을 클릭하면, 스케줄 설정 정보가 저장된다.

스케줄의 상세 설정 항목은 다음과 같다.

항목기본값설명
스케줄명스케줄 명칭 (스케줄 ID는 서버에서 별도로 채번됨)
설명스케줄 설명
스케줄Date
0시 0분 0초
날짜 지정(Date), 캘린더 사용(Calendar), 실행 간격 등록(Interval) 유형 중 선택하고 상세 스케줄 정보를 입력
유효기간사용 안 함유효기간 사용 여부 & 유효기간 범위 (사용여부를 체크하면 기간 입력 가능)
유효시간사용 안 함유효시간 사용 여부 & 유효시간 범위 (사용여부를 체크하면 시간 입력 가능)
타임존Asia/Seoul타임존 사용 여부 & 기등록된 타임존 정보 중에서 선택
Job Id스케줄 대상 Job ID 등록(기등록된 Job 정보 중에서 선택)
알림 사용사용 안 함스케줄별 알림 설정 On/Off
알림 조건스케줄 시작, 스케줄 일정 지연에 대한 알림 수신 여부를 선택
알림 수신현재 사용가능한 알림은 Email만 있다. 사전에 Email 서버에 관한 설정이 되어야 한다. 보다 자세한 내용은 이메일 알림 기능에서 설명한다.

날짜 기준으로 스케줄링 설정하기

  • 날짜 기준으로 실행 예약 가능
  • 특정 일시, 마지막일 등 지정 가능
  • 일 단위/주 단위/월 단위/연 단위의 반복일정 등록 가능
특정일시 스케줄 Job 등록

시간을 지정할 수 있으며 지정한 경우, 해당 시간에만 수행된다.

특정요일 스케줄 Job 등록

요일을 지정할 수 있으며(다중 선택 가능) 지정한 경우, 해당 요일에만 수행된다.

매월 특정일자 스케줄 Job 등록

매월 특정일자를 지정할 수 있으며 지정한 경우, 해당 일자에만 수행된다.

매월 말일 기준 N일전 스케줄 Job 등록

매월 말일 기준으로 N일 전 날짜를 지정할 수 있으며 지정한 경우, 해당 일자에만 수행된다. 예를 들어 -3일로 지정하면 1월은 28일, 2월은 25일(윤달이면 26일), 4월은 27일이 된다.

매년 특정월 특정일자 스케줄 Job 등록

매년 특정월, 특정일자를 지정할 수 있으며 지정한 경우, 해당 일자에만 수행된다. 예를 들어 분기별 말일 스케줄은 다음과 같이 지정할 수 있다.

매시 매분 30초에 실행 스케줄

매시 매분 초를 지정할 수 있으며 지정한 경우, 해당 시간에만 수행된다.

월/일자/시간/분/초 다중선택 스케줄

월/일자/시간/분/초를 다중선택 할 수 있으며 지정한 경우, 해당 시간에만 수행된다.

Tip - 중복 실행

J-Jobs는 기본적으로 스케줄 작업의 중복수행을 허용하지 않기 때문에, 작업 수행시간이 스케줄 간격보다 큰 경우 중복 실행되지 않는다. 예를 들어 매시 매분 매초에 수행되도록 스케줄을 등록하였으나 실제 실행 작업 소요시간이 5초인 경우, 이전 실행 작업 종료 후(5초 후) 이전 실행이 종료된 시점을 기준으로 다음 스케줄이 수행된다.

캘린더 기준으로 스케줄링 설정하기

캘린더 기준으로 스케줄을 설정하기 위해서는 Admin 사용자가 [도구 > 캘린더] 메뉴를 이용해서 사전에 캘린더를 등록해야 한다. 캘린더 설정과 관련된 자세한 내용은 운영자 가이드를 참고한다.

캘린더 기준 스케줄은 기본적인 설정 방법은 날짜 기준 스케줄 설정과 유사하며, 영업일을 이용하여 다음과 같은 설정을 할 수 있다.

  • 캘린더 기준으로 Job 실행 예약 가능
  • 특정 일 또는 영업일 순서 기준 지정 가능
  • 지정한 특정 일자가 영업일이 아닐 경우 예외 정책 지정 가능
매 영업일마다 스케줄 Job 등록

일 단위로 지정하고 예외 정책을 지정하지 않으면 캘린더에 지정된 영업일에만 수행된다.

매월 특정일자(영업일이 아니면 이전 영업일) 스케줄 Job 등록

월 단위로 특정 일자를 지정하고 예외 정책을 지정하여 사용할 수 있다.

  • 25일이 영업일이면: 25일에 수행
  • 25일이 영업일이 아니고,
    • 예외 정책이 실행 안함이면: 다음 달 25일에 수행 (다음달 25일도 영업일인지 반복적으로 체크)
    • 예외 정책이 다음 영업일에 실행이면: 25일 이후 영업일에 수행
    • 예외 정책이 이전 영업일에 실행이면: 25일 이전 영업일에 수행
    • 예외 정책이 항상 실행이면: 영업일 여부에 상관없이 25일에 수행

매월 말일 기준 N 영업일 전 스케줄 Job 등록

아래와 같이 지정하면 매월 말일 기준으로 N 영업일 전을 지정할 수 있으며 지정한 경우, 해당 일자에만 수행된다. 매월 시작일 기준으로 N영업일 후도 지정 가능하다.

실행 간격 기준으로 스케줄링 설정하기

  • 이전 실행과 다음 실행 사이의 간격을 지정하여 실행 예약 가능
  • 이전 실행의 시작 시간이나 종료시간 기준으로 설정함
  • 초/분/시/일/주/월 단위의 반복일정 등록 가능
시작시간 기준 실행 간격 스케줄 Job 등록

이전 실행 시작 시간 기준으로 초/분/시/일/주/월 단위로 실행 간격을 지정할 수 있으며, 1시간 간격으로 지정한 경우, 1시간 간격으로 수행된다. J-Jobs는 기본적으로 스케줄 중복수행을 허용하지 않으나, 실행 간격 등록 방식 이면서 시작시간 기준인 경우에만 예외적으로 Job의 중복 실행을 허용한다. 중복실행을 허용하고자 하는 경우에는 중복실행 허용 에 체크한다.

종료시간 기준 실행 간격 스케줄 Job 등록

이전 실행 시작 종료 기준으로 초/분/시/일/주/월 단위로 실행 간격을 지정할 수 있으며, 1시간 간격으로 지정한 경우, 1시간 간격으로 수행된다. 참고로 만약 실행 소요 시간이 10분인 경우, 실제 실행 간격은 1시간 10분이 된다.

스케줄 유효기간/유효시간 설정하기

스케줄 항목 중에서 유효기간/유효시간 사용 여부를 체크한 뒤, 유효기간/유효시간 입력한다. 유효기간 및 유효시간을 설정하면, 설정된 기간/시간 동안에만 수행되도록 스케줄 시간 범위가 제한된다.

스케줄 타임존 설정하기

스케줄 항목 중에서 타임존 사용 여부를 체크한 뒤, 기등록된 타임존 정보 중에서 타임존을 선택하여 입력한다. 스케줄 작업 등록 시, 타임존을 선택하면 등록된 타임존을 고려하여 Job이 수행되며, 이 때 썸머타임이 적용된 타임존을 선택하면 **타임존&썸머타임(기간/시간)**을 고려하여 수행 예정 시간이 계산된다.

스케줄 파라미터 설정하기

스케줄 항목에서 Job Id를 선택하고, 파라미터 편집 버튼을 클릭한다.

스케줄 파라미터 창이 팝업되고, 이 창에서 선택한 Job에 파라미터를 입력 후 실행할 수 있는 기능을 제공한다.

Job 파라미터 정보는 스케줄 정보와 함께 저장되었다가, 스케줄이 실제 실행 될 때 이용된다.

선택된 Job이 파라미터 타입의 Property를 가지고 있다면 하단에 파라미터 목록이 나타난다. 파라미터 값을 사용자가 입력할 수 있으며, 기본값이 정해져 있으면 기본값이 채워진다. 고정값 Property는 실행화면에 표시되지 않는다.

스케줄 예측

하단의 [스케줄 예측] 버튼으로 입력된 스케줄을 토대로 스케줄이 실행될 날짜를 예측해 볼 수 있다. 스케줄을 저장하기 전에 입력된 스케줄이 올바른지 확인하는 용도로 사용할 수 있다.

다음은 영업일 말일 기준으로 스케줄을 작성하고 예측을 해 본 화면이다.

스케줄 수정/삭제

스케줄링 화면의 스케줄 목록 영역에 표시된 스케줄 목록에서 수정하고자 하는 스케줄명을 선택하면 스케줄 수정 화면으로 이동한다. 변경사항을 입력하고 변경사항 저장 버튼을 클릭하면 변경된 스케줄 정보가 저장된다. 만약 스케줄이 실행 중 이라면 이전 스케줄 정보에 의해 스케줄링되어 대기 상태에 있는 실행 정보가 삭제되고 새로운 스케줄이 등록된다. 새롭게 등록된 내용은 스케줄 실행 내역 팝업을 통해 확인할 수 있다.

스케줄을 삭제하려면 스케줄링 화면의 스케줄 목록 영역에 표시된 스케줄 목록에서 삭제하고자 하는 스케줄 정보를 체크한 뒤, 우측 상단의 삭제 버튼을 클릭한다. 선택된 스케줄 정보가 삭제되며, 스케줄링되어 대기 상태에 있는 실행 정보도 같이 삭제된다.

스케줄 시작/중지

스케줄 목록 중 한 스케줄의 우측에 시작 버튼을 클릭하여 스케줄을 시작할 수 있다. 또는 시작하고자 하는 스케줄을 체크하고 우측 상단의 선택 시작 버튼을 클릭하여 한꺼번에 시작할 수도 있다. 스케줄이 시작되면 Date 타입인 경우는 현재 시간을 고려하여 다음 스케줄을 계산 후 Job 실행 대기 목록에 등록한다. Interval 타입인 경우 시작과 동시에 바로 실행된 후 다음 스케줄이 계산되어 Job 실행 대기 목록에 등록된다.

스케줄이 실행 중이면 중지 버튼이 활성화된다. 스케줄을 선택하고 중지 버튼을 눌러 한꺼번에 중지할 수 있다. 중지가 되면 스케줄링되어 대이 상태에 있는 실행 정보가 삭제된다.

스케줄 실행내역

스케줄 목록에서 실행내역 버튼을 클릭 시, 스케줄 작업의 실행 이력을 확인할 수 있다.

팝업 상단에는 오늘 날짜로 검색 버튼이 존재하며 날짜를 변경하며 조회할 수 있다. 중간 영역에는 예정된 다음 스케줄이 표시되고 하단에는 최근 수행 이력이 요청ID 역순으로 보여진다. 수행이력에서는 요청ID, 예정 시간, 시작 시간, 종료 시간, 상태, 에이전트 ID를 확인할 수 있다.

내 것만 보기

스케줄 목록은 기본적으로 본인이 소유한(생성한) 스케줄만 보인다. 본인이 생성하지 않은 다른 스케줄을 보고 싶을 경우, 우측 상단의 모두 보기 버튼을 클릭하여 전체 스케줄을 확인할 수 있다.

단일 작업실행

구성

단일 작업실행을 이용하여 미리 작성된 Job에 파라미터를 입력 후 실행할 수 있는 기능을 제공한다. 화면 왼쪽에서는 Job을 선택하고 파라미터를 등록하고 실행할 수 있으며, 오른쪽에서는 선택된 Job의 실행 결과를 확인할 수 있다.

단일 작업실행

Job을 즉시실행 하기 위해서는 먼저 화면 왼쪽에서 Job ID를 선택해야 한다. Job ID는 자동완성 기능을 이용하여 손쉽게 찾을 수 있다.

선택된 Job이 파라미터 타입의 Property를 가지고 있다면 하단에 파라미터 목록이 나타난다. 파라미터 값은 실행 시점에 사용자가 입력할 수 있으며, 기본값이 정해져 있으면 기본값이 채워진다. 고정값 Property는 실행화면에 표시되지 않는다.

각각의 Job 실행 항목에 대한 설명은 다음과 같다.

항목설명
Job 로그레벨Job을 실행할 때 Job의 로그레벨을 설정한다.
(기본설정 : Job 일반정보에 작성되어있는 로그레벨을 따름)
Step 로그레벨Job을 실행할 때 Step의 로그레벨을 설정한다. 기본설정을 사용하지 않고 로그레벨을 설정한 경우 각각 Step에 설정한 로그레벨은 무시된다.
(기본설정 : Step정보에 작성되어있는 로그레벨을 따름)
로그 모아보기Step에 있는 로그를 Job로그에 모아볼 때 사용한다.
실행구역Job이 실행될 구역을 설정한다. 설정되지 않는 경우에는 Job에 설정된 로드밸런스를 따른다.
예상실행정보해당 Job의 예상실행정보를 입력한다. 이 값은 실행이력에 저장되며 추후 Job 별 처리량에 따른 실행순서 조정에 반영될 수 있다.

파라미터 값을 입력하고 즉시실행 버튼을 눌러 Job을 실행하면 실행 성공 메시지와 함께 요청 ID를 알려준다. 요청 ID는 Job 실행 내역을 조회하는 키 값이 된다.

단일 작업실행내역

즉시실행 화면의 우측 Job 실행내역에서 선택된 Job의 실행내역을 확인할 수 있다. 즉시실행 화면에서 조회되는 내용은 실행내역 화면에서 선택된 Job ID로 조회하여도 동일한 결과를 확인할 수 있다. 빠른 처리를 위해 즉시 실행 화면에서 보여지는 Job 실행 내역은 최대 50건까지로 제한된다.

항목설명바로 가기
+ (플러스)상세 내용 펼치기 (스케줄 명, 파라미터 보기)Job 파라미터 자동 설정
상태Job 실행 상태
요청 ID ▼요청 ID실행 내역 목록 화면으로 이동 (검색조건에 날짜, 요청ID 설정됨)
인스턴스 ID인스턴스 IDJob 인스턴스 상세 화면으로 이동
에이전트 ID에이전트 ID
요청시간Job 요청 시간
처리시간Job 을 처리하는데 소요된 시간
(Job 종료 시간 - Job 요청 시간)
실행결과Job 실행 상세 화면으로 이동

Job 파라미터 자동 설정

Job 파라미터를 손쉽게 입력하기 위한 기능이다. Job 실행 내역의 + (플러스) 또는 링크가 없는 부분을 선택하면 해당 실행내역에서 사용하였던 파라미터가 좌측의 Job 파라미터 부분에 자동 설정된다. 선택된 열은 진한 줄로 표시된다.

단일 작업 실행내역

실행내역 화면에서는 검색 조건에 따라 상태별 실행 내역 및 로그를 확인할 수 있으며, 중지 요청이나 재실행 요청을 할 수 있다.

실행 단계 이해하기

Job 실행은 크게 4 단계로 진행된다. 각 단계마다 ID가 부여된다.

  1. Job 요청 (Job Request)

    Job 요청은 외부로부터 Job 실행 요청 의뢰를 받은 단계이다. 즉시 실행이나 스케줄된 실행은 모두 Job 실행 목록에 추가되며 에이전트가 처리하기 전까지 대기한다.

  2. Job 인스턴스 (Job Instance)

    Job 요청과 1대 1로 대응되는 개념으로, 에이전트에서 실제 Job이 실행되기 위한 실행 단위이다. 만약 Job 인스튼스 ID를 부여받지 못했다면 에이전트의 상태를 확인해 볼 필요가 있다.

  3. Job 실행 (Job Execution)

    Job 인스턴스가 Job을 실행하는 하나의 시도로 실행시마다 하나씩 생성된다. 재시작 기능을 이용하였을 경우 Job 실행은 새롭게 생성되지만 Job 인스턴스는 최초 실행시 생성된 Job 인스턴스를 재활용한다.

  4. Step 실행 (Step Execution)

    Job이 실행되면 Job에 구성되어 있는 Step의 흐름대로 Step 실행이 생성된다. 이곳에서 실제 업무 로직이 수행되므로 업무와 관련된 로그를 보기 위해서는 Step 실행 로그를 확인하여야 한다.

구성

실행내역 화면은 상단의 검색 바와 실행내역 목록으로 구성된다.

상단의 검색 바에서 사용 가능한 검색 조건은 다음과 같으며 검색 버튼을 누르면 서버에 다시 요청한다.

검색조건설명
날짜 (필수)검색할 Job 요청 시간 (From ~ To)
기본값으로 어제 ~ 내일이 설정되어 있음
요청 ID요청 ID
인스턴스 IDJob 인스턴스 ID
실행 IDJob 실행 ID
Job IDJob ID
Job 명Job 명. 부분 일치 검색
에이전트 IDJob을 실행한 에이전트 ID
스케줄 이름실행한 스케줄명
요청 사용자요청 사용자

상태 값

검색 결과는 실행 상태에 따라 탭 분리되어 확인할 수 있다. 탭 구분 기준은 다음과 같다.

탭 구분실행 상태설명
전체대기를 제외한 모든 실행 결과가 보이는 탭이다. (기본 선택)
대기Job 요청이 많아 진행되지 못하고 대기중이거나, 스케줄 요청 후 대기중인 실행 목록이 보이는 탭이다.
진행실행중인 목록만 보이는 탭이다.
오류실패하거나 중지한 실행 목록만 보이는 탭이다.
완료성공적으로 종료한 실행 목록만 보이는 탭이다.

하단의 실행 목록에서 제공되는 정보는 다음과 같다.

항목설명바로 가기
+ (플러스)상세 내용 펼치기 (Step 실행 내역 보기)
상태Job 요청 결과 상태
- : 대기 중
- : 실행 중
- : 정상 완료
- : 실패
- : 중지
실행 로그 팝업 띄우기
요청 ID ▼요청 ID
인스턴스 IDJob 인스턴스 IDJob 인스턴스 상세 화면으로 이동
실행 IDJob 실행 IDJob 실행 상세 화면으로 이동
에이전트 IDJob을 실행한 에이전트 ID
Job IDJob ID
스케줄에 의해 실행됬을 경우 Job ID 하단에 스케줄명이 표시됨
Job 명Job 명
요청 시간온디맨드의 경우는 Job 실행 요청 시간을 의미함.
스케줄의 경우는 다음에 수행할 시간을 의미함
처리 시간Job 을 처리하는데 소요된 시간
(Job 종료 시간 - Job 요청 시간)
요청사용자Job 실행 요청 사용자

로그 확인

Job 또는 Step의 상태를 선택하여 팝업으로 로그를 확인할 수 있다. Job 로그에서는 하위 Step을 실행하기 전후 상태에 관한 로그를, Step 로그에서는 실제 비즈니스 로직과 관련된 로그를 확인할 수 있다. Job 편집시에 지정된 로그 레벨에 따라 기록되는 정도가 다르다. 자세한 내용은 Job 로그, Step 로그를 참고한다.

실행/대기중인 요청 강제 종료

실행중인 Job은 실행내역 화면에서 중지를 요청할 수 있다. 실행중에 우측에 나타나는 버튼을 이용한다.

항목의미설명
중지 요청Agent에 실제 실행중인 Job을 중지 요청한다. 요청을 전달받은 Agent는 Job을 중지하고 상태를 중지로 변경한다.
중지 상태로 변경Agent에 중지 요청을 하지 않고 데이터 상태만 중지 상태로 변경한다. (Agent가 정상 동작이 아닐 경우 활용)

중지/실패한 Job은 실행내역 화면에서 재시작을 요청할 수 있다. 실행중에 우측에 나타나는 버튼을 이용한다.

항목의미설명
재시작 요청Agent에 Job을 재시작 요청한다. 요청을 전달받은 Agent는 Job 실행을 생성하여 재시작한다. 이 때 파라미터는 별도로 입력받지 않고 최초에 실행하였던 파라미터 값이 셋팅된다.

내 것만 보기

Job 실행 목록은 기본적으로 본인이 소유한(생성한) Job의 실행 내역만 보인다. 본인이 생성하지 않은 다른 Job의 실행 내역을 보고 싶을 경우, 우측 상단의 모두 보기 버튼을 클릭하여 전체 실행 내역을 확인할 수 있다.

Job 인스턴스 상세 정보 (Job Instance)

[실행내역] 화면에서 Job 인스턴스 ID를 선택하면 [Job 인스턴스 상세 정보] 화면으로 이동한다. Job 인스턴스는 Job을 실행하기 위한 실행 단위로 Job 요청과 1대 1로 대응되는 개념이다. 실제 Job이 수행되는 Job 실행을 하기 전에 준비하는 단계라고 볼 수 있다. Job 인스턴스 상세 정보에서는 좌측에 상세 정보, 우측에 Job 실행 정보를 확인할 수 있다.

좌측 인스턴스 상세 정보에서 제공되는 정보는 다음과 같다.

항목설명바로가기
ID인스턴스 ID
Job ID실행한 Job IDJob 즉시실행 화면으로 이동
이름실행한 Job명
Job 파라미터실행 당시 입력된 파라미터 값. 띄어쓰기로 구분됨
서버 그룹 ID실행한 서버 그룹 ID
에이전트 그룹 ID실행한 에이전트 그룹 ID
에이전트 ID실생한 에이전트 ID
스케줄 이름스케줄에 의해 실행되었을 경우 스케줄 이름 출력스케줄 목록화면으로 이동
시작 시간Job 인스턴스 시작시간
종료 시간Job 인스턴스 종료시간
처리 시간Job 인스턴스 종료시간 - 시작시간
상태Job 인스턴스 상태
- : 실행 중
- : 정상 완료
- : 실패
- : 중지
- : 폐기
종료 상태Job 인스턴스 종료 상태
메시지인스턴스 오류 메시지. 가장 최근 Job 실행 오류 메시지
Job 실행 횟수Job 인스턴스가 Job을 실행한 횟수로 재시작을 할 경우 증가 된다.

우측에서는 Job 인스턴스 하위의 Job 실행 목록을 보여준다. 기본적으로 하나의 Job 실행을 가지나 재시작 등의 경우 여러개의 Job 실행이 있을 수 있다. 만약 여러개의 Job 실행을 가진다면 가장 최근 Job 실행의 상태가 Job 인스턴스의 상태가 된다.

우측 Job 실행 목록에서 제공되는 정보는 다음과 같다.

항목설명바로가기
실행 IDJob 실행 IDJob 실행 상세 정보 화면으로 이동
시작 시간Job 실행 시작시간
처리 시간Job 실행 종료시간 - 시작시간
상태Job 실행 상태
- : 실행 중
- : 정상 완료
- : 실패
- : 중지
- : 폐기
Job 실행 로그 보기 팝업
종료 상태Job 실행 종료 상태
메시지Job 실행 오류 메시지메시지 팝업

Job 실행 상세 정보

[실행내역] 화면에서 Job 실행 ID를 선택하면 [Job 실행 상세 정보] 화면으로 이동한다. Job 실행은 Job 인스턴스가 실제 Job을 실행하는 단위이다. 로그 파일를 포함한 실행된 Job, Step의 구체적인 결과를 볼 수 있는 화면이다. Job 실행 상세 정보 화면은 세개의 탭으로 구성되며 순서대로 Job 실행 상세 정보, Step 실행 상세 정보, Diagram 정보를 확인할 수 있다.

Job 실행 결과 (Job Execution)

Job 실행 상세 정보의 첫 번째 탭에서 제공되는 Job 실행 상세 정보는 다음과 같다.

항목설명바로가기
ID실행 ID
부모 ID부모 실행 ID. 병렬을 사용할 경우 Job 실행간에 부모-자식 관계가 성립될 수 있는데, 그 때 표시되는 부모 실행 ID 정보
실행 이름실행한 Job IDJob 즉시실행 화면으로 이동
이름실행한 Job명
인스턴스 ID인스턴스 ID
호출 인스턴스 ID셋잡으로 처리되어 실행될 때 자식 Job 실행들이 가지게 되는 부모 Job 인스턴스 ID
Job 파라미터실행 당시 입력된 파라미터 값. 띄어쓰기로 구분됨. Job 인스턴스에 저장된 정보와 동일함.
그룹 ID실행한 서버 그룹 ID
서버 ID실행한 서버 ID
에이전트 ID실생한 에이전트 ID
스케줄 이름스케줄에 의해 실행되었을 경우 스케줄 이름 출력스케줄 목록화면으로 이동
시작 시간실행 시작시간
종료 시간실행 종료시간
처리 시간실행 종료시간 - 시작시간
상태Job 실행 상태
- : 실행 중
- : 정상 완료
- : 실패
- : 중지
- : 폐기
Job 실행 로그 팝업
종료 상태Job 실행 종료 상태
메시지실행 오류 메시지. 가장 최근 Job 실행 오류 메시지

Job 실행 정보 화면에서는 상황에 따라 우측 상단에 다양한 버튼이 나타난다. 버튼에 대한 설명은 다음과 같다.

버튼보이는 조건설명
항상Job 실행 정보를 갱신한다. 한번 실행하면 20초마다 새로고침 된다.
Job이 실행중실행중인 Job의 중지를 요청한다.
Job이 실패 또는 중지실패 또는 중지한 Job의 재시작을 요청한다.
Job이 실패 또는 중지실패 또는 중지한 Job의 폐기를 요청한다. 폐기된 Job 실행은 재시작을 요청할 수 없다.
Job 로그

Job 실행 상세 정보의 첫 번째 탭에서 상태를 클릭하면 Job 실행과 관련된 로그를 확인할 수 있다. 로그는 반복해서 에이전트와 통신하여 일정 사이즈만큼 가지고와서 보여주며 마지막 최대 1MByte만 보여준다. 로그 파일이 클 경우에 전체 로그를 확인하려면 로그 Download 기능을 이용한다.

상단 버튼에 대한 설명은 다음과 같다.

버튼설명
Download전체 로그 파일을 다운로드 한다.
Scroll Lock활성화되면 스크롤 바를 자동으로 움직이지 않도록 한다.
Refresh로그 파일 정보 가져오기를 시작 또는 중지한다. 최초에 팝업이 열리면서 Refresh 버튼은 자동 활성화되어 로그를 주기적으로 가져온다. 로그 파일을 모두 읽었으면 Refresh는 중지된다.

Step 실행 목록 (Step Execution)

Job 실행 상세 정보의 두 번째 탭에서는 Job 하위에 속한 Step의 실행 정보를 확인할 수 있다. Step 실행 정보는 Job 하위의 전체 Step 중에 실행된 Step만 나타난다.

Step 실행 탭에서 제공되는 정보는 다음과 같다.

항목설명바로가기
IDStep 실행 ID
Step 명Step 명
시작 날짜실행 시작시간
종료 날짜실행 종료시간
처리 시간실행 종료시간 - 시작시간
상태Step 실행 상태
- : 실행 중
- : 정상 완료
- : 실패
- : 중지
- : 폐기
Step 실행 로그 팝업
MetricJ-Jobs에서 제공하는 Reader, Writer를 사용할 경우 나타나게 되는 Metric 정보 (Total Reads, Writes, Filters, Skips, Commits, Rollbacks)
종료 코드Step 종료시 남긴 코드
종료 메시지Step 종료시 남은 메시지 (에러)종료 메시지 팝업
Detail Metric상세 Metric 정보Step 실행 상세 정보 팝업
Step 로그

Job 실행 상세 정보의 두 번째 탭 (Step 실행)에서 상태를 클릭하면 Step 내부에서 발생한 trace, error, warn, info, debug 로그를 볼 수 있다. 설정된 Step의 로그 레벨에 따라 보이는 내용이 다를 수 있다.

상단 버튼에 대한 설명은 다음과 같다.

버튼설명
Download전체 로그 파일을 다운로드 한다.
Scroll Lock활성화되면 스크롤 바를 자동으로 움직이지 않도록 한다.
Refresh로그 파일 정보 가져오기를 시작 또는 중지한다. 최초에 팝업이 열리면서 Refresh 버튼은 자동 활성화되어 로그를 주기적으로 가져온다. 로그 파일을 모두 읽었으면 Refresh는 중지된다.
Step 종료 메시지

Step 실행 결과 실패 등으로 종료 메시지가 있는 경우, 우측에 종료 메시지를 볼 수 있는 버튼이 나타난다.

종료 메시지 버튼을 클릭하면 다음과 같이 데이터베이스에 저장된 메시지를 확인할 수 있다.

Step 실행 상세 정보

Detail Metric 버튼을 눌러 Step 실행 상세 정보 버튼을 클릭하면 팝업이 나타나는데, 이곳에서는 상세 Metric 정보를 확인할 수 있다.

파티션 된 Step의 경우에는 Step 실행 상세 정보 팝업에서 파티션 별 상세 정보를 확인할 수 있다. (이 때 기존 실행 결과 탭에서는 모든 파티션의 합계(Sum) Metric을 보여준다)

Job Template을 사용한 Step의 경우에는 Step 실행 상세 정보 팝업에서 하위로 요청된 요청 ID를 확인할 수 있다. 링크를 클릭하면 해당 요청 ID와 연관된 Job 실행 결과 화면으로 이동한다.

Diagram으로 실행 결과 보기

Job 실행 상세 정보 화면에서 세 번째 탭(Diagram)은 Step 실행 결과에 대한 결과를 Job Diagram으로 보여준다. 우측 상단에 새로고침을 선택하면 20초마다 다이어그램을 갱신하면서 결과를 확인할 수 있다.

  • 깜박이는 녹색: 실행중
  • 녹색: 정상종료 (COMPLETED)
  • 적색: 실패 (FAILED)
  • 회식: 중지 (STOPPED)

모니터링

서버 모니터링

등록된 서버(J-Jobs Server)의 상태를 모니터링 할 수 있으며, 같은 서버 그룹에 연결된 에이전트(J-Jobs Agent)들의 상태와 Job 처리 현황을 모니터링할 수 있는 화면이다.

사용자는 검은 빨간 화살표 부분을 확인하여 이상이 있을 경우 시스템 담당자에게 문의하거나 운영자 가이드를 참고하여 조치한다. 각 구분별 상태에 대한 의미는 다음과 같다. (빨간 화살표 부분)

구분상태설명
서버정상서버 정상 동작
접속대기서버에 Job 실행이 가능한 에이전트가 하나도 없음
비정상서버가 비정상 종료됐거나 서버 내 정상 처리자가 하나도 없음
중지서버가 정상 종료됨
처리자정상서버 내 처리자 정상 동작
비정상서버 내 처리자 비정상 (상태 정보가 10초 동안 갱신되지 않음)
에이전트정상에이전트 정상 동작
중지에이전트가 구동되지 않거나 서버가 비정상 또는 중지됨

에이전트 상태 부분에서는 에이전트 별 Job 처리 현황, 자원 현황(CPU, Memory, Disk) 을 확인할 수 있다. 또한 신호등 모양의 프로세스 상세 정보 버튼을 클릭하여 에이전트에서 실행시킨 프로세스의 목록과 상태를 확인할 수 있다.

에이전트 모니터링

등록된 에이전트들의 목록과 상태를 모니터링할 수 있는 화면이다. 서버 화면과 마찬가지로 에이전트별 상태를 색으로 확인할 수 있다.

항목설명
-에이전트 상태 / 타임존
: 정상 / : 오류
서버 그룹서버 그룹
에이전트 그룹에이전트 그룹
에이전트에이전트 명 (에이전트 ID)
프로세스 상태정상: 프로세스 수 - 실행중인 Job 개수
비정상: 프로세스 수 - 실행중이지 않은 Job 개수
수집시간에이전트 정보 수집 시간
CPUCPU 정보 (%)
메모리메모리 정보 (%)
디스크디스크 정보 (%)

부록

사용자 정보

상단의 사용자 정보 버튼(로그인 한 이름)을 클릭하면 사용자 정보 팝업이 나타난다. 이 곳에서 사용자 정보를 수정하거나, 이메일 알림 설정을 할 수 있다. 이메일 알림 설정은 이메일 알림 설정을 참고한다.

사용자 정보 팝업에서 확인하거나 수정할 수 있는 정보는 다음과 같다.

항목설명
사용자 ID사용자 ID. 수정 불가
사용자 이름사용자 이름. 수정 가능
비밀번호
비밀번호 확인
비밀번호와 비밀번호 확인에 동일하게 입력하고 비밀번호 변경 버튼 클릭하여 비밀번호를 수정할 수 있음. 8자 이상 190자 이하로 영문자와 숫자가 포함되어야 함.
역할GUEST, USER, ADMINISTRATOR 중 하나로 수정 불가. (Admin 사용자만 [관리자 > 사용자] 메뉴에서 수정할 수 있음)
- GUEST: 기본 메뉴 읽기 권한
- USER: 기본 메뉴 읽기, 쓰기 권한
- ADMINISTRATOR: 관리자 메뉴 읽기, 쓰기 권한
언어한국어(Korean), 영어(English) 중 택일하면 J-Job Manager 화면의 언어가 변경됨
타임존사용자의 타임존. 설정된 타임존에 따라 J-Job Manager 화면의 시간이 표시됨
타임존 목록은 Admin 사용자만 **[도구들 > 타임존]**에서 추가할 수 있음
시간표시 형식J-Job Manager의 시간 표시 형식. 드롭다운 메뉴 중 택일
비밀 토큰J-Jobs의 REST API 사용을 위한 Private Token 값 (20자리)
토큰 생성 버튼을 눌러 토큰을 발급하거나 수정할 수 있음

이메일 알림 설정

J-Jobs는 Job, 스케줄 실행에 대한 이메일 알림을 지원한다. 이메일 알림을 설정하기 위해서는 사전에 J-Jobs Admin 사용자가 [관라자 > 이메일 알림] 메뉴에서 SMTP 서버와 메일 템플릿을 등록해야 한다. (운영자 가이드 참고)

알림 서버 설정

사용자는 알림을 받기 위해 사용할 알림 서버를 설정해야 한다. 상단 메뉴의 사용자 정보 팝업에서 두 번째 탭으로 이동하면 이메일 알림 설정을 할 수 있다. 이메일 알림 사용에 체크를 하고 사용자에 대한 알림 서버를 설정한다. 이 설정은 해당 사용자가 소유한 Job, 스케줄에 적용될 기본 설정값이다.

각 항목에 대한 설명은 다음과 같다. 수정 후 변경사항 저장 버튼을 누르면 저장된다.

항목설명
서버 ID미리 등록된 알림 서버 중 알림 서버로 사용할 서버를 팝업에서 선택한다.
만약 팝업에 아무 내용이 없다면 사전에 Admin 사용자로 이메일 서버를 등록 후 다시 진행한다.
발신자 메일메일 수신자가 보게 될 발신자 메일 주소이다.
발신자 이름메일 수신자가 보게 될 발신자 이름이다.
수신자
to, cc, bcc
메일 수신자를 입력한다.
수신자 입력 후 엔터를 누르면 추가된다. 여러명을 한꺼번에 등록하려면 세미콜론(;)으로 구분하여 입력한다.
to: 수신자, cc: 참조자, bcc: 비밀 참조자

Job 알림 설정

알림 서버 설정이 되고 난 후, 각 Job에 이메일 알림 설정을 할 수 있다. [Job 편집] 화면에서 알림이 필요한 Job 불러온 다음 [작업관리 > 일반정보] 팝업에서 이메일 알림 설정 탭으로 이동한다. 이메일 알림 사용을 "사용"이라고 선택하고 Job에 대한 알림 설정을 한다.

각 항목에 대한 설명은 다음과 같다. 수정 후 확인 버튼을 눌러 팝업을 닫고 해당 Job을 저장해야 반영된다.

항목설명
알림 조건필요한 알림 조건을 선택한다.
- 성공: Job이 실행 후 성공으로 종료하면 알림
- 시작: Job이 실행되면 알림
- 실패: Job이 실행 후 실패로 종료하면 알림
- Job 시작 이후 N분: Job이 실행 후 N분이 경과하면 알림
기본 수신자사용자 정보에서 입력한 기본 수신자를 보여준다.
이곳에서는 확인만 할 수 있으며 기본 수신자에 대한 수정은 사용자 정보 팝업을 이용한다.
추가 수신자해당 Job에 대한 수신자를 지정하고 싶을 때 이곳에 입력한다.
수신자 입력 후 엔터를 누르면 추가된다. 여러명을 한꺼번에 등록하려면 세미콜론(;)으로 구분하여 입력한다.

스케줄 알림 설정

알림 서버 설정이 되고 난 후, 각 스케줄에 이메일 알림 설정을 할 수 있다. [스케줄링] 화면에서 알림이 필요한 스케줄명을 선택하여 편집화면으로 이동한다. 하단에 이메일 알림 사용을 "사용"이라고 선택하고 스케줄에 대한 알림 설정을 한다.

각 항목에 대한 설명은 다음과 같다. 수정 후 변경사항 저장 버튼을 누르면 반영된다.

항목설명
알림 조건필요한 알림 조건을 선택한다.
- 스케줄 시작: 스케줄이 실행되면 알림
- 스케줄 일정 지연: 스케줄이 예정 시간이 되었는데도 10초 내로 실행되지 않으면 알림. 기준 시간은 **[관리자 > 이메일 알림 > 전역 이메일 알림 설정]**에서 수정 가능.
기본 수신자사용자 정보에서 입력한 기본 수신자를 보여준다.
이곳에서는 확인만 할 수 있으며 기본 수신자에 대한 수정은 사용자 정보 팝업을 이용한다.
추가 수신자해당 스케줄에 대한 수신자를 지정하고 싶을 때 이곳에 입력한다.
수신자 입력 후 엔터를 누르면 추가된다. 여러명을 한꺼번에 등록하려면 세미콜론(;)으로 구분하여 입력한다.

수신 내용 확인

메일 수신함에서 수신된 알림을 확인한다. 메일의 내용은 **[실행내역]**에서 실행 ID를 선택하여 이동할 수 있는 Job 상세 내역 화면과 유사하다. Job 싫ㅇ만약 로그가 있을 경우 파일로 첨부된다. 전송된 예시는 다음과 같다. 내용은 템플릿에 따라 다를 수 있다.

제목:
[J-Jobs] Job ID: Fail_Job | FAILED | 작업 실패시 알림

내용:
Job ID: Fail_Job에 설정된 '작업 실패시 알림'에 의해 전송된 메일입니다.

[기본정보]

요청 ID: 1
상태: FAILED
인스턴스 ID: 1
실행 ID: 1
서버 ID: 1
에이전트 ID: 1

Job ID: Fail_Job
Job 설명: 항상 실패하는 테스트 Job
Job 파라미터:
스케줄명:
요청시간 (서버): 2017-09-04 10:31:21
종료시간 (서버): 2017-09-04 10:31:22
소요시간: 00:00:01
요청자: user
메시지:
java.lang.IllegalArgumentException: timeout value is negative
	at java.lang.Object.wait(Native Method)
	at jjob.example.batchlet.DelayTestBatch.delay(DelayTestBatch.java:26)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at jjob.ext.batchlet.AbstractClassBatchlet.process(AbstractClassBatchlet.java:166)
	at jjob.core.batch.api.impl.BatchletWorkerImpl.execute(BatchletWorkerImpl.java:89)
	at jjob.core.inject.stepexecution.impl.SimpleNormalStepExecution$1.call(SimpleNormalStepExecution.java:118)
	at jjob.core.inject.stepexecution.impl.SimpleNormalStepExecution$1.call(SimpleNormalStepExecution.java:112)
	at java.util.concurrent.FutureTask.run(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)

[Step 정보] (1개)

    Step 실행 ID: 1
    Step ID: Batchlet_1olmzc1
    Step 명: Dummy
    시작시간 (서버): 2017-09-04 10:31:23
    종료시간 (서버): 2017-09-04 10:31:23
        소요시간: 00:00:00
    상태: FAILED
    종료 코드:

로그 파일을 첨부하였으니 확인하시기 바랍니다.

자세한 내용은 J-Jobs Manager에서 확인하세요: http://xxx.xxx.xxx.xxx/jjob-manager/jjob/#/execution/execution/detail/1

파티션 설정

J-Jobs는 하나의 Step을 동시에 실행하는 파티션 기능을 지원한다. 예를 들어 10만건의 데이터를 처리해야 하는 Step의 경우, 10개의 파티션을 생성하여 동시에 각각 1만건식 수행하는 경우이다. 이 때 각 파티션마다 서로 다른 파라미터(데이터의 범위나 파일명 등)를 전달할 수 있다.

파티션 기능은 템플릿별로 지원 여부가 다른데, 현재 템플릿 중에서 Command/Shell, Java, Job, BR 템플릿에서만 파티션 기능을 사용할 수 있다.

정적 파티션

Command/Shell 템플릿으로 만든 Step은 정적 파티션을 설정할 수 있다. 정적 파티션은 파티션 개수가 Job을 작성하는 시점에 미리 정해진다.

[Job 편집] 화면에서 Command/Shell 템플릿으로 만든 Step을 선택한 뒤, 우측 속성창에서 파티션 탭을 누른다. 아래는 정적 파티션을 설정한 예이다. 이 경우에는 아규먼트 개수개 2개이므로 파티션을 2개 생성하고 각각의 파티션에 아규먼트를 전달한다.

각 항목에 대한 설명은 다음과 같다. 수정 후 해당 Job을 저장해야 반영된다.

항목설명
파티션 종류파티션 종류를 선택한다.
- 정적: 파티션 수를 고정 (아규먼트 수 만큼)
- 동적: 파티션 수를 실행 시점에 지정 (Mapper에서 전달해주는 만큼)
파티션 추가이곳에 추가하는 아규먼트 개수만큼 파티션이 생성된다. 각 파티션에 아규먼트를 하나씩 전달한다.

동적 파티션

Command/Shell, Java, Job, BR 템플릿으로 만든 Step은 동적 파티션을 설정할 수 있다. 동적 파티션은 파티션 개수가 Job을 실행하는 시점에 동적으로 정해진다.

[Job 편집] 화면에서 동적 파티션을 지원하는 템플릿으로 만든 Step을 선택한 뒤, 우측 속성창에서 파티션 탭을 누른다. 동적 파티션을 위해서는 Java로 작성한 Mapper Class를 입력해야 한다. Mapper Class는 해당 Step을 실행한 시점에 호출되어 동적으로 파티션을 만든다. 예를 들어 Mapper Class에서 파티션 당 1만 건을 전달하도록 작성되어 있다면, 전체 데이터가 10만건인 경우 10개의 파티션이 생성되며, 전체 데이터가 5만건인 경우에 5개의 파티션이 생성된다.

아래는 Java Step에서 동적 파티션을 설정한 예이다. Command/Shell과 달리 Java, Job, BR은 동적 파티션만 지원되므로 파티션 종류를 지정하는 곳이 없다.

각 항목에 대한 설명은 다음과 같다. 수정 후 해당 Job을 저장해야 반영된다.

항목설명
파티션 종류
(Command/Shell
템플릿만 존재)
파티션 종류를 선택한다.
- 정적: 파티션 수를 고정 (아규먼트 수 만큼)
- 동적: 파티션 수를 실행 시점에 지정 (Mapper에서 전달해주는 만큼)
Mapper 클래스 경로동적으로 파티셔닝을 할 클래스 경로이다. 사전에 해당 클래스가 에이전트에 배포되어 이있어야 한다.
Mapper 실행 메소드동적으로 파티셔닝을 할 Mapper 클래스의 메소드이다.
처리자(쓰레드) 개수동시에 처리하기 위한 처리자 수를 지정한다. 실행 시점에 Mapper로 파티션이 9개 생성되었고 처리자(쓰레드) 개수를 3으로 지정하였다면 3개의 처리자가 동시에 파티션을 하나씩 가져가서 처리한다. 각 처리자가 파티션을 3개씩 처리하면 총 9개의 파티션이 모두 처리되는 식이다. 처리자 수를 지정해주는 이유는 물리적인 제약으로(CPU, Memory 등) 서버가 동시에 처리할 수 있는 처리자 수가 제한되어 있기 때문이다.
Mapper에 보낼 PropertyMapper 클래스에서 프로퍼티를 필요로 할 때 설정한다. 사용법은 Step Property와 동일하며, 고정/파라미터 타입을 선택할 수 있다.
Mapper에서 받을 PropertyMapper 클래스로부터 받게 될 파티션 Property를 설정한다. (Mapper 클래스 설명 참고)

Mapper 클래스

동적으로 파티셔닝을 할 Mapper 클래스는 특별한 제약이 없고 리턴 타입으로 List<Map<String, String>>를 필요로한다. 리턴되는 List Item의 개수만큼 파티션이 만들어지며, 각 파티션엔 Map에서 정의한 프로퍼티가 전달된다.

아래는 Mapper 클래스 기본 예제이다. partition 메소드는 rs라는 List에 3개의 Item을 넣고 있으므로 동적으로 3개의 파티션이 생성되며, 각 파티션에 sleep 이라는 이름의 파티션 Property를 넘겨주고 있다. 이 값은 Mapper에서 받을 Property에 동일하게 설정해 주어야 한다.

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class PojoSampleMapper {

   public List<Map<String,String>> partition(/* Mapper에 보낼 Property */){
      List<Map<String,String>> rs = new ArrayList<>();

      HashMap<String,String> map1 = new HashMap<>();
      map1.put("sleep", "10000");	/* Mapper에서 받을 Property */
      rs.add(map1);

      HashMap<String,String> map2 = new HashMap<>();
      map2.put("sleep", "20000");	/* Mapper에서 받을 Property */
      rs.add(map2);

      HashMap<String,String> map3 = new HashMap<>();
      map3.put("sleep", "30000");	/* Mapper에서 받을 Property */
      rs.add(map3);

      return rs;
   }

}

실행 결과

파티션이 정상적으로 실행되었는지는 Step 실행 상세 정보 팝업을 통해 확인할 수 있다. 자세한 내용은 Step 실행 목록을 참고한다.