驰骋工作流引擎,工作流程管理系统,表结构与运行机制。
前言:
1, ccflow 有自动修复数据表功能, 所以表的字段的变化不需要用户干预由ccflow自动完成. 所以如果你看到sql的错误,在执行一般就可以解决,如果解决不了,就执行一次数据库修复工具。 2, ccflow 有自动增加字段备注功能,所以每个字段的中文名称都已经增加了数据表的字段的备注属性上了,请注意对照,以方便您阅读ccflow. 3, 了解ccflow 的表结构是您二次开发的基础,所以ccflow的高级用户需要熟悉每个表,掌握必要的表结构. 但是没有必要全部掌握。 4, ccflow 表命名规则是 前缀+"_"+表名. 大多以英文缩写或者,拼音大写组成. 比如: Port_Emp 人员表. WF_Flow 流程表。
ccflow 表分为框架表、流程规则描述表、流程数据运行表、公共表4大类:
框架表.
通常以Sys_ 与 Port_ 开头. 也可以称为ccflow系统表. 它是存储系统运行的基础信息. 没有必要多了解它们.
列举如下:
Port_Emp: 操作员表. Port_Station: 岗位表 Port_Dept: 部门表 Port_EmpStation: 人员岗位表. Port_EmpDept: 人员部门对应表. Port_Unit: 集团公司表,对于集团类的用户有效. Sys_MapData: 映射主表 Sys_MapAttr: 字段表 Sys_MapDtl: 表单映射明细表. Sys_MapExt : 表单映射扩展信息表 Sys_MapFrame :表单框架表 Sys_MapM2M: 多对多的关系表 Sys_FrmAttachment: 表单附件表 Sys_FrmImg: 表单图片表 Sys_FrmImgAth: 图片附件表. Sys_FrmLab: 表单标签表 Sys_FrmLine: 表单线表. Sys_FrmLink: 表单连接. Sys_FrmRB: 表单单选按钮. Sys_GloVer: 全局变量表. Sys_GroupField: 表单字段分组表. Sys_Log:日志表 Sys_Serial : 序列号生成记录表. Sys_Enum: 枚举信息表. Sys_EnumMain: 枚举信息主表. Sys_SFTable :自定义表 Sys_UserRegedit : 用户注册信息表. Sys_CField: 查询字段选择信息存储表. Sys_Config: 系统配置表. Sys_Contrast: 统计分析表: Sys_DefVal: 默认值表,快速填写大块文本时临时信息存储.
ccflow流程规则描述表. 用来存储流程配置的基础信息。 以 WF_ 开头.
列举如下:
WF_FlowSort : 流程类别表. WF_Flow : 流程表. WF_FlowStation: 流程完成操送的岗位表. WF_FlowEmp : 可控制流程的人员表. WF_FlowNode : 流程的节点表. WF_Node : 节点表 WF_NodeStation : 节点岗位(能够访问该节点的岗位.) WF_NodeDept : 节点部门表(能够访问该节点的部门) WF_NodeEmp : 节点人员表(能够访问该节点的人员) WF_NodeFlow: 节点了流程表(在此节点上能够调起的子流程) WF_NodeReturn : 可退回到的节点(一个节点能够退回的节点,多对多的关系.) WF_BillTemplate 单据表 WF_BillType 单据类型表 WF_Cond :条件表 (方向条件,流程完成条件,节点完成条件) WF_Direction :方向表 WF_Event : 事件表(节点事件,流程事件) WF_FAppSet : 应用配置表(可以配置调用第三方的数据) WF_Frm 流程表单. WF_FrmNode : 流程表单与节点对应关系表. WF_LabNote : 标签用在流程设计器的标签. WF_Listen : 消息收听配置表. 详细请 baidu "ccflow 消息收听" WF_Rpt : 流程报表设计 WF_RptAttr : 流程报表属性 WF_RptEmp : 报表可访问的人员 WF_RptStation : 报表可访问的人员 WF_RunRecord : 报表可访问的人员 WF_SelectAccper : 报表可访问的人员
3, ccflow流程运行数据表.
WF_GenerFH : 分合流信息注册表,对于是分合流的流程才有效,发起一条分合流,就多一条数据在此。 WF_GenerWorkFlow : 流程注册表 WF_GenerWorkerlist : 节点工作人员表.(流程运行完成后此记录就被删除了) WF_Bill : 单据信息存储表. WF_CHOfFlow : 流程考核信息表. WF_CHOfQL : 流程质量考核信息表. WF_Emp : 流程人员配置信息表 WF_FileManager :流程附件信息存储表 WF_ForwardWork : 转发信息存储表. WF_RememberMe : 投递路径记忆表, 请baidu "ccflow 智能投递" WF_ReturnWork : 退回信息存储表 WF_M2M : 一对多的关系存储表.
公共字典表. 大多以Pub CN开头。
比如: 城市,省份,片区,年月,工作日. 这里不介绍了. 如果您对以上的表结构在大概的认识,您可以阅读如下文件了.
了解ccflow数据表运行机制,为自己项目做高级的查询与二次开发(开发进阶篇).
流程建立时.
流程表 WF_Flow, 节点WF_Node.
1, 流程自动生成一个三数数的流程编号. 比如: 0001.
2, ccflow自动生成开始与结束两个节点. 节点编号为 101 与 199. 如果在有创建节点时,节点编号就为 102, 103 …
3, ccflow 会为每个节点生成一个物理表,这个节点的信息存储这个表里,格式为 “ND” + 节点编号,比如:ND101,ND199.
每个节点表都有相同的字段.
比如: OID工作ID, RDT记录日期, Rec记录人,CDT,完成时间. NodeState 节点状态. 开始节点比较特殊, 它多一个 WFState 字段.就是流程状态,用来记录流程运行的状态.
4, 建立一个流程 WF_Flow,插入一条流程数据. WF_Node 插入n条节点数据.
5, ccflow会产生一个流程数据表,系统产生一个ND+流程编号+Rpt 命名的表, 比如:ND1Rpt 它是流程数据表。
它把所有节点字段的汇总集合形成的一个表.流程在启动后,运行中,完成后,这个表的数据一直跟随流程运转而更新.所以你可以查询 任何数据在这个流程表中。
6, ccflow 会产生一个节点视图,V+流程编号. 比如:V001. 这个视图就是把本流程中的各个节点数据,相同的字段都汇总出来。
事例如下: CREATE VIEW [dbo].[V001] /* WorkFlow:测试流程 Date:2011-07-30 */ AS SELECT '101'+'_'+CAST(OID AS varchar(10)) +'_'+CAST(FID AS VARCHAR(10)) AS MyPK, '101' AS FK_Node,OID,FID,RDT,substring(RDT,1,7) AS FK_NY,CDT,Rec,Emps,NodeState,FK_Dept, 1 AS MyNum FROM ND101 UNION SELECT '199'+'_'+CAST(OID AS varchar(10)) +'_'+CAST(FID AS VARCHAR(10)) AS MyPK, '199' AS FK_Node,OID,FID,RDT,substring(RDT,1,7) AS FK_NY,CDT,Rec,Emps,NodeState,FK_Dept, 1 AS MyNum FROM ND199 GO 对于开发时效考核的朋友大用用处,可以统计每个节点用的天数,规定完成的天数,完成的工作量。
二, 流程运行时.
分合流流程注册表: WF_GenerFH
流程注册表: WF_GenerWorkFlow
工作人员表: WF_GenerWorkerlist
启动一个流程后,ccflow自动产生一个WorkID, 一个流程一个WorkID, 并且处开始节点表(ND101)中插入一条数据, WFState=0 流程状态=0 表示运行中.
启动一个流程后,就产生一条数据,放在WF_GenerWorkFlow ,
发送一个步骤后,就把接受的工作人员放入WF_GenerWorkerlist .
流程运行完成后,就把两个表中的这个 WorkID 的数据清除.
5, 在流程数据表里(ND1Rpt)中, 每个节点有新采集的数据就会copy到此表中.
所以结合流程数据表,与当前的这两个表,你可以查询出来想要的数据满足二次开发.
三, 流程完成后.
流程完成后,就与 WF_GenerWorkFlow ,WF_GenerWorkerlist 没有关系了. 所以查询流程数据从,流程数据表里,或者从节点数据表里查询. 比如: ND101, ND102, ND199, NDRpt. V001 . 开始节点的流程状态=1 , 表示此流程已经完成。