驰骋工作流引擎设计系列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
驰骋工作流引擎设计系列04 流程引擎表结构的设计相关推荐
- 关于工作流程引擎表结构的设计概要说明.
流程引擎表结构的设计 流程引擎表是流程引擎控制流程运转的数据存储表,是整个流程引擎的核心表.理解表结构,掌握状态字段,相关字段变化的规律,就掌握的整个流程引擎运转的规律了. 流程引擎表的作用 流程引擎 ...
- MySQL数据库表结构的设计
一.前言 1.1 关系型数据库 数据库关系型模型的概念最早由"关系数据库之父"之称的埃德加·弗兰克·科德(Edgar Frank Codd或E. F. Codd)博士提出,1970 ...
- ezdml 支付mysql 吗_关于EZDML数据库表结构制作设计工具使用踩的坑
我使用的是一款EZDML的数据库表结构制作设计工具 最开始在数据库创建数据库名为personalmall,基字符集为默认,数据库排序规则也是默认,创建完成之后 去EZDML生成SQL 点击执行sql ...
- 状态机/流程引擎/审批流的流程引擎/结合低代码开发的流程引擎 区别 业务系统中使用流程引擎
理念 - 反对用模板,用流程引擎实现业务 先强调一点. 业务系统, 要学习 ,反对用模板,用流程引擎实现业务. 除非有人参与,必须用流程引擎,不然不要用状态机or流程引擎, 不要用. 但是要学习流程引 ...
- (一)什么是流程引擎?为什么学习流程引擎?
activity(流程引擎)从零入门到实战学习 1.什么是流程引擎? 2.为什么需要学习流程引擎? 3.为什么选择activiti? 本编文章将详细介绍什么是流程引擎,为什么学习,以及为什么选择act ...
- 数据库设计系列[04]组织结构加入权限系统
1引言 接着上一篇随笔"数据库设计系列[03]权限系统":在上篇随笔中,只是简单地介绍基于角色和操作访问控制模型,能把权限控制到页面和按钮.CDM图: 2 新的需求:组织结构 比如 ...
- python获取数据库查询的元数据_Python数据库、MySQL存储引擎、使用分区表、更改表结构、获取数据库元数据...
:1. 数据库基本操作 1.1 创建数据库 - CREATE DATABASE test; #创建数据库 - GRANT ALL ON test.* to user(s); #为指定用户(或所有用户) ...
- mysql评论表结构设计_文章评论嵌套显示mysql表结构如何设计(形式如网易新闻评论)...
现在有一张post表 (结构不能改变) tid 主题pid pid 回复id 现在新增了评论嵌套显示功能,即tid=1 a评论了一条 pid为1 b回复了a的评论 pid为2 c回复了b的评论 pid ...
- 数据库设计中常见表结构的设计技巧(转)
2019独角兽企业重金招聘Python工程师标准>>> 一.树型关系的数据表 不少程序员在进行数据库设计的时候都遇到过树型关系的数据,例如常见的类别表,即一个大类,下面有若干个子类, ...
最新文章
- 能打羽毛球又能击穿墙壁,戴上这款机械臂,秒变蜘蛛侠反派「章鱼博士」
- python的快速入门-Python如何快速入门的基础知识
- Vista 系统C盘(系统盘)越来越小的问题.与解决.
- ASP.NET Core服务器综述
- (译)我的第一游戏完成之后的5点心得体会
- 解决:git push error: failed to push some refs to
- 计算机题库启用宏,2009计算机一级:打开文件时一定要启用宏
- oracle18c 配置,0报错!Oracle 18C 完全安装指南及常见问题汇总
- 通用AI元素识别在UI自动化测试的最佳实践
- 最有范儿的H5制作工具—应用之星之表单控件详解
- 火狐浏览器打开后是搜狗浏览器_搜狗浏览器和Firefox浏览器哪个好
- /dev/sr0 3.7G 3.7G 0 100% /media/CentOS_6.8_Final no space left on device磁盘空间不足处理
- 如何解决zt210打印标签机问题,状态灯和耗材灯都变为红色,打印空白 打印不全 且偏了
- HX711测试【一个非常廉价且实用的模块】
- 计算机无法设置双屏显示,电脑双屏显示怎么设置?
- 群集共享卷(CSV)
- 路由与交换技术期末上机考核
- 迪文屏幕T5L平台学习笔记七:RS485测试
- [纯净版]小路工作室GhostXP 2008贺岁版
- 在excel中计算风向的函数
热门文章
- php定时删除目录,shell定时删除指定目录下的文件
- spark hive udf java_【填坑六】 spark-sql无法加载Hive UDF的jar
- springboot源码 红色J_通达信副图指标源码之,出手就赢
- java Date.getTime()返回负数异常情况分析
- eclipse 插件扩展新建java页面_java-Eclipse插件-弹出菜单扩展
- 唐朔飞计算机组成原理pdf_唐朔飞计算机组成原理第2版配套题库名校考研真题课后答案资料课后习题章节题库模拟试题...
- 织梦 PHP 字段 调用,织梦dede网站内容模型普通文章调用自定义图片字段的方法(和调用...
- 第十六届全国大学智能汽车竞赛全向组沁恒芯片申请统计情况
- 2021年春季学期-信号与系统-第八次作业参考答案-第九小题
- 第十五届全国大学生智能汽车竞赛 人工智能创意组总决赛