zoukankan      html  css  js  c++  java
  • .NET 开源工作流: Slickflow流程引擎基础介绍(八) -- 自动化任务调度实现介绍

    前言:审批流程中常见的都是人工类型任务,但是也会有一些自动化的任务需要定时触发。因此,引擎框架中需要解决掉两个问题:选择合适的任务调度框架,集成新的任务调度模块。

    1. 任务调度框架选择

    Hangfire 是一个开源的.NET任务调度框架,目前1.6+版本已支持.NET Core。

    基于队列的任务处理(Fire-and-forget jobs)
    延迟任务执行(Delayed jobs)
    定时任务执行(Recurring jobs)
    延续性任务执行(Continuations)

    Hangfire用的是开源的NCrontab组件,通过Cron 表达式语法,可以指定非常灵活的定时任务类型。

    1) 官方网站地址

    https://www.hangfire.io/
    2) ASP.NET 网站支持
    http://docs.hangfire.io/en/latest/installation.html
    包括安装和部署,数据库设置等。
    安装步骤说明:
    http://docs.hangfire.io/en/latest/installation.html
    3) 数据库


    在HangFire的NuGet包安装过程中,HangFire数据库脚本会自动生成HangFireDB,或者也可以手工生成数据库。

    2. 流程设计器支持CRON表达式编辑

     CRON表达式编辑开源项目地址:

    https://github.com/LGX9/cron-expression-editor

    3. 任务调度模块(Slickflow.Schedule)

     3.1 流程逾期自动完成

        1) 数据库字段

         流程实例表WfProcessInstance中有流程实例“逾期时间”和“逾期处理时间”字段信息,用于记录任务调度数据。

        2) 逻辑描述     

            在流程启动或者中间状态时,更新流程实例的逾期时间,这样后台定时作业任务会检测流程实例表中有没有逾期的流程实例,如果存在,则自动设置流程实例为终结状态。

        3) 任务队列添加

     3.2 流程定时启动

        1) 数据库字段

         流程定义表(WfProcess)表中字段包含“是否定时启动?”和“定时启动CRON表达式”字段。用于定义定时任务触发信息。

        2) 定时启动流程节点

        

        3) 加入定时任务队列

    4. 任务调度监视面板(Dashboard)

     

    5. 总结

         集成HangFire任务调度框架,使得Slickflow引擎产品可以支持自动处理的节点任务类型,也增强了流程的任务自动化处理能力;同时HangFire组件的健壮性和跨平台性,可以满足大多数企业级客户的业务需求和大批量作业调度请求。

  • 相关阅读:
    python chr()、unichr()和ord()
    串的重复
    HDOJ 1465 不容易系列之一
    HDOJ 2050 折线分割平面
    最小距离
    HDOJ 2013 蟠桃记
    三进制转十进制
    数组转置
    蔬菜价格
    扑克牌移动
  • 原文地址:https://www.cnblogs.com/slickflow/p/7661922.html
Copyright © 2011-2022 走看看