Simple dashboard to visualise Workflow Core state
Note: This is in early development, see the roadmap below
Install the NuGet package "WorkflowCore.Dashboard"
Using NuGet
PM> Install-Package WorkflowCore.Dashboard
Using .net cli
dotnet add package WorkflowCore.Dashboard
Add the dashboard to your application by adding AddWorkflowCoreDashboard()
and UseWorkflowCoreDashboard()
:
public void ConfigureServices(IServiceCollection services)
{
...
// Register with DI container
services.AddWorkflowCoreDashboard(/*optionally pass in DashboardConfig here*/);
...
}
public void Configure(IApplicationBuilder app, IWorkflowHost workflowHost)
{
...
// Hook up Workflow Core + register workflows
workflowHost.RegisterWorkflow<HelloWorldWorkflow>();
workflowHost.Start();
// Add dashboard
app.UseWorkflowCoreDashboard();
...
}
By default you can access the dashboard at /wfc-dashboard
(this path is configurable, see below)
You can pass a DashboardConfig
into the UseWorkflowCoreDashboard()
Property | Type | Default Value | Notes |
---|---|---|---|
RoutePrefix | string | /wfc-dashboard | Change this if you want to expose the dashboard on a different path |
PermissionManager | Type (must implement IPermissionManager) | AllowLocalAccessPermissionManager | Default permissions will only authorize api access for local requests |
PermissionManagerLifetime | ServiceLifetime | If provided, will register the permission manager with the DI container. Otherwise, will assume permission manager will be registered elsewhere |
By default, the api will authorize access only to local requests, and users will have full access permissions.
You can easily change authorization behaviour by implementing a new IPermissionManager
. If you specify a lifetime then it will be registered with the DI container, otherwise it is assumed that it will be registered elsewhere.
public class CustomPermissionManager(IMyUserContext userContext) : IPermissionManager {
public Task<Permission> CurrentPermission()
{
var currentUser = await userContext.GetCurrentUser();
if (currentUser is null) return Permission.None;
if (currentUser.IsAdministrator()) return Permission.All;
return Permission.ViewDefinitions;
}
}
services.AddWorkflowCoreDashboard(new DashboardConfig()
{
PermissionManager = typeof(CustomPermissionManager),
PermissionManagerLifetime = ServiceLifetime.Scoped // not required if the IPermissionManager is registered with the DI container elsewhere
};
Workflow Core Dashboard is in early development. Still todo:
- More workflow detail, filtering + search capabilities
- List events, with filtering + search capabilities
- List errors, with filtering + search capabilities
- Overview of specific workflow instance. Show current status, step history, state etc
- Suspend / resume / terminate workflows
- UI improvements based on user permissions