工作流引擎设计第一版

很久没写点东西了,现在有点时间来分享下工作流引擎设计的一点体会。希望能帮助各位园友。

前段时间接手一OA系统项目,经过一段时间的需求调研,总共十多个功能模块,但系统主要功能是应付一堆堆审批流程,各流程千差万别,而且流程变动也大,这无疑是需要设计一个工作流引擎才能解决。这个引擎主要做到流程可配置,可视化编辑,可视化的流程图展示,且需要保留审批处理的历史快照......

经过一段时间的资料查阅(感谢园子的大虾们),并且经合自身的经历(曾经用过,但未曾开发过工作流引擎),终于想出了一套方案:

以下是相关的网络资料:

http://www.cnblogs.com/f2flow/p/3659685.html

http://cqroad.cn/

链接一主要是可借鉴下流程的运转模型,连接二主要是可借鉴下流程图设计

标准参考模型图:

以我的理解,工作流引擎分两大部分:流程模板库和流程实例库。

流程模板库是各流程配置的地方,可看作是工厂生产仓库中的机模,里面包含了流程制作的处理步骤,各步骤的运转方式,发起权限,提醒处理,处理人设置等,当流程模板装配完毕后就可批量生产,上市销售了。

流程实例就好比如上述已上市销售的流程产品了,经过用户的选择购买。按照相关说明进行使用。

其组成可理解如下:

一个流程模板可生成多个实例(如对象实例化一样),每个实例中包含多个处理步骤,每个处理步骤中蕴含了所指定的表单(数据呈现)、处理动作、运转规则、提醒处理等。

其中处理动作主要是:草稿,提交,驳回,作废,暂存,转办,转阅。

处理规则就是根据流程的运转模型而定,顺序模式,单选模式,并行分支模式,汇聚模式,转办模式,驳回模式等

而表单,则是流程步骤处理时的数据展现形式,可理解为页面。里面的数据及呈现需根据自身业务情况而定。流程与表单的结合是一个难点。

经过我的理解,梳理出一个适合自己设计时的流程引擎模型

模型中分成三个库,这主要都是为了体现在数据存储上。模板管理与表单库有机地结合(模板管理负责流转规则的配置,表单库负责数据呈现)制作成模板,最终被用户所使用,激活成一个个实例至运行库中。如运行库中的实例出现异常,则需要流程监控模块进行调整。

不过表单的设计是一个难点,需要进行多种格式化的处理,由于时间和人力都有限,没有具体实现此功能。目前是使用硬编码设计表单的形式来应付。

分享一下数据结构:

     

流程配置图:

步骤配置:

目前的流程引擎还未考虑到支持多平台调用,只局限于自身系统。各们有见解的可留言分享,感谢。

有很多实现细节未能详细讲述,日后有时间再分享。

时间: 2024-10-13 00:30:33

工作流引擎设计第一版的相关文章

微型工作流引擎设计

微型工作流引擎设计 一.前言 提到工作流很多人就会想到OA,的确OA就是典型的工作流的应用,但是工作流并不仅仅局限于OA,工作流应该算是基础框架软件,主要用于流程的重组和优化,它有广阔的应用领域.在java下有很多优秀的开源工作流可以选择比如activit5.jpbm4等,在.net下却几乎找不到令人满意的工作流引擎可用.当然不是说.net下没有开源的只是有些国产开源的但看了代码后就一点兴趣都没有了,且不说代码质量如何,还引入了一大堆的东西,想在项目中应用也是非常困难.鉴于此我还是决定自己开发一

我的微型工作流引擎设计

一.前言 提到工作流很多人就会想到OA,的确OA就是典型的工作流的应用,但是工作流并不仅仅局限于OA,工作流应该算是基础框架软件,主要用于流程的重组和优化,它有广阔的应用领域.在java下有很多优秀的开源工作流可以选择比如activit5.jpbm4等,在.net下却几乎找不到令人满意的工作流引擎可用.当然不是说.net下没有开源的只是有些国产开源的但看了代码后就一点兴趣都没有了,且不说代码质量如何,还引入了一大堆的东西,想在项目中应用也是非常困难.鉴于此我还是决定自己开发一款.NET微型工作流

驰骋工作流引擎设计系列02

流程实例的生成设计 第1节. 关键字 驰骋工作流引擎 流程快速开发平台 workflow ccflow jflow 第2节. 关于WorkID的设计 workid也叫流程实例id, 理解清楚workid的整个过程有助于理解如何获得数据,以及相关流程引擎表,业务数据表的产生变化的过程. 第3节. 概要说明 工作流程引擎的WorkID,也叫流程实例的ID,他是一个Int64类型的,自动增长的数据类型,经过严格的测算,一般应用不会枯竭. 一个workid可会贯穿整个流程的生命周期,从workid创建开

驰骋工作流引擎设计系列04 流程引擎表结构的设计

第1节. 关键字 驰骋工作流引擎 流程快速开发平台 workflow ccflow jflow 第1节. 流程引擎表结构的设计 流程引擎表是流程引擎控制流程运转的数据存储表,是整个流程引擎的核心表.理解表结构,掌握状态字段,相关字段变化的规律,就掌握的整个流程引擎运转的规律了. 1.1.1: 流程引擎表的作用 流程引擎表,是用来存储流程运行中信息的表. 流程在运行过程中,需要把中间数据写入到该表中. 一个流程启动后,就创建一个workid,就在流程引擎注册表里注册一条数据,有一个字段WFStat

驰骋工作流引擎设计系列06 保存草稿设计

第1节. 关键字 驰骋工作流引擎 流程快速开发平台 workflow ccflow jflow 第1节. ccflow保存与保存草稿设计 保存,就是用户点击保存所要执行的工作,在讲解这个概念之前,我们要了解什么是草稿规则. 1.1.1:ccflow 关于草稿规则 定义:流程发起工作做了一部分,就关闭了下次处理,对这件工作我们就称为草稿. 应用背景:草稿也是常用功能之一,它是针对于,开始节点的表单才有意义.它类似于我们的邮件草稿,当您发起一个工作后,录入了一些数据,有与其他的原因,需要暂停该工作,

驰骋工作流引擎设计系列10时效考核规则设计

第1节. 关键字 驰骋工作流引擎 流程快速开发平台 workflow ccflow jflow 第1节. 时效考核规则设计 考核是流程运行的副产品,业务搬到了计算机上,整个运行轨迹就会被有效的记录下来.CCBPM的考核分为时效考核.质量考核.时效考核是对工作及时程度的一种考核,而质量考核是一个节点对上一个节点工作完成好坏的一个考核. 1.1.1: 时效考核的系统配置 系统配置分为工作日信息设置,节假日信息设置. 上下班&午休时间配置,该设置在全局变量里:JFlow的配置: CCFlow的配置:

asp.net开源流程引擎API开发调用接口大全-工作流引擎设计

关键词: 工作流引擎 BPM系统 接口调用 工作流快速开发平台  工作流流设计  业务流程管理   asp.net 开源工作流 一.程序调用开发接口二.   接口说明 所谓的驰骋工作流引擎的接口,在BP.WF.Dev2Interface.*上面的静态方法,前台页面通过这些静态方法通过页面于操作者提供交互数据功能交互.    Port_* 开头的方法都是组织结构相关的操作,比如:登录.登出.发送消息.    DB_*的都是提供数据列表的接口,比如:发起列表.待办列表.在途列表.完成列表等.   

工作流引擎设计--休假模块表

简单的休假系统设计 PTORequest:保存用户的请求 Name code type isNull 主键 PTORequestId int NOT NULL 提出请求的用户 ENTUserAccountId int NOT NULL 要请假的日期 RequestDate datetime NOT NULL 请假类型 PTORequestTypeId int NOT NULL 请假天数 PTODayTypeId int NOT NULL 被撤销或被否决 Cancelled bit NOT NUL

工作流引擎设计

ENTWorkflow:工作流主表 Name code type isNull 主键 ENTWorkflowId Int NOT NULL 工作流名称 WorkflowName Varchar(50) NOT NULL 说明 ENTWorkflowObjectName Varchar(255) NOT NULL ENTWFOwnerGroup:工作流拥有的用户组 Name code type isNull 主键 ENTWFOwnerGroupId Int NOT NULL 工作流ID ENTWo