Exemplo n.º 1
0
        public async Task Execute(FutureConsumeContext <TInput> context)
        {
            var factory = context.GetStateMachineActivityFactory();

            IItineraryPlanner <TInput> itineraryPlanner = factory.GetService <IItineraryPlanner <TInput> >(context);

            var trackingNumber = NewId.NextGuid();

            var builder = new RoutingSlipBuilder(trackingNumber);

            builder.AddVariable(nameof(FutureConsumeContext.FutureId), context.FutureId);

            builder.AddSubscription(context.ReceiveContext.InputAddress, RoutingSlipEvents.Completed | RoutingSlipEvents.Faulted);

            await itineraryPlanner.PlanItinerary(context, builder).ConfigureAwait(false);

            var routingSlip = builder.Build();

            await context.Execute(routingSlip).ConfigureAwait(false);

            if (TrackRoutingSlip)
            {
                context.Instance.Pending.Add(trackingNumber);
            }
        }
 public ExecuteRoutingSlipFutureActivity(IItineraryPlanner <T> planner)
 {
     _planner = planner;
 }