Aurora.Workflows 0.5.1.22

There is a newer version of this package available.
See the version list below for details.
dotnet add package Aurora.Workflows --version 0.5.1.22
                    
NuGet\Install-Package Aurora.Workflows -Version 0.5.1.22
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Aurora.Workflows" Version="0.5.1.22" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Aurora.Workflows" Version="0.5.1.22" />
                    
Directory.Packages.props
<PackageReference Include="Aurora.Workflows" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Aurora.Workflows --version 0.5.1.22
                    
#r "nuget: Aurora.Workflows, 0.5.1.22"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Aurora.Workflows@0.5.1.22
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Aurora.Workflows&version=0.5.1.22
                    
Install as a Cake Addin
#tool nuget:?package=Aurora.Workflows&version=0.5.1.22
                    
Install as a Cake Tool

Aurora Workflows

A versatile C# workflow engine designed to streamline task management. Easily define and execute workflows with built-in tasks or customize your own to fit specific needs. Perfect for automating processes and improving efficiency in any application.

Project website: https://aurora.unex.me/workflows

Features

  • Generic Workflow Management: Create and manage workflows with ease.
  • Built-in Tasks: Use predefined tasks for common operations.
  • Custom Tasks: Define your own tasks to handle specific requirements.
  • Extensible: Easily extend the engine to fit your unique use cases.
  • Simple Integration: Integrate seamlessly with your existing C# applications.

Getting Started

Installation

You can install the workflow engine via NuGet Package Manager:

dotnet add package Aurora.Workflows
dotnet add package Aurora.Workflows.Tasks     # 70+ built-in tasks
dotnet add package Aurora.Workflows.Fluent    # fluent builder API
dotnet add package Aurora.Workflows.Contracts # only this is needed to write custom tasks

Building and running a workflow (Fluent API)

A root StartTask is created automatically. String arguments are expression-capable: plain text, or a C# expression that is evaluated by Roslyn at runtime.

using Aurora.Workflows.Fluent;
using Aurora.Workflows.Tasks;

var workflow = FluentWorkflow
    .Create("Daily Report")
    .TriggerOnSchedule("0 0 7 * * ?")                        // Quartz cron: every day at 07:00
    .Set("hour", "DateTime.Now.Hour")                          // SetVariableTask – always an expression
    .If("context.Get<int>(\"hour\") < 12",
        then: t => t.Print("Good morning!"),
        @else: t => t.Print("Hello!"))
    .ReadFile(@"C:\data\report.txt", outputVariable: "report")
    .Do<GreetTask>(t => t.Greeting = "=context.Get<string>(\"report\")") // custom task, see below
        .WithOutput("greeting")
        .Retry(TimeSpan.FromSeconds(5), maxRetries: 3)
    .WriteFile(@"C:\data\greeting.txt", inputVariable: "greeting")
    .Build();

await workflow.StartAsync();

// Persist / restore as JSON
string json = FluentWorkflow.Create("Persisted").TriggerOnce().Print("Hi").Persist();
var restored = FluentWorkflow.Load(json).Build();

Writing a custom task

Derive from WorkflowTaskBase. Every string property of a task may contain plain text or a C# expression prefixed with = – the user decides in the designer. Therefore such properties are never read directly but passed through Resolve<T>(), which returns plain text as-is and compiles/evaluates = expressions (e.g. =context.Get<string>("userName")). Data flows between tasks via GetInput<T>() / SetOutput(), which honour scope and variable-name settings.

using System.ComponentModel;
using System.Threading.Tasks;
using Aurora.Workflows.Contracts;
using Aurora.Workflows.Contracts.Attributes;

[WorkflowTaskCategory("My Category")]
[WorkflowTaskInputDefinition(typeof(string), Description = "The name to greet (output of the previous task).")]
[WorkflowTaskOutputDefinition(typeof(string), IsDefault = true, Description = "The composed greeting text.")]
public sealed class GreetTask : WorkflowTaskBase
{
    // Expression-capable: "Hello" (plain text) or
    // "=DateTime.Now.Hour < 12 ? \"Good morning\" : \"Hello\"" (evaluated at runtime).
    [Description("Greeting prefix. Plain text or a '=' prefixed C# expression.")]
    public string Greeting { get; set; } = "Hello";

    // Non-string properties are used directly.
    public bool Exclaim { get; set; } = true;

    public GreetTask() { Name = "Greet Task"; }

    protected override Task<bool> DoAsync(IWorkflowDataContext context)
    {
        var name = GetInput<string>(context) ?? "World";    // previous task's output
        var greeting = Resolve<string>(Greeting, context);   // text or evaluated expression

        SetOutput(context, $"{greeting}, {name}{(Exclaim ? "!" : ".")}");
        return Task.FromResult(true);
    }

    protected override Task<bool> DoSetupAsync() => Task.FromResult(true);     // before first run
    protected override Task<bool> DoTearDownAsync() => Task.FromResult(true);  // on workflow stop
}

Scope tasks with child tasks (loops, conditionals, transactions) derive from TransactionScopeTaskBase instead. Full documentation: https://aurora.unex.me/workflows

Tip: developing custom tasks in a class library? Add a reference to Aurora.Workflows.UI.Host so pressing F5 opens the visual designer with your project already loaded for interactive debugging.

License

Aurora Workflows is free to use in full for non-commercial projects. For commercial use, please get in touch to discuss licensing terms; redistribution, modification, decompilation, reverse-engineering, or publication of the software without explicit written permission is strictly prohibited.

Product 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (13)

Showing the top 5 NuGet packages that depend on Aurora.Workflows:

Package Downloads
Aurora.Workflows.Tasks

General-purpose task package for Aurora Workflows: control flow (if/switch/loop/scope), variables, file and directory operations, HTTP, scripting, text processing and more. Every task exposes explicit inputs and outputs.

Aurora.Workflows.Fluent

Fluent API for building Aurora Workflows programmatically in C#: define variables, C# expressions, branching, loops, triggers and task wiring in code, then run headless or persist as .awf for the visual designer.

Aurora.Workflows.Extensions

Runtime extensions for Aurora Workflows: load and execute published .awfc workflow packages via ManagedWorkflow, resolve task packages from NuGet at runtime and build headless workflow hosts.

Aurora.Workflows.UI.Host

A versatile C# workflow engine designed to streamline task management. Easily define and execute workflows with built-in tasks or customize your own to fit specific needs. Perfect for automating processes and improving efficiency in any application. Add this package to a class library project containing your custom tasks to enable pressing F5 to launch the visual designer with that project's workspace preloaded for interactive debugging.

Aurora.Workflows.UI.Core

WPF controls of the Aurora Workflows visual workflow designer (canvas, task nodes, property editors, expression editing) for embedding the designer in your own .NET application.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.5.1.24 59 9/18/2026
0.5.1.23 70 9/18/2026
0.5.1.22 120 9/17/2026
0.5.1.20 229 9/16/2026
0.5.1.19 270 9/16/2026
0.5.1.15 469 9/15/2026
0.5.1.10 499 9/14/2026
0.5.1.4 757 9/7/2026
0.5.1.1 463 9/3/2026
0.4.1.30 472 9/3/2026
0.4.1.29 441 8/27/2026
0.4.1.22 482 8/12/2026
0.4.1.21 564 8/4/2026
0.4.1.20 576 7/23/2026
0.4.1.19 600 7/16/2026
0.4.1.18 600 6/27/2026
0.4.1.16 632 6/26/2026
0.4.1.14 614 5/11/2026
0.4.1.12 583 5/9/2026
0.4.1.11 549 5/6/2026
Loading failed