前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Workflow Core + asp.net core 5.0 实现简单审批工作流

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

作者头像
阿新
发布2021-09-07 15:23:23
5K0
发布2021-09-07 15:23:23
举报
文章被收录于专栏:c#开发者

我们知道企业业务系统到处都可以审批工作流的,但也很少有像OA系统一样复杂多级多条件的审批工作流需要设计,所以我们需要一个轻量级的容易上手的workflow框架,通过GitHub,我发现danielgerlag/workflow-core 就非常合适,我下面我通过自己的一个开源项目利用Workflow core开发了一个文档审批工作流的原型,也算是我开源项目中的一个重要模块

什么是Workflow Core

Workflow Core is a light weight embeddable workflow engine targeting .NET Standard. Think: long running processes with multiple tasks that need to track state. It supports pluggable persistence and concurrency providers to allow for multi-node clusters.

这里我简单的说一下我对工作流的理解,一开始对工作流的映像就是审批工作流,一级批完二级,三级流转的审批,中间还有一些判断,比如金额>多少给什么批,而这些金额,判断逻辑最好是可配置化的,配置最好是图形化的,想怎么配都可以。但实际情况似乎并不能用简单的方式实现上述的功能,当然有类似的成熟的工作流引擎可以做到比如国内的泛微OA,还有一个开源的Elsa,而我想要的还是最简单的最快速,能满足一些简单的业务场景就可以了。 让我们开始吧。

新建一个审批工作流

业务场景:

A用户(neozhu@126.com)上传附件,发起一个新的workflow给B用户(new163@163.com)审批,如果5分钟内没有审批则系统自动取消该审批请求。

这里发起新的请求需要触发发邮件通知B用户有新的审批请求,B审批完成,需要发邮件通知A审批结果。

定义一个Workflow

参考上面的业务场景用代码来定义一个workflow的框架

分5个步骤

  1. InitialStep 初始化 发邮件通知审批人有新的请求
  2. UserTask 等待接收审批结果
  3. ApprovedStep 审批通过 发邮件通知申请人审批通过
  4. RejectedStep 被拒绝 发邮件通知申请人已被拒绝
  5. CancelStep 审批超时 发邮件通知申请超时被取消

InitialStep 定义

重点:initialStep 发邮件的内容是从外部输入的,因此这里的Input方法就是说明step是怎么接收输入参数的,Output表示输出把这个step执行的结果输出到外部

每一个Step就相当于是一个独立的执行单元,参数和结果的输入/输出,全靠input/output两个方法。

UserTask / WithOption 这是 HumanWorkflow 扩展的方法用户接收外部事件,这里就是人工提交审批结果

ApprovedStep 发邮件通知申请人

RejectedStep / CancelStep 功能和ApprovedStep 一致

运行看一下效果

当用户上传新的文件,就会开启一个新workflow,审批人会收到邮件通知.

因为超时流程已经结束

OK,一个简单的workflow就完成。

最后

如果你有什么问题可以留言告诉我

源代码库和测试环境

Github

关于这个项目详细介绍一个遵循CleanArchitecture原则的Asp.net core轻量级开源项目)

RazorPageCleanArchitecture

Demo

喜欢这个开源项目请给的星星,谢谢

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-08-30 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 什么是Workflow Core
  • 新建一个审批工作流
    • 业务场景:
      • 定义一个Workflow
        • InitialStep 定义
          • UserTask / WithOption 这是 HumanWorkflow 扩展的方法用户接收外部事件,这里就是人工提交审批结果
            • ApprovedStep 发邮件通知申请人
              • RejectedStep / CancelStep 功能和ApprovedStep 一致
              • 运行看一下效果
              • 最后
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档