コード例 #1
0
    public void HandleOrderUsingExtensionAndTriggers(Order order)
    {
        var context = new PaymentGuardContext();
        var triggerToOrderStatePaid = "triggerToOrderStatePaid";

        var state = order.State.AsState(b =>
        {
            b.From(OrderState.Initial).To(OrderState.Paid)
            .Changing(OnTransitioningStateFromInitialToPaidHandler);

            b.TriggerTo(OrderState.Paid, triggerToOrderStatePaid);
        });

        StateMachineManager.Trigger(triggerToOrderStatePaid);

        //Assert.Equal(OrderState.Paid, order.State);
    }
コード例 #2
0
    public void HandleOrder(Order order)
    {
        var context = new PaymentGuardContext();

        var state = new State <Order, OrderState>(order, a => a.State)
                    .Define(b =>
        {
            b.From(OrderState.Initial).To(OrderState.Paid)
            .Changing(OnTransitioningStateFromInitialToPaidHandler)
            .Changed(OnTransitionedStateFromInitialToPaidHandler);

            b.From(OrderState.Paid).To(OrderState.Processed);
            b.From(OrderState.Processed).To(OrderState.Delivered);
            b.OnEnter(OrderState.Paid, Guards <OrderState> .From(context,
                                                                 ValidateRequest,
                                                                 PayToPaymentGateway,
                                                                 PersistOrderToRepository
                                                                 ));
            b.DisableSameStateTransitionFor(OrderState.Paid);
        });
        var hasChangedState = state.ChangeTo(OrderState.Paid);

        //Assert.Equal(OrderState.Paid, order.State);
    }
コード例 #3
0
 private void PersistOrderToRepository(PaymentGuardContext context)
 {
     context.Continue = true;
 }
コード例 #4
0
 private void PayToPaymentGateway(PaymentGuardContext context)
 {
     context.Continue = true;
 }
コード例 #5
0
 private void ValidateRequest(PaymentGuardContext context)
 {
     context.Continue = true;
 }