コード例 #1
0
        public void Resume_two_parallel_waiting_workflow_items_when_two_signals_are_received()
        {
            var l1 = Identity.Lambda("LambdaA1").ScheduleId();
            var l2 = Identity.Lambda("LambdaB1").ScheduleId();
            var w1 = _graphBuilder.LambdaCompletedEventGraph(l1, "input", "result");

            _builder.AddProcessedEvents(w1);
            _builder.AddProcessedEvents(_graphBuilder.WaitForSignalEvent(l1, w1.First().EventId, new[] { "Confirmed" }, SignalWaitType.Any));

            var w2 = _graphBuilder.LambdaCompletedEventGraph(l2, "input", "result");

            _builder.AddProcessedEvents(w2);
            _builder.AddProcessedEvents(_graphBuilder.WaitForSignalEvent(l2, w2.First().EventId, new[] { "Confirmed" }, SignalWaitType.Any));


            var s1 = _graphBuilder.WorkflowSignaledEvent("Confirmed", "");

            _builder.AddNewEvents(s1);
            var s2 = _graphBuilder.WorkflowSignaledEvent("Confirmed", "");

            _builder.AddNewEvents(s2);

            var workflow = new MultipleWorkflowItemsWaitingForSameSignal();
            var decision = workflow.Decisions(_builder.Result());

            Assert.That(decision, Is.EquivalentTo(new WorkflowDecision[]
            {
                new ScheduleLambdaDecision(Identity.Lambda("LambdaA2").ScheduleId(), "input"),
                new WorkflowItemSignalledDecision(l1, w1.First().EventId, "Confirmed", s1.EventId),
                new ScheduleLambdaDecision(Identity.Lambda("LambdaB2").ScheduleId(), "input"),
                new WorkflowItemSignalledDecision(l2, w2.First().EventId, "Confirmed", s2.EventId),
            }));
        }
コード例 #2
0
        public void Continue_the_executions_of_both_branches_when_two_similar_signals_are_received_along_with_two_wait_for_signal_decisions()
        {
            var l1 = Identity.Lambda("LambdaA1").ScheduleId();
            var l2 = Identity.Lambda("LambdaB1").ScheduleId();
            var w1 = _graphBuilder.LambdaCompletedEventGraph(l1, "input", "result");

            _builder.AddNewEvents(w1);
            var s1 = _graphBuilder.WorkflowSignaledEvent("Confirmed", "");

            _builder.AddNewEvents(s1);

            var w2 = _graphBuilder.LambdaCompletedEventGraph(l2, "input", "result");

            _builder.AddNewEvents(w2);

            var s2 = _graphBuilder.WorkflowSignaledEvent("Confirmed", "");

            _builder.AddNewEvents(s2);

            var workflow = new MultipleWorkflowItemsWaitingForSameSignal();
            var decision = workflow.Decisions(_builder.Result());

            Assert.That(decision, Is.EqualTo(new WorkflowDecision[]
            {
                new WaitForSignalsDecision(new WaitForSignalData {
                    ScheduleId = l1, TriggerEventId = w1.First().EventId
                }),
                new ScheduleLambdaDecision(Identity.Lambda("LambdaA2").ScheduleId(), "input"),
                new WorkflowItemSignalledDecision(l1, w1.First().EventId, "Confirmed", s1.EventId),

                new WaitForSignalsDecision(new WaitForSignalData {
                    ScheduleId = l2, TriggerEventId = w2.First().EventId
                }),
                new ScheduleLambdaDecision(Identity.Lambda("LambdaB2").ScheduleId(), "input"),
                new WorkflowItemSignalledDecision(l2, w2.First().EventId, "Confirmed", s2.EventId),
            }));
        }