.NET Core下开源的流程引擎推荐,你用过吗?

开源
在本文中,我们将介绍3个.NET Core下热门的流程引擎,并提供简单的使用示例和源代码。

在.NET Core下,有许多流程引擎可供选择。这些引擎提供了丰富的功能和灵活的扩展性,可以帮助开发人员轻松地管理和执行业务流程。在本文中,我们将介绍3个.NET Core下热门的流程引擎,并提供简单的使用示例和源代码。

Elsa Workflow

Elsa Workflow是一个.NET Core下的开源流程引擎,它提供了丰富的功能和灵活的扩展性。Elsa Workflow具有以下主要功能:

  • 支持XAML工作流定义:Elsa Workflow支持使用XAML定义工作流,您可以使用Visual Studio或其他XAML编辑器创建和编辑工作流。
  • 强大的工作流执行引擎:Elsa Workflow的工作流执行引擎可以执行复杂的工作流,并支持并行执行、等待、暂停、恢复等功能。引擎还提供了丰富的事件和操作,可以在工作流执行期间进行处理和控制。
  • 扩展性和可定制性:Elsa Workflow支持插件和扩展,可以轻松地集成到现有的应用程序中。您可以编写自定义的活动、条件和操作,以满足特定的业务需求。
  • 持久化和追踪:Elsa Workflow可以将工作流状态持久化到数据库中,并提供了追踪功能,可以查看工作流的执行历史和当前状态。

下面是一个简单的使用示例,该示例定义了一个简单的工作流,该工作流接收一个字符串参数,将其转换为大写并输出到控制台:

using Elsa.Activities.Console;
using Elsa.Activities.ControlFlow;
using Elsa.Activities.Primitives;
using Elsa.Builders;

var workflow = builder
    .StartWith<ReceiveMessage>()
        .With(x => x.Message, Input<string>("Enter a message"))
    .Then<ToUpper>()
        .With(x => x.Text, ctx => ctx.GetInput<string>())
        .With(x => x.Result, ctx => ctx.SetOutput(x.Text.ToUpper()))
    .Then<WriteLine>()
        .With(x => x.Text, ctx => $"The message in uppercase is: {ctx.GetInput<string>()}")
    .Then<Finish>()
    .Build();
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.

您可以在Elsa Workflow的GitHub仓库中找到源代码和详细的文档:https://github.com/elsa-workflows/elsa-core。

CoreWF

CoreWF是一个轻量级的.NET Core流程引擎,它基于Windows Workflow Foundation(WF)的.NET Core实现。CoreWF具有以下主要功能:

  • 支持XAML工作流定义:CoreWF支持使用XAML定义工作流,您可以使用Visual Studio或其他XAML编辑器创建和编辑工作流。
  • 强大的工作流执行引擎:CoreWF的工作流执行引擎可以执行复杂的工作流,并支持并行执行、等待、暂停、恢复等功能。引擎还提供了丰富的事件和操作,可以在工作流执行期间进行处理和控制。
  • 扩展性和可定制性:CoreWF支持插件和扩展,可以轻松地集成到现有的应用程序中。您可以编写自定义的活动、条件和操作,以满足特定的业务需求。
  • 持久化和追踪:CoreWF可以将工作流状态持久化到数据库中,并提供了追踪功能,可以查看工作流的执行历史和当前状态。

下面是一个简单的使用示例,该示例定义了一个简单的工作流,该工作流接收一个字符串参数,将其转换为大写并输出到控制台:

using System.Activities;
using System.Activities.Statements;

var workflow = new Workflow
{
    Variables =
    {
        new Variable<string>("Message"),
        new Variable<string>("Result")
    },
    Activities =
    {
        new WriteLine
        {
            Text = new InArgument<string>(ctx => $"Enter a message:")
        },
        new ReadLine
        {
            BookmarkName = "ReceiveMessage",
            Result = new OutArgument<string>(ctx => ctx.Variables["Message"])
        },
        new Assign<string>
        {
            To = new OutArgument<string>(ctx => ctx.Variables["Result"]),
            Value = new InArgument<string>(ctx => ctx.Variables["Message"].ToUpper())
        },
        new WriteLine
        {
            Text = new InArgument<string>(ctx => $"The message in uppercase is: {ctx.Variables["Result"]}")
        }
    }
};
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.

您可以在CoreWF的GitHub仓库中找到源代码和详细的文档:https://github.com/UiPath/CoreWF。

WorkflowCore

WorkflowCore是一个轻量级的.NET Core流程引擎,它提供了简单而强大的工作流引擎功能。WorkflowCore具有以下主要功能:

  • 简单的工作流定义:WorkflowCore使用C#代码定义工作流,您可以使用C#编写工作流的逻辑和控制流程。
  • 强大的工作流执行引擎:WorkflowCore的工作流执行引擎可以执行复杂的工作流,并支持并行执行、等待、暂停、恢复等功能。引擎还提供了丰富的事件和操作,可以在工作流执行期间进行处理和控制。
  • 扩展性和可定制性:WorkflowCore支持插件和扩展,可以轻松地集成到现有的应用程序中。您可以编写自定义的活动、条件和操作,以满足特定的业务需求。
  • 持久化和追踪:WorkflowCore可以将工作流状态持久化到数据库中,并提供了追踪功能,可以查看工作流的执行历史和当前状态。

下面是一个简单的使用示例,该示例定义了一个简单的工作流,该工作流接收一个字符串参数,将其转换为大写并输出到控制台:

using System.Threading.Tasks;
using WorkflowCore.Interface;
using WorkflowCore.Models;

public class MyWorkflow : IWorkflow<string>
{
    public string Id => "MyWorkflow";
    public int Version => 1;

    public void Build(IWorkflowBuilder<string> builder)
    {
        builder
            .StartWith(context => ExecutionResult.Next())
            .WaitFor("ReceiveMessage", (data, context) => data)
            .Then(context => data.ToUpper())
            .Then(context => Console.WriteLine($"The message in uppercase is: {context}"))
            .Then(context => ExecutionResult.Next());
    }
}

var host = new WorkflowHost();
await host.StartAsync();

var workflowId = await host.StartWorkflowAsync("MyWorkflow", "Enter a message");
await host.PublishEventAsync(workflowId, "ReceiveMessage", "Hello, world!");
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.

您可以在WorkflowCore的GitHub仓库中找到源代码和详细的文档:https://github.com/danielgerlag/workflow-core。

以上是3个.NET Core下的热门流程引擎,它们具有丰富的功能并提供了源代码供您参考和学习。您可以根据自己的需求和偏好选择其中之一,并在实际项目中使用它们来管理和执行业务流程。这些流程引擎的优点在于它们都具有扩展性和可定制性,可以根据您的业务需求进行定制和扩展。

责任编辑:姜华 来源: 今日头条
相关推荐

2024-11-18 00:18:18

2024-02-27 09:25:51

规则引擎物联网平台开源

2020-10-13 14:54:11

机器学习技术工具

2024-11-08 09:37:10

C#组件

2024-11-07 12:33:47

2024-12-04 08:19:36

API网关微服务

2016-12-06 10:23:24

.NETCore首例Office

2014-04-09 09:12:08

2021-03-04 11:10:29

容器化Docker虚拟机

2021-09-26 09:09:20

开源APP程序员

2013-09-05 11:18:58

.NetWeb

2022-09-07 18:23:06

Permify开源

2018-08-20 08:03:46

跨平台 Web操作系统

2023-06-27 07:31:02

动画库React参数

2023-11-22 07:42:01

2024-06-21 08:06:08

2020-09-21 14:55:15

数据库SQL技术

2021-05-21 13:36:46

iOSiPhone功能

2024-03-11 08:21:49

2020-08-16 10:58:20

Pandaspython开发
点赞
收藏

51CTO技术栈公众号