state machine PSEUDO_waitSdfAfterAgainRevise example UnitSession
This commit is contained in:
parent
5dc32f283e
commit
d7cda6c3c5
2 changed files with 38 additions and 9 deletions
|
|
@ -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.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.SdfUnitSetGuard;
|
||||
import ru.spcex.clearing.session.state.guard.StashedRegistriesPresentGuard;
|
||||
import ru.spcex.clearing.session.state.listener.MachineMonitoringListener;
|
||||
|
|
@ -201,22 +200,35 @@ public class UnitedSessionStateMachineConfig
|
|||
.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);
|
||||
sourcePseudoAfterIOError(transitions);
|
||||
sourceFormingPaymentInstruction(transitions);
|
||||
sourceAgainRevise(transitions);
|
||||
sourcePseudoWaitAfterAgainRevise(transitions);
|
||||
sourcePseudoWaitSdfAfterPaymentInstructions(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 {
|
||||
transitions
|
||||
.withExternal()
|
||||
|
|
|
|||
|
|
@ -6,6 +6,23 @@ import ru.spcex.platform.enumeration.Section;
|
|||
|
||||
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) {
|
||||
switch (section) {
|
||||
case MKR -> {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue