Ejemplo n.º 1
0
        protected BaseStatefulServiceInstance(
            CoreDependencies coreDependencies,
            StatefulDependencies statefulDependencies) : base(coreDependencies)
        {
            _stateRepository    = statefulDependencies.StateRepository;
            _currentEnvironment = coreDependencies.EnvironmentResolver.Environment;
            CreatedDate         = ServiceClock.CurrentTime();
            ModifiedDate        = CreatedDate;

            // REMOVE THE DEFAULT VALIDATION AND REPLACE WITH THE STATEFUL VALIDATION SERVICE
            var existingValidation = PipeLine.FirstOrDefault(x => typeof(ValidationMiddleware) == x.GetType());
            var idx = PipeLine.IndexOf(existingValidation);

            PipeLine.RemoveAt(idx);
            PipeLine.Insert(idx, new StateMachineValidatorMiddleware <TTrigger>(coreDependencies.RequestValidator));

            _data   = new TData();
            Machine = new StateMachine <TState, TTrigger>(() => _data.State, s => _data.State = s);
            Machine.OnTransitionCompletedAsync(OnTransitionAction);
        }