CurrencySession state machine again revise error fix

This commit is contained in:
ialbert 2025-07-15 19:01:49 +03:00
parent c1d8df629c
commit 1e8d56d5ca

View file

@ -39,8 +39,6 @@ import ru.spcex.clearing.session.state.action.UpdateWorkflowStatusAction;
import ru.spcex.clearing.session.state.guard.ErroneousRegistriesPresentGuard;
import ru.spcex.clearing.session.state.guard.PaymentsWereCreatedGuard;
import ru.spcex.clearing.session.state.guard.PaymentsWereNotCreatedGuard;
import ru.spcex.clearing.session.state.guard.SdfGuard;
import ru.spcex.clearing.session.state.guard.SdfGuardExtractorAfterAgainRevise;
import ru.spcex.clearing.session.state.guard.SdfGuardUtil;
import ru.spcex.clearing.session.state.guard.SdfSetGuard;
import ru.spcex.clearing.session.state.guard.StashedRegistriesPresentGuard;
@ -177,13 +175,7 @@ public class CurrencySessionStateMachineConfig extends EnumStateMachineConfigure
.and()
.withExternal()
.source(TaskType.InclusionToPool).target(TaskType.InspectionObligations)
.action(inspectionObligationsV2Action)
.and()
.withExternal()
.source(TaskType.PSEUDO_waitSdfAfterAgainRevise)
.target(TaskType.AgainRevise)
.guard(new SdfGuard(SdfGuardExtractorAfterAgainRevise.instance))
.action(againRevise);
.action(inspectionObligationsV2Action);
sourceObligationAdmission(transitions);
sourcePseudoAfterOAError(transitions);
@ -191,6 +183,7 @@ public class CurrencySessionStateMachineConfig extends EnumStateMachineConfigure
sourceFormingPaymentInstruction(transitions);
sourcePseudoWaitSdfAfterPaymentInstructions(transitions);
sourceAgainRevise(transitions);
sourcePseudoWaitAfterAgainRevise(transitions);
sourceInspection(transitions);
}
@ -300,6 +293,23 @@ public class CurrencySessionStateMachineConfig extends EnumStateMachineConfigure
.guard(invert(reviseSuccessGuard));
}
private void sourcePseudoWaitAfterAgainRevise(StateMachineTransitionConfigurer<TaskType, SsnEvent> transitions) throws Exception {
EnumSet<SsnEvent> ssnEvents = SdfGuardUtil.afterAgainReviseError(SECTION);
transitions
.withExternal()
.source(TaskType.PSEUDO_waitSdfAfterAgainRevise)
.target(TaskType.AgainRevise)
.guard(new SdfSetGuard(ssnEvents))
.action(againRevise);
for (var event : ssnEvents) {
transitions
.withInternal()
.source(TaskType.PSEUDO_waitSdfAfterAgainRevise)
.event(event)
.action(SdfReceivedAction.instance);
}
}
@Override
public void configure(StateMachineConfigurationConfigurer<TaskType, SsnEvent> config) throws Exception {
StateMachineListenerAdapter<TaskType, SsnEvent> loggingChangeStateListener