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

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组件的健壮性和跨平台性,可以满足大多数企业级客户的业务需求和大批量作业调度请求。

Slickflow.NET 开源工作流引擎基础介绍(八) -- 自动化任务调度实现介绍的更多相关文章

  1. Slickflow.NET 开源工作流引擎基础介绍(二) -- 引擎组件和业务模块的交互

    集成流程引擎的必要性 业务过程的变化是在BPM系统中常见的现象,企业管理层需要不断优化组织架构,改造业务流程,不可避免地带来了业务流程的变化,企业信息系统就会随之面临重构的可能性.一种直接的方式是改造 ...

  2. Slickflow.NET 开源工作流引擎基础介绍(二) -- 引擎组件和业务系统的集成

    集成流程引擎的必要性 业务过程的变化是在BPM系统中常见的现象,企业管理层需要不断优化组织架构,改造业务流程,不可避免地带来了业务流程的变化,企业信息系统就会随之面临重构的可能性.一种直接的方式是改造 ...

  3. Slickflow.NET 开源工作流引擎基础介绍(七) -- 并行分支多实例模式实现

    前言:并行审批是比较常见的流程模式,在工作流模式介绍中,通常是多个分支通过网关(Gateway)来控制实现.默认的分支类型是静态定义好的.本文扩展了并行网关的控制方式,实现了动态多实例的并行分支网关, ...

  4. Slickflow.NET 开源工作流引擎基础介绍(六)--模块化架构设计和实践

    前言:在集成Slickflow.NET 引擎组件过程中,引擎组件需要将用户,角色等资源数据读取进来,供引擎内部调用:而企业客户都是有自己的组织架构模型,在引入模块化架构设计后,引擎组件的集成性更加友好 ...

  5. Slickflow.NET 开源工作流引擎基础介绍(一) -- 引擎基本服务接口API介绍

    1. 工作流术语图示                                              图1 流程图形的BPMN图形元素表示 1) 流程模型定义说明流程(Process):是企 ...

  6. Slickflow.NET 开源工作流引擎基础介绍(九) -- .NET Core2.0 版本实现介绍

    前言:.NET Core 是.NET Framework的新一代版本,是微软开发的第一个跨平台 (Windows.Mac OSX.Linux) 的应用程序开发框架(Application Framew ...

  7. Slickflow.NET 开源工作流引擎基础介绍-.NET Core2.0 版本实现介绍 (转)

    前言:.NET Core 是.NET Framework的新一代版本,是微软开发的第一个跨平台 (Windows.Mac OSX.Linux) 的应用程序开发框架(Application Framew ...

  8. Slickflow.NET 开源工作流引擎基础介绍(四) -- 多数据库支持实现

    前言:引擎作为中间件集成到用户的项目里面去,针对用户的数据库类型,需要作出SQL部分的分别实现.引擎默认数据库为MS SQLSERVER,同时也支持ORACLE, MYSQL, KINGBASE等不同 ...

  9. Slickflow.NET 开源工作流引擎基础介绍(五) -- 会签加签高级特性介绍

    前言:会签和加签是常见审批流程模式,在引擎中,对这两种流程模式做了分别定义和实现,其中也用到了Workflow Pattern的Multiple Instance(多实例) . 1. 会签和加签的定义 ...

随机推荐

  1. spark RDD 常见操作

    fold 操作 区别 与 co 1.mapValus 2.flatMapValues 3.comineByKey 4.foldByKey 5.reduceByKey 6.groupByKey 7.so ...

  2. [转载]AngularJS 开发者最常犯的 10 个错误

    http://www.oschina.net/translate/top-10-mistakes-angularjs-developers-make

  3. 使用data:uri上传图片

    上传图片的方式有两种,一种是使用传统的html控件的方式,设置form属性为multipart/form-data.这种方式兼容ie6,ie7.另一种方式是使用data:uri,将base64编码从浏 ...

  4. R9—R常用函数分类汇总

    数据结构 一.数据管理 vector:向量 numeric:数值型向量 logical:逻辑型向量 character:字符型向量 list:列表 data.frame:数据框 c:连接为向量或列表 ...

  5. python的__get__、__set__、__delete__(1)

    内容:    描述符引导        摘要        定义和介绍        描述符协议        调用描述符        样例        Properties        函数和 ...

  6. Chrome插件:gitlab activity dashboard background-color

    背景 我一般都是在activity dashboard页看同事的提交记录,这样只要我有权限的项目有人提交了我就能够知道,虽然提交的具体代码压根不看.......但至少能够了解各个项目的开发情况(如果大 ...

  7. D. Dasha and Chess(交互题)

    题目链接:http://codeforces.com/contest/1100/problem/D 题目大意:给你一个999*999的图,然后有666个黑色旗子,一个白色棋子,每一次白色棋子只能在它附 ...

  8. node.js 安装 测试

    2014年5月1日 18:48:01 安装: 系统是centos,里边的python版本是2.4,但是node.js 源码tar包安装要求是 2.6 或者 2.7 下载python 2.7编译安装,注 ...

  9. python文件操作及格式化输出

    1 文件与IO 1.1读写文本数据 读写各种不同的文本数据,如ASCII,UTF-8,UTF-9编码等. 使用带有rt模式的open()函数读取文本文件. 例如: with open('db', 'r ...

  10. Python发送邮件:smtplib、sendmail

    本地Ubuntu 18.04,本地Python 3.6.5, 阿里云Ubuntu 16.04,阿里云Python 3.5.2, smtplib,sendmail 8.15.2, 今天,打算实现通过电子 ...