Beispiel #1
0
        public void Should_include_all_the_state_events()
        {
            _workflow = StateMachineWorkflow.New <MyActorWorkflow, MyActor>(x =>
            {
                x.AccessCurrentState(i => i.CurrentState);

                x.Initially()
                .When(w => w.Start)
                .TransitionTo(y => y.Running)
                .When(y => y.Stop)
                .TransitionTo(y => y.Stopped);

                x.During(y => y.Running)
                .When(y => y.AReceived)
                .Then(i => i.OnA)
                .When(y => y.BReceived)
                .Then(i => i.OnB)
                .When(y => y.Stop)
                .TransitionTo(y => y.Stopped);

                x.During(y => y.Stopped)
                .When(y => y.Start)
                .TransitionTo(y => y.Running)
                .When(y => y.OnExit)
                .Finalize();
            });

            _visitor = new StateMachineWorkflowEventVisitor <MyActorWorkflow, MyActor>();
            _workflow.Accept(_visitor);
        }
Beispiel #2
0
		public void Should_include_all_the_state_events()
		{
			_workflow = StateMachineWorkflow.New<MyActorWorkflow, MyActor>(x =>
				{
					x.AccessCurrentState(i => i.CurrentState);

					x.Initially()
						.When(w => w.Start)
						.TransitionTo(y => y.Running)
						.When(y => y.Stop)
						.TransitionTo(y => y.Stopped);

					x.During(y => y.Running)
						.When(y => y.AReceived)
						.Then(i => i.OnA)
						.When(y => y.BReceived)
						.Then(i => i.OnB)
						.When(y => y.Stop)
						.TransitionTo(y => y.Stopped);

					x.During(y => y.Stopped)
						.When(y => y.Start)
						.TransitionTo(y => y.Running)
						.When(y => y.OnExit)
						.Finalize();
				});

			_visitor = new StateMachineWorkflowEventVisitor<MyActorWorkflow, MyActor>();
			_workflow.Accept(_visitor);
		}
Beispiel #3
0
        static IDictionary <Event, StateMachineWorkflowEventBinder <TActor> > BuildStateEventBinders(
            StateMachineWorkflow <TWorkflow, TActor> workflow)
        {
            var visitor = new StateMachineWorkflowEventVisitor <TWorkflow, TActor>();

            workflow.Accept(visitor);

            return(visitor.GetBinders().ToDictionary(x => x.Event));
        }