开源项目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 FoundationAzure Logic Apps,我继续受到图书馆的启发,例如Workflow CoreWorkflow Engine

ELSA 与其它工作流引擎不一样的地方,它有一个漂亮的流程设计器:https://elsa-workflows.github.io/elsa-core/docs/guides-dashboard#create-a-workflow

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。 浏览器访问注册页面:
提交后,我们去看elsa的控制台,流程实例已经流转到邮件激活:

我们打开smtpdev的页面:

点击激活链接激活账号,进入到elsa 的面板看看我们的流程已经完成了:

查看我们的smtpdev页面看到我们收到了激活成功的邮件

相关文章: https://www.jianshu.com/p/9c74ff7da451

最新文章

  1. 再议C风格变量声明
  2. NOIp2010 关押罪犯
  3. vim 配置语法高亮 行号标示
  4. HDU-3854 LOOPS
  5. 深入理解querySelector(All)
  6. 项目从Codeigniter 2.2升级至 Codeigniter 3.0的一些注意事项
  7. 3 sum
  8. 开发指南专题六:JEECG微云高速开发平台代码生成
  9. 使用 video.js 开发 HTML5 视频页面
  10. jenkins配置自动发送邮件,抄送
  11. 微信小程序的概要
  12. pytorch例子学习——TRANSFER LEARNING TUTORIAL
  13. AtCoder Beginner Contest 082 B - Two Anagrams
  14. HTML(一)基础
  15. unity3d如何快速接入渠道SDK之Unity篇
  16. Android Timer的应用示例
  17. centos7下SVN服务器如何搭建
  18. vue中动态添加div
  19. leetcode2:线性表
  20. Python并发编程-多进程进程锁

热门文章

  1. 【转】python get-pip.py could not find a version that satisfies
  2. 欧拉-拉格朗日方程 The Euler-Lagrange Equation
  3. vue根据选择的月份动态展示当前月份的每一天并展示每一天所对应的星期几
  4. Scala实践2
  5. Spring Boot2 系列教程 (十六) | 整合 WebSocket 实现广播
  6. github 关掉邮件通知
  7. css选择器用法,使用css定位元素,css和xpath元素定位的区别
  8. HTML5 App商业开发实战教程 基于WeX5可视化开发平台
  9. Apache Hudi 0.5.1版本重磅发布
  10. Basic Thought / Data Structure: 差分 Difference