WorkflowEngine.NETCore-Core
23.0.0
dotnet add package WorkflowEngine.NETCore-Core --version 23.0.0
NuGet\Install-Package WorkflowEngine.NETCore-Core -Version 23.0.0
<PackageReference Include="WorkflowEngine.NETCore-Core" Version="23.0.0" />
<PackageVersion Include="WorkflowEngine.NETCore-Core" Version="23.0.0" />
<PackageReference Include="WorkflowEngine.NETCore-Core" />
paket add WorkflowEngine.NETCore-Core --version 23.0.0
#r "nuget: WorkflowEngine.NETCore-Core, 23.0.0"
#:package WorkflowEngine.NETCore-Core@23.0.0
#addin nuget:?package=WorkflowEngine.NETCore-Core&version=23.0.0
#tool nuget:?package=WorkflowEngine.NETCore-Core&version=23.0.0
WorkflowEngine.NETCore-Core
WorkflowEngine.NETCore-Core is the core runtime package for Workflow Engine by Optimajet, an embeddable workflow engine for .NET and C# applications. It supplies WorkflowRuntime, the scheme model and builder, runtime contracts, timers, commands, rules and process execution. Add one persistence provider package for your database.
Get Workflow Engine Free · Run the quick start · Product page · Documentation · Compare products
Install
Create a .NET 10 console application, then install the core package and one provider. SQLite keeps this example self-contained and is intended for evaluation.
dotnet new console -n WorkflowQuickstart --framework net10.0
cd WorkflowQuickstart
dotnet add package WorkflowEngine.NETCore-Core
dotnet add package WorkflowEngine.NETCore-ProviderForSQLite
The core package targets .NET Standard 2.0. Workflow Engine supports .NET 8, .NET 10 and .NET Framework 4.7.2, with package-specific exceptions for Oracle and SQLite.
Run a workflow
This console example creates an Approval scheme, starts one process, and moves it from Draft to Approved with Workflow
Engine on .NET 10.
using System.Xml.Linq;
using OptimaJet.Workflow.Core.Builder;
using OptimaJet.Workflow.Core.Model;
using OptimaJet.Workflow.Core.Model.Builder;
using OptimaJet.Workflow.Core.Parser;
using OptimaJet.Workflow.Core.Runtime;
using OptimaJet.Workflow.Migrator;
using OptimaJet.Workflow.SQLite;
// Configure a Workflow Runtime with SQLite as its database
var provider = new SqliteProvider("Data Source=workflow.db");
var runtime = new WorkflowRuntime()
.WithBuilder(new WorkflowBuilder<XElement>(provider, new XmlWorkflowParser(), provider).WithDefaultCache())
.WithPersistenceProvider(provider)
.RunMigrations()
.Start();
try
{
// A scheme in C#: Draft -> Review -> Approved, moved by two commands
var scheme = ProcessDefinitionBuilder.Create("Approval");
scheme.CreateActivity("Draft").Initial().Ref(out ActivityDefinition draft);
scheme.CreateActivity("Review").Ref(out ActivityDefinition review);
scheme.CreateActivity("Approved").Final().Ref(out ActivityDefinition approved);
scheme.CreateCommand("Submit").Ref(out CommandDefinition submit);
scheme.CreateCommand("Approve").Ref(out CommandDefinition approve);
scheme.CreateTransition("Submit", draft, review).TriggeredByCommand(submit);
scheme.CreateTransition("Approve", review, approved).TriggeredByCommand(approve);
await runtime.Builder.SaveProcessSchemeAsync("Approval", scheme.ProcessDefinition);
// Start a process and move it with the commands available to a user
var processId = Guid.NewGuid();
await runtime.CreateInstanceAsync("Approval", processId);
foreach (var name in new[] { "Submit", "Approve" })
{
var commands = await runtime.GetAvailableCommandsAsync(processId, "alice");
await runtime.ExecuteCommandAsync(commands.First(c => c.CommandName == name), "alice", "alice");
Console.WriteLine($"{name} -> {await runtime.GetCurrentActivityNameAsync(processId)}");
}
}
finally
{
await runtime.ShutdownAsync();
}
dotnet run prints:
Submit -> Review
Approve -> Approved
The complete quick start also covers ASP.NET Core and Workflow Designer.
Choose a persistence provider
| Database | Package | Runtime note |
|---|---|---|
| SQL Server and Azure SQL | WorkflowEngine.NETCore-ProviderForMSSQL |
.NET Framework 4.7.2 and modern .NET |
| PostgreSQL | WorkflowEngine.NETCore-ProviderForPostgreSQL |
.NET Framework 4.7.2 and modern .NET |
| MySQL | WorkflowEngine.NETCore-ProviderForMySQL |
.NET Framework 4.7.2 and modern .NET |
| MongoDB and Azure Cosmos DB | WorkflowEngine.NETCore-ProviderForMongoDB |
.NET Framework 4.7.2 and modern .NET |
| Oracle | WorkflowEngine.NETCore-ProviderForOracle |
.NET Core 3.0 and later |
| SQLite | WorkflowEngine.NETCore-ProviderForSQLite |
.NET 8 and .NET 10; evaluation use |
Every runtime needs a database. SQL providers apply their schema through RunMigrations(). The MongoDB provider creates its collections and indexes at runtime.
Products and licensing
The same core package runs Workflow Engine Free, Workflow Engine and Workflow Engine NEO. A license key changes the available limits and capabilities; application code and stored schemes stay on the same runtime.
- Workflow Engine Free needs no license key. It covers personal use and internal commercial use with attribution, up to 10 workflow definitions (schemes) and 4 execution threads. Activities, transitions and commands are unrestricted, and the full Workflow Designer is included.
- Workflow Engine and Workflow Engine NEO require a paid license for their licensed use. See Compare products for the product and edition boundaries.
- A 30-day trial key enables the licensed capabilities for evaluation.
Workflow Engine is commercial software. Read the EULA before distributing or operating it outside the Workflow Engine Free grant.
Releases and support
- Breaking changes and migrations: release notes
- C# types and methods: API reference
- Technical questions: support@optimajet.com
- Editions and evaluation: hello@optimajet.com or book a demo
| 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
- Microsoft.Bcl.AsyncInterfaces (>= 10.0.9)
- Microsoft.CodeAnalysis.CSharp (>= 4.1.0)
- Microsoft.CodeAnalysis.CSharp.Scripting (>= 4.1.0)
- Microsoft.Extensions.DependencyModel (>= 1.1.1)
- Newtonsoft.Json (>= 13.0.3)
- System.Collections.Specialized (>= 4.3.0)
- System.Security.Cryptography.Csp (>= 4.3.0)
- System.Text.Json (>= 10.0.9)
- System.Text.RegularExpressions (>= 4.3.1)
- System.Xml.XmlDocument (>= 4.3.0)
- ThomasLevesque.WeakEvent (>= 4.1.0)
NuGet packages (24)
Showing the top 5 NuGet packages that depend on WorkflowEngine.NETCore-Core:
| Package | Downloads |
|---|---|
|
WorkflowEngine.NETCore-ProviderForMSSQL
SQL Server and Azure SQL persistence provider for Workflow Engine by Optimajet. Stores workflow schemes, process instances, parameters, timers, and history, and applies the required database migrations. |
|
|
WorkflowEngine.NETCore-ProviderForPostgreSQL
PostgreSQL persistence provider for Workflow Engine by Optimajet. Stores workflow schemes, process instances, parameters, timers, and history, and applies the required database migrations. |
|
|
WorkflowEngine.NETCore-ProviderForOracle
Oracle Database persistence provider for Workflow Engine by Optimajet. Stores workflow schemes, process instances, parameters, timers, and history, and applies the required database migrations. |
|
|
DWKit-Core
DWKit is a .NET Core BPM system made with simplicity and flexibility in mind. DWKit allows you to model, automate and execute mission-critical business processes. |
|
|
WorkflowEngine.NETCore-ProviderForMySQL
MySQL persistence provider for Workflow Engine by Optimajet. Stores workflow schemes, process instances, parameters, timers, and history, and applies the required database migrations. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 23.0.0 | 270 | 10/27/2026 |
| 22.1.0 | 1,424 | 8/18/2026 |
| 22.0.0 | 3,102 | 7/16/2026 |
| 21.1.3 | 1,618 | 6/25/2026 |
| 21.1.2 | 1,290 | 6/18/2026 |
| 21.1.1 | 1,944 | 5/25/2026 |
| 21.1.0 | 1,081 | 5/19/2026 |
| 21.0.0 | 4,313 | 4/24/2026 |
| 20.0.9 | 1,695 | 4/17/2026 |
| 20.0.8 | 2,089 | 4/1/2026 |
| 20.0.7 | 1,319 | 3/19/2026 |
| 20.0.6 | 1,264 | 2/24/2026 |
| 20.0.5 | 1,603 | 2/6/2026 |
| 20.0.4 | 1,536 | 12/29/2025 |
| 20.0.3 | 4,144 | 12/2/2025 |
| 20.0.2 | 1,629 | 11/21/2025 |
| 20.0.1 | 1,308 | 11/10/2025 |
| 20.0.0 | 1,405 | 10/30/2025 |
| 19.0.0 | 1,653 | 9/18/2025 |
| 18.1.0 | 2,451 | 8/25/2025 |