Refactor activity events with status tags helper method

Replaced inline tag creation with a helper method to streamline code and ensure consistency in status tags for activity events. This change also includes a minor comment for clarity on null activity handling.
This commit is contained in:
Sipke Schoorstra 2024-10-05 13:39:58 +02:00
parent 2aa312850d
commit 458181c5ce

View file

@ -27,9 +27,9 @@ public class OpenTelemetryTracingWorkflowExecutionMiddleware(WorkflowMiddlewareD
{
var workflowInstanceId = context.Id;
var workflow = context.Workflow;
using var activity = ElsaOpenTelemetry.ActivitySource.StartActivity($"WorkflowExecution", ActivityKind.Internal, Activity.Current?.Context ?? default);
using var activity = ElsaOpenTelemetry.ActivitySource.StartActivity("WorkflowExecution", ActivityKind.Internal, Activity.Current?.Context ?? default);
if (activity == null)
if (activity == null) // No listener is registered.
{
await Next(context);
return;
@ -42,26 +42,18 @@ public class OpenTelemetryTracingWorkflowExecutionMiddleware(WorkflowMiddlewareD
activity.SetTag("workflowDefinition.definitionId", workflow.Identity.DefinitionId);
activity.SetTag("workflowDefinition.version", workflow.Identity.Version);
activity.SetTag("workflowDefinition.name", workflow.WorkflowMetadata.Name);
activity.AddEvent(new ActivityEvent("Executing", tags: new ActivityTagsCollection(new Dictionary<string, object?>
{
["workflowInstance.status"] = context.Status.ToString(),
["workflowInstance.subStatus"] = context.SubStatus.ToString()
})));
activity.AddEvent(new ActivityEvent("Executing", tags: CreateStatusTags(context)));
await Next(context);
if (context.SubStatus == WorkflowSubStatus.Faulted)
{
activity.AddEvent(new ActivityEvent("Faulted"));
activity.AddEvent(new ActivityEvent("Faulted", tags: CreateStatusTags(context)));
activity.SetStatus(ActivityStatusCode.Error);
activity.SetTag("error", true);
}
else
{
activity.AddEvent(new ActivityEvent("Executed", tags: new ActivityTagsCollection(new Dictionary<string, object?>
{
["workflowInstance.status"] = context.Status.ToString(),
["workflowInstance.subStatus"] = context.SubStatus.ToString()
})));
activity.AddEvent(new ActivityEvent("Executed", tags: CreateStatusTags(context)));
}
if(context.Incidents.Any())
@ -79,6 +71,15 @@ public class OpenTelemetryTracingWorkflowExecutionMiddleware(WorkflowMiddlewareD
activity.SetTag("workflowExecution.durationMs", (systemClock.UtcNow - activity.StartTimeUtc).TotalMilliseconds);
}
private ActivityTagsCollection CreateStatusTags(WorkflowExecutionContext context)
{
return new ActivityTagsCollection(new Dictionary<string, object?>
{
["workflowInstance.status"] = context.Status.ToString(),
["workflowInstance.subStatus"] = context.SubStatus.ToString()
});
}
}
/// <summary>