推荐一款可在.net中使用的工作流

艾尔莎标志

Elsa Core 是一个工作流库,可在任何 .NET Core 应用程序中执行工作流。 工作流不仅可以使用代码定义,还可以使用 JSON、YAML 或 XML 进行定义。

开始使用

按照 Elsa Workflows 文档网站上入门说明进行操作。

路线图

版本 1.0

  • 工作流调用程序
  • 长时间运行的工作流
  • 工作流即代码
  • 工作流即数据
  • 相关
  • 持久性:CosmosDB、Entity Framework Core、MongoDB、YesSQL
  • HTML5 工作流设计器 Web 组件
  • ASP.NET 核心工作流仪表板
  • JavaScript 表达式
  • 液体表达
  • 原始活动
  • 控制流活动
  • 工作流活动
  • 计时器活动
  • HTTP 活动
  • 电子邮件活动

版本 2.0

  • 服务总线消息传送
  • 通用命令和事件活动
  • 工作流主机 REST API
  • 工作流主机 gRPC API
  • 工作流服务器
  • 活动收获
  • 分布式托管支持(支持多节点环境)
  • 本地化支持
  • 工作流设计器 UI 改进
  • 活动编辑器 UI 改进

版本 3.0

  • 状态机
  • 容器活动

工作流设计器

可以使用Elsa Designer进行可视化设计工作流,Elsa Designer是一个使用StencilJS构建的可重用和可扩展的HTML5 Web组件。 为了管理工作流定义和实例,Elsa 附带了一个可重用的 Razor 类库,该库以 MVC 区域的形式提供了一个仪表板应用程序,您可以将其包含在自己的 ASP.NET Core 应用程序中。

基于 Web 的工作流设计器

编程工作流

可以通过编程方式创建工作流,然后使用 .IWorkflowInvoker

世界您好

以下代码片段演示如何从代码创建包含两个自定义活动的工作流,然后调用它:


// Define a strongly-typed workflow.
public class HelloWorldWorkflow : IWorkflow
{
    public void Build(IWorkflowBuilder builder)
    {
        builder
            .StartWith<HelloWorld>()
            .Then<GoodByeWorld>();
    }
}

// Setup a service collection.
var services = new ServiceCollection()
    .AddWorkflows()
    .AddActivity<HelloWorld>()
    .AddActivity<GoodByeWorld>()
    .BuildServiceProvider();

// Invoke the workflow.
var invoker = services.GetService<IWorkflowInvoker>();
await invoker.InvokeAsync<HelloWorldWorkflow>();

// Output:
// /> Hello World!
// /> Goodbye cruel World...

坚持

工作流几乎可以使用任何存储机制来持久化。 将支持以下提供程序:

  • 在内存中
  • 文件系统
  • SQL 服务器
  • MongoDB的
  • CosmosDB

格式

目前,工作流可以存储在 YAML 或 JSON 格式。 下面演示了分别以 YAML 和 JSON 表示的简单工作流:

长时间运行的工作流

Elsa 对长时间运行的工作流提供原生支持。一旦工作流因某些阻塞活动而停止,该工作流就会保留。 当发生相应的事件时,将从存储中加载工作流并恢复。

为什么选择 Elsa 工作流程?

Elsa 的主要目标之一是以最少的工作量和最大的可扩展性在任何 .NET 应用程序中启用工作流。 这意味着将工作流功能集成到您自己的应用程序中应该很容易。

Azure 逻辑应用怎么样?

尽管 Azure 逻辑应用功能强大且完整,但它仅作为 Azure 中的托管服务提供。另一方面,Elsa 不仅允许您在 Azure 上托管它,还允许您在任何支持 .NET Core 的云提供商上托管它。当然,您可以在本地托管它。

虽然可以使用逻辑应用实现长时间运行的工作流,但通常将工作流与多个逻辑应用拆分,其中一个工作流调用另一个逻辑应用。这可能会使逻辑流程有点难以遵循。 使用 Elsa,您只需在工作流程中的任何位置添加触发器,从而更轻松地全面了解您的应用程序逻辑。如果需要,您仍然可以从一个工作流中调用其他工作流。

Windows Workflow Foundation 怎么样?

我一直很喜欢 Windows Workflow Foundation,但不幸的是,开发似乎已经停止了。 尽管正在努力将 WF 移植到 .NET Standard,但我更喜欢 Elsa 有几个原因:

  • Elsa 本质上支持触发事件,以易于使用的方式启动新工作流并恢复已停止的工作流实例。例如: 将启动和恢复以 . 开头或以 .workflowHost.TriggerWorkflowAsync("HttpRequestTrigger");"HttpRequestTrigger
  • Elsa 有一个基于 Web 的工作流设计器。我曾经为一个客户做过一个项目,该项目正在构建一个巨大的SaaS平台。其中一项要求是提供工作流引擎和基于 Web 的编辑器。尽管有商业工作流库和编辑器,但商业模式需要开源软件。我们使用了 WF 和重新托管的工作流设计器。它奏效了,但不是很好。

果园工作流程怎么样?

Orchard 和 Orchard Core 都附带了强大的工作流模块,两者都很棒。 事实上,Elsa Workflows是从Orchard Core的工作流模块中获取和改编的。Elsa 使用类似的模型,但存在一些差异:

  • Elsa Workflows 与 Web 完全分离,而 Orchard Core Workflows 不仅与 Web 耦合,而且与 Orchard Core Framework 本身耦合。
  • Elsa Workflows 可以在任何 .NET Core 应用程序中执行,而无需依赖任何 Orchard Core 包。

特征

下面列出了 Elsa 的一些主要功能:

  • 小巧、简单、快速。该库应该是精益的,这意味着它应该易于使用快速执行,并且易于通过自定义活动进行扩展
  • 调用任意工作流,就好像它们是我的应用程序的函数一样。
  • 触发事件,使相应的工作流根据该事件自动启动/恢复
  • 支持长时间运行的工作流。当工作流执行并遇到需要用户输入的活动时,工作流将停止、保留并耗尽内存,直到需要恢复。这可能是几秒钟后,几分钟,几小时,几天甚至几年。
  • 将工作流与特定于应用程序的数据相关联。这是长时间运行的工作流的关键要求。
  • 基于文件的格式存储工作流,以便我可以将其作为源代码管理的一部分。
  • 将工作流存储在数据库中,而我不想让它们成为源代码管理的一部分。
  • 基于 Web 的设计师。无论我是将工作流存储在文件系统还是数据库中,也无论我是在线托管设计器还是仅在本地计算机上托管设计器,我都需要能够编辑我的工作流。
  • 使用表达式配置工作流活动。通常,工作流处理的信息本质上是动态的,活动需要一种与这些信息交互的方式。工作流表达式允许这样做。
  • 可通过特定于应用程序的活动自定义存储脚本引擎进行扩展
  • 调用其他工作流。这允许从各种工作流中调用可重用的应用程序逻辑。就像从 C# 调用通用函数一样,无需重复代码。
  • 查看和分析已执行的工作流实例。我想查看工作流采用的路径、运行时状态故障位置以及补偿故障工作流。
  • 将基于 Web 的工作流设计器嵌入到我自己的仪表板应用程序中。这使我可以选择创建运行所有应用程序逻辑的单个工作流主机,还可以选择在单个微服务中托管工作流运行时(允许编排和编排)。
  • 关注点分离:工作流核心库、运行时和设计器都应分开。即,当工作流主机不应依赖于基于 Web 的设计器时。例如,这允许人们实现基于桌面的设计器,或者根本不使用设计器,而只使用 YAML 文件。最终,主机只需要工作流定义和对持久性存储的访问。
  • 在本地或在云中托管 - 这两种方案都受支持,因为 Elsa 只是从应用程序引用的一组 NuGet 包。

如何使用艾尔莎

Elsa 作为一组 NuGet 包分发,因此可以轻松添加到应用程序中。 使用 Elsa 时,您通常需要至少拥有两个应用程序:

  1. 用于承载工作流设计器的 ASP.NET Core 应用程序。
  2. 执行工作流的 .NET 应用程序

设置工作流设计器 ASP.NET 核心应用程序

TODO:描述添加包和注册服务的所有步骤。

设置工作流宿主 .NET 应用程序

TODO:描述添加包和注册服务的所有步骤。

构建和运行 Elsa Workflows 仪表板

为了在本地计算机上构建和运行Elsa,请按照下列步骤操作:

  1. 克隆存储库。
  2. 运行 NPM install onsrc\dashboard\Elsa.Dashboard\Theme\argon-dashboard
  3. 从目录执行gulp buildsrc\dashboard\Elsa.Dashboard\Theme\argon-dashboard
  4. 打开 shell 并导航到并运行 。src\dashboard\Elsa.Dashboard.Webdotnet run
  5. 导航到 http://localhost:22174/elsa/home
  • 10
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
驰骋工作流引擎研发于2003年,具有.net与java两个版本,它们代码结构、数据库结构、设计思想、功能组成、操作手册完全相同。流程表单模版两个版本完全通用。 CCFlow是.net版本的简称,由济南团队负责研发。JFlow是在java版本的简称,由深圳研发团队研发。两款产品核心代码向社会100%开源,十多年来,我们一直践行自己的诺言,努力提高产品质量,真心服务国IT产业,成为了国内知名的老牌工作流引擎,在国内开源BPM领域稳坐第一位。 CCFlow基础功能: 1、流程引擎设计支持所见即所得的设计:节点设计、表单设计、单据设计、报表定义设计,方向条件设计... 2、流程模式简洁只有4种容易理解、线性流程、同表单分合流、异表单分合流、父子流程,没有复杂的概念。 3、支持流程的基础功能:前进、后退、转向、转发、撤销、抄送、挂起、草稿、任务池共享,也支持高级功能取回审批、项目组、来宾用户等等。 4、支持sdk开发,多表单展现,字段权限控制,从表控制,多种符合国国情的业务规则设置。 5、表单引擎与流程引擎可以分开也可以单独使用,流程引擎可以驱动表单引擎,实现多种业务数据的操作,比如:汇总、分合、填写。 6、CCFlow集成方式简洁,容易实现插件模式的开发。 7、SDK接口丰富,注释详细, 丰富的帮助文档, 容易上手。 8、更多的功能请参考官方网站。 CCFlow特点: 1、CCFlow成长于国2003年,历史长久,在多种生产、管理环境成长起来,是国内老牌的工作流程引擎,拥有众多的爱好者,开发者, 100%的核心代码开源。 2、历经多个项目多种行业磨练(请参考官方网站成功案例),规则丰富,生命力强,绝大多数应用可以实现无代码流程设计。 3、CCFlow的核心代码都是公司自己研发的,核心算法也是基于实际应用,经过我们十多年的发展,每个所服务的客户都能得到最佳的流程解决方案。 4、CCFlow没有借助第3方的流程软件,拥有独立知识产权, 所以我们最容易扩展,实现客户的需求。 5、CCFlow功能强大,可配置性好,通常的应用开发可以实现无代码实现,面向业务人员、系统管理员、与程序员。 6、使用开源的软件好处众多,可以跟踪调试,可以修改,研究者众多,容易得到帮助,可以与我们的开发人员在线互动,遇到问题可以在第1时间解决。 7、CCFlow是国内第一款同时拥有.net版本与java版本的工作流引擎,两者互为影子版本,数据库解构,配置界面完全相同。 8、CCFlow设计思路精巧、概念简单。只有线性、同表单分合流、异表单分合流、父子流程四个概念。 有涵盖多种行为的5*5的算法,流程模式实现现实生活绝大多数模式(目前没有我们解决不了的问题)。 9、CCFlow的概念简洁、通俗易懂, 运行规则与运行模式清晰,数据库结构设计精简,规则丰富,帮助详实。 10、CCFlow是国内流程引擎与表单引擎集成较好的bpm软件,流程引擎可以操纵表单引擎数据实现复杂的业务数据处理与权限控制。 11、CCFlow拥有200多个流程演示模版,涵盖了我们在开发过程遇到的很多的应用场景,参考这些模版,容易获得帮助。 12、CCFlow拥有40多个单元测试案例,这些单元测试案例,是保障ccflow稳定运行的基础,在核心代码修改后容易找打问题。 13、CCFlow资料完善(约:16万字),拥有众多的爱好者,开发者容易得到帮助。 CCFlow的代码放在Git上,容易修改代码与我们合并。 14、CCFlow集成方便, 概念、名词通俗易懂。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

A_nanda

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值