zoukankan      html  css  js  c++  java
  • Workflow Core + asp.net core 5.0 实现简单审批工作流

    我们知道企业业务系统到处都可以审批工作流的,但也很少有像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
    喜欢这个开源项目请给的星星,谢谢

  • 相关阅读:
    《ElasticSearch6.x实战教程》之准备工作、基本术语
    《ElasticSearch6.x实战教程》正式推出
    【好书推荐】《剑指Offer》之硬技能(编程题12~16)
    synchronized凭什么锁得住?
    synchronized到底锁住的是谁?
    Java面试宝典(2020版)
    50道Redis面试题及答案整理,史上最全!
    MySQL面试题及答案整理,史上最全!
    Github 上优秀的 Java 项目推荐
    100道MySQL常见面试题总结
  • 原文地址:https://www.cnblogs.com/neozhu/p/15204725.html
Copyright © 2011-2022 走看看