zoukankan      html  css  js  c++  java
  • 驰骋工作流引擎设计系列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: 流程引擎表结构

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

    image

    流程注册表

    image

    流程工作人员表

    重要字段解析:

    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关联在一起。

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

    系统字段有:

    image

    image

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

    字段名称

    类型

    说明

    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: 轨迹表

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

    image

     

    image

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

  • 相关阅读:
    sql2005 如何重启数据库服务
    jQuery 树控件 zTree
    谈C#中的Delegate
    微博首席架构师杨卫华:新浪微博技术架构分析(转)
    jqGrid 各种参数 详解
    asp.net(c#)ref,out ,params的区别
    gcc
    数据结构递归
    跳表
    javajvm
  • 原文地址:https://www.cnblogs.com/mengjuan/p/10221733.html
Copyright © 2011-2022 走看看