Ejemplo n.º 1
0
        private async Task HandleFaultedExecutionAsync(ActivityExecutionContext context, Exception exception)
        {
            var signalRConnectionId = context.WorkflowExecutionContext.WorkflowInstance.GetMetadata("signalRConnectionId")?.ToString();

            if (string.IsNullOrWhiteSpace(signalRConnectionId))
            {
                return;
            }

            var innerException = exception;

            while (innerException?.InnerException != null)
            {
                innerException = innerException.InnerException;
            }

            var message = new WorkflowTestMessage
            {
                WorkflowInstanceId = context.WorkflowInstance.Id,
                CorrelationId      = context.CorrelationId,
                ActivityId         = context.ActivityId,
                Error = innerException?.ToString()
            };

            message.WorkflowStatus = message.Status = "Failed";
            await _workflowTestService.DispatchMessage(signalRConnectionId, message);
        }
Ejemplo n.º 2
0
        public async Task Handle(ActivityExecutionResultExecuted notification, CancellationToken cancellationToken)
        {
            var context = notification.ActivityExecutionContext;

            var signalRConnectionId = context.WorkflowExecutionContext.WorkflowInstance.GetMetadata("signalRConnectionId")?.ToString();

            if (string.IsNullOrWhiteSpace(signalRConnectionId))
            {
                return;
            }

            var data = new JObject
            {
                ["Outcomes"] = JToken.FromObject(context.Outcomes)
            };

            if (context.Input != null)
            {
                data["Input"] = JToken.FromObject(context.Input);
            }


            var activityData = context.WorkflowInstance.ActivityData.FirstOrDefault(x => x.Key == notification.ActivityExecutionContext.ActivityId).Value;

            var message = new WorkflowTestMessage
            {
                ActivityType       = context.ActivityBlueprint.Type,
                WorkflowInstanceId = context.WorkflowInstance.Id,
                CorrelationId      = context.CorrelationId,
                ActivityId         = context.ActivityId,
                WorkflowStatus     = context.WorkflowExecutionContext.Status == WorkflowStatus.Running
                    ? "Executed"
                    : context.WorkflowExecutionContext.Status.ToString(),
                Data         = JsonConvert.SerializeObject(data, Formatting.Indented),
                Status       = GetExecutionResult(notification.Result),
                ActivityData = activityData
            };

            await _workflowTestService.DispatchMessage(signalRConnectionId, message);
        }
Ejemplo n.º 3
0
 public async Task DispatchMessage(string signalRConnectionId, WorkflowTestMessage message)
 {
     await _hubContext.Clients.Client(signalRConnectionId).SendAsync("DispatchMessage", message);
 }