PAUS workflow status

This commit is contained in:
ialbert 2025-07-10 14:06:35 +03:00
parent c7b43312e2
commit fd7ea384cb
13 changed files with 209 additions and 36 deletions

View file

@ -35,6 +35,7 @@ import ru.spcex.clearing.session.state.action.ReviseStage1Action;
import ru.spcex.clearing.session.state.action.SaveRegistriesAndContinueAction; import ru.spcex.clearing.session.state.action.SaveRegistriesAndContinueAction;
import ru.spcex.clearing.session.state.action.Sdf56Action; import ru.spcex.clearing.session.state.action.Sdf56Action;
import ru.spcex.clearing.session.state.action.SdfReceivedAction; import ru.spcex.clearing.session.state.action.SdfReceivedAction;
import ru.spcex.clearing.session.state.action.UpdateWorkflowStatusAction;
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.SdfGuard;
@ -72,6 +73,9 @@ public class CurrencySessionStateMachineConfig extends EnumStateMachineConfigure
private final StashedRegistriesPresentGuard oblAdmGuard = new StashedRegistriesPresentGuard( private final StashedRegistriesPresentGuard oblAdmGuard = new StashedRegistriesPresentGuard(
DataEnum.obligationAdmissionStashedRgs DataEnum.obligationAdmissionStashedRgs
); );
private final UpdateWorkflowStatusAction pauseWsAction;
private final UpdateWorkflowStatusAction activeWsAction;
private final Guard<TaskType, SsnEvent> reviseSuccessGuard = guardCheckCtxForFlag(DataEnum.againReviseSuccess); private final Guard<TaskType, SsnEvent> reviseSuccessGuard = guardCheckCtxForFlag(DataEnum.againReviseSuccess);
private final SessionType SESSION_TYPE = SessionType.CURR; private final SessionType SESSION_TYPE = SessionType.CURR;
private final Section SECTION = Section.MKR; private final Section SECTION = Section.MKR;
@ -91,7 +95,11 @@ public class CurrencySessionStateMachineConfig extends EnumStateMachineConfigure
EndStageNotificationAction endStageNotification, EndStageNotificationAction endStageNotification,
@Qualifier("marketCodesForCurr") @Qualifier("marketCodesForCurr")
Supplier<List<String>> marketCodes, Supplier<List<String>> marketCodes,
SaveRegistriesAndContinueAction obligationAdmissionContinueAction) { SaveRegistriesAndContinueAction obligationAdmissionContinueAction,
@Qualifier("pauseWorkflowStatusAction")
UpdateWorkflowStatusAction pauseWsAction,
@Qualifier("activeWorkflowStatusAction")
UpdateWorkflowStatusAction activeWsAction) {
this.sessionImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Session, Session.class); this.sessionImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Session, Session.class);
this.sendSdf56Action = sendSdf56Action; this.sendSdf56Action = sendSdf56Action;
this.reviseStage1Action = reviseStage1Action; this.reviseStage1Action = reviseStage1Action;
@ -105,6 +113,8 @@ public class CurrencySessionStateMachineConfig extends EnumStateMachineConfigure
this.finishingSessionAction = finishingSession; this.finishingSessionAction = finishingSession;
this.endStageNotificationAction = endStageNotification; this.endStageNotificationAction = endStageNotification;
this.obligationAdmissionContinueAction = obligationAdmissionContinueAction; this.obligationAdmissionContinueAction = obligationAdmissionContinueAction;
this.pauseWsAction = pauseWsAction;
this.activeWsAction = activeWsAction;
this.finishingSessionAction.setPr("1"); this.finishingSessionAction.setPr("1");
Imdg<ExecutionCurrency> executionCurrencyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ExecutionCurrency, ExecutionCurrency.class); Imdg<ExecutionCurrency> executionCurrencyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ExecutionCurrency, ExecutionCurrency.class);
@ -192,6 +202,7 @@ public class CurrencySessionStateMachineConfig extends EnumStateMachineConfigure
.source(TaskType.ObligationsAdmission) .source(TaskType.ObligationsAdmission)
.target(TaskType.PSEUDO_waitAfterObligationAdmissionError) .target(TaskType.PSEUDO_waitAfterObligationAdmissionError)
.guard(oblAdmGuard) .guard(oblAdmGuard)
.action(pauseWsAction)
.and() .and()
.withExternal() .withExternal()
.source(TaskType.ObligationsAdmission).target(TaskType.InclusionToPool) .source(TaskType.ObligationsAdmission).target(TaskType.InclusionToPool)
@ -203,12 +214,12 @@ public class CurrencySessionStateMachineConfig extends EnumStateMachineConfigure
transitions transitions
.withExternal() .withExternal()
.source(TaskType.PSEUDO_waitAfterObligationAdmissionError).target(TaskType.InclusionToPool) .source(TaskType.PSEUDO_waitAfterObligationAdmissionError).target(TaskType.InclusionToPool)
.action(chain(obligationAdmissionContinueAction, inclusionToPoolAction)) .action(chain(activeWsAction, obligationAdmissionContinueAction, inclusionToPoolAction))
.event(SsnEvent.CONTINUE) .event(SsnEvent.CONTINUE)
.and() .and()
.withExternal() .withExternal()
.source(TaskType.PSEUDO_waitAfterObligationAdmissionError).target(TaskType.ObligationsAdmission) .source(TaskType.PSEUDO_waitAfterObligationAdmissionError).target(TaskType.ObligationsAdmission)
.action(chain(discardOblAdmStash, obligationAdmissionAction)) .action(chain(activeWsAction, discardOblAdmStash, obligationAdmissionAction))
.event(SsnEvent.REPEAT); .event(SsnEvent.REPEAT);
} }

View file

@ -35,13 +35,13 @@ import ru.spcex.clearing.session.state.action.ReviseStage1Action;
import ru.spcex.clearing.session.state.action.SaveRegistriesAndContinueAction; import ru.spcex.clearing.session.state.action.SaveRegistriesAndContinueAction;
import ru.spcex.clearing.session.state.action.Sdf56Action; import ru.spcex.clearing.session.state.action.Sdf56Action;
import ru.spcex.clearing.session.state.action.SdfReceivedAction; import ru.spcex.clearing.session.state.action.SdfReceivedAction;
import ru.spcex.clearing.session.state.action.UpdateWorkflowStatusAction;
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.SdfGuardUtil; import ru.spcex.clearing.session.state.guard.SdfGuardUtil;
import ru.spcex.clearing.session.state.guard.SdfSetGuard; import ru.spcex.clearing.session.state.guard.SdfSetGuard;
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;
import ru.spcex.clearing.util.StateMachineUtil;
import static ru.spcex.clearing.util.StateMachineUtil.chain; import static ru.spcex.clearing.util.StateMachineUtil.chain;
import static ru.spcex.clearing.util.StateMachineUtil.invert; import static ru.spcex.clearing.util.StateMachineUtil.invert;
import ru.spcex.platform.classes.base.interfaces.ExecutionType; import ru.spcex.platform.classes.base.interfaces.ExecutionType;
@ -76,6 +76,8 @@ public class FinalSessionStateMachineConfig
private final StashedRegistriesPresentGuard oblAdmGuard = new StashedRegistriesPresentGuard( private final StashedRegistriesPresentGuard oblAdmGuard = new StashedRegistriesPresentGuard(
DataEnum.obligationAdmissionStashedRgs DataEnum.obligationAdmissionStashedRgs
); );
private final UpdateWorkflowStatusAction pauseWsAction;
private final UpdateWorkflowStatusAction activeWsAction;
private final SessionType SESSION_TYPE = SessionType.FINL; private final SessionType SESSION_TYPE = SessionType.FINL;
private final Section SECTION = Section.MKR; private final Section SECTION = Section.MKR;
@ -94,11 +96,17 @@ public class FinalSessionStateMachineConfig
InspectionObligationsV2Action inspectionObligationsV2Action, InspectionObligationsV2Action inspectionObligationsV2Action,
FormingPaymentInstructionReturnMkrAction formingPaymentInstructionReturnMkrAction, FormingPaymentInstructionReturnMkrAction formingPaymentInstructionReturnMkrAction,
FormingPaymentInstructionAssetsAction formingPaymentInstructionAssetsAction, FormingPaymentInstructionAssetsAction formingPaymentInstructionAssetsAction,
FinishingSessionAction finishingSessionAction, EndStageNotificationAction endStageNotificationAction, SaveRegistriesAndContinueAction obligationAdmissionContinueAction FinishingSessionAction finishingSessionAction,
EndStageNotificationAction endStageNotificationAction,
SaveRegistriesAndContinueAction obligationAdmissionContinueAction,
@Qualifier("pauseWorkflowStatusAction") UpdateWorkflowStatusAction pauseWsAction,
@Qualifier("activeWorkflowStatusAction") UpdateWorkflowStatusAction activeWsAction
) { ) {
this.sendSdf56Action = sendSdf56Action; this.sendSdf56Action = sendSdf56Action;
this.sessionImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Session, Session.class); this.sessionImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Session, Session.class);
this.obligationAdmissionContinueAction = obligationAdmissionContinueAction; this.obligationAdmissionContinueAction = obligationAdmissionContinueAction;
this.pauseWsAction = pauseWsAction;
this.activeWsAction = activeWsAction;
Imdg<Registry> rgsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Registry, Registry.class); Imdg<Registry> rgsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Registry, Registry.class);
this.reviseStage1Action = reviseStage1Action; this.reviseStage1Action = reviseStage1Action;
this.dealsPrepareAction = dealsPrepareAction; this.dealsPrepareAction = dealsPrepareAction;
@ -200,6 +208,7 @@ public class FinalSessionStateMachineConfig
.source(TaskType.ObligationsAdmission) .source(TaskType.ObligationsAdmission)
.target(TaskType.PSEUDO_waitAfterObligationAdmissionError) .target(TaskType.PSEUDO_waitAfterObligationAdmissionError)
.guard(oblAdmGuard) .guard(oblAdmGuard)
.action(pauseWsAction)
.and() .and()
.withExternal() .withExternal()
.source(TaskType.ObligationsAdmission).target(TaskType.InclusionToPool) .source(TaskType.ObligationsAdmission).target(TaskType.InclusionToPool)
@ -211,12 +220,12 @@ public class FinalSessionStateMachineConfig
transitions transitions
.withExternal() .withExternal()
.source(TaskType.PSEUDO_waitAfterObligationAdmissionError).target(TaskType.InclusionToPool) .source(TaskType.PSEUDO_waitAfterObligationAdmissionError).target(TaskType.InclusionToPool)
.action(chain(obligationAdmissionContinueAction, inclusionToPoolAction)) .action(chain(activeWsAction, obligationAdmissionContinueAction, inclusionToPoolAction))
.event(SsnEvent.CONTINUE) .event(SsnEvent.CONTINUE)
.and() .and()
.withExternal() .withExternal()
.source(TaskType.PSEUDO_waitAfterObligationAdmissionError).target(TaskType.ObligationsAdmission) .source(TaskType.PSEUDO_waitAfterObligationAdmissionError).target(TaskType.ObligationsAdmission)
.action(StateMachineUtil.chain(discardOblAdmStash, obligationAdmissionAction)) .action(chain(activeWsAction, discardOblAdmStash, obligationAdmissionAction))
.event(SsnEvent.REPEAT); .event(SsnEvent.REPEAT);
} }

View file

@ -35,6 +35,7 @@ import ru.spcex.clearing.session.state.action.ReviseStage1Action;
import ru.spcex.clearing.session.state.action.SaveRegistriesAndContinueAction; import ru.spcex.clearing.session.state.action.SaveRegistriesAndContinueAction;
import ru.spcex.clearing.session.state.action.Sdf56Action; import ru.spcex.clearing.session.state.action.Sdf56Action;
import ru.spcex.clearing.session.state.action.SdfReceivedAction; import ru.spcex.clearing.session.state.action.SdfReceivedAction;
import ru.spcex.clearing.session.state.action.UpdateWorkflowStatusAction;
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.SdfGuard;
@ -43,7 +44,6 @@ import ru.spcex.clearing.session.state.guard.SdfGuardUtil;
import ru.spcex.clearing.session.state.guard.SdfSetGuard; import ru.spcex.clearing.session.state.guard.SdfSetGuard;
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;
import ru.spcex.clearing.util.StateMachineUtil;
import static ru.spcex.clearing.util.StateMachineUtil.*; import static ru.spcex.clearing.util.StateMachineUtil.*;
import ru.spcex.platform.classes.base.interfaces.ExecutionType; import ru.spcex.platform.classes.base.interfaces.ExecutionType;
import ru.spcex.platform.enumeration.RegistryStatus; import ru.spcex.platform.enumeration.RegistryStatus;
@ -76,6 +76,8 @@ public class IntermediateMkrSessionStateMachineConfig
private final StashedRegistriesPresentGuard oblAdmGuard = new StashedRegistriesPresentGuard( private final StashedRegistriesPresentGuard oblAdmGuard = new StashedRegistriesPresentGuard(
DataEnum.obligationAdmissionStashedRgs DataEnum.obligationAdmissionStashedRgs
); );
private final UpdateWorkflowStatusAction pauseWsAction;
private final UpdateWorkflowStatusAction activeWsAction;
private final Guard<TaskType, SsnEvent> reviseSuccessGuard = guardCheckCtxForFlag(DataEnum.againReviseSuccess); private final Guard<TaskType, SsnEvent> reviseSuccessGuard = guardCheckCtxForFlag(DataEnum.againReviseSuccess);
private final SessionType SESSION_TYPE = SessionType.MEDM; private final SessionType SESSION_TYPE = SessionType.MEDM;
@ -93,12 +95,18 @@ public class IntermediateMkrSessionStateMachineConfig
InclusionToPoolAction inclusionToPoolAction, InclusionToPoolAction inclusionToPoolAction,
InspectionObligationsV2Action inspectionObligationsV2Action, InspectionObligationsV2Action inspectionObligationsV2Action,
FormingPaymentInstructionAssetsAction formingPaymentInstructionAssetsAction, AgainReviseStage3Action againRevise, FormingPaymentInstructionAssetsAction formingPaymentInstructionAssetsAction, AgainReviseStage3Action againRevise,
FinishingSessionAction finishingSessionAction, EndStageNotificationAction endStageNotificationAction, SaveRegistriesAndContinueAction obligationAdmissionContinueAction FinishingSessionAction finishingSessionAction, EndStageNotificationAction endStageNotificationAction, SaveRegistriesAndContinueAction obligationAdmissionContinueAction,
@Qualifier("pauseWorkflowStatusAction")
UpdateWorkflowStatusAction pauseWsAction,
@Qualifier("activeWorkflowStatusAction")
UpdateWorkflowStatusAction activeWsAction
) { ) {
this.sendSdf56Action = sendSdf56Action; this.sendSdf56Action = sendSdf56Action;
this.sessionImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Session, Session.class); this.sessionImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Session, Session.class);
this.againRevise = againRevise; this.againRevise = againRevise;
this.obligationAdmissionContinueAction = obligationAdmissionContinueAction; this.obligationAdmissionContinueAction = obligationAdmissionContinueAction;
this.pauseWsAction = pauseWsAction;
this.activeWsAction = activeWsAction;
Imdg<Registry> rgsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Registry, Registry.class); Imdg<Registry> rgsImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Registry, Registry.class);
this.reviseStage1Action = reviseStage1Action; this.reviseStage1Action = reviseStage1Action;
this.dealsPrepareAction = dealsPrepareAction; this.dealsPrepareAction = dealsPrepareAction;
@ -205,6 +213,7 @@ public class IntermediateMkrSessionStateMachineConfig
.source(TaskType.ObligationsAdmission) .source(TaskType.ObligationsAdmission)
.target(TaskType.PSEUDO_waitAfterObligationAdmissionError) .target(TaskType.PSEUDO_waitAfterObligationAdmissionError)
.guard(oblAdmGuard) .guard(oblAdmGuard)
.action(pauseWsAction)
.and() .and()
.withExternal() .withExternal()
.source(TaskType.ObligationsAdmission).target(TaskType.InclusionToPool) .source(TaskType.ObligationsAdmission).target(TaskType.InclusionToPool)
@ -216,12 +225,12 @@ public class IntermediateMkrSessionStateMachineConfig
transitions transitions
.withExternal() .withExternal()
.source(TaskType.PSEUDO_waitAfterObligationAdmissionError).target(TaskType.InclusionToPool) .source(TaskType.PSEUDO_waitAfterObligationAdmissionError).target(TaskType.InclusionToPool)
.action(chain(obligationAdmissionContinueAction, inclusionToPoolAction)) .action(chain(activeWsAction, obligationAdmissionContinueAction, inclusionToPoolAction))
.event(SsnEvent.CONTINUE) .event(SsnEvent.CONTINUE)
.and() .and()
.withExternal() .withExternal()
.source(TaskType.PSEUDO_waitAfterObligationAdmissionError).target(TaskType.ObligationsAdmission) .source(TaskType.PSEUDO_waitAfterObligationAdmissionError).target(TaskType.ObligationsAdmission)
.action(StateMachineUtil.chain(discardOblAdmStash, obligationAdmissionAction)) .action(chain(activeWsAction, discardOblAdmStash, obligationAdmissionAction))
.event(SsnEvent.REPEAT); .event(SsnEvent.REPEAT);
} }

View file

@ -32,6 +32,7 @@ import ru.spcex.clearing.session.state.action.ObligationAdmissionAction;
import ru.spcex.clearing.session.state.action.RequirementAndObligationCreationAction; import ru.spcex.clearing.session.state.action.RequirementAndObligationCreationAction;
import ru.spcex.clearing.session.state.action.ReviseStage1Action; import ru.spcex.clearing.session.state.action.ReviseStage1Action;
import ru.spcex.clearing.session.state.action.SaveRegistriesAndContinueAction; import ru.spcex.clearing.session.state.action.SaveRegistriesAndContinueAction;
import ru.spcex.clearing.session.state.action.UpdateWorkflowStatusAction;
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;
import static ru.spcex.clearing.util.StateMachineUtil.*; import static ru.spcex.clearing.util.StateMachineUtil.*;
@ -62,6 +63,8 @@ public class PaymSessionStateMachineConfig extends EnumStateMachineConfigurerAda
private final StashedRegistriesPresentGuard oblAdmGuard = new StashedRegistriesPresentGuard( private final StashedRegistriesPresentGuard oblAdmGuard = new StashedRegistriesPresentGuard(
DataEnum.obligationAdmissionStashedRgs DataEnum.obligationAdmissionStashedRgs
); );
private final UpdateWorkflowStatusAction pauseWsAction;
private final UpdateWorkflowStatusAction activeWsAction;
private final Guard<TaskType, SsnEvent> reviseSuccessGuard = guardCheckCtxForFlag(DataEnum.againReviseSuccess); private final Guard<TaskType, SsnEvent> reviseSuccessGuard = guardCheckCtxForFlag(DataEnum.againReviseSuccess);
private final SessionType SESSION_TYPE = SessionType.PAYM; private final SessionType SESSION_TYPE = SessionType.PAYM;
private final Section SECTION = Section.CURR; private final Section SECTION = Section.CURR;
@ -80,8 +83,14 @@ public class PaymSessionStateMachineConfig extends EnumStateMachineConfigurerAda
EndStageNotificationAction endStageNotification, EndStageNotificationAction endStageNotification,
@Qualifier("marketCodesForCurr") @Qualifier("marketCodesForCurr")
Supplier<List<String>> marketCodes, Supplier<List<String>> marketCodes,
SaveRegistriesAndContinueAction obligationAdmissionContinueAction) { SaveRegistriesAndContinueAction obligationAdmissionContinueAction,
@Qualifier("pauseWorkflowStatusAction")
UpdateWorkflowStatusAction pauseWsAction,
@Qualifier("activeWorkflowStatusAction")
UpdateWorkflowStatusAction activeWsAction) {
this.sessionImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Session, Session.class); this.sessionImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Session, Session.class);
this.pauseWsAction = pauseWsAction;
this.activeWsAction = activeWsAction;
Imdg<ExecutionCurrency> executionCurrencyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ExecutionCurrency, ExecutionCurrency.class); Imdg<ExecutionCurrency> executionCurrencyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ExecutionCurrency, ExecutionCurrency.class);
this.reviseStage1Action = reviseStage1Action; this.reviseStage1Action = reviseStage1Action;
this.dealsPrepareAction = dealsPrepare; this.dealsPrepareAction = dealsPrepare;
@ -177,6 +186,7 @@ public class PaymSessionStateMachineConfig extends EnumStateMachineConfigurerAda
.source(TaskType.ObligationsAdmission) .source(TaskType.ObligationsAdmission)
.target(TaskType.PSEUDO_waitAfterObligationAdmissionError) .target(TaskType.PSEUDO_waitAfterObligationAdmissionError)
.guard(oblAdmGuard) .guard(oblAdmGuard)
.action(pauseWsAction)
.and() .and()
.withExternal() .withExternal()
.source(TaskType.ObligationsAdmission).target(TaskType.InclusionToPool) .source(TaskType.ObligationsAdmission).target(TaskType.InclusionToPool)
@ -188,12 +198,12 @@ public class PaymSessionStateMachineConfig extends EnumStateMachineConfigurerAda
transitions transitions
.withExternal() .withExternal()
.source(TaskType.PSEUDO_waitAfterObligationAdmissionError).target(TaskType.InclusionToPool) .source(TaskType.PSEUDO_waitAfterObligationAdmissionError).target(TaskType.InclusionToPool)
.action(chain(obligationAdmissionContinueAction, inclusionToPoolAction)) .action(chain(activeWsAction, obligationAdmissionContinueAction, inclusionToPoolAction))
.event(SsnEvent.CONTINUE) .event(SsnEvent.CONTINUE)
.and() .and()
.withExternal() .withExternal()
.source(TaskType.PSEUDO_waitAfterObligationAdmissionError).target(TaskType.ObligationsAdmission) .source(TaskType.PSEUDO_waitAfterObligationAdmissionError).target(TaskType.ObligationsAdmission)
.action(chain(discardOblAdmStash, obligationAdmissionAction)) .action(chain(activeWsAction, discardOblAdmStash, obligationAdmissionAction))
.event(SsnEvent.REPEAT); .event(SsnEvent.REPEAT);
} }

View file

@ -26,6 +26,7 @@ import ru.spcex.clearing.session.state.action.DiscardRegistriesAction;
import ru.spcex.clearing.session.state.action.ObligationAdmissionAction; import ru.spcex.clearing.session.state.action.ObligationAdmissionAction;
import ru.spcex.clearing.session.state.action.RequirementAndObligationCreationAction; import ru.spcex.clearing.session.state.action.RequirementAndObligationCreationAction;
import ru.spcex.clearing.session.state.action.SaveRegistriesAndContinueAction; import ru.spcex.clearing.session.state.action.SaveRegistriesAndContinueAction;
import ru.spcex.clearing.session.state.action.UpdateWorkflowStatusAction;
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;
import static ru.spcex.clearing.util.StateMachineUtil.chain; import static ru.spcex.clearing.util.StateMachineUtil.chain;
@ -53,6 +54,9 @@ public class PrepSessionStateMachineConfig extends EnumStateMachineConfigurerAda
private final StashedRegistriesPresentGuard oblAdmGuard = new StashedRegistriesPresentGuard( private final StashedRegistriesPresentGuard oblAdmGuard = new StashedRegistriesPresentGuard(
DataEnum.obligationAdmissionStashedRgs DataEnum.obligationAdmissionStashedRgs
); );
private final UpdateWorkflowStatusAction pauseWsAction;
private final UpdateWorkflowStatusAction activeWsAction;
private final SessionType SESSION_TYPE = SessionType.PREP; private final SessionType SESSION_TYPE = SessionType.PREP;
private final Section SECTION = Section.CURR; private final Section SECTION = Section.CURR;
@ -64,8 +68,14 @@ public class PrepSessionStateMachineConfig extends EnumStateMachineConfigurerAda
ObligationAdmissionAction obligationsAdmission, ObligationAdmissionAction obligationsAdmission,
@Qualifier("marketCodesForCurr") @Qualifier("marketCodesForCurr")
Supplier<List<String>> marketCodes, Supplier<List<String>> marketCodes,
SaveRegistriesAndContinueAction obligationAdmissionContinueAction) { SaveRegistriesAndContinueAction obligationAdmissionContinueAction,
@Qualifier("pauseWorkflowStatusAction")
UpdateWorkflowStatusAction pauseWsAction,
@Qualifier("activeWorkflowStatusAction")
UpdateWorkflowStatusAction activeWsAction) {
this.sessionImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Session, Session.class); this.sessionImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Session, Session.class);
this.pauseWsAction = pauseWsAction;
this.activeWsAction = activeWsAction;
Imdg<ExecutionCurrency> executionCurrencyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ExecutionCurrency, ExecutionCurrency.class); Imdg<ExecutionCurrency> executionCurrencyImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ExecutionCurrency, ExecutionCurrency.class);
this.dealsPrepareAction = dealsPrepare; this.dealsPrepareAction = dealsPrepare;
this.reqAndOblAction = reqAndOblAction; this.reqAndOblAction = reqAndOblAction;
@ -129,6 +139,7 @@ public class PrepSessionStateMachineConfig extends EnumStateMachineConfigurerAda
.source(TaskType.ObligationsAdmission) .source(TaskType.ObligationsAdmission)
.target(TaskType.PSEUDO_waitAfterObligationAdmissionError) .target(TaskType.PSEUDO_waitAfterObligationAdmissionError)
.guard(oblAdmGuard) .guard(oblAdmGuard)
.action(pauseWsAction)
.and() .and()
.withExternal() .withExternal()
.source(TaskType.ObligationsAdmission).target(TaskType.PSEUDO_end) .source(TaskType.ObligationsAdmission).target(TaskType.PSEUDO_end)
@ -140,12 +151,12 @@ public class PrepSessionStateMachineConfig extends EnumStateMachineConfigurerAda
transitions transitions
.withExternal() .withExternal()
.source(TaskType.PSEUDO_waitAfterObligationAdmissionError).target(TaskType.PSEUDO_end) .source(TaskType.PSEUDO_waitAfterObligationAdmissionError).target(TaskType.PSEUDO_end)
.action(chain(obligationAdmissionContinueAction, endSession)) .action(chain(activeWsAction, obligationAdmissionContinueAction, endSession))
.event(SsnEvent.CONTINUE) .event(SsnEvent.CONTINUE)
.and() .and()
.withExternal() .withExternal()
.source(TaskType.PSEUDO_waitAfterObligationAdmissionError).target(TaskType.ObligationsAdmission) .source(TaskType.PSEUDO_waitAfterObligationAdmissionError).target(TaskType.ObligationsAdmission)
.action(chain(discardOblAdmStash, obligationAdmissionAction)) .action(chain(activeWsAction, discardOblAdmStash, obligationAdmissionAction))
.event(SsnEvent.REPEAT); .event(SsnEvent.REPEAT);
} }

View file

@ -36,6 +36,7 @@ import ru.spcex.clearing.session.state.action.ReviseStage1Action;
import ru.spcex.clearing.session.state.action.SaveRegistriesAndContinueAction; import ru.spcex.clearing.session.state.action.SaveRegistriesAndContinueAction;
import ru.spcex.clearing.session.state.action.Sdf56Action; import ru.spcex.clearing.session.state.action.Sdf56Action;
import ru.spcex.clearing.session.state.action.SdfReceivedAction; import ru.spcex.clearing.session.state.action.SdfReceivedAction;
import ru.spcex.clearing.session.state.action.UpdateWorkflowStatusAction;
import ru.spcex.clearing.session.state.guard.PaymentsWereCreatedListGuard; import ru.spcex.clearing.session.state.guard.PaymentsWereCreatedListGuard;
import ru.spcex.clearing.session.state.guard.PaymentsWereNotCreatedListGuard; import ru.spcex.clearing.session.state.guard.PaymentsWereNotCreatedListGuard;
import ru.spcex.clearing.session.state.guard.SdfGuard; import ru.spcex.clearing.session.state.guard.SdfGuard;
@ -69,10 +70,12 @@ public class PrimaryAuctionB0SessionStateMachineConfig
private final AgainReviseStage3Action againRevise; private final AgainReviseStage3Action againRevise;
private final FinishingSessionAction finishingSessionAction; private final FinishingSessionAction finishingSessionAction;
private final EndStageNotificationAction endStageNotificationAction; private final EndStageNotificationAction endStageNotificationAction;
private final SaveRegistriesAndContinueAction obligationAdmissionContinueAction; private final SaveRegistriesAndContinueAction obligationAdmissionContinueAction;
private final DiscardRegistriesAction discardOblAdmStash = private final DiscardRegistriesAction discardOblAdmStash =
new DiscardRegistriesAction(DataEnum.obligationAdmissionStashedRgs); new DiscardRegistriesAction(DataEnum.obligationAdmissionStashedRgs);
private final UpdateWorkflowStatusAction pauseWsAction;
private final UpdateWorkflowStatusAction activeWsAction;
private final StashedRegistriesPresentGuard oblAdmGuard = new StashedRegistriesPresentGuard( private final StashedRegistriesPresentGuard oblAdmGuard = new StashedRegistriesPresentGuard(
DataEnum.obligationAdmissionStashedRgs DataEnum.obligationAdmissionStashedRgs
); );
@ -94,10 +97,19 @@ public class PrimaryAuctionB0SessionStateMachineConfig
InspectionObligationsV2Action inspectionObligationsV2Action, InspectionObligationsV2Action inspectionObligationsV2Action,
FormingPaymentInstructionSecuritiesAction formingPaymentInstructionSecuritiesAction, FormingPaymentInstructionSecuritiesAction formingPaymentInstructionSecuritiesAction,
AgainReviseStage3Action againRevise, AgainReviseStage3Action againRevise,
FinishingSessionAction finishingSessionAction, EndStageNotificationAction endStageNotificationAction, SaveRegistriesAndContinueAction obligationAdmissionContinueAction, @Qualifier("marketCodesForBn") Supplier<List<String>> marketCodes FinishingSessionAction finishingSessionAction,
EndStageNotificationAction endStageNotificationAction,
SaveRegistriesAndContinueAction obligationAdmissionContinueAction,
@Qualifier("marketCodesForBn") Supplier<List<String>> marketCodes,
@Qualifier("pauseWorkflowStatusAction")
UpdateWorkflowStatusAction pauseWsAction,
@Qualifier("activeWorkflowStatusAction")
UpdateWorkflowStatusAction activeWsAction
) { ) {
this.sendSdf56Action = sendSdf56Action; this.sendSdf56Action = sendSdf56Action;
this.sessionImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Session, Session.class); this.sessionImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Session, Session.class);
this.pauseWsAction = pauseWsAction;
this.activeWsAction = activeWsAction;
Imdg<ExecutionFond> executionFondImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ExecutionFond, ExecutionFond.class); Imdg<ExecutionFond> executionFondImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ExecutionFond, ExecutionFond.class);
this.againRevise = againRevise; this.againRevise = againRevise;
this.obligationAdmissionContinueAction = obligationAdmissionContinueAction; this.obligationAdmissionContinueAction = obligationAdmissionContinueAction;
@ -199,6 +211,7 @@ public class PrimaryAuctionB0SessionStateMachineConfig
.source(TaskType.ObligationsAdmission) .source(TaskType.ObligationsAdmission)
.target(TaskType.PSEUDO_waitAfterObligationAdmissionError) .target(TaskType.PSEUDO_waitAfterObligationAdmissionError)
.guard(oblAdmGuard) .guard(oblAdmGuard)
.action(pauseWsAction)
.and() .and()
.withExternal() .withExternal()
.source(TaskType.ObligationsAdmission).target(TaskType.InclusionToPool) .source(TaskType.ObligationsAdmission).target(TaskType.InclusionToPool)
@ -210,12 +223,12 @@ public class PrimaryAuctionB0SessionStateMachineConfig
transitions transitions
.withExternal() .withExternal()
.source(TaskType.PSEUDO_waitAfterObligationAdmissionError).target(TaskType.InclusionToPool) .source(TaskType.PSEUDO_waitAfterObligationAdmissionError).target(TaskType.InclusionToPool)
.action(chain(obligationAdmissionContinueAction, inclusionToPoolAction)) .action(chain(activeWsAction, obligationAdmissionContinueAction, inclusionToPoolAction))
.event(SsnEvent.CONTINUE) .event(SsnEvent.CONTINUE)
.and() .and()
.withExternal() .withExternal()
.source(TaskType.PSEUDO_waitAfterObligationAdmissionError).target(TaskType.ObligationsAdmission) .source(TaskType.PSEUDO_waitAfterObligationAdmissionError).target(TaskType.ObligationsAdmission)
.action(chain(discardOblAdmStash, obligationAdmissionAction)) .action(chain(activeWsAction, discardOblAdmStash, obligationAdmissionAction))
.event(SsnEvent.REPEAT); .event(SsnEvent.REPEAT);
} }

View file

@ -35,6 +35,7 @@ import ru.spcex.clearing.session.state.action.ReviseStage1Action;
import ru.spcex.clearing.session.state.action.SaveRegistriesAndContinueAction; import ru.spcex.clearing.session.state.action.SaveRegistriesAndContinueAction;
import ru.spcex.clearing.session.state.action.Sdf56Action; import ru.spcex.clearing.session.state.action.Sdf56Action;
import ru.spcex.clearing.session.state.action.SdfReceivedAction; import ru.spcex.clearing.session.state.action.SdfReceivedAction;
import ru.spcex.clearing.session.state.action.UpdateWorkflowStatusAction;
import ru.spcex.clearing.session.state.guard.PaymentsWereCreatedListGuard; import ru.spcex.clearing.session.state.guard.PaymentsWereCreatedListGuard;
import ru.spcex.clearing.session.state.guard.PaymentsWereNotCreatedListGuard; import ru.spcex.clearing.session.state.guard.PaymentsWereNotCreatedListGuard;
import ru.spcex.clearing.session.state.guard.SdfGuardUtil; import ru.spcex.clearing.session.state.guard.SdfGuardUtil;
@ -65,10 +66,12 @@ public class PrimaryAuctionBnSessionStateMachineConfig
private final FormingPaymentInstructionSecuritiesAction formingPaymentInstructionSecuritiesAction; private final FormingPaymentInstructionSecuritiesAction formingPaymentInstructionSecuritiesAction;
private final FinishingSessionAction finishingSessionAction; private final FinishingSessionAction finishingSessionAction;
private final EndStageNotificationAction endStageNotificationAction; private final EndStageNotificationAction endStageNotificationAction;
private final SaveRegistriesAndContinueAction obligationAdmissionContinueAction; private final SaveRegistriesAndContinueAction obligationAdmissionContinueAction;
private final DiscardRegistriesAction discardOblAdmStash = private final DiscardRegistriesAction discardOblAdmStash =
new DiscardRegistriesAction(DataEnum.obligationAdmissionStashedRgs); new DiscardRegistriesAction(DataEnum.obligationAdmissionStashedRgs);
private final UpdateWorkflowStatusAction pauseWsAction;
private final UpdateWorkflowStatusAction activeWsAction;
private final StashedRegistriesPresentGuard oblAdmGuard = new StashedRegistriesPresentGuard( private final StashedRegistriesPresentGuard oblAdmGuard = new StashedRegistriesPresentGuard(
DataEnum.obligationAdmissionStashedRgs DataEnum.obligationAdmissionStashedRgs
); );
@ -89,10 +92,20 @@ public class PrimaryAuctionBnSessionStateMachineConfig
InclusionToPoolAction inclusionToPoolAction, InclusionToPoolAction inclusionToPoolAction,
InspectionObligationsV2Action inspectionObligationsV2Action, InspectionObligationsV2Action inspectionObligationsV2Action,
FormingPaymentInstructionSecuritiesAction formingPaymentInstructionSecuritiesAction, FormingPaymentInstructionSecuritiesAction formingPaymentInstructionSecuritiesAction,
FinishingSessionAction finishingSessionAction, EndStageNotificationAction endStageNotificationAction, SaveRegistriesAndContinueAction obligationAdmissionContinueAction, @Qualifier("marketCodesForBn") Supplier<List<String>> marketCodes FinishingSessionAction finishingSessionAction,
EndStageNotificationAction endStageNotificationAction,
SaveRegistriesAndContinueAction obligationAdmissionContinueAction,
@Qualifier("marketCodesForBn")
Supplier<List<String>> marketCodes,
@Qualifier("pauseWorkflowStatusAction")
UpdateWorkflowStatusAction pauseWsAction,
@Qualifier("activeWorkflowStatusAction")
UpdateWorkflowStatusAction activeWsAction
) { ) {
this.sendSdf56Action = sendSdf56Action; this.sendSdf56Action = sendSdf56Action;
this.sessionImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Session, Session.class); this.sessionImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Session, Session.class);
this.pauseWsAction = pauseWsAction;
this.activeWsAction = activeWsAction;
Imdg<ExecutionFond> executionFondImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ExecutionFond, ExecutionFond.class); Imdg<ExecutionFond> executionFondImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ExecutionFond, ExecutionFond.class);
this.obligationAdmissionContinueAction = obligationAdmissionContinueAction; this.obligationAdmissionContinueAction = obligationAdmissionContinueAction;
this.reviseStage1Action = reviseStage1Action; this.reviseStage1Action = reviseStage1Action;
@ -184,6 +197,7 @@ public class PrimaryAuctionBnSessionStateMachineConfig
.source(TaskType.ObligationsAdmission) .source(TaskType.ObligationsAdmission)
.target(TaskType.PSEUDO_waitAfterObligationAdmissionError) .target(TaskType.PSEUDO_waitAfterObligationAdmissionError)
.guard(oblAdmGuard) .guard(oblAdmGuard)
.action(pauseWsAction)
.and() .and()
.withExternal() .withExternal()
.source(TaskType.ObligationsAdmission).target(TaskType.InclusionToPool) .source(TaskType.ObligationsAdmission).target(TaskType.InclusionToPool)
@ -195,12 +209,12 @@ public class PrimaryAuctionBnSessionStateMachineConfig
transitions transitions
.withExternal() .withExternal()
.source(TaskType.PSEUDO_waitAfterObligationAdmissionError).target(TaskType.InclusionToPool) .source(TaskType.PSEUDO_waitAfterObligationAdmissionError).target(TaskType.InclusionToPool)
.action(chain(obligationAdmissionContinueAction, inclusionToPoolAction)) .action(chain(activeWsAction, obligationAdmissionContinueAction, inclusionToPoolAction))
.event(SsnEvent.CONTINUE) .event(SsnEvent.CONTINUE)
.and() .and()
.withExternal() .withExternal()
.source(TaskType.PSEUDO_waitAfterObligationAdmissionError).target(TaskType.ObligationsAdmission) .source(TaskType.PSEUDO_waitAfterObligationAdmissionError).target(TaskType.ObligationsAdmission)
.action(chain(discardOblAdmStash, obligationAdmissionAction)) .action(chain(activeWsAction, discardOblAdmStash, obligationAdmissionAction))
.event(SsnEvent.REPEAT); .event(SsnEvent.REPEAT);
} }

View file

@ -36,6 +36,7 @@ import ru.spcex.clearing.session.state.action.ReviseStage1Action;
import ru.spcex.clearing.session.state.action.SaveRegistriesAndContinueAction; import ru.spcex.clearing.session.state.action.SaveRegistriesAndContinueAction;
import ru.spcex.clearing.session.state.action.Sdf56Action; import ru.spcex.clearing.session.state.action.Sdf56Action;
import ru.spcex.clearing.session.state.action.SdfReceivedAction; import ru.spcex.clearing.session.state.action.SdfReceivedAction;
import ru.spcex.clearing.session.state.action.UpdateWorkflowStatusAction;
import ru.spcex.clearing.session.state.guard.PaymentsWereCreatedListGuard; import ru.spcex.clearing.session.state.guard.PaymentsWereCreatedListGuard;
import ru.spcex.clearing.session.state.guard.PaymentsWereNotCreatedListGuard; import ru.spcex.clearing.session.state.guard.PaymentsWereNotCreatedListGuard;
import ru.spcex.clearing.session.state.guard.SdfGuard; import ru.spcex.clearing.session.state.guard.SdfGuard;
@ -69,10 +70,12 @@ public class PrimaryAuctionT0SessionStateMachineConfig
private final AgainReviseStage3Action againRevise; private final AgainReviseStage3Action againRevise;
private final FinishingSessionAction finishingSessionAction; private final FinishingSessionAction finishingSessionAction;
private final EndStageNotificationAction endStageNotificationAction; private final EndStageNotificationAction endStageNotificationAction;
private final SaveRegistriesAndContinueAction obligationAdmissionContinueAction; private final SaveRegistriesAndContinueAction obligationAdmissionContinueAction;
private final DiscardRegistriesAction discardOblAdmStash = private final DiscardRegistriesAction discardOblAdmStash =
new DiscardRegistriesAction(DataEnum.obligationAdmissionStashedRgs); new DiscardRegistriesAction(DataEnum.obligationAdmissionStashedRgs);
private final UpdateWorkflowStatusAction pauseWsAction;
private final UpdateWorkflowStatusAction activeWsAction;
private final StashedRegistriesPresentGuard oblAdmGuard = new StashedRegistriesPresentGuard( private final StashedRegistriesPresentGuard oblAdmGuard = new StashedRegistriesPresentGuard(
DataEnum.obligationAdmissionStashedRgs DataEnum.obligationAdmissionStashedRgs
); );
@ -94,10 +97,20 @@ public class PrimaryAuctionT0SessionStateMachineConfig
InspectionObligationsV2Action inspectionObligationsV2Action, InspectionObligationsV2Action inspectionObligationsV2Action,
FormingPaymentInstructionSecuritiesAction formingPaymentInstructionSecuritiesAction, FormingPaymentInstructionSecuritiesAction formingPaymentInstructionSecuritiesAction,
AgainReviseStage3Action againRevise, AgainReviseStage3Action againRevise,
FinishingSessionAction finishingSessionAction, EndStageNotificationAction endStageNotificationAction, SaveRegistriesAndContinueAction obligationAdmissionContinueAction, @Qualifier("marketCodesForT0Primary") Supplier<List<String>> marketCodes FinishingSessionAction finishingSessionAction,
EndStageNotificationAction endStageNotificationAction,
SaveRegistriesAndContinueAction obligationAdmissionContinueAction,
@Qualifier("marketCodesForT0Primary")
Supplier<List<String>> marketCodes,
@Qualifier("pauseWorkflowStatusAction")
UpdateWorkflowStatusAction pauseWsAction,
@Qualifier("activeWorkflowStatusAction")
UpdateWorkflowStatusAction activeWsAction
) { ) {
this.sendSdf56Action = sendSdf56Action; this.sendSdf56Action = sendSdf56Action;
this.sessionImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Session, Session.class); this.sessionImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Session, Session.class);
this.pauseWsAction = pauseWsAction;
this.activeWsAction = activeWsAction;
Imdg<ExecutionFond> executionFondImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ExecutionFond, ExecutionFond.class); Imdg<ExecutionFond> executionFondImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ExecutionFond, ExecutionFond.class);
this.againRevise = againRevise; this.againRevise = againRevise;
this.obligationAdmissionContinueAction = obligationAdmissionContinueAction; this.obligationAdmissionContinueAction = obligationAdmissionContinueAction;
@ -199,6 +212,7 @@ public class PrimaryAuctionT0SessionStateMachineConfig
.source(TaskType.ObligationsAdmission) .source(TaskType.ObligationsAdmission)
.target(TaskType.PSEUDO_waitAfterObligationAdmissionError) .target(TaskType.PSEUDO_waitAfterObligationAdmissionError)
.guard(oblAdmGuard) .guard(oblAdmGuard)
.action(pauseWsAction)
.and() .and()
.withExternal() .withExternal()
.source(TaskType.ObligationsAdmission).target(TaskType.InclusionToPool) .source(TaskType.ObligationsAdmission).target(TaskType.InclusionToPool)
@ -210,12 +224,12 @@ public class PrimaryAuctionT0SessionStateMachineConfig
transitions transitions
.withExternal() .withExternal()
.source(TaskType.PSEUDO_waitAfterObligationAdmissionError).target(TaskType.InclusionToPool) .source(TaskType.PSEUDO_waitAfterObligationAdmissionError).target(TaskType.InclusionToPool)
.action(chain(obligationAdmissionContinueAction, inclusionToPoolAction)) .action(chain(activeWsAction, obligationAdmissionContinueAction, inclusionToPoolAction))
.event(SsnEvent.CONTINUE) .event(SsnEvent.CONTINUE)
.and() .and()
.withExternal() .withExternal()
.source(TaskType.PSEUDO_waitAfterObligationAdmissionError).target(TaskType.ObligationsAdmission) .source(TaskType.PSEUDO_waitAfterObligationAdmissionError).target(TaskType.ObligationsAdmission)
.action(chain(discardOblAdmStash, obligationAdmissionAction)) .action(chain(activeWsAction, discardOblAdmStash, obligationAdmissionAction))
.event(SsnEvent.REPEAT); .event(SsnEvent.REPEAT);
} }

View file

@ -36,6 +36,7 @@ import ru.spcex.clearing.session.state.action.ReviseStage1Action;
import ru.spcex.clearing.session.state.action.SaveRegistriesAndContinueAction; import ru.spcex.clearing.session.state.action.SaveRegistriesAndContinueAction;
import ru.spcex.clearing.session.state.action.Sdf56Action; import ru.spcex.clearing.session.state.action.Sdf56Action;
import ru.spcex.clearing.session.state.action.SdfReceivedAction; import ru.spcex.clearing.session.state.action.SdfReceivedAction;
import ru.spcex.clearing.session.state.action.UpdateWorkflowStatusAction;
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.SdfGuard;
@ -69,10 +70,12 @@ public class SecondaryAuctionT0SessionStateMachineConfig
private final AgainReviseStage3Action againRevise; private final AgainReviseStage3Action againRevise;
private final FinishingSessionAction finishingSessionAction; private final FinishingSessionAction finishingSessionAction;
private final EndStageNotificationAction endStageNotificationAction; private final EndStageNotificationAction endStageNotificationAction;
private final SaveRegistriesAndContinueAction obligationAdmissionContinueAction; private final SaveRegistriesAndContinueAction obligationAdmissionContinueAction;
private final DiscardRegistriesAction discardOblAdmStash = private final DiscardRegistriesAction discardOblAdmStash =
new DiscardRegistriesAction(DataEnum.obligationAdmissionStashedRgs); new DiscardRegistriesAction(DataEnum.obligationAdmissionStashedRgs);
private final UpdateWorkflowStatusAction pauseWsAction;
private final UpdateWorkflowStatusAction activeWsAction;
private final StashedRegistriesPresentGuard oblAdmGuard = new StashedRegistriesPresentGuard( private final StashedRegistriesPresentGuard oblAdmGuard = new StashedRegistriesPresentGuard(
DataEnum.obligationAdmissionStashedRgs DataEnum.obligationAdmissionStashedRgs
); );
@ -97,10 +100,17 @@ public class SecondaryAuctionT0SessionStateMachineConfig
FinishingSessionAction finishingSessionAction, FinishingSessionAction finishingSessionAction,
EndStageNotificationAction endStageNotificationAction, EndStageNotificationAction endStageNotificationAction,
SaveRegistriesAndContinueAction obligationAdmissionContinueAction, SaveRegistriesAndContinueAction obligationAdmissionContinueAction,
@Qualifier("marketCodesForT0") Supplier<List<String>> marketCodes @Qualifier("marketCodesForT0")
Supplier<List<String>> marketCodes,
@Qualifier("pauseWorkflowStatusAction")
UpdateWorkflowStatusAction pauseWsAction,
@Qualifier("activeWorkflowStatusAction")
UpdateWorkflowStatusAction activeWsAction
) { ) {
this.sendSdf56Action = sendSdf56Action; this.sendSdf56Action = sendSdf56Action;
this.sessionImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Session, Session.class); this.sessionImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Session, Session.class);
this.pauseWsAction = pauseWsAction;
this.activeWsAction = activeWsAction;
Imdg<ExecutionFond> executionFondImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ExecutionFond, ExecutionFond.class); Imdg<ExecutionFond> executionFondImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ExecutionFond, ExecutionFond.class);
this.againRevise = againRevise; this.againRevise = againRevise;
this.obligationAdmissionContinueAction = obligationAdmissionContinueAction; this.obligationAdmissionContinueAction = obligationAdmissionContinueAction;
@ -202,6 +212,7 @@ public class SecondaryAuctionT0SessionStateMachineConfig
.source(TaskType.ObligationsAdmission) .source(TaskType.ObligationsAdmission)
.target(TaskType.PSEUDO_waitAfterObligationAdmissionError) .target(TaskType.PSEUDO_waitAfterObligationAdmissionError)
.guard(oblAdmGuard) .guard(oblAdmGuard)
.action(pauseWsAction)
.and() .and()
.withExternal() .withExternal()
.source(TaskType.ObligationsAdmission).target(TaskType.InclusionToPool) .source(TaskType.ObligationsAdmission).target(TaskType.InclusionToPool)
@ -213,12 +224,12 @@ public class SecondaryAuctionT0SessionStateMachineConfig
transitions transitions
.withExternal() .withExternal()
.source(TaskType.PSEUDO_waitAfterObligationAdmissionError).target(TaskType.InclusionToPool) .source(TaskType.PSEUDO_waitAfterObligationAdmissionError).target(TaskType.InclusionToPool)
.action(chain(obligationAdmissionContinueAction, inclusionToPoolAction)) .action(chain(activeWsAction, obligationAdmissionContinueAction, inclusionToPoolAction))
.event(SsnEvent.CONTINUE) .event(SsnEvent.CONTINUE)
.and() .and()
.withExternal() .withExternal()
.source(TaskType.PSEUDO_waitAfterObligationAdmissionError).target(TaskType.ObligationsAdmission) .source(TaskType.PSEUDO_waitAfterObligationAdmissionError).target(TaskType.ObligationsAdmission)
.action(chain(discardOblAdmStash, obligationAdmissionAction)) .action(chain(activeWsAction, discardOblAdmStash, obligationAdmissionAction))
.event(SsnEvent.REPEAT); .event(SsnEvent.REPEAT);
} }

View file

@ -36,6 +36,7 @@ import ru.spcex.clearing.session.state.action.ReviseStage1Action;
import ru.spcex.clearing.session.state.action.SaveRegistriesAndContinueAction; import ru.spcex.clearing.session.state.action.SaveRegistriesAndContinueAction;
import ru.spcex.clearing.session.state.action.Sdf56Action; import ru.spcex.clearing.session.state.action.Sdf56Action;
import ru.spcex.clearing.session.state.action.SdfReceivedAction; import ru.spcex.clearing.session.state.action.SdfReceivedAction;
import ru.spcex.clearing.session.state.action.UpdateWorkflowStatusAction;
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.SdfGuard;
@ -73,6 +74,9 @@ public class UnitedSessionStateMachineConfig
private final FinishingSessionAction finishingSessionAction; private final FinishingSessionAction finishingSessionAction;
private final DiscardRegistriesAction discardOblAdmStash = private final DiscardRegistriesAction discardOblAdmStash =
new DiscardRegistriesAction(DataEnum.obligationAdmissionStashedRgs); new DiscardRegistriesAction(DataEnum.obligationAdmissionStashedRgs);
private final UpdateWorkflowStatusAction pauseWsAction;
private final UpdateWorkflowStatusAction activeWsAction;
private final StashedRegistriesPresentGuard oblAdmGuard = new StashedRegistriesPresentGuard( private final StashedRegistriesPresentGuard oblAdmGuard = new StashedRegistriesPresentGuard(
DataEnum.obligationAdmissionStashedRgs DataEnum.obligationAdmissionStashedRgs
); );
@ -94,7 +98,11 @@ public class UnitedSessionStateMachineConfig
SaveRegistriesAndContinueAction obligationAdmissionContinueAction, SaveRegistriesAndContinueAction obligationAdmissionContinueAction,
FinishingSessionAction finishingSessionAction, FinishingSessionAction finishingSessionAction,
@Qualifier("marketCodesForCurr") Supplier<List<String>> marketCodesCurr, @Qualifier("marketCodesForCurr") Supplier<List<String>> marketCodesCurr,
@Qualifier("marketCodesForT0") Supplier<List<String>> marketCodesTrdt) { @Qualifier("marketCodesForT0") Supplier<List<String>> marketCodesTrdt,
@Qualifier("pauseWorkflowStatusAction")
UpdateWorkflowStatusAction pauseWsAction,
@Qualifier("activeWorkflowStatusAction")
UpdateWorkflowStatusAction activeWsAction) {
this.sessionImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Session, Session.class); this.sessionImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Session, Session.class);
this.sendSdf56Action = sendSdf56Action; this.sendSdf56Action = sendSdf56Action;
this.reviseStage1Action = reviseStage1Action; this.reviseStage1Action = reviseStage1Action;
@ -109,6 +117,8 @@ public class UnitedSessionStateMachineConfig
this.againRevise = againRevise; this.againRevise = againRevise;
this.obligationAdmissionContinueAction = obligationAdmissionContinueAction; this.obligationAdmissionContinueAction = obligationAdmissionContinueAction;
this.finishingSessionAction = finishingSessionAction; this.finishingSessionAction = finishingSessionAction;
this.pauseWsAction = pauseWsAction;
this.activeWsAction = activeWsAction;
{ {
Imdg<ExecutionFond> executionFondImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ExecutionFond, ExecutionFond.class); Imdg<ExecutionFond> executionFondImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_ExecutionFond, ExecutionFond.class);
@ -206,6 +216,7 @@ public class UnitedSessionStateMachineConfig
.source(TaskType.ObligationsAdmission) .source(TaskType.ObligationsAdmission)
.target(TaskType.PSEUDO_waitAfterObligationAdmissionError) .target(TaskType.PSEUDO_waitAfterObligationAdmissionError)
.guard(oblAdmGuard) .guard(oblAdmGuard)
.action(pauseWsAction)
.and() .and()
.withExternal() .withExternal()
.source(TaskType.ObligationsAdmission).target(TaskType.InclusionToPool) .source(TaskType.ObligationsAdmission).target(TaskType.InclusionToPool)
@ -217,12 +228,12 @@ public class UnitedSessionStateMachineConfig
transitions transitions
.withExternal() .withExternal()
.source(TaskType.PSEUDO_waitAfterObligationAdmissionError).target(TaskType.InclusionToPool) .source(TaskType.PSEUDO_waitAfterObligationAdmissionError).target(TaskType.InclusionToPool)
.action(chain(obligationAdmissionContinueAction, inclusionToPoolAction)) .action(chain(activeWsAction, obligationAdmissionContinueAction, inclusionToPoolAction))
.event(SsnEvent.CONTINUE) .event(SsnEvent.CONTINUE)
.and() .and()
.withExternal() .withExternal()
.source(TaskType.PSEUDO_waitAfterObligationAdmissionError).target(TaskType.ObligationsAdmission) .source(TaskType.PSEUDO_waitAfterObligationAdmissionError).target(TaskType.ObligationsAdmission)
.action(chain(discardOblAdmStash, obligationAdmissionAction)) .action(chain(activeWsAction, discardOblAdmStash, obligationAdmissionAction))
.event(SsnEvent.REPEAT); .event(SsnEvent.REPEAT);
} }

View file

@ -0,0 +1,34 @@
package ru.spcex.clearing.session.state.action;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.statemachine.StateContext;
import ru.clearing.classes.statics.data.misc.Session;
import ru.spcex.clearing.imdg.IMDGDistributedNames;
import ru.spcex.clearing.session.stage.TaskType;
import ru.spcex.clearing.session.state.DataEnum;
import ru.spcex.clearing.session.state.SsnEvent;
import ru.spcex.platform.enumeration.WorkflowStatus;
import ru.spcex.platform.imdg.api.Imdg;
import ru.spcex.platform.imdg.api.ImdgProvider;
public class UpdateWorkflowStatusAction extends AbstractSessionActionForOkErrorHandling {
private final Logger log = LoggerFactory.getLogger(getClass());
private final Imdg<Session> ssnImdg;
private final WorkflowStatus status;
public UpdateWorkflowStatusAction(ImdgProvider imdgProvider, WorkflowStatus ws) {
this.ssnImdg = imdgProvider.getImdg(IMDGDistributedNames.Map_Session, Session.class);
this.status = ws;
}
@Override
protected void actualExecute(StateContext<TaskType, SsnEvent> ctx) {
Session session = ctx.getExtendedState().get(DataEnum.session, Session.class);
if (status == null)
throw new IllegalStateException("status must be set for %s action".formatted(getClass()));
session.setWorkflowStatus(status.getKey());
log.info("updating session status to {}", status);
ssnImdg.update(session);
}
}

View file

@ -0,0 +1,25 @@
package ru.spcex.clearing.session.state.action;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import ru.spcex.platform.enumeration.WorkflowStatus;
import ru.spcex.platform.imdg.api.ImdgProvider;
@Configuration
public class WorkflowStatusConfiguration {
private final ImdgProvider imdgProvider;
public WorkflowStatusConfiguration(ImdgProvider imdgProvider) {
this.imdgProvider = imdgProvider;
}
@Bean("pauseWorkflowStatusAction")
public UpdateWorkflowStatusAction pauseWorkflowStatusAction() {
return new UpdateWorkflowStatusAction(imdgProvider, WorkflowStatus.Pause);
}
@Bean("activeWorkflowStatusAction")
public UpdateWorkflowStatusAction activeWorkflowStatusAction() {
return new UpdateWorkflowStatusAction(imdgProvider, WorkflowStatus.Active);
}
}

View file

@ -4,6 +4,7 @@ import ru.spcex.platform.utils.enumeration.IEnumKey;
public enum WorkflowStatus implements IEnumKey { public enum WorkflowStatus implements IEnumKey {
Active("ACTV"), Active("ACTV"),
Pause("PAUS"),
Blocked("BLKD"); Blocked("BLKD");
private final String key; private final String key;