Repository navigation
Getting Started
- An ASP.NET Core app on .NET 8, 9 or 10 that uses Workflow Core 3.x.
- Any Workflow Core persistence provider. Some provider features differ; see Activity journal.
The packages are attached to each GitHub release. Download them into a local feed and add them like any other package:
mkdir packages
gh release download v0.1.0 -R inferenceailab/WorkflowCore.Dashboard -p "*.nupkg" -D packages
dotnet nuget add source "$(pwd)/packages" --name wfc-dashboard
dotnet add package WorkflowCore.Dashboard --version 0.1.0
dotnet add package WorkflowCore.Dashboard.EntityFramework --version 0.1.0 # optional: keep history
dotnet add package WorkflowCore.Dashboard.Designer --version 0.1.0 # optional: visual designerusing WorkflowCore.Dashboard;
builder.Services.AddWorkflow(options => options.UseSqlServer(connectionString, canCreateDB: true));
builder.Services.AddWorkflowCoreDashboard(options =>
{
options.Title = "Orders";
});
var app = builder.Build();
app.MapWorkflowCoreDashboard("/workflows");
app.Run();Start the app and open https://localhost:<port>/workflows on the same machine. By default the dashboard only answers local requests; see step 5 to open it up.
AddWorkflowCoreDashboard must come after AddWorkflow. The dashboard does not start the Workflow Core host; your app does, as before.
Without a persistent journal, the activity feed and totals are kept in memory and the instance list uses Workflow Core's own listing. Store them in a database instead:
using Microsoft.EntityFrameworkCore;
using WorkflowCore.Dashboard.EntityFramework;
builder.Services.AddWorkflowCoreDashboard()
.UseEntityFrameworkJournal(db => db.UseSqlServer(connectionString));It works with any EF Core relational provider and can share Workflow Core's database. See Activity journal.
using WorkflowCore.Dashboard.Designer;
builder.Services.AddWorkflowCoreDashboard()
.UseEntityFrameworkJournal(db => db.UseSqlServer(connectionString))
.AddDesigner();A Designer item appears in the navigation. See Designer.
Add sign-in with your identity provider. For example, with Okta:
dotnet add package WorkflowCore.Dashboard.OpenIdConnectbuilder.Services.AddWorkflowCoreDashboard()
.UseOkta(okta =>
{
okta.Domain = "acme.okta.com";
okta.ClientId = builder.Configuration["Okta:ClientId"]!;
okta.ClientSecret = builder.Configuration["Okta:ClientSecret"];
okta.AdminGroups.Add("Workflow Admins"); // can change workflows
okta.ViewerGroups.Add("Engineering"); // can watch
});Identity providers has the setup for Okta, Entra ID, Auth0, Keycloak, Google, Cognito and others. If your app already has its own sign-in, see Security instead.
Anyone who can open the dashboard can see workflow data, and admins can change workflows: read Security before exposing it.
git clone https://github.com/inferenceailab/WorkflowCore.Dashboard.git
cd WorkflowCore.Dashboard
dotnet run --project samples/WorkflowCore.Dashboard.SampleOpen http://localhost:5290/workflows. The sample uses SQLite for Workflow Core and the journal, has the designer enabled, and runs C#, JSON and YAML workflows. It starts a new workflow every few seconds; set Sample:GenerateTraffic to false in appsettings.json to stop that.
Start
Guides
Reference