====== Restart예제====== ===== 개요 ===== Job이 restart 되는 기능을 예제로 제공한다. ===== 설명 ===== ====설정==== ===Job 설정=== == Restart 예제의 Job 설정파일인 restartFileSampleJob.xml을 확인한다.== job을 재실행할 수 있는지 여부를 Job 설정시 지정할 수 있다. 디폴트는 true이고 아래와 같이 restartable 설정에 따라 지정할 수 있다. ==재실행 가능== ==재실행 불가능== ==== JunitTest 구성 및 수행 ==== === JunitTest 구성 === == Restart 예제를 수행하고 배치작업 결과에 대한 검증을 위해 다음과 같이 @Test를 구성하였다.== ✔ JunitTest 클래스의 구조는 [[egovframework:rte2:brte:batch_example:run_junit_Test|배치실행환경 예제 Junit Test 설명]]을 참고한다. \\ ✔ CustomerCreditFlatFileItemWriter 클래스 : 배치수행시 failed를 발생시킨다. \\ ✔ assertEquals(BatchStatus.FAILED, je1.getStatus()); : 배치 첫수행결과가 FAILED 인지 확인한다. \\ ✔ assertEquals(BatchStatus.COMPLETED, je2.getStatus()); : 배치 재수행결과가 COMPLETED 인지 확인한다. @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = { "/egovframework/batch/simple-job-launcher-context.xml", "/egovframework/batch/jobs/restartFileSampleJob.xml", "/egovframework/batch/job-runner-context.xml" }) public class EgovRestartFileSampleFunctionalTests { //배치작업의 outputResource @Autowired private Resource outputResource; //배치작업을 test하기 위한 JobLauncherTestUtils @Autowired private JobLauncherTestUtils jobLauncherTestUtils; /** * 배치작업 테스트 */ @Test public void runTest() throws Exception { JobParameters jobParameters = jobLauncherTestUtils.getUniqueJobParameters(); JobExecution je1 = jobLauncherTestUtils.launchJob(jobParameters); assertEquals(BatchStatus.FAILED, je1.getStatus()); AssertFile.assertLineCount(10, outputResource); JobExecution je2 = jobLauncherTestUtils.launchJob(jobParameters); assertEquals(BatchStatus.COMPLETED, je2.getStatus()); AssertFile.assertLineCount(20, outputResource); } /** * restart기능 테스트를 위해 작업중간에 failed 발생시키는 writer 클래스 * @author 배치실행개발팀 * @since 2012. 06.27 * @version 1.0 * @see */ public static class CustomerCreditFlatFileItemWriter extends FlatFileItemWriter { //failed를 발생시키기 위한 플래그 private boolean failed = false; /** * write 함 */ @Override public void write(List arg0) throws Exception { for (CustomerCredit cc : arg0) { if (!failed && cc.getName().equals("customer13")) { failed = true; throw new RuntimeException(); } } super.write(arg0); } } } ===JunitTest 수행=== == == 수행방법은 [[egovframework:dev2:tst:test_case#Test Case 실행| JunitTest 실행]]을 참고한다. ==== 결과 확인 ==== == == JobExecution을 살펴보면, failed된 Job을 restart하여 Complited된 결과를 확인할 수 있다. {{:egovframework:rte2:brte:batch_example:restart_jobdata.png|}} ===== 참고자료 ===== *[[egovframework:rte2:brte:batch_core:step#step_configuration|restart를 위한 Step 설정]]