首先感谢作者能写出如此优雅的作品,作品地址:Workflow-Core

由于工作需要,需要在项目中添加工作流引擎,经过产品经理的选型,决定用这个,并且将这个任务分配给我。经过几天的研究,我在这边做一点简单的介绍,给将要使用的同仁做一点参考。详细的可以参考项目的 wiki 文档,不过都是英文的。

在我理解工作流是对某一个具体任务和任务之间业务规则的抽象,他将任务拆分为若干步骤,然后将这些步骤串起来,协同完成一个或多个任务。对于我们需要的分支/循环等,这个引擎都有着不错的支持。回到框架本身,最基本的他需要自行定义若干步骤(Step),代码中体现为继承StepBody,并实现对应的虚方法,我们来定义一个最基本的步骤:

    public class SayHello : StepBody{public override ExecutionResult Run(IStepExecutionContext context){("Hello Guys !").ConsoleWithTime();//自己拓展的方法,不要纠结我为啥这么写return ExecutionResult.Next();}}

各个步骤按照一定的顺序串起来就构成了工作流,以下来定义一个工作流:

    public class ChatWorkflow : IWorkflow{public string Id => "ChatWorkflow";public int Version => 1;public void Build(IWorkflowBuilder<object> builder){builder.StartWith<SayHello>().Then<Sing_A_Song>().Then<SayGoodBye>();}}

到这边我们就完成了流的定义,剩下的工作就是让他动起来。

在启动工作流之前需要在服务中进行注册,注册完成我们就可以是start了。看代码:

    public class Program{static void Main(string[] args){IServiceProvider serviceProvider = ConfigureServices();var host = serviceProvider.GetService<IWorkflowHost>();host.RegisterWorkflow<ChatWorkflow>();host.Start();host.StartWorkflow("ChatWorkflow");Console.ReadLine();host.Stop();}private static IServiceProvider ConfigureServices(){IServiceCollection services = new ServiceCollection();services.AddLogging();services.AddWorkflow();var builder = new ContainerBuilder();builder.Populate(services);return new AutofacServiceProvider(builder.Build());}}

结果来了:

很显然这个是最基本的功能实现,很多情况下是不满足我们要求的,接下来一起看看他的其他用法,我只简单介绍他可以做什么,不会一个个展开,他的文档中有些东西也很明了,如果有不明白的,留言我们一起探讨:

1、步骤间数据传递,步骤可以接收参数的,这样写一个步骤就可以实现多样的功能;

2、多种结果,类似分支结构,可以根据不同情况执行不同的步骤;

3、错误处理,可以捕捉执行过程中的异常,并处理,步骤的异常和流的异常都提供方法操作,出现出错可以设置挂起,终止和重试;

4、控制结构,支持循环/分支,还支持几个步骤并行执行;

5、支持持久化,提供MongoDB/SQL Server/PostgreSQL/Sqlite等拓展程序,可以直接使用;

6、支持集群;

7、支持从JSON加载工作流定义,但是步骤只能通过全限定名调用,意思只能加载流的定义,不能动态加载步骤的定义,步骤需要事先定义好,里面可以带参数;

8、计划和重复,可以设置定时执行和重复执行,可以设置满足某个条件时停止重复;

9、目标框架 .NET Standard 1.3 ,.net core也可以用;

10、我的学习能力有限,也没必要研究的很透,大家选型的时候可以作为参考,我列出来的并不是全部功能,如果有错误也请帮忙指出。

最后祝大家学习愉快。

开源工作流框架 workflow-core 的学习和使用相关推荐

  1. .NET 5 开源工作流框架elsa技术研究

    编者注: 工作流框架 elsa 是.NET基金会下面的开源项目,2.0版本即将在3月份发布,目前正在紧锣密鼓的开发之中,2020年2月份我也介绍过推荐一个很棒的开源工作流elsa-core ,今天给大 ...

  2. 什么是开源工作流框架?有什么特点?

    在大数据时代,开源工作流框架也成为大家提升办公效率的利器软件之一.那么,什么是开源工作流框架?又有哪些特点?作为低代码平台服务商,流辰信息有责任和义务潜心研发更多优良的软件产品,为各大中型企业提升协同 ...

  3. 阿里开源工作流框架 compileflow 上手使用

    compileflow 是什么 compileflow 是一个非常轻量.高性能.可集成.可扩展的流程引擎. compileflow Process 引擎是淘宝工作流 TBBPM 引擎之一,是专注于纯内 ...

  4. Workflow Core + asp.net core 5.0 实现简单审批工作流

    我们知道企业业务系统到处都可以审批工作流的,但也很少有像OA系统一样复杂多级多条件的审批工作流需要设计,所以我们需要一个轻量级的容易上手的workflow框架,通过GitHub,我发现danielge ...

  5. 详解工作流框架Activiti的服务架构和组件

    摘要:通过这篇文章,可以对工作流有一个基本的认识,为后续工作流框架Activiti的学习打下坚实的基础. 本文分享自华为云社区<BPMN工作流的基本概念!详解工作流框架Activiti的服务架构 ...

  6. 宅急送 项目第八天 JBPM工作流框架

    项目第八天和项目第九天 学习 JBPM 理论部分 项目第十天 权限管理模块 项目第十一天 项目第十二天 JBPM 应用 1. 工作流框架概述 1.1. 什么是工作流 工作流(Workflow),就是& ...

  7. Core Data 学习笔记(二)被管理对象模型

    为什么80%的码农都做不了架构师?>>>    目录 Core Data 学习笔记(一)框架简介 Core Data 学习笔记(二)被管理对象模型 Core Data 学习笔记(三) ...

  8. Activiti工作流框架学习笔记(一)

    工作流的概念 先看下面两张图: 对以上两张图进行说明: 假设这两张图就是华谊兄弟的请假流程图 图的组成部分: 人物:范冰冰.冯小刚.王中军 事件(动作):请假.批准.不批准 通过以上分析我们就可以抽象 ...

  9. Activiti工作流框架学习(一)环境的搭建和数据表的了解

    一.什么是工作流 工作流(Workflow),就是"业务过程的部分或整体在计算机应用环境下的自动化",它主要解决的是"使在多个参与者之间按照某种预定义的规则传递文档.信息 ...

最新文章

  1. HAProxy Keepalived L4-L7 高可用负载均衡解决方案
  2. 使用 Optional 摆脱 NullPointException 的折磨
  3. Linux 线程学习之条件变量
  4. 如何正确区分cssci和核心期刊
  5. java comparator_【面试题】Java必考面试题全集(15)
  6. shell编程题(一)
  7. python变量声明语句_python – 在条件语句中声明变量有问题吗?
  8. npm命令用于卸载或修剪Node.js中未使用的包
  9. [Swift]LeetCode227. 基本计算器 II | Basic Calculator II
  10. 45.MySQL Cluster
  11. dreamweaver网页设计作业制作 学生个人网页单页 WEB静态网页作业模板 大学生个人主页博客网页代码 dw个人网页作业成品简单页面
  12. 2017年高校网络信息安全管理运维挑战赛部分题解
  13. DWG文件不大,打开却慢的要死?
  14. Oracle11g创建、删除表空间语句
  15. Spring Boot(二):整合 JPA 及 事务控制
  16. python pack和unpack
  17. Spring Security系列教程06--实现HTTP摘要认证
  18. 微信赌场——H5棋牌游戏渗透之旅
  19. 55--mvc:annotation-driven标签解析
  20. let in,let of的区别

热门文章

  1. 易知微数字孪生智慧港口|打造智能化调度综合管控“大脑”,实现港口建设“新升级”
  2. Linux之Django安装
  3. 生命文化:和谐社会的基石
  4. 细水长流 打破地方特色餐饮店推广运营的坚冰
  5. 基于自回归整合滑动平均模型(ARIMA)的时间序列预测
  6. 八卦CSDN博客排名
  7. Java接口回调详解
  8. SphereEx 一周年:保持热爱,奔赴下一场『云』海
  9. activity连线,排他网关和并行网关以及接收任务
  10. hbo切尔诺贝利_如何为儿童和成人管理HBO Max配置文件