public void Setup()
        {
            _builder = new HistoryEventsBuilder();
            var signaledEvent = _builder.WorkflowSignaledEvent("name", "input", "externalWorkflowRunid", "externalWorkflowRunid");

            _workflowSignaledEvent = new WorkflowSignaledEvent(signaledEvent);
        }
Пример #2
0
        public void Throws_exception_when_two_signal_method_exists_for_same_signal_name_property()
        {
            var expectedAction        = new Mock <WorkflowAction>().Object;
            var workflowSignaledEvent = new WorkflowSignaledEvent(_graphBuilder.WorkflowSignaledEvent("signal1", "input"));

            Assert.Throws <AmbiguousWorkflowMethodException>(() => workflowSignaledEvent.Interpret(new WorkflowWithTwoSignalMethodsForSameSignalName(expectedAction)));
        }
Пример #3
0
        public void Replying_to_a_signal_returns_signal_workflow_workflow()
        {
            var receivedSignalEvent = new WorkflowSignaledEvent(_eventGraphBuilder.WorkflowSignaledEvent("someName", "input1", "rid", "wid"));

            var decisions = _signal.ReplyTo(receivedSignalEvent).Decisions(Mock.Of <IWorkflow>());

            Assert.That(decisions, Is.EqualTo(new [] { new SignalWorkflowDecision(SignalName, SignalInput, "wid", "rid") }));
        }
Пример #4
0
 public WorkflowAction Confirmed(WorkflowSignaledEvent signal, string signalName)
 {
     if (Lambda("ConfirmEmail").IsWaitingForSignal(signalName))
     {
         return(Lambda("ConfirmEmail").Resume(signal));
     }
     return(Ignore);
 }
        public void By_default_returns_workflow_ignore_action()
        {
            var workflowSignaledEvent = new WorkflowSignaledEvent(_builder.WorkflowSignaledEvent("name", "input"));

            var workflowAction = workflowSignaledEvent.Interpret(new EmptyWorkflow());

            Assert.That(workflowAction.GetDecisions(), Is.Empty);
        }
        public void Workflow_can_reply_to_signal_event()
        {
            var workflowSignaledEvent = new WorkflowSignaledEvent(_builder.WorkflowSignaledEvent("name", "input", "runid", "wid"));

            var decisions = workflowSignaledEvent.Interpret(new WorkflowToReplyToSignalEvent("newSignal", "newInput")).GetDecisions();

            Assert.That(decisions, Is.EqualTo(new [] { new SignalWorkflowDecision("newSignal", "newInput", workflowSignaledEvent.ExternalWorkflowId, workflowSignaledEvent.ExternalWorkflowRunid) }));
        }
Пример #7
0
        public void Is_triggered_false_data()
        {
            var signalEvent = new WorkflowSignaledEvent(_graphBuilder.WorkflowSignaledEvent(SignalName.ToUpper(), "input"));

            _workflow.SetupGet(w => w.CurrentlyExecutingEvent).Returns(signalEvent);

            Assert.That(_signal.IsTriggered(d => d == "data"), Is.False);
        }
Пример #8
0
        public void Signal_can_be_handled_using_matching_signal_method()
        {
            var expectedAction        = new Mock <WorkflowAction>().Object;
            var workflowSignaledEvent = new WorkflowSignaledEvent(_graphBuilder.WorkflowSignaledEvent("signal1", "input"));

            var workflowAction = workflowSignaledEvent.Interpret(new WorkflowWithSignalAttribute(expectedAction));

            Assert.That(workflowAction, Is.EqualTo(expectedAction));
        }
Пример #9
0
        public void Signal_method_with_a_signal_name_takes_priority_over_matching_signal_method()
        {
            var expectedAction        = new Mock <WorkflowAction>().Object;
            var workflowSignaledEvent = new WorkflowSignaledEvent(_graphBuilder.WorkflowSignaledEvent("signal1", "input"));

            var workflowAction = workflowSignaledEvent.Interpret(new WorkflowWithMatchingSignalMethodAndName(expectedAction));

            Assert.That(workflowAction, Is.EqualTo(expectedAction));
        }
Пример #10
0
            public WorkflowAction InventoryUpdated(WorkflowSignaledEvent @event)
            {
                if (!Activity <OrderItemActivity>().IsActive)
                {
                    return(Jump.ToActivity <OrderItemActivity>());
                }

                return(Ignore);
            }
Пример #11
0
        public void Signal_can_be_handled_by_signal_method_by_giving_a_signal_name_property()
        {
            var expectedAction        = new Mock <WorkflowAction>().Object;
            var workflowSignaledEvent = new WorkflowSignaledEvent(_graphBuilder.WorkflowSignaledEvent("signal1", "input"));

            var workflowAction = workflowSignaledEvent.Interpret(new WorkflowWithSignalName(expectedAction));

            Assert.That(workflowAction, Is.EqualTo(expectedAction));
        }
Пример #12
0
        public void Setup()
        {
            _graphBuilder = new EventGraphBuilder();
            _builder      = new HistoryEventsBuilder();
            var signaledEvent = _graphBuilder.WorkflowSignaledEvent("name", "input", "externalWorkflowRunid", "externalWorkflowRunid");

            _workflowSignaledEvent = new WorkflowSignaledEvent(signaledEvent);
            _builder.AddProcessedEvents(_graphBuilder.WorkflowStartedEvent());
        }
        public void Can_return_custom_workflow_action()
        {
            var expectedAction        = new Mock <WorkflowAction>().Object;
            var workflowSignaledEvent = new WorkflowSignaledEvent(_builder.WorkflowSignaledEvent("name", "input"));

            var workflowAction = workflowSignaledEvent.Interpret(new WorkflowWithCustomActionOnSignal(expectedAction));

            Assert.That(workflowAction, Is.EqualTo(expectedAction));
        }
Пример #14
0
        public void Fall_back_to_generic_workflow_event_handler_when_signal_name_does_not_match()
        {
            var expectedAction        = new Mock <WorkflowAction>().Object;
            var workflowSignaledEvent = new WorkflowSignaledEvent(_graphBuilder.WorkflowSignaledEvent("signal1", "input"));

            var workflowAction = workflowSignaledEvent.Interpret(new WorkflowWithNotMatchingSignalMethod(expectedAction));

            Assert.That(workflowAction, Is.EqualTo(expectedAction));
        }
Пример #15
0
        public void Replying_to_a_signal_returns_signal_workflow_workflow()
        {
            var receivedSignalEvent = new WorkflowSignaledEvent(_builder.WorkflowSignaledEvent("someName", "input1", "rid", "wid"));
            var signalAction        = new Signal("name", "input");

            var decisions = signalAction.ReplyTo(receivedSignalEvent).GetDecisions();

            Assert.That(decisions, Is.EqualTo(new [] { new SignalWorkflowDecision("name", "input", "wid", "rid") }));
        }
        public WorkflowAction SignalEvent(WorkflowSignaledEvent @event)
        {
            if (@event.SignalName == "ItemsArrived" && Activity <ReserveOrder>().LastFailedEvent()?.Reason == "NotAvailable")
            {
                return(Jump.ToActivity <ReserveOrder>());
            }

            return(Ignore);
        }
        public void Does_not_populate_external_workflow_properties_when_not_signed_by_external_workflow()
        {
            var workflowSignaledEvent = new WorkflowSignaledEvent(_builder.WorkflowSignaledEvent("name", "input"));

            Assert.That(workflowSignaledEvent.SignalName, Is.EqualTo("name"));
            Assert.That(workflowSignaledEvent.Input, Is.EqualTo("input"));
            Assert.That(workflowSignaledEvent.ExternalWorkflowRunid, Is.Null);
            Assert.That(workflowSignaledEvent.ExternalWorkflowId, Is.Null);
            Assert.IsFalse(workflowSignaledEvent.IsSentByWorkflow);
        }
Пример #18
0
        public WorkflowAction OnSignal(WorkflowSignaledEvent @event)
        {
            //I'm a nice kid I will cancel whichever the activity in progress.
            if (@event.SignalName == "Let us have dinner")
            {
                return(CancelRequest.For(WorkflowItems.Where(i => i.IsActive)));
            }

            //I will ignore rest of the signals
            return(Ignore);
        }
Пример #19
0
            public WorkflowAction Confirmed(WorkflowSignaledEvent signal, string signalName)
            {
                WorkflowAction result = Ignore;

                foreach (var item in WaitingItems(signalName))
                {
                    result += item.Resume(signal);
                }

                return(result);
            }
Пример #20
0
        public WorkflowAction OnSignal(WorkflowSignaledEvent @event)
        {
            if (@event.SignalName == "Hello kid")
            {
                return(Signal("Hello parent", "").ReplyTo(@event));
            }

            if (@event.SignalName == "Let us have dinner")
            {
                return(CancelRequest.For(WorkflowItems.Where(i => i.IsActive)));
            }

            //I will ignore rest of the signals
            return(Ignore);
        }
Пример #21
0
        public WorkflowAction OnSignal(WorkflowSignaledEvent @event)
        {
            var kidsPlayWorkflow = ChildWorkflow <KidPlayWorkflow>();

            if (@event.SignalName == "Wife says: come for dinner")
            {
                return(kidsPlayWorkflow.IsActive
                    ? Signal("Hello kid", "").ForChildWorkflow <KidPlayWorkflow>()
                    : CompleteWorkflow("Okay coming"));
            }

            if (@event.SignalName == "Hello parent")
            {
                return(kidsPlayWorkflow.IsActive
                    ? Signal("Let us have dinner", "").ForChildWorkflow <KidPlayWorkflow>()
                    : CompleteWorkflow("Okay coming"));
            }

            //I will ignore rest of the signals
            return(Ignore);
        }
 protected WorkflowAction OnSignal(WorkflowSignaledEvent workflowSignalEvent)
 {
     return(_workflowAction);
 }
        public void Reply_to_signal_event_not_sent_by_a_workflow_generate_exception()
        {
            var workflowSignaledEvent = new WorkflowSignaledEvent(_builder.WorkflowSignaledEvent("name", "input"));

            Assert.Throws <SignalException>(() => workflowSignaledEvent.Interpret(new WorkflowToReplyToSignalEvent("newSignal", "newInput")));
        }
Пример #24
0
 public WorkflowAction UnexpectedSignal(WorkflowSignaledEvent signal)
 {
     return(Lambda("ConfirmEmail").Resume(signal));
 }
Пример #25
0
 public WorkflowAction HelloKidSignalAction(WorkflowSignaledEvent @event)
 => Signal("HelloParent", "").ReplyTo(@event);
Пример #26
0
 public WorkflowAction Confirmed(WorkflowSignaledEvent signal) => Lambda("ConfirmEmail").Resume(signal);
 protected WorkflowAction OnSignal(WorkflowSignaledEvent workflowSignalEvent)
 {
     return(Signal(_signalName, _input).ReplyTo(workflowSignalEvent));
 }