Table of Contents

Namespace FlowOrchestrator.Core.Storage

Classes

DashboardStatistics

Aggregate counts displayed on the dashboard overview panel. Returned by GetStatisticsAsync().

FlowDefinitionRecord

Persisted representation of a flow definition stored in the database or in-memory store. The ManifestJson column holds the serialised FlowManifest.

FlowEvent

In-memory event raised during a flow run execution. Events are persisted via RecordEventAsync(IExecutionContext, IFlowDefinition, IStepInstance, FlowEvent) and stored as FlowEventRecord when event persistence is enabled.

FlowEventRecord

Persisted representation of a FlowEvent, with a monotonically increasing sequence number for ordered retrieval via IFlowEventReader.

FlowRepositoryExtensions

Helper for the dispatch-hot-path "find a flow by id" pattern.

FlowRunControlRecord

Control-plane state for a run: timeout deadline, cancellation request, and idempotency key. Written before the run starts and polled by step handlers to honour cancellation signals.

FlowRunRecord

Persisted record of a single flow run execution, including overall status and an optional list of step records (populated by GetRunDetailAsync(Guid)).

FlowScheduleState

Persisted schedule override state for a Hangfire recurring job. Allows the dashboard to pause/resume schedules and override cron expressions without modifying the code-defined flow manifest.

FlowSignalWaiter

Persisted record of a WaitForSignal step that is currently parked, awaiting an external signal. One row per (RunId, StepKey).

FlowStepAttemptRecord

Immutable audit record for a single execution attempt of a step. Multiple attempts are created when a step is retried via the dashboard.

FlowStepRecord

Persisted state of a single step within a flow run, including its latest execution outcome and the full attempt history.

OutputsRepositoryTypedExtensions

Extension methods for retrieving strongly-typed step outputs and trigger data from an IOutputsRepository.

RunTimeseriesBucket

One bucket in a run timeseries query. Counts are by terminal status; Running captures runs whose start falls in the bucket but which have not yet completed. Duration percentiles are computed across runs that have completed (CompletedAt is non-null) and started inside the bucket.

TimeseriesAggregator

In-memory bucket aggregator used by SQL store implementations to compute RunTimeseriesBucket series after streaming raw run rows back from the database. Doing percentiles in client code is significantly cheaper than asking SQL Server / PostgreSQL to evaluate PERCENTILE_CONT across a few thousand rows.

WebhookRejectionPage

Paged result from QueryAsync(WebhookRejectionQuery, CancellationToken).

WebhookRejectionQuery

Filter + pagination shape for QueryAsync(WebhookRejectionQuery, CancellationToken). All fields are optional; defaults return the most recent 50 rows including accepted entries.

WebhookRejectionRecord

One row in the webhook delivery log. Persisted by IWebhookRejectionStore for both rejected and accepted deliveries; the IsAccepted flag distinguishes the two.

Structs

SignalDeliveryResult

Result of DeliverSignalAsync(Guid, string, string, CancellationToken).

Interfaces

IFlowEventReader

Read-only interface for retrieving the ordered event log of a flow run. Implemented alongside IOutputsRepository by storage backends that support event persistence.

IFlowRepository

Read-only interface for retrieving code-registered flow definitions. The default implementation lives in FlowOrchestrator.InMemory.InMemoryFlowRepository and is populated at startup by FlowSyncHostedService from the flows registered via AddFlow<T>().

IFlowRetentionStore

Data cleanup contract called periodically by FlowRetentionHostedService to remove runs, steps, outputs, and events older than the configured TTL.

IFlowRunControlStore

Persistence contract for run-level control signals: cancellation, timeout, and idempotency. Decoupled from IFlowRunStore so control records can be written before the run is committed.

IFlowRunRuntimeStore

Runtime step-tracking store used by the orchestrator during execution to prevent duplicate step enqueuing in parallel/fan-out scenarios.

IFlowRunStore

Persistence contract for flow run lifecycle: creating runs, recording step progress, completing runs, and querying run history.

IFlowScheduleStateStore

Persists per-job schedule overrides (pause state and cron expression overrides) so they survive process restarts when FlowSchedulerOptions.PersistOverrides is enabled.

IFlowSignalStore

Persistence contract for WaitForSignal step waiters: parked steps that resume only when an external signal is delivered via the dashboard signal endpoint or programmatic call.

IFlowStore

Persistence contract for flow definitions. Implementations are provided by UseSqlServer, UsePostgreSql, and UseInMemory.

IOutputsRepository

Stores and retrieves per-run step outputs, trigger data, and events. Outputs are keyed by RunId + step key and resolved at expression-evaluation time to satisfy @outputs('stepKey') references in downstream steps.

IWebhookRejectionStore

Persistence contract for the webhook receive log + DLQ. Stores both rejected (IsAccepted false) and accepted entries so the dashboard can render a unified recent-deliveries table with precise reason chips.

IWebhookReplayStore

Persistence contract for webhook replay-attack protection. Maintains a set of (flowId, triggerKey, nonce) tuples with expiry; a successful registration means the nonce has not been seen before, a conflict means a replay attack is in progress.

Enums

RunTimeseriesGranularity

Bucket size for a run timeseries query.

SignalDeliveryStatus

Outcome of a DeliverSignalAsync(Guid, string, string, CancellationToken) attempt.