Class StateMachine
java.lang.Object
fr.gouv.vitam.processing.management.core.StateMachine
- All Implemented Interfaces:
IEventsProcessEngine,IEventsState
State Machine class implementing the Interface. Dealing with evolution of workflow
-
Constructor Summary
ConstructorsConstructorDescriptionStateMachine(ProcessWorkflow processWorkflow, ProcessEngine processEngine) StateMachine(ProcessWorkflow processWorkflow, ProcessEngine processEngine, ProcessDataManagement dataManagement, WorkspaceClientFactory workspaceClientFactory) -
Method Summary
Modifier and TypeMethodDescriptionvoidcancel(boolean force) Cancel as soon as possible the processWorkflow, To do that, the step pauseCancelAction is updated to be PauseOrCancelAction.ACTION_CANCEL Unlike pause, - The final step should be executed, - PauseOrCancelAction.ACTION_CANCEL have no impact on the final step - The final step cannot be cancelledprotected voiddoCancel(boolean force) Change the state of the process to completed Can be called only from running or pause state If running state, the next step will be completedprotected voiddoPause(PauseRecover pauseRecover) Change state of the process to pause Can be called only from running state If last step then change state to completedprotected voiddoReplay(WorkerParameters workerParameters) Change state of the process to running Can be called only from pause stateprotected voiddoRunning(WorkerParameters workerParameters, ProcessState targetState) Change state of the process to running Can be called only from pause stateprotected voidexecuteFinalStep(WorkerParameters workerParameters) Execute the final step of the workflow Update global status of the workflow Persist the process workflowprotected voidprotected voidfindAndExecuteNextStep(WorkerParameters workerParameters, boolean replayCurrentStep) intintbooleanCheck if the state is completedbooleanisDone()protected booleanCheck if the current step is the last oneprotected booleanisPause()Check if the state is pausebooleanprotected booleanCheck if the state is runningbooleanvoidnext(WorkerParameters workerParameters) Like a resume but pause at the next stepvoidThe ProcessEngine callback on system error occurredvoidonProcessEngineCancel(WorkerParameters workerParameters) The ProcessEngine callback when the step is cancelledvoidonProcessEngineCompleteStep(ItemStatus itemStatus, WorkerParameters workerParameters) The ProcessEngine callback on complete step (for any status code)voidonUpdate(StatusCode statusCode) Update the current step status codevoidvoidpause()Pause the processWorkflow, If the last step the just wait the final step Else pause the processWorkflow as soon as possible Do not wait all elements of the current step to be executed The step pauseCancelAction will be updated to PauseOrCancelAction.ACTION_PAUSE If all elements of the current step are executed then stop correctly and step pauseCancelAction will be updated to PauseOrCancelAction.ACTION_COMPLETE After next or resume occurs on paused processWorkflow, It will starts from the step pauseCancelAction equals to PauseOrCancelAction.ACTION_PAUSE if exists and update pauseCancelAction to be PauseOrCancelAction.ACTION_RECOVER Else starts normally from the next stepvoidreplay(WorkerParameters workerParameters) Replay the last executed step, or if it s stated, the step passed as a parametervoidresume(WorkerParameters workerParameters) Do an evaluation of the State RUNNING If the state is not permitted a StateNotAllowedException is thrown Else call doRunning methodvoidshutdown()Should used only when server is shutting down To prevent deadlock, this method is not synchronized, Because onComplete and onPauseOrCancel are synchronized and called from ProcessEngineprotected booleanPersist the process workflow in the workspace
-
Constructor Details
-
StateMachine
-
StateMachine
public StateMachine(ProcessWorkflow processWorkflow, ProcessEngine processEngine, ProcessDataManagement dataManagement, WorkspaceClientFactory workspaceClientFactory)
-
-
Method Details
-
resume
public void resume(WorkerParameters workerParameters) throws StateNotAllowedException, ProcessingException Description copied from interface:IEventsStateDo an evaluation of the State RUNNING If the state is not permitted a StateNotAllowedException is thrown Else call doRunning method- Specified by:
resumein interfaceIEventsState- Throws:
StateNotAllowedExceptionProcessingException
-
next
public void next(WorkerParameters workerParameters) throws StateNotAllowedException, ProcessingException Description copied from interface:IEventsStateLike a resume but pause at the next step- Specified by:
nextin interfaceIEventsState- Throws:
StateNotAllowedExceptionProcessingException
-
replay
public void replay(WorkerParameters workerParameters) throws StateNotAllowedException, ProcessingException Description copied from interface:IEventsStateReplay the last executed step, or if it s stated, the step passed as a parameter- Specified by:
replayin interfaceIEventsState- Throws:
StateNotAllowedExceptionProcessingException
-
pause
Description copied from interface:IEventsStatePause the processWorkflow, If the last step the just wait the final step Else pause the processWorkflow as soon as possible Do not wait all elements of the current step to be executed The step pauseCancelAction will be updated to PauseOrCancelAction.ACTION_PAUSE If all elements of the current step are executed then stop correctly and step pauseCancelAction will be updated to PauseOrCancelAction.ACTION_COMPLETE After next or resume occurs on paused processWorkflow, It will starts from the step pauseCancelAction equals to PauseOrCancelAction.ACTION_PAUSE if exists and update pauseCancelAction to be PauseOrCancelAction.ACTION_RECOVER Else starts normally from the next step- Specified by:
pausein interfaceIEventsState- Throws:
StateNotAllowedException
-
shutdown
public void shutdown()Description copied from interface:IEventsStateShould used only when server is shutting down To prevent deadlock, this method is not synchronized, Because onComplete and onPauseOrCancel are synchronized and called from ProcessEngine- Specified by:
shutdownin interfaceIEventsState
-
cancel
Description copied from interface:IEventsStateCancel as soon as possible the processWorkflow, To do that, the step pauseCancelAction is updated to be PauseOrCancelAction.ACTION_CANCEL Unlike pause, - The final step should be executed, - PauseOrCancelAction.ACTION_CANCEL have no impact on the final step - The final step cannot be cancelled- Specified by:
cancelin interfaceIEventsState- Parameters:
force- force cancellation if the current step is not cancellable. If false, and the current step is not cancellable, the method will throw a StateNotAllowedException.- Throws:
StateNotAllowedException
-
isDone
public boolean isDone()- Specified by:
isDonein interfaceIEventsState- Returns:
- true is processWorkflow is completed or Pause
-
getTenant
public int getTenant()- Specified by:
getTenantin interfaceIEventsState- Returns:
- The tenantId of the processWorkflow
-
getWorkflowId
- Specified by:
getWorkflowIdin interfaceIEventsState- Returns:
- The workflow Id
-
getContextId
- Specified by:
getContextIdin interfaceIEventsState
-
getWorkflowParameters
- Specified by:
getWorkflowParametersin interfaceIEventsState
-
isStepByStep
public boolean isStepByStep()- Specified by:
isStepByStepin interfaceIEventsState- Returns:
- true if processWorkflow is running in stepByStep (next) mode or in continue mode (resume)
-
getLogbookTypeProcess
- Specified by:
getLogbookTypeProcessin interfaceIEventsState- Returns:
- The LogbookTypeProcess
-
doPause
Change state of the process to pause Can be called only from running state If last step then change state to completed- Parameters:
pauseRecover- if RECOVER_FROM_SERVER_PAUSE then wait until pause is done
-
doCancel
protected void doCancel(boolean force) Change the state of the process to completed Can be called only from running or pause state If running state, the next step will be completed -
doRunning
protected void doRunning(WorkerParameters workerParameters, ProcessState targetState) throws ProcessingException Change state of the process to running Can be called only from pause state- Parameters:
workerParameters- the parameters to be passed to the distributortargetState- if true, run ony the next step- Throws:
ProcessingException
-
doReplay
Change state of the process to running Can be called only from pause state- Parameters:
workerParameters- the parameters to be passed to the distributor- Throws:
ProcessingException
-
findAndExecuteNextStep
- Parameters:
workerParameters-replayCurrentStep-
-
executeFinalStep
Execute the final step of the workflow Update global status of the workflow Persist the process workflow- Parameters:
workerParameters-
-
onUpdate
Description copied from interface:IEventsProcessEngineUpdate the current step status code- Specified by:
onUpdatein interfaceIEventsProcessEngine
-
getCurrentProcessWorkflowStatus
- Specified by:
getCurrentProcessWorkflowStatusin interfaceIEventsProcessEngine
-
onUpdate
- Specified by:
onUpdatein interfaceIEventsProcessEngine
-
onError
Description copied from interface:IEventsProcessEngineThe ProcessEngine callback on system error occurred- Specified by:
onErrorin interfaceIEventsProcessEngine
-
onProcessEngineCancel
Description copied from interface:IEventsProcessEngineThe ProcessEngine callback when the step is cancelled- Specified by:
onProcessEngineCancelin interfaceIEventsProcessEngine
-
onProcessEngineCompleteStep
Description copied from interface:IEventsProcessEngineThe ProcessEngine callback on complete step (for any status code)- Specified by:
onProcessEngineCompleteStepin interfaceIEventsProcessEngine
-
isRunning
protected boolean isRunning()Check if the state is running- Returns:
- true if the current state is running
-
isPause
protected boolean isPause()Check if the state is pause- Returns:
- true if the current state is pause
-
isCompleted
public boolean isCompleted()Check if the state is completed- Returns:
- true if the current state is completed
-
isRecover
public boolean isRecover()- Specified by:
isRecoverin interfaceIEventsState- Returns:
- true is processWorkflow is Pause
-
isLastStep
protected boolean isLastStep()Check if the current step is the last one- Returns:
- true if the current step is the last one
-
tryPersistProcessWorkflow
protected boolean tryPersistProcessWorkflow()Persist the process workflow in the workspace- Returns:
- true is success, false else
-
finalizeOperation
protected void finalizeOperation() -
getCurrentStep
-
getStepIndex
public int getStepIndex()
-