using Elsa.Workflows.Runtime.HealthChecks; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Diagnostics.HealthChecks; namespace Elsa.Extensions; /// /// Adds Elsa workflow runtime readiness checks to ASP.NET Core health checks. /// public static class HealthCheckExtensions { private static readonly string[] ReadinessTags = ["elsa", "readiness"]; /// /// Adds conservative Elsa-specific readiness probes for the workflow runtime and its core stores. /// /// The health checks builder. /// Whether to probe workflow management/runtime stores. /// Whether to probe the configured distributed lock provider. public static IHealthChecksBuilder AddElsaReadinessChecks( this IHealthChecksBuilder builder, bool includePersistence = true, bool includeDistributedLocks = false) { builder.AddCheck("elsa-runtime", tags: ReadinessTags); if (includePersistence) builder.AddCheck("elsa-workflow-persistence", tags: ReadinessTags); if (includeDistributedLocks) builder.AddCheck("elsa-distributed-locks", tags: ReadinessTags); return builder; } }