Пример #1
0
        protected override void Build(FlowBuilder builder)
        {
            builder.WithDefaultFaultHandler <MyFaultHandler>();
            builder.WithDefaultCancellationHandler <MyCancellationHandler>();

            var act1 = builder.Activity <DelayedIncrementActivity>("Delayed");

            act1.Bind(a => a.X).To(42);

            var act2 = builder.Activity <ThrowActivity>("Throw activity");

            act1.ConnectTo(act2);

            builder.WithInitialNode(act1);
        }
Пример #2
0
        protected override void Build(FlowBuilder builder)
        {
            builder.WithDefaultFaultHandler <MyFaultHandler>();
            builder.WithDefaultCancellationHandler <MyCancellationHandler>();

            builder.WithInitialNode(builder.Activity <ThrowServiceClient>("ThrowService client"));
        }
Пример #3
0
        protected override void Build(FlowBuilder builder)
        {
            builder.WithDefaultFaultHandler <MyFaultHandler>();
            builder.WithDefaultCancellationHandler <MyCancellationHandler>();

            var forkJoin = builder.ForkJoin("My fork join node");

            var first = forkJoin.Fork <DelayedIncrementActivity>("First fork");

            first.Bind(a => a.X).To(A);

            var second = forkJoin.Fork <DelayedIncrementActivity>("Second fork");

            second.Bind(a => a.X).To(B);

            var third = forkJoin.Fork <DelayedIncrementActivity>("Third fork");

            third.Bind(a => a.X).To(C);

            var sum = builder.Activity <SumActivity>("Sum action");

            sum.Bind(x => x.A).ToResultOf(first);
            sum.Bind(x => x.B).ToResultOf(second);
            sum.Bind(x => x.C).ToResultOf(third);

            builder.WithInitialNode(forkJoin);

            forkJoin.ConnectTo(sum);
        }
Пример #4
0
        protected override void Build(FlowBuilder builder)
        {
            var inputFirst  = builder.Activity <ReadIntActivity>("Read first number");
            var inputSecond = builder.Activity <ReadIntActivity>("Read second number");

            var first = Result <int> .Of(inputFirst);

            var second = Result <int> .Of(inputSecond);

            inputSecond.OnCompletionAssign(Result, () => first.Get() + second.Get());

            builder.WithDefaultFaultHandler <MyFaultHandler>();
            builder.WithDefaultCancellationHandler <MyCancellationHandler>();
            builder.WithInitialNode(inputFirst);

            inputFirst.ConnectTo(inputSecond);
        }
Пример #5
0
        protected override void Build(FlowBuilder builder)
        {
            builder.WithDefaultFaultHandler <MyFaultHandler>();
            builder.WithDefaultCancellationHandler <MyCancellationHandler>();

            var a1 = builder.Activity <WriteMessageActivity>("1");

            a1.Bind(a => a.Message).To("1");

            var a2 = builder.Activity <WriteMessageActivity>("2");

            a2.Bind(a => a.Message).To("2");

            var conditionNode = builder
                                .If("If Number == 1", () => Number == 1)
                                .Then(a1)
                                .Else(a2);

            builder.WithInitialNode(conditionNode);
        }
Пример #6
0
        protected override void Build(FlowBuilder builder)
        {
            builder.WithDefaultFaultHandler <MyFaultHandler>();
            builder.WithDefaultCancellationHandler <MyCancellationHandler>();

            var act1 = builder.DummyActivity();
            var act2 = builder.Activity <ThrowActivity>("Throw activity");

            act1.ConnectTo(act2);

            builder.WithInitialNode(act1);
        }
        public void ErrorWhenActivityHasNoPublicConstructor()
        {
            // Arrange
            var builder   = new FlowBuilder();
            var node      = builder.Activity <ActivityWithoutPublicCtor>();
            var validator = new ActivityTypeValidator();

            // Act
            validator.Validate(builder.CreateFlow());

            // Assert
            Assert.That(validator.Result.GetErrorsOf(node), Is.Not.Empty);
        }
        public void ErrorWhenActivityIsAbstract()
        {
            // Arrange
            var builder   = new FlowBuilder();
            var node      = builder.Activity <AbstractActivity>();
            var validator = new ActivityTypeValidator();

            // Act
            validator.Validate(builder.CreateFlow());

            // Assert
            Assert.That(validator.Result.GetErrorsOf(node), Is.Not.Empty);
        }
        public void CheckRequiredInitializers()
        {
            // Arrange
            var b    = new FlowBuilder();
            var node = b.Activity <DelayedIncrementActivity>();

            var validator = new ActivityInitializationValidator();

            // Act
            validator.Validate(b.CreateFlow());

            // Assert
            Assert.That(validator.Result.GetErrorsOf(node), Is.Not.Empty);
        }
Пример #10
0
        protected override void Build(FlowBuilder builder)
        {
            builder.WithDefaultFaultHandler <MyFaultHandler>();
            builder.WithDefaultCancellationHandler <MyCancellationHandler>();

            var inputFirst  = builder.Activity <ReadIntActivity>("Read first number");
            var inputSecond = builder.Activity <ReadIntActivity>("Read second number");

            var first = Result <int> .Of(inputFirst);

            var second = Result <int> .Of(inputSecond);

            var condition = builder.Condition("If first number > second number");

            condition.WithCondition(() => first.Get() > second.Get());

            var outputWhenTrue = builder.Activity <WriteMessageActivity>("Output: first > second");

            outputWhenTrue
            .Bind(x => x.Message)
            .To(() => $"{first.Get()} > {second.Get()}");

            var outputWhenFalse = builder.Activity <WriteMessageActivity>("Output: first <= second");

            outputWhenFalse
            .Bind(x => x.Message)
            .To(() => $"{first.Get()} <= {second.Get()}");

            builder.WithInitialNode(inputFirst);

            inputFirst.ConnectTo(inputSecond);
            inputSecond.ConnectTo(condition);

            condition
            .ConnectTrueTo(outputWhenTrue)
            .ConnectFalseTo(outputWhenFalse);
        }
        public void NoErrorsWhenGood()
        {
            // Arrange
            var b    = new FlowBuilder();
            var node = b.Activity <DelayedIncrementActivity>();

            node.Bind(a => a.X).To(1);

            var validator = new ActivityInitializationValidator();

            // Act
            validator.Validate(b.CreateFlow());

            // Assert
            Assert.That(validator.Result.GetErrorsOf(node), Is.Empty);
        }
Пример #12
0
        protected override void Build(FlowBuilder builder)
        {
            builder.WithDefaultFaultHandler <MyFaultHandler>();
            builder.WithDefaultCancellationHandler <MyCancellationHandler>();

            var var = builder.Variable <int>();

            var block = builder.Block("MyBlock", (thisBlock, blockBuilder) =>
            {
                var activity = blockBuilder.Activity <ReadIntActivity>("Input number");
                var.BindToResultOf(activity);
            });

            var outputActivity = builder.Activity <WriteMessageActivity>("Output activity");

            outputActivity.Bind(x => x.Message).To(() => $"Echo: {var.CurrentValue}");

            builder.WithInitialNode(block);
            block.ConnectTo(outputActivity);
        }
        public void RunCase(Func <FlowBuilder, IFlowNode> createNode, int errorsCount)
        {
            // Arrange
            var b = new FlowBuilder();

            var f = b.FaultHandler <MyFaultHandler>();
            var c = b.Activity <MyCancellationHandler>();

            b.WithDefaultFaultHandler(f);
            b.WithDefaultCancellationHandler(c);

            var node = createNode(b);

            b.WithInitialNode(node);

            var validator = new ConnectionValidator();

            // Act
            validator.Validate(b.CreateFlow());

            // Assert
            Assert.That(validator.Result.GetErrorsOf(node).Count(), Is.EqualTo(errorsCount));
        }
Пример #14
0
 public static ActivityNode <DummyActivity> DummyActivity(this FlowBuilder builder)
 {
     return(builder.Activity <DummyActivity>());
 }