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:
parent
2aa312850d
commit
458181c5ce
|
|
@ -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>
|
||||
|
|
|
|||
Loading…
Reference in a new issue