WorkflowForge.Extensions.Observability.HealthChecks
2.0.0
dotnet add package WorkflowForge.Extensions.Observability.HealthChecks --version 2.0.0
NuGet\Install-Package WorkflowForge.Extensions.Observability.HealthChecks -Version 2.0.0
<PackageReference Include="WorkflowForge.Extensions.Observability.HealthChecks" Version="2.0.0" />
<PackageVersion Include="WorkflowForge.Extensions.Observability.HealthChecks" Version="2.0.0" />
<PackageReference Include="WorkflowForge.Extensions.Observability.HealthChecks" />
paket add WorkflowForge.Extensions.Observability.HealthChecks --version 2.0.0
#r "nuget: WorkflowForge.Extensions.Observability.HealthChecks, 2.0.0"
#:package WorkflowForge.Extensions.Observability.HealthChecks@2.0.0
#addin nuget:?package=WorkflowForge.Extensions.Observability.HealthChecks&version=2.0.0
#tool nuget:?package=WorkflowForge.Extensions.Observability.HealthChecks&version=2.0.0
WorkflowForge.Extensions.Observability.HealthChecks
<p align="center"> <img src="https://raw.githubusercontent.com/animatlabs/workflow-forge/main/icon.png" alt="WorkflowForge" width="120" height="120"> </p>
Health check integration extension for WorkflowForge compatible with Microsoft.Extensions.Diagnostics.HealthChecks.
Zero Dependencies - Zero Conflicts
This extension has ZERO external dependencies. This means:
- NO DLL Hell - No third-party dependencies to conflict with
- NO Version Conflicts - Works with any versions of your application dependencies
- Clean Deployment - Pure WorkflowForge extension
Interface-only: Implements IHealthCheck interface without requiring the full Microsoft package.
Installation
dotnet add package WorkflowForge.Extensions.Observability.HealthChecks
Requires: .NET Standard 2.0 or later
Quick Start
using WorkflowForge.Extensions.Observability.HealthChecks;
// Configure health checks
var healthCheck = new WorkflowHealthCheck(
timeProvider: new SystemTimeProvider(),
unhealthyThresholdSeconds: 30);
// Register workflow execution
smith.WorkflowStarted += (s, e) => healthCheck.RecordWorkflowExecution();
smith.WorkflowCompleted += (s, e) => healthCheck.RecordWorkflowExecution();
// Check health
var healthStatus = await healthCheck.CheckHealthAsync(new HealthCheckContext());
if (healthStatus.Status == HealthStatus.Unhealthy)
{
logger.LogWarning("WorkflowForge health check failed: {Description}",
healthStatus.Description);
}
Key Features
- ASP.NET Core Integration: Compatible with health check middleware
- Workflow Monitoring: Track workflow execution health
- Threshold-Based: Configurable unhealthy thresholds
- Time Provider Integration:
ISystemTimeProviderfor testability - No Dependencies: Interface-only implementation
ASP.NET Core Integration
// Startup.cs or Program.cs
services.AddSingleton<ISystemTimeProvider, SystemTimeProvider>();
services.AddSingleton<WorkflowHealthCheck>();
services.AddHealthChecks()
.AddCheck<WorkflowHealthCheck>("workflow_health");
app.MapHealthChecks("/health");
Configuration
var healthCheck = new WorkflowHealthCheck(
timeProvider: serviceProvider.GetRequiredService<ISystemTimeProvider>(),
unhealthyThresholdSeconds: 30);
// Subscribe to events
smith.WorkflowStarted += (s, e) => healthCheck.RecordWorkflowExecution();
smith.WorkflowCompleted += (s, e) => healthCheck.RecordWorkflowExecution();
See Configuration Guide for complete options.
Health Status Logic
- Healthy: Workflow executed within threshold (< 30 seconds by default)
- Unhealthy: No workflow execution within threshold
- Degraded: Not currently used
Custom Health Check
public class CustomWorkflowHealthCheck : IHealthCheck
{
private readonly IWorkflowSmith _smith;
private DateTime _lastExecution;
public async Task<HealthCheckResult> CheckHealthAsync(
HealthCheckContext context,
CancellationToken cancellationToken = default)
{
var timeSinceLastExecution = DateTime.UtcNow - _lastExecution;
if (timeSinceLastExecution > TimeSpan.FromMinutes(5))
{
return HealthCheckResult.Unhealthy(
$"No workflow execution in {timeSinceLastExecution.TotalMinutes:F1} minutes");
}
return HealthCheckResult.Healthy("Workflows executing normally");
}
}
Monitoring Dashboard
Health checks can be monitored via:
- ASP.NET Core
/healthendpoint - Application Insights
- Prometheus metrics
- Custom monitoring solutions
Documentation
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- WorkflowForge (>= 2.0.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Major release v2.0.0:
- Dependency isolation: Microsoft/System assemblies resolved by runtime
- ISystemTimeProvider integrated for testability
- Enhanced documentation and samples
- Enterprise-ready for production workflows