推荐一个很棒的开源工作流elsa-core

开源项目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,我继续受到图书馆的启发,例如Workflow Core和Workflow 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/311787.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WTM系列视频教程:MVVM

WTM系列视频教程第三章:MVVM文字摘要:“要讲MVVM模式,我们先来讲一下传统的MVC模式,要讲MVC模式,我们先来讲一下没有模式。。。”“为了演示没有模式,咱们整个项目就保留一个Program.cs文件,不使…

word List 22

word List 22 如果存在什么问题,欢迎批评指正!谢谢!

[蓝桥杯]波动数列

题目描述 观察这个数列:1 3 0 2 -1 1 -2 …这个数列中后一项总是比前一项增加2或者减少3。 栋栋对这种数列很好奇,他想知道长度为 n 和为 s 而且后一项总是比前一项增加a或者减少b的整数数列可能有多少种呢? 输入 输入的第一行包含四个整数 n…

ASP.NET 开源导入导出库Magicodes.IE Docker中使用

更新历史2019.02.13【Nuget】版本更新到2.0.2【导入】修复单列导入的Bug,单元测试“OneColumnImporter_Test”。问题见(https://github.com/dotnetcore/Magicodes.IE/issues/35)。【导出】修复导出HTML、Pdf、Word时,模板在某些情…

python爬取评论_python 爬取马蜂窝景点翻页文字评论的实现

使用Chrome、python3.7、requests库和VSCode进行爬取马蜂窝黄鹤楼的文字评论(http://www.mafengwo.cn/poi/5426285.html)。 首先,我们复制一段评论,查看网页源代码,按CtrlF查找,发现没有找到评论,说明评论内容不在http…

一个支持 CodeFirst/DbFirst/ModelFirst 的数据库小工具

一个支持 CodeFirst/DbFirst/ModelFirst 的数据库小工具IntroDbTool 是一个支持 CodeFirst/DbFirst/ModelFirst 的数据库小工具,原本是基于 dotnet framework WinForm 实现的,在 1.1.0 版本更新中使用 dotnet core 3.1 基于 WPF 重写了,并实现…

高级数据结构---并查集

高级数据结构—并查集 原理&#xff1a;参考趣学数据结构 代码&#xff1a; #include<stdio.h> #include<stdlib.h> #define N 100 int father[N]; int find(int x) {//寻找共同祖先if (x ! father[x]) {father[x] find(father[x]);}return father[x];//找到了…

k8s - 如何变更CNI网络插件IP池?

作者&#xff1a;justmine头条号&#xff1a;大数据与云原生微信公众号&#xff1a;大数据与云原生创作不易&#xff0c;在满足创作共用版权协议的基础上可以转载&#xff0c;但请以超链接形式注明出处。为了方便阅读&#xff0c;微信公众号已按分类排版&#xff0c;后续的文章…

word List23

word List23 如果存在什么问题&#xff0c;欢迎批评指正&#xff01;谢谢&#xff01;

一个新实验:使用gRPC-Web从浏览器调用.NET gRPC服务

今天给大家翻译一篇由ASP.NET首席开发工程师James Newton-King前几天发表的一篇博客&#xff0c;文中带来了一个实验性的产品gRPC-Web。大家可以点击文末的讨论帖进行相关反馈。我会在文章末尾给出原文链接。全部译文如下&#xff1a;我很高兴宣布通过.NET对gRPC-Web进行实验性…

python文件图标变成小电脑_手把手教你给Python程序写图形界面,并且打包成exe文件-exe文件...

环境配置 官网下载Python3&#xff0c;LZ的配置环境是Python3.6&#xff0c;PyCharm 2017.2.1pip3 install PyQt5 #下载PyQt5 pip install PyQt5-tools -i http://pypi.douban.com/simple --trusted-hostpypi.douban.com #下载工具designer.exe&#xff0c;来开发图形界面 在Py…

数据结构(哈夫曼树+KMP)之 数据加密+解密

数据结构&#xff08;哈夫曼树KMP&#xff09;之 数据加密解密 原理&#xff1a;参考趣学数据结构 代码&#xff1a; #include<stdio.h> #include<stdlib.h> #define N 100 #define INF 2^31-1 int next[N]; int Sum 0;//权重总和 typedef struct fNode {//哈夫…

扩展性思维

扩展性思维&#xff0c;简单来说就是举一反三、触类旁通&#xff1b;它的核心目标是提升我们思维的广度&#xff0c;也就是让我们的知识树变得更加开阔&#xff1b;具备了这样的知识树后才能发现要解决的同类型事情一起解决。下面以几个举一反三的例子讲一下扩展性思维&#xf…

C语言 ---文件读取

C语言 —文件读取 参考学习链接&#xff1a; https://blog.csdn.net/qq_38149046/article/details/80359743 http://c.biancheng.net/view/2068.html 代码&#xff1a; #include<stdio.h> #include<stdlib.h> int main() {FILE *fp;char ch;//如果文件不存在&am…

个人永久性免费-Excel催化剂功能第119波-一大波虚构数据,支持多国语言版本

日常的数据分析过程中或者制作教程过程中&#xff0c;难免要生成一些示例数据、虚构数据&#xff0c;Excel除了几个基础的随机数值函数外&#xff0c;没有什么额外的支持&#xff0c;本篇再次补全这个缺陷。虚构函数的由来本次的功能&#xff0c;使用老外做的轮子&#xff0c;有…

python可变参数和关键字参数位置_python中函数的默认参数和可变长参数如何排列?...

参数在python中总是通过赋值进行传递的。在默认情况下&#xff0c;参数是通过其位置进行匹配的&#xff0c;从左到右&#xff0c;而且必须精确的传递和函数头部参数名一样多的参数。 这种默认的传递方式很简单 def f(a,b,c): print(a,b,c) f(1,2,3) 1 2 3 python中可以使用基于…

word List 24

word List 24 如果存在什么问题&#xff0c;欢迎批评指正&#xff01;谢谢&#xff01;

[USACO1.5]八皇后 Checker Challenge

给定一个 NN 的棋盘&#xff0c;请你在上面放置 N 个棋子&#xff0c;要求满足&#xff1a; 每行每列都恰好有一个棋子 每条对角线上都最多只能有一个棋子 上图给出了当 N6 时的一种解决方案&#xff0c;该方案可用序列 2 4 6 1 3 5 来描述&#xff0c;该序列按顺序给出了从…

python窗口显示表格_pyqt 调用tablewidget窗口时无法显示窗口内容

请教一下大家&#xff0c;想实现在主窗口中点击按钮调用一个新窗口&#xff0c;这个窗口是tablewidget&#xff0c;目前可以实现弹出窗口&#xff0c;但是无法显示表格&#xff0c;只有一个空白窗口。实在找不到原因了&#xff0c;还请大家指点。 这是主窗口代码 # -*- coding:…

程序员过关斩将--redis做消息队列,香吗?

菜菜哥&#xff0c;我刚做完了一个订单系统&#xff0c;感觉很简单呀说说看&#xff0c;大量的订单状态怎么处理的&#xff1f;我设计的时候可是考虑了这一点&#xff0c;所以用了异步处理&#xff0c;采用了MQ那用的什么MQ呢&#xff0c;透露一下呗我用的redis做的MQ&#xff…