开源项目 orchard 主要开发人员 Sipke Schoorstra 开源了一个 netcore 工作流项目, 地址: https://github.com/elsa-workflows/elsa-core , 最新版本 1.2, 正在开发 2.0 版本 .Spike 是参照 Orchard Core 的工作流引擎的原理, 将其转化为一个可重用的. NET 标准库, 从而使 * 任何 * .NET 应用程序都能享受工作流的强大功能, 使开发人员能够实现长期运行的工作流. ELSA 的核心理念是能够相互连接小的可执行单元, 允许您编排实际的业务流程, 如文档审批, 客户入职和订单流程.
项目主页上有介绍 Elsa 是以 OrchardCore 工作流为灵感的, 同时也从许多其他现有的工作流解决方案中获得了灵感, 例如 Windows Workflow Foundation 和 Azure Logic Apps https://azure.microsoft.com/services/logic-apps/ , 我继续受到图书馆的启发, 例如 Workflow Core https://github.com/danielgerlag/workflow-core 和 Workflow Engine https://workflowengine.io/ .
ELSA 与其它工作流引擎不一样的地方, 它有一个漂亮的流程设计器:
ELSA 可用于在您自己的应用程序流程中实现工作流引擎, 也可用作与您的应用程序交互的外部工作流服务.
Spike 写了一个比较完整场景示例 -- 用户注册: https://github.com/elsa-workflows/elsa-samples :
在这个场景中, 我们有一个 web 应用程序, 用户可以在这个应用程序中注册账号. 注册后, 我们希望该系统分配用户角色并给用户发送激活账号的电子邮件 .
如果用户没有在规定的时间内激活其帐户, 则继续向用户发送提醒电子邮件.
如果用户单击激活邮件里的链接, 他们的帐户就会被激活. 但是, 如果用户没有及时激活他们的帐户, 他们的帐户就会被清理和移除.
我们 fork 这个程序代码并下载到本地, 这里我把它升级到了最新版本和. NET Core 3.1, 示例使用 MongoDB 作为持久化, 如果没有安装 MongoDB, 则可以使用 docker 运行项目里的 docker-compose.YAML .
运行 VS 运行不调试应用程序, 使用浏览器访问到 / esla/home , 成功运行的话我们可以 elsa 的控制面板:
单击左侧的工作流菜单项, 可以看到右边的创建工作流按钮, 我们选择导入
user-registration-workflow.JSON:
点击 Publish 正式发布流程.
应用正常运行还需要运行一个 SMTPDev 来模拟测试 SMTP 服务: Smtp4dev( https://github.com/rnwood/smtp4dev ) 是通过 SMTP 服务器 捕获所有发出的电子邮件, 并允许你直接在该工具的用户界面中进行查看. Smtp4dev 适合处理电子邮件相关问题, 尤其是在电子邮件需按时间点发送这样的自动化过程中而你仍需要验证其逻辑性和正确性时.
通过命令运行安装:
dotnet tool install -g Rnwood.Smtp4dev --version "3.1.0-*"
运行 smtpdev, 它也是一个 ASP.NET core 应用程序, 同时开启 smtp 端口, 把我们的应用的 smtp 配置修改成 25. 浏览器访问注册页面:
<a href="https://img2018.cnblogs.com/blog/510/202002/510-20200215214643232-1076278454.png"><img width="582" height="368" title="image" style="display: inline; background-image: none;" alt="image" src="https://img2018.cnblogs.com/blog/510/202002/510-20200215214643480-1400340360.png" border="0" /></a>
提交后, 我们去看 elsa 的控制台, 流程实例已经流转到邮件激活:
<a href="https://img2018.cnblogs.com/blog/510/202002/510-20200215214643789-1924658044.png"><img width="592" height="310" title="image" style="display: inline; background-image: none;" alt="image" src="https://img2018.cnblogs.com/blog/510/202002/510-20200215214644123-1473639255.png" border="0" /></a>
我们打开 smtpdev 的页面:
点击激活链接激活账号, 进入到 elsa 的面板看看我们的流程已经完成了:
查看我们的 smtpdev 页面看到我们收到了激活成功的邮件
来源: http://www.tuicool.com/articles/U3MNraY