Slickflow.NET 开源工作流引擎基础介绍(八) -- 自动化任务调度实现
2017-10-13 18:48
281 查看
前言:审批流程中常见的都是人工类型任务,但是也会有一些自动化的任务需要定时触发。因此,引擎框架中需要解决掉两个问题:选择合适的任务调度框架,集成新的任务调度模块。
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组件的健壮性和跨平台性,可以满足大多数企业级客户的业务需求和大批量作业调度请求。
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 开源工作流引擎基础介绍(七) -- 并行分支多实例模式实现
- Slickflow.NET 开源工作流引擎基础介绍(四) -- 多数据库支持实现
- Slickflow.NET 开源工作流引擎基础介绍(九) -- .NET Core2.0 版本实现介绍
- Slickflow.NET 开源工作流引擎基础介绍(二) -- 引擎组件和业务系统的集成
- Slickflow.NET 开源工作流引擎基础介绍(五) -- 会签加签高级特性介绍
- Slickflow.NET 开源工作流引擎基础介绍(三) -- 基于HTML5/Bootstrap的Web流程设计器
- Slickflow.NET 开源工作流引擎基础介绍(六)--模块化架构设计和实践
- 详解免费开源的DotNet任务调度组件Quartz.NET(.NET组件介绍之五)
- 免费开源的DotNet任务调度组件Quartz.NET(.NET组件介绍之五)
- ASP.NET使用Quartz.NET实现定时任务调度
- 【原创】开源Math.NET基础数学类库使用(01)综合介绍
- 【原创】开源Math.NET基础数学类库使用(13)C#实现其他随机数生成器
- WinServiceTask 任务调度,也可以用于ASP.NET实现自动服务
- Quartz.NET 2.0 学习笔记(5) :实例创建Windows服务实现任务调度
- 基于ASP.NET MVC(C#)和Quartz.Net组件实现的定时执行任务调度
- 【原创】开源Math.NET基础数学类库使用(13)C#实现其他随机数生成器
- Quartz.NET 2.0 学习笔记(3) :通过配置文件实现任务调度
- spring(基础五) spring实现后台的任务调度TimerTask和Quartz
- Quartz.NET 2.0实例创建Windows服务实现任务调度
- Quartz.NET 2.0实例创建Windows服务实现任务调度