Пример #1
0
        public async Task <Stateflow <Bar, BarState, BarAction> > GetStateflowAsync(Guid entityId, CancellationToken cancellationToken)
        {
            var entity = _repository.Get(entityId);

            if (entity == null)
            {
                throw new InvalidOperationException("Entity not found");
            }

            var stateMachine = await _stateMachineProvider.GetStateMachineAsync(entity, cancellationToken);

            return(new Stateflow <Bar, BarState, BarAction>(entity, stateMachine));
        }
Пример #2
0
        public static Task <IStateMachine <EFooState, EFooAction> > GetStateMachineAsync(
            this IStateMachineProvider provider,
            Foo entity,
            CancellationToken cancellationToken
            )
        {
            if (provider == null)
            {
                throw new ArgumentNullException(nameof(provider));
            }
            if (entity == null)
            {
                throw new ArgumentNullException(nameof(entity));
            }

            return(provider.GetStateMachineAsync <Foo, EFooState, EFooAction>(
                       entity,
                       x => x.State,
                       (x, state) => x.ChangeState(state),
                       cancellationToken
                       ));
        }