cCoder.Workflow
2026.9.4.1453
dotnet add package cCoder.Workflow --version 2026.9.4.1453
NuGet\Install-Package cCoder.Workflow -Version 2026.9.4.1453
<PackageReference Include="cCoder.Workflow" Version="2026.9.4.1453" />
<PackageVersion Include="cCoder.Workflow" Version="2026.9.4.1453" />
<PackageReference Include="cCoder.Workflow" />
paket add cCoder.Workflow --version 2026.9.4.1453
#r "nuget: cCoder.Workflow, 2026.9.4.1453"
#:package cCoder.Workflow@2026.9.4.1453
#addin nuget:?package=cCoder.Workflow&version=2026.9.4.1453
#tool nuget:?package=cCoder.Workflow&version=2026.9.4.1453
cCoder.Workflow
cCoder.Workflow contains the Workflow domain for the cCoder platform.
View the latest main-branch code coverage report
Local Configuration
Each executable binds the complete configuration root to its own
AppConfiguration. The Web and HostedServices composition roots register
CoreData, Workflow, SecurityData, Security, and Eventing side by side.
The Azure Functions app registers its required CoreData and Workflow Engine
stack.
Persistence belongs to the Data domains. WorkflowConfiguration contains only
Workflow behavior; CoreData owns the database connection, Data registration,
and migrations. Likewise, SecurityData owns the Security database and
Security contains authentication behavior. Leave secret values empty and
define these user- or machine-level environment variables:
CoreData__ConnectionStringSecurityData__ConnectionStringSecurity__DecryptionKeyEventing__ServiceBus__ConnectionStringwhen Service Bus eventing is selected
CoreData__AdminConnectionString and
SecurityData__AdminConnectionString are optional migration-only overrides. If
an admin connection is configured, startup migrations use it and normal runtime
operations continue to use the regular connection. If it is omitted, migrations
use the regular connection.
Library consumers register persistence and behavior explicitly at their own
composition root: call AddData before the Workflow domain or engine
registration; Web and HostedServices hosts also call AddSecurityData before
their Security registration. An application that consumes cCoder.Core should
use Core's composite API instead; Core deliberately composes its configured
child domains recursively.
Restart Visual Studio after changing environment variables, select the required
startup projects, and press F5. No conversion, .env file, or startup script is
required.
Functionality
The repository provides the Workflow domain packages and standalone hosts used by cCoder applications.
- Workflow web API
Exposes OData endpoints for flow definitions, flow instance data, workflow events, execution, metadata discovery, SignalR workflow progress,
/Health, and a simple root Workflow tester UI throughAddWorkflowWebandStartWorkflowWeb. - Workflow activities Provides reusable activities for API calls, DMS operations, templating, flow control, transformations, and workflow composition.
- Workflow engine
Lives in the
src/cCoder.Workflow.Enginepackage. It exposesIFlowRunner, script execution services, andAddWorkflowEngine()for apps that need to execute workflow instances. - Workflow hosted-services host
Runs background workflow event receivers, scheduled-task handlers, queued workflow handoff, instance maintenance, queue-state repair,
/Health, and a root hosted-services report throughAddWorkflowHostedServicesandStartWorkflowHostedServices. It uses the defaultcCoder.Eventing.Http/Api/Eventingdispatcher.
Contents
src/cCoder.WorkflowThe main workflow library package published to NuGet.src/cCoder.Workflow.ActivitiesShared workflow activities package published from the same repository.src/cCoder.Workflow.EngineWorkflow execution engine package consumed by the Functions app.src/Workflow.WebThe standalone API web host for the Workflow domain.src/Workflow.HostedServicesThe standalone hosted-services app for background workflow execution.src/Apps/WorkflowThe Azure Functions app that hosts thin HTTP/function triggers and delegates execution tocCoder.Workflow.Engine.src/cCoder.Workflow.TestsUnit tests for the domain.src/cCoder.Workflow.Activities.TestsUnit tests for workflow activity behaviour.src/cCoder.Workflow.Engine.TestsUnit tests for the workflow engine public exposures and orchestration wiring.src/Workflow.AcceptanceTestsAcceptance tests for the Workflow Functions app.src/Workflow.Web.AcceptanceTestsAcceptance tests for the standalone Workflow web API host.src/Workflow.HostedServices.AcceptanceTestsAcceptance tests for the standalone Workflow hosted-services host.src/cCoder.Workflow.IntegrationTestsCross-process tests for Web, Hosted Services, and Workflow execution scenarios.
Build
dotnet build src/cCoder.Workflow.slnx -v minimal
Test
dotnet test src/cCoder.Workflow.slnx -v minimal --no-build
Run Locally
Run the API host:
dotnet run --project src/Workflow.Web/Workflow.Web.csproj -c Release --launch-profile https
Once the host is running, verify readiness with:
Invoke-RestMethod https://localhost:7157/Health
Open https://localhost:7157/ to use the lightweight Workflow tester UI for flow management, definition editing, and execution handoff.
Run the hosted-services host:
dotnet run --project src/Workflow.HostedServices/Workflow.HostedServices.csproj -c Release --launch-profile https
Once the hosted-services host is running, verify readiness with:
Invoke-RestMethod https://localhost:7158/Health
Open https://localhost:7158/ to see the hosted services and event listeners registered by the app.
Run the Workflow Functions host:
func start --script-root src/Apps/Workflow --port 7071
Once the Functions host is running, verify readiness with:
Invoke-RestMethod http://localhost:7071/api/Health
Packages
The NuGet packages produced by this repository are:
cCoder.WorkflowcCoder.Workflow.ActivitiescCoder.Workflow.Engine
Repository Alignment Notes
Workflow.HostedServices intentionally uses the default cCoder.Eventing.Http controller and receive-provider pipeline. The older custom HTTP event controller override pattern should not be copied here.
Follow-up outside this repository: ccoder.Core still has the same HTTP event controller override pattern and should be cleaned up to align with the default cCoder.Eventing.Http dispatcher model.
Publishing
GitHub Actions is configured to publish the workflow library packages using NuGet trusted publishing.
Before the first publish, configure a trusted publishing policy on nuget.org for:
- Repository owner:
ccoder-co-uk - Repository:
cCoder.Workflow - Workflow file:
publish.yml
The workflow also expects a NUGET_USER repository secret containing the nuget.org profile name used during trusted publishing login.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. 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. |
-
net10.0
- cCoder.Data (>= 2026.8.28.1700)
- cCoder.Eventing (>= 2026.8.27.1708)
- cCoder.Security (>= 2026.8.28.1335)
- cCoder.Workflow.Activities (>= 2026.9.4.1453)
- Microsoft.AspNetCore.OData (>= 9.5.0)
- Microsoft.EntityFrameworkCore (>= 10.0.11)
- Microsoft.EntityFrameworkCore.Relational (>= 10.0.11)
- Swashbuckle.AspNetCore.SwaggerGen (>= 10.2.3)
- System.Linq.Dynamic.Core (>= 1.7.3)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on cCoder.Workflow:
| Package | Downloads |
|---|---|
|
cCoder.Core
cCoder.Core |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 2026.9.4.1453 | 43 | 9/4/2026 |
| 2026.9.4.1218 | 41 | 9/4/2026 |
| 2026.8.28.2208 | 102 | 8/28/2026 |
| 2026.8.27.1814 | 104 | 8/27/2026 |
| 2026.8.26.2305 | 135 | 8/26/2026 |
| 2026.8.21.1113 | 101 | 8/21/2026 |
| 2026.8.13.915 | 167 | 8/13/2026 |
| 2026.8.12.1318 | 103 | 8/12/2026 |
| 2026.8.10.1950 | 171 | 8/10/2026 |
| 2026.8.10.1404 | 95 | 8/10/2026 |
| 2026.8.10.1333 | 100 | 8/10/2026 |
| 2026.8.8.1805 | 101 | 8/8/2026 |
| 2026.8.5.147 | 249 | 8/5/2026 |
| 2026.8.4.2303 | 134 | 8/4/2026 |
| 2026.8.4.1024 | 222 | 8/4/2026 |
| 2026.8.4.37 | 121 | 8/3/2026 |
| 2026.8.1.1611 | 273 | 8/1/2026 |
| 2026.7.30.2213 | 263 | 7/30/2026 |
| 2026.7.30.1941 | 99 | 7/30/2026 |
| 2026.7.30.1806 | 149 | 7/30/2026 |