public async Task Evaluate()
        {
            var builder = CreateRoutingSlipBuilder(_routingSlip);

            Build(builder);

            var routingSlip = builder.Build();

            await _publisher.PublishRoutingSlipActivityFaulted(_executeContext.ActivityName, _executeContext.ExecutionId, _executeContext.Timestamp,
                                                               _elapsed, _exceptionInfo, routingSlip.Variables, _activity.Arguments).ConfigureAwait(false);

            if (HasCompensationLogs(routingSlip))
            {
                await _executeContext.Forward(routingSlip.GetNextCompensateAddress(), routingSlip).ConfigureAwait(false);
            }
            else
            {
                var faultedTimestamp = _executeContext.Timestamp + _elapsed;
                var faultedDuration  = faultedTimestamp - routingSlip.CreateTimestamp;

                await _publisher.PublishRoutingSlipFaulted(faultedTimestamp, faultedDuration, routingSlip.Variables, _activityException).ConfigureAwait(false);
            }
        }
Esempio n. 2
0
        public async Task Evaluate()
        {
            RoutingSlipBuilder builder = CreateRoutingSlipBuilder(_routingSlip);

            Build(builder);

            RoutingSlip routingSlip = builder.Build();

            await PublishActivityEvents(routingSlip, builder).ConfigureAwait(false);

            if (HasNextActivity(routingSlip))
            {
                ISendEndpoint endpoint = await _context.GetSendEndpoint(routingSlip.GetNextExecuteAddress()).ConfigureAwait(false);

                await _context.Forward(endpoint, routingSlip).ConfigureAwait(false);
            }
            else
            {
                DateTime completedTimestamp = _context.Timestamp + _duration;
                TimeSpan completedDuration  = completedTimestamp - _routingSlip.CreateTimestamp;

                await _publisher.PublishRoutingSlipCompleted(completedTimestamp, completedDuration, routingSlip.Variables).ConfigureAwait(false);
            }
        }