关于工作流数据库设计的简单归纳


  工作流的数据库设计  根据我个人的经验 总结一下 可以简单归纳为下面几个要点


1:  因为流程设计器设计出来的流程图是不确定的,谁都不敢事先保证用户用设计器画出来的流程图是个什么样子,其中包含有多少个节点,其中的拓扑连接有多复杂,所以我们在设计工作流数据库结构的时候,要从流程图的本质来理解,一个流程图本质上仅仅是一组包含N个节点和N个节点之间的连接线的数据结构,这种数据结构本身并不需要包含流程的控制参数和控制代码,仅仅是一组流程拓扑结构,必须首先明确这点,否则设计出来的数据库结构会变得相当的复杂,且不利于构建一套简洁的基于数据库的流程控制操作SQL函数集(需要注意的是,有些工作流系统的设计思路中,流程设计器存储的XML数据结构比较复杂,在进行XML-数据库解析的过程中,只需要对某些关键的流程图参数进行提取和存储,并不一定需要把流程图的全部信息都存储在数据库中)

2: 既然我们是在数据库中保存流程图的拓扑结构,那么仅仅有流程图的拓扑结构,也无法实现流程引擎的控制机制,所以设计工作流的数据库结构,还必须在流程的拓扑结构基础上加上一组用于表示流程图中的节点状态的参数字段,一般至少需要给一个流程图的某个节点加上流程运行状态参数,流程控制状态参数等状态值参数,这些状态参数值可以就存储在流程节点表中,也可以存储在流程节点表的附属表中,因工程的不同而不同。。。。


3: 工作流的数据库设计是工作流引擎对工作流进行控制和管理的一个基础层次,工作流系统的层次结构从低到高分为 XML-数据库-流程控制函数集合-ARC(自动运行控制器) 这4个层次,XML这个层次属于流程定义的存储结构,而流程数据库是流程运行的存储结构,实际上这两个层次之间的界限并不是非常明显,我们群里面过去有群友曾经开发的工作流就是把流程设计器设计出来的流程图直接存储在数据库中,并不保存在XML文件中,这样显得更加灵活一些,只是在回显流程的时候,存储的参数要多一些。。

这些看法仅仅是我个人的一点点经验,并不能够概括工作流数据库设计的方方面面,如果大家有更好的想法和思路,欢迎来信或者留言。。。。。。。COMSCI非常乐于和大家交流工作流系统设计的各种问题和想法


  我设计的JWFD开源工作流的数据库结构,详细设计说明在下面的链接中下载

  http://files.cnblogs.com/comsci/JWFDv0.96%E5%B7%A5%E4%BD%9C%E6%B5%81%E5%BC%95%E6%93%8E%E6%95%B0%E6%8D%AE%E5%BA%93%E7%BB%93%E6%9E%84%E8%AF%B4%E6%98%8E.rar

你可能感兴趣的:(数据库设计)