Skip to content

Releases: danielgerlag/workflow-core

v3.17

11 Oct 03:09
3afbe2b

Choose a tag to compare

What's Changed

  • #1368: SqlClient dependency update to fix vulnerability by @Abrakadabr in #1370
  • feat: Add .NET 8.0 support for Oracle persistence provider and improve test infrastructure by @henriquepagno in #1369
  • fix: use timestamp with time zone in PostgreSQL by @yi-Xu-0100 in #1374
  • Add RabbitMQ.Client v7 support by migrating to async API by @Copilot in #1384
  • Update OpenTelemetry to 1.12.0 and fix breaking API changes by @Copilot in #1387
  • Add .NET 8.0 support to MySQL persistence provider to fix CoreTypeMappingParameters error by @Copilot in #1383
  • Fix workflow consumer greylist removal to prevent workflows stuck in "Pending" status by @Copilot in #1382
  • Upgrade Entity Framework from version 8 to 9 for .NET 8.0 builds by @Copilot in #1388
  • Removed hard coded Max Concurrent Items in Event Consumer. by @dekrevedko in #980
  • Upgrade System.Linq.Dynamic.Core to 1.6.0 and fix breaking changes by @Copilot in #1389
  • fix type error by @weibaohui in #1256
  • Fix Entity Framework Core pending model changes warning using dynamic ProductVersion by @Copilot in #1390
  • Fix PostgreSQL DateTime compatibility issue in ActivityController by @Copilot in #1392
  • Add comprehensive documentation for Sample08 (Human/User Workflow) by @Copilot in #1394
  • Fix DynamoDB UpdateExpression syntax error in MarkEventUnprocessed method by @Copilot in #1397
  • Add detailed individual test result reporting to GitHub Actions workflows by @Copilot in #1400
  • Add LINQ database query optimizations for large data scenarios by @Copilot in #1399
  • Fix StopAsync to properly await async task completion in workflow steps by @Copilot in #1401
  • Add configurable ObjectSerializer for MongoDB persistence to allow user type deserialization by @Copilot in #1391

New Contributors

Full Changelog: v3.14.0...v3.17.0

v3.14

20 Jun 17:50
a37e3e3

Choose a tag to compare

What's Changed

New Contributors

Full Changelog: v3.11.0...v3.14.0

v3.11.0

10 Sep 16:40
3f12604

Choose a tag to compare

What's Changed

  • #1270 Fixed list items deserialization duplication by @michalkrzych in #1271
  • fix typo in PersistanceFactory by @Revazashvili in #1267
  • Update correct workflow name for Sample09s by @AngrySKL in #1254
  • Bump System.Data.SqlClient from 4.8.5 to 4.8.6 in /src/providers/WorkflowCore.QueueProviders.SqlServer by @dependabot in #1228
  • Bump MongoDB.Driver from 2.8.1 to 2.19.0 in /src/providers/WorkflowCore.Persistence.MongoDB by @dependabot in #1147
  • Added CosmosClientOptions to UseCosmosDbPersistence method and CosmosClientFactory constructor by @afroze9 in #1062
  • Fix typo on Redis providers readme by @tvdias in #1282
  • Feat update rabbitmq by @JoaquimInGit in #1286
  • Fix morenullrefs in workflow activity by @jakenuts in #1281
  • Oracle persistance provider by @cjundt in #1148
  • added a type resolver to be replaced by another implementation later. by @rapmue in #1166
  • Bump Npgsql from 5.0.14 to 5.0.18 in /src/providers/WorkflowCore.Persistence.PostgreSQL by @dependabot in #1288

New Contributors

Full Changelog: v3.10.0...v3.11.0

v3.10.0

11 Apr 00:09

Choose a tag to compare

What's Changed

  • Bump System.Linq.Dynamic.Core from 1.2.13 to 1.3.0 in /src/WorkflowCore.DSL by @dependabot in #1182
  • Bump MongoDB.Driver from 2.8.1 to 2.19.0 in /test/WorkflowCore.Tests.MongoDB by @dependabot in #1146
  • Fixed usage of null WorkflowStep.Name in WorkflowActivity diagnostic service. by @jakenuts in #1198
  • the names of the fields in the logs have been changed by @pashtetus1 in #1073
  • Upgrade to net8 and EF8 by @wallyrion in #1215

New Contributors

Full Changelog: 3.9.0...v3.10.0

v3.9.0

14 Jun 14:45
12be887

Choose a tag to compare

Workflow Core 3.9.0

Updated EF core to v7 - #1168

v3.8.3

10 May 14:36
b7de0a1

Choose a tag to compare

v3.8.2

06 Apr 14:35
e7219e5

Choose a tag to compare

Merged PRs

v3.8.1

06 Apr 13:52
6a623b0

Choose a tag to compare

Merge pull request #1108 from danielgerlag/dependabot/nuget/src/provi…

v3.6.0

31 Oct 20:13
b45525a

Choose a tag to compare

Workflow Core 3.6.0

Scheduled Commands

Introduces the ability to schedule delayed commands to process a workflow or event, by persisting them to storage.
This is the first step toward removing constant polling of the DB. It also filters out duplicate work items on the queue which is the current problem the greylist tries to solve.
Initial implementation is supported by MongoDb, SQL Server, PostgeSQL, MySQL and SQLite.
Additional support from the other persistence providers to follow.

v3.4.0

19 Apr 01:38
db42f91

Choose a tag to compare

Workflow Core 3.4.0

Execute Workflow Middleware

These middleware get run after each workflow execution and can be used to perform additional actions or build metrics/statistics for all workflows in your app.

The following example illustrates how you can use a execute workflow middleware to build prometheus metrics.

Note that you use WorkflowMiddlewarePhase.ExecuteWorkflow to specify that it runs after each workflow execution.

Important: You should call next as part of the workflow middleware to ensure that the next workflow in the chain runs.

public class MetricsMiddleware : IWorkflowMiddleware
{
    private readonly ConcurrentHashSet<string>() _suspendedWorkflows =
        new ConcurrentHashSet<string>();

    private readonly Counter _completed;
    private readonly Counter _suspended;

    public MetricsMiddleware()
    {
        _completed = Prometheus.Metrics.CreateCounter(
            "workflow_completed", "Workflow completed");

        _suspended = Prometheus.Metrics.CreateCounter(
            "workflow_suspended", "Workflow suspended");
    }

    public WorkflowMiddlewarePhase Phase =>
        WorkflowMiddlewarePhase.ExecuteWorkflow;

    public Task HandleAsync(
        WorkflowInstance workflow,
        WorkflowDelegate next)
    {
        switch (workflow.Status)
        {
            case WorkflowStatus.Complete:
                if (_suspendedWorkflows.TryRemove(workflow.Id))
                {
                    _suspended.Dec();
                }
                _completed.Inc();
                break;
            case WorkflowStatus.Suspended:
                _suspended.Inc();
                break;
        }

        return next();
    }
}