목차

스케줄 설정관리

1. 개요

스케줄 서비스 설정관리는 전자정부표준프레임워크 실행환경에서 제공하는 스케줄 서비스를 이용하기 위한 설정 파일을 관리할 수 있는 기능을 제공한다. 전자정부 표준 프레임워크에서 제공하는 스케줄 서비스는 크게 두 가지로 나눌 수 있는데. 하나는 작성해 놓은 비지니스 클래스(서비스 클래스를)스케줄링 대상 서비스로 설정하여 스케줄 서비스로 이용하는 방법과 스케줄링 대상 클래스를 Quartz 에서 제공하는 클래스를 확장하여 작성된 스케줄링 전용 클래스를 스케줄링 하는 방법 등이 있다.

스케줄 설정관리 에서는 2가지 서비스 모두 관리 할 수 있으며, 스케줄 서비스에 대한 자세한 내용은 https://www.egovframe.go.kr/wiki/doku.php?id=egovframework:rte:fdl:scheduling 참고한다.

2. 설명

스케줄 설정관리

설정관리에서 스케줄 설정관리는 외부에 정의된 스케줄 설정 파일에 대한 정보를 읽어서 관리하고자 하는 스케줄 설정관리 파일을 관리할 수 있는 기능을 제공한다.

스케줄 설정관리 목록 조회

설정관리 도구 메인화면 » 좌측 메뉴 » 스케줄 설정관리

스케줄 설정파일 과 설정관리 화면 비교
<bean id="schedulerSampleService1"
	class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
	<property name="targetObject" ref="SampleService1" />
	<property name="targetMethod" value="insertEmployee" />
	<property name="concurrent" value="false" />
</bean>
 
<bean id="schedulerSampleService1Trigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">
	<property name="jobDetail" ref="schedulerSampleService1" />
	<!-- 시작하고 1분후에 실행한다. (milisecond) -->
	<property name="startDelay" value="60000" />
	<!-- 매 60분마다 실행한다. (milisecond) 데몬 형식으로 계속 기동 중 -->
	<property name="repeatInterval" value="3600000" />
	<!-- CRON과 같이 시각을 지정하는 경우 다음 참조 -->
	<!-- 
	<property name="cronExpression" value="0 0 6 * * ?" />
	-->
</bean>
 
<bean id="shceduleSampleService3"
	class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
	<property name="targetObject" ref="SampleService3" />
	<property name="targetMethod" value="insertSmple" />
	<property name="concurrent" value="false" />
</bean>
 
<bean id="shceduleSampleService3Trigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
	<property name="jobDetail" ref="shceduleSampleService3" />
	<!-- CRON과 같이 시각을 지정하는 경우 다음 참조 -->
	<property name="cronExpression" value="0 * * * * ?" />
</bean>
 
<bean id="jobDetailBean" class="org.springframework.scheduling.quartz.JobDetailBean">
	<property name="jobClass"
		value="egovframework.oe1.sms.sample.service.EgovOe1ScheduleSample2" />
	<property name="jobDataAsMap">
	        <map>
			<entry key="name" value="JobDetail" />
		</map>
	</property>
</bean>
 
<bean id="jobDetailBeanTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">
	<property name="jobDetail" ref="jobDetailBean" />
	<!-- 시작하고 1분후에 실행한다. (milisecond) -->
	<property name="startDelay" value="60000" />
	<!-- 매 60분마다 실행한다. (milisecond) 데몬 형식으로 계속 기동 중 -->
	<property name="repeatInterval" value="3600000" />
</bean>
 
<bean id="SchedulerFactory"
	class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
	<property name="quartzProperties">
		<props>
			<prop key="org.quartz.threadPool.threadCount">3</prop>
		</props>
	</property>
 
	<property name="triggers">
		<list>
			<ref bean="schedulerSampleService1Trigger" />
			<ref bean="shceduleSampleService3Trigger" />
			<ref bean="jobDetailBeanTrigger" />
		</list>
	</property>
</bean>

아래와 같이 설정파일에 표현된 Bean Name 별로 목록을 보여주며 해당 Bean 명을 클릭하면 각 빈의 상세 설정을 조회 할 수 있다.

  1. 신규빈등록 : 기존 설정이 존재할 때, 신규 스케줄링 대상을 설정하는 등 기존 설정에 추가할 때 사용
  2. 신규등록 : 프로퍼티 서비스 설정이 아예 존재하지 않거나 기존 설정이 있다 하더라도 삭제하고 재작성 할 경우 사용

스케줄 설정관리 상세 조회

설정관리 도구 메인화면 » 좌측 메뉴 » 스제눌 설정관리 » 조회된 목록에서 Bean id 선택 아래와 같이 선택한 Bean 의 상세 설정을 HTML Table 을 이용하여 조회 할 수 있다. 각 체크 박스를 이용하여 프로퍼티삭제가 가능하며, 삭제 후 저장을 통해 화면에서 수정사항을 반영할 수 있다.

  1. 프로퍼티 추가: 프로퍼티를 추가할 경우 사용
  2. 프로퍼티 삭제: 체크 박스로 선택한 프로퍼티를 삭제함
  3. 미리보기: 현재 상세조회 되고 있는 Bean을 포함하여 저장되지 않은 변경 사항을 포함하여 XML 파일을 팝업창으로 미리 볼 수 있다.
  4. 저장: 현재 화면에서 수정된 사항을 파일에 반영할때 사용
  5. 삭제: 현재 상세조회 하고 있는 Bean 설정을 설정파일에서 삭제함
  6. 목록: 목록 화면으로 이동
프로퍼티 추가

프로퍼티 추가 버튼을 눌러서 ROW 를 하나 추가한 다음 select Box 에서 관리하고자 하는 프로퍼티 명을 선택하여 값을 입력한다.

프로퍼티 삭제

삭제할 프로퍼리를 체크 박스로 선택하여 일괄 삭제 한다.

미리보기

화면에서 변경할 사항을 실제 설정파일을 수정하기 전에 미리보기로 볼 수 있다.

비지니스 규칙

설정관리 도구의 스케줄 서비스 설정관리는 아래와 같은 비지니스 규칙을 갖는다. 규칙에 위반 될 경우, Validation 체크를 통해 저장이 방지 된다.

  1. 상세 조회시 Bean 클래스 및 Bean 명은 수정할 수 없다.
  2. 특수문자의 경우, 파일 경로 및 Cron Expression 등 (/ * : . - _ ?)만 입력 가능하며 한글 입력은 불가하다.
  3. 일반적인 프로퍼티 설정은 동일한 이름의 프로퍼티는 적용 불가 하지만 org.springframework.scheduling.quartz.SchedulerFactoryBean를 사용한 설정에서의 quartzProperties, triggers 프로퍼티의 경우 동일한 이름을 추가할 할 수 있으며, quartzProperties, triggers 선택 시 마다 입력 폼이 동적으로 변경된다.

3. 참고자료