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

第1节. 关键字

驰骋工作流引擎 流程快速开发平台 workflow ccflow jflow

第1节. 流程引擎表结构的设计

流程引擎表是流程引擎控制流程运转的数据存储表,是整个流程引擎的核心表。理解表结构,掌握状态字段,相关字段变化的规律,就掌握的整个流程引擎运转的规律了。

1.1.1: 流程引擎表的作用

流程引擎表,是用来存储流程运行中信息的表。

流程在运行过程中,需要把中间数据写入到该表中。

一个流程启动后,就创建一个workid,就在流程引擎注册表里注册一条数据,有一个字段WFState来表示该流程的运行状态,一个FK_Node标识该流程运行到的节点。

流程启动发送到下一个节点,系统就会产生下一个节点的工作人员,每个人员都有一条记录写入到WF_GenerWorkerList。 在这个WF_GenerWorkerList表里,有FK_Emp,WorkID,FK_Node三个字段作为联合主键。

WF_GenerWorkerList的字段IsRead标明该 待办该文件是否读取, IsPass标识该待办的状态,是否通过/处理过,关于这两张表大详细信息请参考下一章节。

当一个流程结束之后,WF_GenerWorkerlist这个表关于该流程实例的workid数据被全部清除掉,这个workid的流程在这个表的使命已经完成。在WF_GenerWorkFlow表里的状态字段(WFState) 标记已经完成状态,可以供历史流程查询。

工作流程引擎的待办列表是通过这两个表联合组成一个视图实现的。

1.1.2: 流程状态设计

流程在整个生命周期中有不同的状态,合理的设计流程状态,正确的划分是系统协调一致稳定运行的基础。

我们把流程分为如下状态。

流程状态变化的概要说明:

操作员启动一个流程,创建一个workid,这个时候的状态是空白状态,也叫站位状态,如果在启动之前已经有了这个站位状态,它就不在创建新的workid而是取出来这个workid作为当前流程的实例。

如果启用了草稿规则,并且允许有草稿的模式下:

这个时间,如果用户点击保存该状态从空白状态转化为草稿状态,如果用户执行发送当前节点就运行到下一个节点上去了,当前状态变为运行中的状态。如果用户直接关闭了,这个时间的状态就是草稿状态,可以在草稿里找到这条实例记录。

如果不启用草稿,在这种模式下:

这个时间,如果用户点击保存,仍然是空白状态。用户点击发送后,由空白状态转化为运行中状态,当前节点运动到下一个节点上去,下一个节点的工作人员就产生了待办。

如果上一个节点退回了,执行了退回操作,当前的流程状态就变成为退回状态,上一个节点人被退回人就有了待办工作,被退回人打开后,就可以看到退回消息,他点击发送后又变成了运行中的状态,发送到下一个节点上去了。

流程走到最后一个节点,点击发送,整个流程就结束了,状态变为流程完成状态。

1.1.3: 流程引擎表结构

每个字段的详细意思,请参考数据表结构如下图:

流程注册表

流程工作人员表

重要字段解析:

WF_GenerWokFlow


字段名


中文名


解释


WorkID


工作ID


唯一的主键,该表不能重复。


WFState


状态


流程运行状态:

请参考流程状态设计


Title


标题


流程的标题


FK_Flow


流程模版编号

 

FK_Node


停留节点


停留到那个节点上去了。


Starter


发起人

 

RDT


发起日期

 

工作人员列表: WF_GenerWokerList


字段名


中文名


解释


WorkID


工作ID


主键


FK_Emp


状态


主键


FK_Node


标题


主键


IsPass


是否通过?


0=未通过,1=通过


IsRead


是否读取?


0=未读,1=已读


SDT


应完成日期

 

RDT


到达日期

 

CDT


实际完成日期

 

流程运行完毕后,根据当前的工作ID,把数据删除掉。

第2节. 流程业务数据表设计

流程业务数据表是指,一个流程在运转过程中的数据存储的相关表,它包含了流程业务表与流程轨迹表两部分。

1.1.4: 流程业务表

该表名可以被自定义,默认为”ND”+int.prease(流程编号)+”Rpt”为业务表名,该表必须有一个OID作为主键的字段,整个OID字段存储的是WorkID,与流程的WorkID关联在一起。

该业务表的字段由两部分组成:系统字段+业务字段。

系统字段有:

业务字段,就是表单信息的字段,比如:请假人,请假时间,请假类型等。


字段名称


类型


说明


OID


int


OID主键-与流程的workid一致


RDT


nvarchar


记录日期


Title


nvarchar


流程标题


FID


int


FID分合流用到


CDT


nvarchar


完成日期


Rec


nvarchar


记录人


Emps


nvarchar


操作员,多个用逗号分开。


FK_Dept


nvarchar


所在部门


FK_NY


nvarchar


年月,比如:2018-01,统计分析用.


MyNum


int


个数,统计分析用


PNodeID


int


父子流程所用


PrjName


nvarchar


工程名称


PrjNo


nvarchar


工程编号,工程流程所用


PEmp


nvarchar


父子流程所用


AtPara


nvarchar


参数属性


BillNo


nvarchar


单据编号


FlowNote


nvarchar


流程备注


GUID


nvarchar


唯一标识符


WFSta


int


简易状态


FlowStartRDT


nvarchar


发起日期


FlowEnderRDT


nvarchar


最后节点处理日期


FlowEndNode


int


最后停留的节点


FlowDaySpan


float


流程跨度天数


PWorkID


int


父子流程所用


PFlowNo


nvarchar


父子流程所用


FlowEmps


nvarchar


流程参与人


FlowEnder


nvarchar


最后处理人


FlowStarter


nvarchar


流程发起人


WFState


int


流程状态

1.1.5: 轨迹表

流程轨迹表也叫流程日志表,他是记录流程在整个过程中执行的动作操作,如下图就是流程日志表。

流程日志表的作用可是生成流程轨迹图,流程时间轴信息。可以用他来追溯整个流程的运行过程,也可以用该表的数据回滚流程。

原文地址:https://www.cnblogs.com/mengjuan/p/10221733.html

时间: 2024-08-24 02:13:56

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

mysql优化之sql执行流程及表结构(schema)对性能的影响

part 1 sql执行流程(如下图所示) 1.客户端发送一条查询到服务器. 2.服务器通过权限检查后,先检查查询缓存,命中则直接返回结果.否则进入3. 3.服务器进行sql解析,预处理,再由优化器根据该sql涉及到的数据表的信息计算,生成执行计划. 4..MySQL根据优化器生成的执行计划,调用存储引擎的API来执行查询:5..将结果返回给客户端. 总结:SQL执行的最大瓶颈在于磁盘的IO,即数据的读取:不同SQL的写法,会造成不同的执行计划的执行,而不同的执行计划在IO的上面临完全不一样的数

用户和角色:通用权限管理系统数据库表结构如何设计?

一,前言 权限管理系统的应用者应该有三种不同性质上的使用,A,使用权限B,分配权限C,授权权限 本文只从<使用权限>和<分配权限>这两种应用层面分析,暂时不考虑<授权权限>这种.二,初步分析用户和角色 说到权限管理,首先应该想到,当然要设计一个用户表,一个权限表.这样就决定了一个人有什么样的权限.做着做着就会发现这样设计太过繁琐,如果公司里面所有员工都有这样的权限呢,每一个人都要配置?那是一件很痛苦的事情.因此再添加一个角色表,把某些人归为一类,然后再把权限分配给角色.

数据库设计中常见表结构的设计技巧(转)

一.树型关系的数据表 不少程序员在进行数据库设计的时候都遇到过树型关系的数据,例如常见的类别表,即一个大类,下面有若干个子类,某些子类又有子类这样的情况.当类别不确定,用户希望可以在任意类别下添加新的子类,或者删除某个类别和其下的所有子类,而且预计以后其数量会逐步增长,此时我们就会考虑用一个数据表来保存这些数据.按照教科书上的教导,第二类程序员大概会设计出类似这样的数据表结构: 类别表_1(Type_table_1) 名称 类型 约束条件 说明 type_id int 无重复 类别标识,主键 t

[数据库设计]用户和角色:通用权限管理系统数据库表结构如何设计?

一,前言 权限管理系统的应用者应该有三种不同性质上的使用, A,使用权限 B,分配权限 C,授权权限  本文只从<使用权限>和<分配权限>这两种应用层面分析,暂时不考虑<授权权限>这种. 二,初步分析用户和角色 说到权限管理,首先应该想到,当然要设计一个用户表,一个权限表.这样就决定了一个人有什么样的权限. 做着做着就会发现这样设计太过繁琐,如果公司里面所有员工都有这样的权限呢,每一个人都要配置?那是一件很痛苦的事情.因此再添加一个角色表,把某些人归为一类,然后再把权限

表结构的设计

a. 什么样的表才是符合3NF (范式) 表的范式,是首先符合1NF, 才能满足2NF , 进一步满足3NF 1NF: 即表的列的具有原子性,不可再分解,即列的信息,不能分解, 只有数据库是关系型数据库(mysql/oracle/db2/informix/sysbase/sql server),就自动的满足1NF 2NF: 表中的记录是唯一的, 就满足2NF, 通常我们设计一个主键来实现 3NF: 即表中不要有冗余数据, 就是说,表的信息,如果能够被推导出来,就不应该单独的设计一个字段来存放.

activiti学习3:流程引擎对象和流程引擎配置对象

目录 activiti学习3:流程引擎对象和流程引擎配置对象 一.activiti的简单使用流程 二.流程引擎配置对象ProcessEngineConfiguration的介绍 三.activiti配置文件的介绍 四.获取流程引擎配置对象 4.1 读取默认名称的配置文件来创建配置对象 4.2 读取自定义名称的配置文件来创建流程引擎配置对象 五.流程引擎对象 5.1 buildProcessEngine方法创建 5.2 用ProcessEngines类来获取 六.总结 activiti学习3:流程

大屏设计系列之五——大屏设计语言分析

如果您想订阅本博客内容,每天自动发到您的邮箱中,请点这里 作者:蓝蓝 蓝蓝设计经常会接到大屏设计的项目,比如中国移动互联网监控大屏可视化设计及开发.太极集团承接的中央台应急指挥中心大屏可视化设计.交大思源承接的北京地铁轨道批挥中心大屏可视化设计.数码视讯展厅大屏可视化设计,在积累了一定经验的同时,也在不断的学习和丰富关于大屏设计的特点及数据可视化的表达方式. 数据可视化过滤了非常多的冗余信息,浓缩了最重要的信息,它的魅力就在于将枯燥的数据组织在一起,把最需要的那些编辑成一个故事.目前大数据那么流

关系型数据库表结构的两个设计技巧

By良少http://blog.csdn.net/shendl 关系型数据库表结构的设计,有下面两个设计技巧: 物理主键作为关联的外键 关系型数据库,由多个数据表构成.每一个数据表的结构是相同的,不同表之间可能存在关联关系.表之间的关联关系,正是关系型数据库得名的原因. 一个表由多个字段构成.其中可能有多个字段适合作为主键.主键字段,就是表中每一行都不会有重复数据的字段. 主键,可以分为两种:物理主键和逻辑主键. 每一张数据库的表,都使用自增长的id字段作为物理主键. 多表之间的外键关联,都关联

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

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