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); }
protected override void Build(FlowBuilder builder) { builder.WithDefaultFaultHandler <MyFaultHandler>(); builder.WithDefaultCancellationHandler <MyCancellationHandler>(); builder.WithInitialNode(builder.Activity <ThrowServiceClient>("ThrowService client")); }
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); }
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); }
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); }
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); }
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); }
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)); }
public static ActivityNode <DummyActivity> DummyActivity(this FlowBuilder builder) { return(builder.Activity <DummyActivity>()); }