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); }
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); }
public async Task DispatchMessage(string signalRConnectionId, WorkflowTestMessage message) { await _hubContext.Clients.Client(signalRConnectionId).SendAsync("DispatchMessage", message); }