public ISagaModel Build() { builder. Name(nameof(IfElseSagaBuilder)). Start <CreateIfElseSagaEvent>(). TransitionTo <Init>(). During <Init>(). When <Test1Event>(). HandleBy <Test1EventHandler>(). If(c => c.Data.Condition == 1, b => b. Then(c => c.Data.Value1 = new TrueValue())). TransitionTo <SecondState>(). During <Init>(). When <Test2Event>(). HandleBy <Test2EventHandler>(). If(c => c.Data.Condition == 1, b => b. Then(c => c.Data.Value1 = new TrueValue())). TransitionTo <SecondState>(). During <Init>(). When <Test3Event>(). HandleBy <Test3EventHandler>(). If(c => c.Data.Condition == 1, b => b. Then(c => c.Data.Value1 = new TrueValue())). Else(b => b. Then(c => c.Data.Value1 = new FalseValue())). TransitionTo <SecondState>(); return(builder. Build()); }
public ISagaModel Build() { builder. Name(nameof(WhileSagaBuilder)). Start <CreateWhileSagaEvent>(). TransitionTo <Init>(). During <Init>(). When <Test1Event>(). HandleBy <Test1EventHandler>(). While(c => c.Data.Counter > 0, b => b. Then(c => c.Data.Value += 10). Then(c => c.Data.Counter--)). TransitionTo <SecondState>(). During <Init>(). When <Test2Event>(). HandleBy <Test2EventHandler>(). While(c => c.Data.Counter > 0, b => b. Then(c => c.Data.Value += 10). Then(c => c.Data.Counter--)). Then(c => c.Data.SecondValue = 1). Then(c => throw new System.Exception("!!!")); return(builder. Build()); }
public ISagaModel Build() { builder. Name(nameof(IfElseIfElseSagaBuilder)). Start <CreateIfElseSagaEvent>(). TransitionTo <Init>(). During <Init>(). When <Test4Event>(). HandleBy <Test4EventHandler>(). If(c => c.Data.Condition == 1, b => b. Then(c => c.Data.Value1 = 1)). ElseIf(c => c.Data.Condition == 2, b => b. Then(c => c.Data.Value1 = 2)). ElseIf(c => c.Data.Condition == 3, b => b. If(c => c.Data.SubCondition == 0, b => b. Then(c => c.Data.Value1 = 3)). Else(b => b. Then(c => c.Data.Value1 = 33))). ElseIf(c => c.Data.Condition == 4, b => b. If(c => c.Data.SubCondition == 1, b => b. Then(c => c.Data.Value1 = 4))). ElseIf(c => c.Data.Condition == 5, b => b. Then(c => c.Data.Value1 = 5)). Else(b => b. Then(c => c.Data.Value1 = 100)); return(builder. Build()); }
public ISagaModel Build() { builder. Name(nameof(ChildStepsSagaBuilder)); builder. Start <SagaCreateWithDoStepEvent>(). Do(b => b. Then <InnerActivity1>(). Do(b => b. Then <InnerActivity2>()). Then <InnerActivity3>()). TransitionTo <Init>(); builder. Start <SagaCreateWithIfStepEvent>(). Then <InnerActivity1>(). If <Condition1>(b => b. Then <InnerActivity1>(). Then <InnerActivity3>()). TransitionTo <Init>(); return(builder. Build()); }
public ISagaModel Build() { builder. Start <CreatedEvent>(). HandleBy <CreatedEventHandler>("CreatedEventStep0"). ThenAsync( "CreatedEventStep1", ctx => Task.Delay(TimeSpan.FromSeconds(1))). Then( "CreatedEventStep2", ctx => Task.Delay(TimeSpan.FromSeconds(1))). Finish(); return(builder. Build()); }
public ISagaModel Build() { builder. Start <CreatedEvent, CreatedEventHandler>(). ThenAsync(ctx => Task.Delay(TimeSpan.FromSeconds(1))). TransitionTo <New>(); builder. During <New>(). When <UpdatedEvent>(). HandleBy <UpdatedEventHandler>(). ThenAsync(ctx => Task.Delay(TimeSpan.FromSeconds(5))). Finish(); return(builder. Build()); }
public ISagaModel Build() { builder. Name(nameof(TransitionsSagaBuilder)); builder. Start <CreateEvent>(). TransitionTo <Init>(); builder. During <Init>(). When <InvalidUpdateEvent>(). TransitionTo <SecondState>(). Then(ctx => { throw new Exception(); }). // RetryBy<InvalidUpdateEvent>(). Finish(); return(builder. Build()); }
public ISagaModel Build() { builder. Name(nameof(OrderSagaBuilder)); builder. Start <OrderCreatedEvent, OrderCreatedEventHandler>("OrderCreatedEventStep0"). Then("OrderCreatedEventStep1", ctx => Task.CompletedTask). TransitionTo <StateCreated>(); builder. During <StateCreated>(). When <OrderCompletedEvent>(). Then("OrderCompletedEventStep1", ctx => Task.CompletedTask). Then <SendEmailToClientEvent>("email"). Then <SendMessageToTheManagerEvent>("SendMessageToTheManagerEventStep"). Then <OrderCourierEvent>("OrderCourierEventStep"). TransitionTo <StateCompleted>(); builder. During <StateCompleted>(). When <OrderSendEvent>(). Then("OrderSendEventStep1", ctx => Task.CompletedTask). TransitionTo <StateOrderSend>(); builder. During <StateOrderSend>(). When <DeliveredEvent>(). Then("DeliveredEventStep1", ctx => Task.CompletedTask). Finish(); builder. During <StateCreated>(). When <ToAlternative1Event>(). TransitionTo <StateAlternative1>(). When <ToAlternative2Event>(). TransitionTo <StateAlternative2>(); return(builder. Build()); }
public ISagaModel Build() { builder. Name(nameof(ResumeSagaBuilder)). Settings(b => b. OnResumeDoCurrentStepCompensation(). InHistoryStoreOnlyCurrentStep()). Start <CreateEvent>(). TransitionTo <Init>(). Start <CreateWithBreakEvent>(). Then(async ctx => { if (ResumeSagaSettings.StopSagaExecution) { await ctx.Stop(); } }). TransitionTo <Init>(). Start <CreateWithErrorEvent>(). Then(async ctx => { if (ResumeSagaSettings.StopSagaExecution) { await ctx.Stop(); } }). Then(async ctx => throw new System.Exception("!!!")). During <Init>(). When <ResumeSagaUpdateEvent>(). Then(async ctx => { if (ResumeSagaSettings.StopSagaExecution) { await ctx.Stop(); } }). TransitionTo <SecondState>(); return(builder. Build()); }
public ISagaModel Build() { builder. Name(nameof(SendTestsBuilder)); builder. Start <SendCreateEvent>(). TransitionTo <Init>(); builder. Start <SendAlternativeCreateEvent>(). TransitionTo <AkternativeInit>(); builder. During <Init>(). When <TestSendActionEvent>(). Publish <SendAlternativeCreateEvent>((ctx, ev) => ctx.Data.CreatedSagaID = ev.ID = Guid.NewGuid()). TransitionTo <AfterInit>(); return(builder. Build()); }
public ISagaModel Build() { builder. Name(nameof(ResumeSagaBuilder)). Settings(b => b. OnResumeDoCurrentStepCompensation(). InHistoryStoreOnlyCurrentStep()). Start <CreateEvent>(). TransitionTo <InitState>(). Start <CreateNewSaga>(). HandleBy <CreateNewSagaHandler1>(). HandleBy <CreateNewSagaHandler2>(). HandleBy <CreateNewSagaHandler3>(). Then(async ctx => { }). /*Then(async ctx => { }). * Then(async ctx => { }). * Then(async ctx => * { * if (ResumeSagaSettings.StopSagaExecution) await ctx.Stop(); * if (ResumeSagaSettings.ThrowError) throw new System.Exception("!!"); * }).*/ TransitionTo <SecondState>(). Start <CreateWithBreakEvent>(). Then(async ctx => { if (ResumeSagaSettings.StopSagaExecution) { await ctx.Stop(); } }). TransitionTo <InitState>(). Start <CreateWithErrorEvent>(). Then(async ctx => { if (ResumeSagaSettings.StopSagaExecution) { await ctx.Stop(); } }). Then(async ctx => throw new System.Exception("!!!")). During <InitState>(). When <ResumeSagaUpdateEvent>(). Then(async ctx => { if (ResumeSagaSettings.StopSagaExecution) { await ctx.Stop(); } }). TransitionTo <SecondState>(). When <CreateNewSagaEvent>(). Publish <CreateNewSaga>((data, @event) => { @event.ID = (data.ExecutionState.CurrentEvent as CreateNewSagaEvent).NewID; }). Then(async ctx => { if (ResumeSagaSettings.StopSagaExecution) { await ctx.Stop(); } }). TransitionTo <SecondState>(); return(builder. Build()); }
public ISagaModel Build() { builder. Name(nameof(InvalidSagaBuilder)); builder. Start <InvalidCreatedEvent, InvalidCreatedEventHandler>(). ThenAsync( "InvalidCreatedEvent1", ctx => Task.CompletedTask, ctx => Task.CompletedTask). Then( "InvalidCreatedEvent2", ctx => throw new TestSagaException("error"), ctx => Task.CompletedTask). Finish(); builder. Start <ValidCreatedEvent, ValidCreatedEventHandler>(). TransitionTo <StateCreated>(); builder. During <StateCreated>(). When <InvalidUpdateEvent>(). ThenAsync( "InvalidUpdateEvent1", ctx => Task.CompletedTask, ctx => Task.CompletedTask). Then( "InvalidUpdateEvent2", ctx => Task.CompletedTask, ctx => Task.CompletedTask). Then( "InvalidUpdateEvent3", ctx => throw new TestSagaException("error"), ctx => Task.CompletedTask). Finish(); builder. During <StateCreated>(). When <InvalidCompensationEvent>(). ThenAsync( "InvalidCompensationEventStep1", ctx => Task.CompletedTask, ctx => Task.CompletedTask). Then( "InvalidCompensationEventStep2", ctx => Task.CompletedTask, ctx => Task.CompletedTask). Then( "InvalidCompensationEventStep3", ctx => throw new TestSagaException("error"), ctx => throw new TestCompensationException("compensation error")). Finish(); builder. During <StateCreated>(). When <ValidUpdateEvent>(). TransitionTo <StateUpdated>(); return(builder. Build()); }