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.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()
|
||||||
|
|
|
||||||
|
|
@ -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 -> {
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue