J-Jobs

Guides -J-Jobs Orchestrator v2.4 사용자 가이드

J-Jobs Orchestrator 사용자 가이드

최종 작성일 : 2019년 7월 29일

기준 버전 : J-Jobs v2.4

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

본 문서는 J-Jobs Orchestrator 사용자의 이해를 돕기 위한 문서로 Manager 의 메뉴 구성 중심으로 작성되어 있다. J-Jobs의 시스템 설정 및 운영에 대한 전반적인 사항은 운영자 가이드를 참고한다.

제품 소개

J-Jobs Orchestrator는 J-Jobs 제품군 중 하나로써, 다양한 클라우드 플랫폼 및 Docker 등의 Hybrid Cloud 환경으로 구성된 시스템의 운영 관리에 특화된 기능을 제공하는 솔루션이다. J-Jobs Orchestrator를 이용하여 반복적인 시스템 작업을 자동화할 수 있고, CI/CD를 위한 목적으로 사용할 수 있다.

브라우저 호환성

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

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

# 로그인 및 Manager 화면 구성

J-Jobs의 사용자 등록은 로그인 화면에서 새로운 사용자 등록을 통해 직접 가입한 뒤 운영자가 USER 권한을 부여하거나, 운영자가 사용자를 추가(운영자 가이드 참고) 할 수 있다. 로그인 화면에서 유효한 사용자 ID와 비밀번호를 입력하고 로그인 한다.

J-Jobs의 Manager 화면은 다음과 같다.

  1. Manager의 첫 메인화면(통합 대시보드)으로 이동
  2. 사용자 메뉴 : 운영자의 메뉴 편집에 따라 상이할 수 있다.
    • Job : Job을 편집하고 스케줄링한다.
    • 실행 : 등록된 Job을 필요한 파라미터와 함께 즉시 실행하여 결과를 확인할 수 있다.
    • 결과 : 전체 Job 실행에 대한 결과를 확인할 수 있다.
    • 모니터링 : J-Jobs의 서버와 에이전트의 상태를 실시간으로 보여준다.
  3. 서버 시간 : J-Jobs 운영의 기준이 되는 서버 시간을 보여준다.
  4. 사용자 정보 : 로그인한 사용자의 이름과 역할을 보여주며 클릭할 경우 해당 사용자의 정보를 수정할 수 있다.
    • 비밀번호 규칙 : 10자 이상 190자 이하의 영문자와 숫자 포함
    • 언어 : 한국어, 영어 중 선택
    • 타임존 : Manager의 시간 표시에 대한 타임존 적용
    • 시간표시 형식 : Manager 화면에서 시간 표시 형식을 일괄적으로 변경
  5. 로그아웃
  6. 검색 : Job ID, Request ID 등의 ID 값으로 통합 검색이 가능하다.
  7. 작업 영역 : 첫 화면은 통합 대시보드이며, 사용자가 선택한 메뉴에 따라 작업 화면이 달라진다.

# Job

Web 기반의 Manager를 통해 J-Jobs의 기본 실행 단위인 Job을 관리할 수 있다.

폴더 관리

Job은 최상위 폴더를 제외한 특정 폴더 하위에 생성하여 관리할 수 있다. Job 메뉴의 오른쪽 폴더 트리가 있으며, 폴더의 우클릭 메뉴를 통해 폴더를 추가하거나 수정, 삭제할 수 있다. 단, 최상위 폴더는 수정하거나 삭제 할 수 없다.

  • 폴더 추가 : 선택된 폴더 하위에 새로운 폴더를 추가한다.
  • 폴더 수정 : 폴더의 이름을 수정하거나, 폴더를 이동하고자 할 때 아래처럼 상위 폴더를 수정한다.
  • 폴더 삭제 : 선택된 폴더를 영구히 삭제하며, 폴더 하위의 폴더 및 Job을 함께 삭제한다. (Job의 실행 중인 스케줄이 있을 경우 삭제 불가)

## Job 목록

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

구성

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

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

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

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

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

기본 예제 Job 추가

운영자 가이드 > J-Jobs 운영 관리 > Job 관리를 참고한다.

Job 관리

운영자 가이드 > J-Jobs 운영 관리 > Job 관리를 참고한다.

내 것만 보기

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

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

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

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

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

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

Job 속성 편집

[Job 속성 편집] 버튼을 클릭하면 다음과 같이 팝업이 나타난다. 각 탭마다 변경할 수 있는 정보가 다르며 좌측 하단의 [Job 편집 화면으로 이동] 버튼을 클릭하면 Job Editor가 열리면서 내용을 수정할 수 있다. 각 탭별 항목은 [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 편집기 상단 메뉴에서 [편집] 을 클릭하거나 편집 화면 좌측 하단의 팔레트를 클릭하여 편집 기능을 활용할 수 있다.

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

  • 실행취소 [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

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

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

Command/Shell 템플릿

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

항목설명기본값
커맨드 경로실행할 커멘드의 경로
예) /bin/
커맨드실행할 커맨드
예) ls
- 파일찾기FTP 브라우저를 통한 실행 command/shell 파일 선택 (해당 기능을 사용하기 위해 agent의 SSH 접속 설정 필요, 자세한 설정은 운영자 가이드 참고)
- 실행구역 파일 확인실행되는 에이전트 상에 해당 커맨드 파일이 존재하는지 여부 확인 (해당 기능을 사용하기 위해 agent의 SSH 접속 설정 필요, 자세한 설정은 운영자 가이드 참고)
아규먼트커맨드에 넘길 아규먼트
예제1) -al /home/jjobs
예제2) -al ${PARAM("PATH")} (사용자 정의 Property 중 "PATH" 파라미터의 값을 아규먼트로 사용)
인코딩로그 파일을 기록할 때 사용할 인코딩시스템 기본값
출력값 추출 시작방향로그파일에서 출력값을 추출하기 위한 시작 위치 방향
- 앞부터
- 뒤부터
출력값 추출 시작점로그 파일에서 출력값을 추출하기 위한 시작 위치 값
- 시작방향이 '앞부터' 인 경우 : 0부터 시작
- 시작방향이 '뒷부터' 인 경우 : 1부터 시작
출력값 길이시작점부터 추출할 값의 길이
비교할 대상 값추출한 값과 비교할 대상
비교 연산자추출값과 비교 대상과의 동등, 대소비교 연산 선택
파라미터 인자포함사용자 정의 Property를 아규먼트에 'name=value' 형식으로 전달사용 안 함
사용자 정의 Property커맨드에 넘길 아규먼트
- 고정값 : Property 값이 편집 시점에 고정된다.(상수값)
- 파라미터 : Job을 실행할 때마다 파라미터로 값을 입력받아 Job 내부에 전달한다. 파라미터로 전달되지 않으면 기본값을 사용한다.
자세한 부가 설명은 사용자 정의 Property 설정을 참고한다.
사용 안 함

출력값 추출 사용 예시

Shell 프로그램의 출력 로그와 출력값 추출 설정이 다음과 같을 경우, 연산 결과에 따라 최종 Job의 성공/실패 여부를 판단한다.

출력값 추출 설정 :

  • 출력값 추출 시작방향 : '뒤부터'
  • 출력값 추출 시작점 : '1'
  • 출력값 추출 길이 : '1'
  • 비교할 대상 값 : 'Y'
  • 비교 연산자 : '='

결과 :

  • 프로그램 종료 코드(exit code)가 0이면서, 표준 출력 로그가 "COMPLETE=Y" 인 경우, 출력값 추출 'Y' = 비교 대상 값 'Y' 이므로 최종 Job 결과는 **'성공'**이다.
  • 프로그램 종료 코드(exit code)가 0이면서, 표준 출력 로그가 "COMPLETE=N" 인 경우, 출력값 추출 'N' = 비교 대상 값 'Y' 이므로 최종 Job 결과는 **'실패'**이다.

Java

Java 클래스의 메소드를 실행시키는 Template이다. 실행시킬 클래스의 경로와 실행시킬 메소드의 이름을 필수값으로 입력해야 한다. 필요한 파라미터는 사용자 정의 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으로 매핑하는 Template이다. 매핑시킬 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를 전송하는 Template이다. 메소드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

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

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

File Transfer

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

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

ssh

ssh를 이용하여 원격지 서버에 명령을 수행할 수 있는 Template이다. 해당 템플릿을 사용하기 위해 사전에 운영자 메뉴 중 [관리자 > 시스템설정 > 외부증명서 ] ssh 접속 정보를 설정해야 한다. 자세한 내용은 운영자 가이드를 참고한다.

항목기본값설명
원격접속태그외부증명서에 등록된 ssh 증명서 중 선택
명령어원격으로 실행하고자 하는 명령어 입력
인코딩로그 파일을 기록할 때 사용할 인코딩 입력(예시: utf-8)
출력값 추출 시작점로그 파일에서 출력값을 추출하기 위한 시작 위치 값
- 시작방향이 '앞부터' 인 경우 : 0부터 시작
- 시작방향이 '뒷부터' 인 경우 : 1부터 시작
출력값 길이시작점부터 추출할 값의 길이
비교할 대상 값추출한 값과 비교할 대상
비교 연산자추출값과 비교 대상과의 동등, 대소비교 연산 선택

sftp

sftp 프로토콜을 이용하여 원격지 서버에 파일을 전송하거나 수신할 수 있는 Template이다. 해당 템플릿을 사용하기 위해 사전에 운영자 메뉴 중 [관리자 > 시스템설정 > 외부증명서 ] ssh 접속 정보를 설정해야 한다. 자세한 내용은 운영자 가이드를 참고한다.

항목기본값설명
원격접속태그외부증명서에 등록된 sftp 증명서 중 선택
로컬디렉토리로컬 디렉토리 경로
원격지디렉토리원격지 상의 디렉토리 경로
파일명송신 혹은 수신 대상 파일명
메소드(Method)GET(수신), PUT(송신) 중 선택
모드덮어쓰기덮어쓰기, 이어쓰기 중 선택

CLI

Cloud 서비스를 CLI 기반으로 제어하기 위한 Template이다. 자세한 사항은 HOW_TO_가이드를 참고한다.

Docker

Docker CLI 기반으로 Docker를 제어하는 기능을 제공하는 Template이다. 자세한 사항은 HOW_TO_가이드를 참고한다.

Cloud

Cloud 자원을 생성하고 소멸시키는 기능을 제공하는 Template이다. 자세한 사항은 HOW_TO_가이드를 참고한다.

템플릿 공통기능

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

Property 설정

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

전역 파라미터

사용자 정의 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")}문자열 결합
${SPLIT("2018-01-01","-",0)}문자열 Split
${PARAM("key")}입력된 파라미터 중 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, 두번째 인자:개행문자제거여부)

출력 탭

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

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

실행 탭

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

항목기본값설명
실행구역사용 안 함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의 예상 CPU 사용률 값을 입력한다. 이 값은 실행이력에 저장되며 추후 Job 별 처리량에 따른 실행순서 조정에 반영될 수 있다
예상 GPU 값해당 Job의 예상 GPU 사용률 값을 입력한다. 이 값은 실행이력에 저장되며 추후 Job 별 처리량에 따른 실행순서 조정에 반영될 수 있다
예상 Memory 값해당 Job의 예상 Memory 사용률 값을 입력한다. 이 값은 실행이력에 저장되며 추후 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 편집기 상단 메뉴에서 [작업관리 > 스케줄] 을 클릭하거나 [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 실행 상세정보를 참고한다.

Tip - 실행 결과 팝업 시 오류

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

스케줄링

Job에 대한 기본 정보를 저장한 다음, 특정 시간에 혹은 주기적으로 해당 Job을 실행시키고자 할 때 스케줄을 등록한다. 스케줄 목록은 Job 목록 화면에서 스케줄 버튼을 클릭하거나 Job 편집 화면에서 메뉴 중 작업관리 > 스케줄을 통해 확인할 수 있다.

스케줄 목록

Job에 등록된 스케줄 목록을 확인할 수 있으며, 새로운 스케줄을 등록하거나 기존의 스케줄을 편집 또는 삭제할 수 있다. 그리고 등록된 스케줄을 시작하거나 중지할 수 있다.

항목설명
종류스케줄 유형(Date, Calendar, Interval)
스케줄명등록된 스케줄명(ID), 스케줄명 앞에 현재 스케줄 시작/중지 상태를 아이콘으로 표시
Job ID스케줄에 대상 Job ID
시간정보스케줄링 된 시간에 대한 간략한 정보
수정 날짜가장 마지막에 스케줄 정보가 수정된 시간
소유자스케줄을 등록(편집)한 사용자
스케줄 실행내역해당 스케줄에 대한 과거 실행 이력을 조회할 수 있는 기능

스케줄 등록 및 편집

스케줄 목록에서 스케줄 추가을 클릭하거나 기존의 등록된 스케줄명을 클릭하면 하면 하위에 스케줄 등록(편집)을 위한 화면이 나타난다.

항목설명기본값
스케줄명스케줄명 입력 (단,스케줄을 식별하는 ID로 사용되므로 띄어쓰기나 특수문자는 제한된다.)
설명스케줄에 대한 설명 입력
스케줄날짜 지정(Date) 유형, 캘린더(Calendar), 실행 간격(Interval) 중 선택날짜(Date)
유효기간유효기간 사용 여부 & 유효기간 범위 (사용 여부를 체크하면 기간 입력 가능)사용 안함
유효시간유효시간 사용 여부 & 유효시간 범위 (사용 여부를 체크하면 시간 입력 가능)사용 안함
타임존스케줄 시간에 적용할 타임존 사용 여부 & 기등록된 타임존 정보 중 선택Asia/Seoul
알림사용스케줄 알림 사용 여부사용 안함
알림 조건알림을 수신받을 스케줄 관련 이벤트 조건 선택
- 스케줄 시작
- 스케줄 일정 지연
알림수신Email로 알림 수신 여부 선택, 체크하면 수신받을 이메일 주소를 입력 받을 수 있다.

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

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

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

[매일 15시 30분에 실행]

특정요일 스케줄 Job 등록

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

[매주 수요일 15시 30분에 실행]

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

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

[매월 1일 15시 30분에 실행 ]

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

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

[매월 말일 3일전 15시 30분에 실행]

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

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

[분기별 말일 15시 30분에 실행]

2월(1~28일)에 월 말일 기준 -30일 혹은 월 시작 기준 +31일로 스케줄링 된 경우

이 경우에 사용자의 의도와 다르게 전혀 다른 일자로 스케줄링된다. 따라서 이러한 월 시작 기준, 말일 기준으로 스케줄링을 하고자 할 때는 반드시 미리보기를 이용하여 언제 스케줄이 실행되는지에 대한 확인과 주의가 필요하다.

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

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

[매일 매시 매분 30초마다 실행]

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

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

[월/일자/시간/분/초 다중선택 실행]

중복 실행

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의 중복 실행을 허용한다. 중복실행을 허용하고자 하는 경우에는 중복실행 허용 에 체크한다.

[1시간 간격으로 실행]

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

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

[1시간 간격으로 실행]

스케줄 유효기간 설정하기

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

스케줄 유효시간 설정하기

스케줄 항목 중에서 유효시간 사용 여부를 체크한 뒤, 유효시간을 입력한다. 유효시간을 설정하면, 해당 시간 사이에 스케줄이 실행된다.

만약, 22:00:00 부터 02:00:00 으로 입력하였을 경우, 22시부터 익일 2시까지 스케줄이 실행된다.

스케줄 타임존 설정하기

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

미리보기

사용자가 지정한 날짜 혹은 간격으로 스케줄을 설정한 뒤, 캘린더 형태로 앞으로의 스케줄 실행을 미리볼 수 있다. 스케줄 정보를 입력한 상태에서 하단의 미리보기를 통해 확인할 수 있다.

[매주 월, 수, 금마다 실행되며 유효기간이 4/27 ~ 7/31으로 설정]

전체 미리보기

스케줄 정보를 저장하기 전, 기존에 실행 중인 전체 스케줄과 함께 새로 등록하고자 하는 스케줄의 실행 계획을 미리 볼 수 있다.

스케줄 시작/중지

스케줄의 기본 정보를 입력하고 저장한 뒤, 스케줄을 시작하거나 중지할 수 있다. 다음은 스케줄의 상태를 나타내는 아이콘이다.

상태 아이콘설명
Job에 스케줄이 등록되어 있지 않음
Job에 스케줄이 등록되어 있지만 중지 중인 상태
Job에 스케줄이 등록되어 있고, 시작하여 실행 중인 상태

Job 수정, 이동 및 삭제

Job 목록 중 수정하고자 하는 Job의 ID를 클릭하면 Wizard가 열리고, Job ID를 제외한 나머지 Job 정보(참고)를 수정할 수 있다.

Job의 소속 폴더를 변경하고자 할 때는 이동 버튼을 클릭하여 상위 폴더를 변경하여 저장한다.

Job 목록 중 삭제하고자 하는 Job을 다건 혹은 단건 선택한 뒤 삭제 버튼을 통해 Job을 삭제할 수 있다. 삭제하고자 하는 Job에 스케줄이 설정되어 있는 경우 스케줄이 중지 상태인 경우에만 Job을 삭제할 수 있다.

Job 권한

최초의 Job을 생성한 사용자가 그 Job의 소유자이며, 소유자를 제외한 다른 사용자(administrator 제외)는 Job을 실행하거나 수정, 삭제 할 수 없다.

[user200 사용자가 user 사용자 소유의 Job을 실행시키고자 할 때 권한 없음 오류 발생]

단, 소유자가 본인 Job의 잠금 상태를 해제하면 해당 Job을 다른 사용자도 실행, 수정, 삭제 할 수 있다.

내 것만 보기

Job 목록 등에서 우측 상단에 내 것만이 활성화 되어 있을 경우, 로그인 사용자가 소유한 Job 목록만 화면에 출력된다.

기타 기능

Job 메뉴의 오른쪽 상단 메뉴 중 Job 관리를 통해 Job을 다운로드 할 수 있다.

zip 다운로드

Job을 로컬에 백업하거나, 다른 J-Jobs 환경에 Job을 이관해야 할 때 Job 다운로드 기능을 이용한다. zip 다운로드를 클릭하여 다운로드 받고자 하는 Job 폴더를 선택하고 다운로드를 클릭하면 해당 폴더 하위의 모든 Job이 zip 파일로 다운로드 된다.

# 실행 및 결과

Job 실행

스케줄과는 별도로 Job을 일회성으로 즉시 실행시킬 수 있다. 등록된 Job을 실행하기 위해서, Job 목록에서 Job의 즉시실행()을 클릭하거나 실행 메뉴에서 실행하고자 하는 Job을 선택한다.

실행 화면은 크게 좌측의 Job 파라미터와 우측의 실행내역으로 구성되어 있다.

**[Job 파라미터]**의 실행 파라미터 영역의 항목은 Job 기본정보에 설정된 값을 기본값으로 갖는다. 실행할 때 일회성으로 실행 파라미터 값을 변경하여 할 수 있다. 파라미터는 Job에 설정한 사용자 정의 Property(참고)의 항목을 보여주며, Job 실행에 필요한 파라미터 값을 입력하여 실행할 수 있다.

**[실행내역]**에서는 해당 Job의 실행 결과를 보여준다. 실행 결과 상태와 요청 시간, 처리 시간 등을 확인할 수 있고, 실행 결과를 클릭하면 로그와 상세한 Job 실행 결과를 확인할 수 있다. 실행 내역에 대한 자세한 설명은 로그 및 결과 확인을 참고한다.

로그 및 결과 확인

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

상단의 검색 조건은 다음과 같다.

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

실행 상태

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

실행 단계 이해하기

실행 결과에서 볼 수 있는 각각의 ID를 이해하기 위해서, J-Jobs의 실행 단계에 대한 이해가 필요하다. 실행은 크게 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의 로그 확인창이 열린다. 로그 모아보기를 사용하여 Job을 실행하였을 경우, Job 로그에서 하위 Step의 로그도 함께 확인할 수 있다. Job이 실행 중인 상태에서 로그를 확인할 경우에도 주기적으로 새로고침하여 준실시간으로 로그를 볼 수 있다.

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

Job과 Step의 로그를 각각 확인하기 위해서, 실행 결과 목록에서 실행 ID를 클릭하면 실행 상세 정보 팝업이 나타나고, 각각의 Job과 Step의 상태를 클릭하면 로그를 확인할 수 있다.

# 모니터링

Manager를 통해 Job의 실행 상태와 Server, Agent의 자원 상태를 실시간으로 모니터링 할 수 있다.

통합 대시보드

Manager의 첫 화면은 Job의 실행 상태와 통계, 그리고 자원을 실시간으로 모니터링 할 수 있는 위젯 기반의 통합 대시보드 화면이다. 사용자가 원하는 위젯을 추가하거나 삭제할 수 있다.

  1. 금일 Job 실행 결과 상태 : 오늘 현재까지의 Job 실행 결과를 상태별로 보여준다.
  2. 서버 상태 : 현재 연결된 서버의 상태를 보여준다.
  3. 에이전트 상태 : 현재 연결된 에이전트의 상태를 보여준다.
  4. 주간 Job 실행 결과 통계 : 오늘을 기준으로 일주일 동안의 Job 실행 결과에 대한 통계를 일별로 보여준다.
  5. 주간 Job 수행시간 Top 5 : 오늘을 기준으로 일주일 동안 Job 수행시간이 가장 긴 실행 이력을 보여준다.
  6. 에이전트별 Job 실행 통계 : 에이전트별로 처리한 Job 실행 통계를 일별로 보여준다.
  7. 시간대별 Job 실행 결과 통계 : 현재를 기준으로 24시간 동안 1시간 단위로 Job 실행 결과 통계를 그래프로 보여준다.
  8. 위젯 초기화 : 위젯을 처음 상태로 초기화

서버

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

  • 작업 통계 보기 : Job 처리 현황을 일자별, 에이전트 별로 확인할 수 있다.

  • 최대 동시실행 모니터링 : Job 별로 설정한 최대 동시실행 개수에 따라 실행 상태를 모니터링 한다.

  • 새로고침

    • 강력 새로고침 : 화면을 완전히 새로고침하여 신규 에이전트가 추가되거나 에이전트의 삭제로 인해 에이전트 목록이 변경될 수 있다.
    • 일반 새로고침 : 에이전트 목록 변경 없이 에이전트의 자원 상태에 대해서만 새로고침한다.
  • 서버 그룹 : 서버들의 논리적인 그룹

  • 서버 상태 구분

    • 정상 : 서버가 정상 동작중이며, 같은 서버 그룹 내 최소 하나 이상의 에이전트와 정상 통신 중인 경우
    • 구동
    • 접속 대기 : 서버 기동 상태는 정상이지만, 현재 연결된 에이전트가 없을 경우
    • 비정상 : 서버 기동 중 오류가 발생하여 비정상 상태
    • 중지 : 서버가 중지된 경우
  • 서버 시간 : 서버가 설치된 곳의 현재 시간을 나타낸다.

  • 에이전트 그룹 : 서버 그룹 내 존재하는 에이전트들의 논리적인 그룹

  • 프로세스 상세 정보 보기 : 에이전트에서 실행시킨 프로세스의 목록과 상태를 확인할 수 있다.

  • 에이전트 자원 상태 : 현재 처리 중인 Job 개수, 에이전트가 실행중인 곳의 CPU, Memory, Disk 등의 자원 상태를 새로고침 주기마다 업데이트하여 보여준다.

  • 에이전트 시간 : 에이전트가 설치된 곳의 현재 시간을 나타낸다.

에이전트

등록된 에이전트들의 목록과 상태를 모니터링할 수 있는 화면이다.

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