= 작업 스케쥴링

== 개요
SDL의 작업 스케쥴링은 http://www.quartz-scheduler.org/documentation/[Quartz]를 이용하여 구현하고 있다.
수행할 작업(Job)을 등록하고 Trigger에 Job을 추가한 후 Scheduler에 Trigger(s)를 설정한다.

=== 스케줄러 설정 예
.config.properties
[source,properties]
----
batch.user.long-term-check.cron=0 10 00 * * ?
----

.UserBatchConfig
[source,java]
----
@Configuration
public class UserBatchConfig {

    @Value("${batch.user.long-term-check.cron}")
    private String batchUserLongTermCheckCron;
    
    /**
     * 장기 미사용자 관리 Job
     */
    @Bean
    public JobDetail batchUserLongTermCheckJob() {
         return JobBuilder
                .newJob(UserBatchExecutor.class)  // <1>
                .withIdentity("batchUserLongTermCheck") // <2>
                .withDescription("User LongTerm Check Batch")
                .storeDurably(true)
                .build();
    }

    /**
     * 장기 미사용자 관리 Trigger
     */
    @Bean
    public CronTriggerFactoryBean batchUserLongTermCheckTrigger() {
        CronTriggerFactoryBean trigger = new CronTriggerFactoryBean();
        trigger.setJobDetail(batchUserLongTermCheckJob());  // <3>
        trigger.setCronExpression(batchUserLongTermCheckCron);  // <4>
        return trigger;
    }

}
----
<1> 서비스를 수행할 Job Class
<2> Job 구분 명
<3> Job 등록
<4> Cron 표현식 설정