工作流设计_时间引擎的例子
好久没写了文章了,离职都一个月了,计划年前不找工作了,在家好好看看书,学习一下,以前工作的时候总抱怨没时间学习。
没想到在家这一个月,别说学习了,连电脑都没开过。
放纵的感觉真的很不错,就是放纵后的空虚让人实在不爽,由其是半夜醒来时。写篇文章吧,希望今晚能睡个好觉
关于时间引擎
时间管理、控制、统计,在流程控制类程序开发中是非常重要的,但在业务流程开发中所使用的计时器与工控或算法中使用的计时器很多时候是不一样的,工控或算法中使用的计时器要求精准,而业务流程的计时器可能需要加入工作日、效率,等功能。
可以体现业务时间与周期变化,使业务流程基于特定的时间坐标中运行、管理、控制、统计、的需求,我就将其定义为时间引擎。
时间引擎有两部分组成
-
时间轴,包括时间轴定制管理与时间周期算法
-
基于时间轴的查询、统计、提醒、事件触发模块
说明:以上定义是本人总结的,没有参考任何技术文档,可能会与其它专业文章有理论头冲突。
时间引擎的一些应用表现
流程的总进度与总时限的显示
流程具体节点的时限提示
基于非公历日期的计划安排
自动处理流程
工作流设计_时间引擎的例子
由DelayActivity说起
DelayActivity是一个WF的计时器组件,是系统级的计时器,不适合将其直接作为业务业点
先看一个业务片段
流程如下图设计,会有很多问题
-
基于工作日计算
-
不可抗力发生时的法定延期
-
审批人提出的延期
-
工作时间的临时调整
为了解决上述问题,需要为系统设计一个业务时间系统
业务时间系统的方案选择
有两种方式,一种是时间触发器内置,一种是时间触发器发置。
上例的DelayActivity就是一个内置的时间触发器。
内置触发与外置触发各有好外,
内置触发与流程设计结合紧密,流程设计直接体现了业务逻辑
外置触发灵活性大,在设计流程时对主路径的影响小
本例使用的外置触发模式,系统结构说明
程序结构说明
数据库说明
流程说明
模拟如下流程片段
使用说明
制作管理工作日
(关于日期码表的生成以写过相应的文章,本例只提供了生成的日期码表)
启动引擎
显示的是WCF的访问接口
创建事项
处理事项
看到的结果
通过时限管理模块查看事项时限
通过工作日管理程序修改工作日
重新查看事项期限提示
启动自动处理
启动自动处理,如果你不想等7天,就改一下系统时间吧
超时的流程已自动处理了,没超时的还存在
代码与数据库下载
https://files.cnblogs.com/wxwinter/wxwinter.rar