state machine PSEUDO_waitSdfAfterAgainRevise example UnitSession

This commit is contained in:
ialbert 2025-07-15 18:43:56 +03:00
parent 5dc32f283e
commit d7cda6c3c5
2 changed files with 38 additions and 9 deletions

View file

@ -41,9 +41,8 @@ import ru.spcex.clearing.session.state.action.UpdateWorkflowStatusAction;
import ru.spcex.clearing.session.state.guard.ErroneousRegistriesPresentGuard; import ru.spcex.clearing.session.state.guard.ErroneousRegistriesPresentGuard;
import ru.spcex.clearing.session.state.guard.PaymentsWereCreatedGuard; import ru.spcex.clearing.session.state.guard.PaymentsWereCreatedGuard;
import ru.spcex.clearing.session.state.guard.PaymentsWereNotCreatedGuard; 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.SdfGuardUtil;
import ru.spcex.clearing.session.state.guard.SdfSetGuard;
import ru.spcex.clearing.session.state.guard.SdfUnitSetGuard; import ru.spcex.clearing.session.state.guard.SdfUnitSetGuard;
import ru.spcex.clearing.session.state.guard.StashedRegistriesPresentGuard; import ru.spcex.clearing.session.state.guard.StashedRegistriesPresentGuard;
import ru.spcex.clearing.session.state.listener.MachineMonitoringListener; import ru.spcex.clearing.session.state.listener.MachineMonitoringListener;
@ -201,22 +200,35 @@ public class UnitedSessionStateMachineConfig
.and() .and()
.withExternal() .withExternal()
.source(TaskType.InclusionToPool).target(TaskType.InspectionObligations) .source(TaskType.InclusionToPool).target(TaskType.InspectionObligations)
.action(inspectionObligationsV2Action) .action(inspectionObligationsV2Action);
.and()
.withExternal()
.source(TaskType.PSEUDO_waitSdfAfterAgainRevise)
.target(TaskType.AgainRevise)
.guard(new SdfGuard(SdfGuardExtractorAfterAgainRevise.instance))
.action(againRevise);
sourceObligationAdmission(transitions); sourceObligationAdmission(transitions);
sourcePseudoAfterOAError(transitions); sourcePseudoAfterOAError(transitions);
sourcePseudoAfterIOError(transitions); sourcePseudoAfterIOError(transitions);
sourceFormingPaymentInstruction(transitions); sourceFormingPaymentInstruction(transitions);
sourceAgainRevise(transitions); sourceAgainRevise(transitions);
sourcePseudoWaitAfterAgainRevise(transitions);
sourcePseudoWaitSdfAfterPaymentInstructions(transitions); sourcePseudoWaitSdfAfterPaymentInstructions(transitions);
sourceInspection(transitions); sourceInspection(transitions);
} }
private void sourcePseudoWaitAfterAgainRevise(StateMachineTransitionConfigurer<TaskType, SsnEvent> transitions) throws Exception {
EnumSet<SsnEvent> ssnEvents = SdfGuardUtil.bySectionAfter7StepUnit();
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);
}
}
private void sourceObligationAdmission(StateMachineTransitionConfigurer<TaskType, SsnEvent> transitions) throws Exception { private void sourceObligationAdmission(StateMachineTransitionConfigurer<TaskType, SsnEvent> transitions) throws Exception {
transitions transitions
.withExternal() .withExternal()

View file

@ -6,6 +6,23 @@ import ru.spcex.platform.enumeration.Section;
public class SdfGuardUtil { public class SdfGuardUtil {
public static EnumSet<SsnEvent> afterAgainReviseError(Section section) {
switch (section) {
case MKR -> {
return EnumSet.of(
SsnEvent.SDF_57
);
}
case FOND, MULT -> {
return EnumSet.of(
SsnEvent.SDF_21,
SsnEvent.SDF_57
);
}
default -> throw new IllegalStateException("unknown wait conditions for section " + section);
}
}
public static EnumSet<SsnEvent> bySectionAfter7Step(Section section) { public static EnumSet<SsnEvent> bySectionAfter7Step(Section section) {
switch (section) { switch (section) {
case MKR -> { case MKR -> {