====== History Management======

=====개요=====
배치작업 처리 중의 정보는  JobRepository의 JobInstance, JobParams, JobExecution, StepExecution, key-value 쌍으로 값을 보관할 수 있는 공간인 ExecutionContext에 저장 및 갱신되어 history를 관리한다.

=====설명=====
JobInstance, JobParams, JobExecution, StepExecution, ExecutionContext 의 각각의 속성에 대해서 정리하였다.

====BATCH_JOB_INSTANCE====

^  JobInstance 속성  ^  설명  ^
^ jobInstanceId|JobInstance를 식별하는 ID |
^ version|JobInstance 의 수정 횟수 |
^ jobName|Job의 이름 |
^ jobKey| JobInstance를 구분 짓는 JobParameters의 serialization  |

====BATCH_JOB_EXECUTION====

^  JobExecution 속성  ^  설명  ^
^ status | BatchStatus는 실행 상태를 나타내는 객체이다, 실행하는 동안에는 BatchStatus,STARTED, 실행이 실패한 경우 BatchStatus.FAILED, 실행이 성공적으로 종료됐을 경우 BatchStatus.COMPLETED가 된다. |
^ startTime | Execution이 시작되는 현재 시스템 시간을 java.Util.Data로 저장 |
^ endTime | Execution의 성공/실패 여부와 관계없이 종료되는 현재 시스템 시간을 java.Util.Data로 저장 |
^ exitStatus | ExitStatus는 실행의 결과를 나타낸다. 호출자에게 반환될 exit code를 포함한다. |
^ createTime | JobExecution이 최초 생성 된 현재 시스템 시간을 java.Util.Data로 저장  |
^ lastUpdated | JobExecution이 마지막으로 생성 된 현재 시스템 시간을 java.Util.Data로 저장  | 
^ executionContext | execution간 지속돼야 할 모든 데이터를 포함하는 '프로퍼티 백' |
^ failureExceptions | Job이 실행되는 동안 발생한 익셉션 리스트 |


====BATCH_JOB_PARAMS====
^  JobParams 속성  ^  설명  ^
^ jobInstanceId|BATCH_JOB_INSTANCE 테이블의 jobInstanceId를 외래키로 지정 |
^ typeCd| 파라마터의 형식을 String으로 저장,null일 될 수 없음|
^ keyName| 파라미터의 키|
^ stringVal|String타입의 파마미터 값 |
^ dateVal|Date타입의 파마미터 값  |
^ longVal|Long타입의 파마미터 값  |
^ doubleVal|Double타입의 파마미터의 값  |

====BATCH_STEP_EXECUTION====

^  StepExecution 속성  ^  설명  ^
^ status | BatchStatus는 실행 상태를 나타내는 객체이다, 실행하는 동안에는 BatchStatus,STARTED, 실행이 실패한 경우 BatchStatus.FAILED, 실행이 성공적으로 종료됐을 경우 BatchStatus.COMPLETED가 된다. |
^ startTime | Execution이 시작되는 현재 시스템 시간을 java.Util.Data로 저장 |
^ endTime | Execution의 성공/실패 여부와 관계없이 종료되는 현재 시스템 시간을 java.Util.Data로 저장 |
^ exitStatus | ExitStatus는 실행의 결과를 나타낸다. 호출자에게 반환될 exit code를 포함한다. |
^ executionContext | execution간 지속돼야 할 모든 데이터를 포함하는 '프로퍼티 백' |
^ readCount | 성공적으로 읽은 item 갯수 |
^ writeCount | 성공적으로 쓰인 item 갯수  |
^ commitCount | 해당 execution에서 커밋된 트랜젝션 횟수 |
^ rollbackCount | 롤백된 Step에 의해서 제어된 비즈니스 트랜젝션의 갯수  |
^ readSkipCount | 읽기 과정에서 실패 후, 스킵된 item 갯수 |
^ processSkipCount | 프로세스 과정에서 실패 후, 스킵된 item 갯수 |
^ filterCount | ItemProcessor에 의해 필터링 된 item 갯수 |
^ writeSkipCount | 쓰기 과정에서 실패 후, 스킵된 item 갯수 |

====BATCH_JOB_EXECUTION_CONTEXT ====

^  JobExecutionContext 속성  ^  설명  ^
^ jobExecutionId|BATCH_JOB_EXECUTION 테이블의 jobExecutionId를 외래키로 지정 |
^ shortContext|SERIALIZED_CONTEXT의 문자열 버전|
^ serializedContext|전체 Context|

====BATCH_STEP_EXECUTION_CONTEXT ====

^  StepExecutionContext 속성  ^  설명  ^
^ stepExecutionId|BATCH_STEP_EXECUTION 테이블의 stepExecutionId를 외래키로 지정 |
^ shortContext|SERIALIZED_CONTEXT의 문자열 버전|
^ serializedContext|전체 Context|

=====참고자료=====
    *Meta-Data Schema :[[http://static.springsource.org/spring-batch/reference/html/metaDataSchema.html]]