[SpringBatch] State

JAVA/SpringBatch|2020. 3. 25. 20:07

Flow 내부에 Step 및 정보들은 모두 State로 이루어져 있어서 State 클래스들은 어떻게 구성되었는지 볼겸 정리

  • [I] State
    • [AC] AbstractState
      • [C] StepState
        • [C] JsrStepState
      • [C] DecisionState
      • [C] FlowState
      • [C] SplitState
        • [C] JsrSplitState
      • [C] DelegateState
      • [C] EndState
        • [C] JsrEndState

State
State에 도메인 인터페이스

  • 메소드
    • FlowExecutionStatus handle(FlowExecutor) : 해당 State를 처리하는 메소드, 상태는 String을 반환할 수 있지만, 특정 동작 상태들은 상수로 정의되어있다.
    • isEndState() : 마지막 State라면 true 리턴, 계속 처리 해야한다면 false를 리턴

AbstractState
보통 추상클래스에 공통로직들이 있는데, State는 공통로직이 거의 없다.

StepState
Step을 wrapping한 State인 만큼 Step을 변수로 가지고 있다.

  • 변수
    • Step : 자신에 해당하는 Step을 변수로 가짐
  • 메소드
    • FlowExecutionStatus handle(FlowExecutor) : Step을 FlowExecutor를 통해 실행

DecisionState
JobExecutionDecider 를 Wrapping 하고 있는 State

  • 변수
    • JobExecutionDecider : FlowExecutionStatus를 반환하는 decider

FlowState
Flow을 wrapping한 State인 만큼 Flow을 변수로 가지고 있다.

  • 변수
    • Flow : 자신에 해당하는 Flow을 변수로 가짐

SplitState
Flow를 병렬 처리 할경우 사용

  • 변수
    • Collection<Flow> : Split에 해당하는 Flow들
    • TaskExecutor : Flow들을 실행하는데 활용되는 Executor
    • FlowExecutionAggregator : 실행 후 aggregation에 활용
  • 메소드
    • FlowExecutionStatus handle(FlowExecutor) : 가지고 있는 Flow들을 실행, task들을 모두 기다리고 마지막에 aggregation

DelegateState
State Proxy에 활용

EndState
Job의 종료 관련

댓글()