一切福田,不離方寸,從心而覓,感無不通。

ccflow数据库结构说明(三)

3, ccflow 流程运行数据表.

【WF_GenerFH : 分合流信息注册表,对于是分合流的流程才有效,发起一条分合流,就多一条数据在此。】

[FID]主键,表ID

,[Title] 标题

,[GroupKey] 分组主键

,[FK_Flow] 流程编号, 外键:对应物理表:WF_Flow,表描述:流程编号(流程表中的流程编号)

,[ToEmpsMsg] 接受人员

,[FK_Node] 停留节点

,[WFState]状态

,[RDT] 记录日期

【WF_GenerWorkFlow : 流程注册表(启动一个流程后,就产生一条数据,放在WF_GenerWorkFlow)】

[WorkID]主键,表ID

     ,[FID] 流程ID

     ,[FK_FlowSort] 流程类别

     ,[FK_Flow] 流程编号, 外键:对应物理表:WF_Flow,表描述:流程编号(流程表中的流程编号)

     ,[FlowName] 流程名称

     ,[Title] 标题(如:总经理室-zhoupeng,周朋在2012-04-19 00:38发起.)

     ,[WFState] 流程状态

     ,[Rec] 发起人

     ,[RecName] 发起人名称

     ,[RDT] 记录日期

,[FK_Node] 节点, 主外键:对应物理表:WF_Node,表描述:节点

     ,[NodeName] 节点名称

 ,[FK_Dept] 部门, 主外键:对应物理表:Port_Dept,表描述:部门

 ,[DeptName] 部门名称

【WF_GenerWorkerlist : 节点工作人员表.( 发送一个步骤后,就把接受的工作人员放入WF_GenerWorkerlist,流程运行完成后此记录就被删除了) 】

[WorkID]主键,表ID

,[FK_Emp] 人员编号, 主外键:对应物理表:Port_Emp,表描述:用户

     ,[FK_EmpText]名称

,[FK_Node] 节点, 主外键:对应物理表:WF_Node,表描述:节点

     ,[FK_NodeText]节点名称

     ,[FID] 流程ID

     ,[FK_Flow] 流程编号, 外键:对应物理表:WF_Flow,表描述:流程编号(流程表中的流程编号)

     ,[FK_Dept] 使用部门, 主外键:对应物理表:Port_Dept,表描述:部门

     ,[SDT] 应完成日期

     ,[DTOfWarning] 警告日期

     ,[WarningDays] 预警天

     ,[RDT] 记录日期

     ,[IsEnable] 是否可用

     ,[IsPass] 是否通过(对会签节点有效)

     ,[WhoExeIt] 谁执行它

 ,[Sender] 发送人

【WF_Bill : 单据信息存储表.】

[MyPK]主键,表ID

     ,[WorkID] 工作ID

     ,[FID]流程ID

     ,[FK_Flow] 流程

     ,[FK_BillType] 单据类型

     ,[Title] 标题

     ,[FK_Starter] 发起人

     ,[StartDT] 发起时间

     ,[Url]

     ,[FullPath]

     ,[FK_Emp] 打印人, 外键:对应物理表:Port_Emp,表描述:用户

     ,[RDT] 打印时间

     ,[FK_Dept] 隶属部门, 外键:对应物理表:Port_Dept,表描述:部门

     ,[FK_NY] 隶属年月, 外键:对应物理表:Pub_NY,表描述:年月

     ,[Emps]

     ,[FK_Node] 节点

     ,[FK_Bill]

 ,[MyNum] 个数

【WF_CHOfFlow : 流程考核信息表.】

[WorkID]主键,表ID

     ,[FID] 流程ID

     ,[FK_Flow] 流程

     ,[WFState] 流程状态,枚举类型:0 运行;1 完成;2 强制终止;3 删除;    

,[Title] 标题

     ,[FlowStarter] 发起人, 外键:对应物理表:Port_Emp,表描述:用户

     ,[FK_Dept] 发起人部门, 外键:对应物理表:Port_Dept,表描述:部门

     ,[FlowStartRDT] 发起时间

     ,[FlowEmps] 参与人

     ,[FlowEnder] 结束人, 外键:对应物理表:Port_Emp,表描述:用户

     ,[FlowEnderRDT] 完成时间, 外键:对应物理表:Port_Emp,表描述:用户

     ,[FlowDaySpan] 流程用天

     ,[FK_NY] 隶书年月, 外键:对应物理表:Pub_NY,表描述:年月

,[MyNum] 个数

【WF_CHOfQL  : 流程质量考核信息表.】

没有这表

【WF_Emp  : 流程人员配置信息表】

[No]主键,表ID(拼音等)

     ,[Name]姓名

     ,[Tel]电话

     ,[FK_Dept] 所在部门, 外键:对应物理表:Port_Dept,表描述:部门

     ,[Email]邮件地址

     ,[TM] 即时通讯号

     ,[AlertWay] 收听方式,枚举类型:0 不接收;1 短信;2 邮件;3 内部消息;4 QQ消息;5 RTX消息;6 MSN消息;

     ,[Author] 授权人

     ,[AuthorDate] 授权日期

     ,[AuthorIsOK] 是否授权成功

     ,[Stas] 岗位

     ,[FtpUrl]路劲

     ,[Msg]信息内容

     ,[Style]

 ,[Idx]顺序号

【WF_FileManager :流程附件信息存储表】

[OID]主键,表ID

     ,[WorkID]工作ID

     ,[FID]流程ID

,[FK_Node] 节点, 主外键:对应物理表:WF_Node,表描述:节点

     ,[Name]文件名称

     ,[Ext] 扩展

     ,[Note]备注

     ,[FileSize]文件大小

     ,[FK_Emp] 上传人, 外键:对应物理表:Port_Emp,表描述:用户

     ,[FK_Dept] 上传人所属部门, 外键:对应物理表:Port_Dept,表描述:部门

 ,[RDT]上传时间

【WF_ForwardWork : 转发信息存储表.】

[MyPK]主键,表ID

     ,[WorkID] 工作ID

     ,[FK_Node] 节点, 主外键:对应物理表:WF_Node,表描述:节点

     ,[FK_Emp] 移交人, 外键:对应物理表:Port_Emp,表描述:用户

     ,[FK_EmpName] 移交人姓名

     ,[ToEmp] 移交给(接受人编号)

     ,[ToEmpName] 移交给(接受人名称)

     ,[RDT] 移交时间

     ,[Note] 移交原因

,[IsRead] 是否读取?

【WF_RememberMe : 投递路径记忆表, 请baidu "ccflow 智能投递"】

[FK_Node] 节点, 主外键:对应物理表:WF_Node,表描述:节点

     ,[FK_Emp]发送人(谁发过来的,),外键:对应物理表:Port_Emp,表描述:用户

     ,[Objs] 分配人员

     ,[ObjsExt] 分配人员

     ,[Emps] 工作人员

 ,[EmpsExt] 工作人员Ext

【WF_ReturnWork : 退回信息存储表】

[MyPK]主键,表ID

     ,[WorkID]工作ID

     ,[ReturnNode] 被退回节点

     ,[ReturnNodeName] 被退回节点名称

     ,[Returner] 退回人

     ,[ReturnerName] 退回人名称

     ,[ReturnToNode] 退回到节点

     ,[ReturnToEmp] 退回给(接收人)

     ,[Note] 退回原因

 ,[RDT] 退回日期

【WF_M2M : 一对多的关系存储表.】

没有这表

4, 公共字典表. 大多以Pub CN开头。

   比如: 城市,省份,片区,年月,工作日. 这里不介绍了.

CN_Area:区域表  CN_PQ片区表   CN_SF省份表  CN_City城市表

   如果您对以上的表结构在大概的认识,您可以阅读如下文件了.

了解ccflow数据表运行机制,为自己项目做高级的查询与二次开发(开发进阶篇).

================================================================================================

一, 流程建立时.

   流程表 WF_Flow,  节点WF_Node.

   1, 流程自动生成一个三数数的流程编号. 比如: 001.

   2, ccflow自动生成开始与结束两个节点. 节点编号为 101 与 199. 如果在有创建节点时,节点编号就为102, 103 ….

   3, ccflow 会为每个节点生成一个物理表,这个节点的信息存储这个表里,格式为 “ND” + 节点编号,比如:ND101,ND199.

     每个节点表都有相同的字段.

      比如: OID工作ID, RDT记录日期, Rec记录人,CDT,完成时间. NodeState 节点状态.

     开始节点比较特殊, 它多一个 WFState 字段.就是流程状态,用来记录流程运行的状态(开始节点的流程状态=1 , 表示此流程已经完成;开始节点的流程状态=0,表示此流程运行中。).

   4, 建立一个流程 WF_Flow,插入一条流程数据. WF_Node 插入n条节点数据.

   5, ccflow会产生一个流程数据表,系统产生一个"ND" + 流程编号+"Rpt" 命名的表, 比如:ND1Rpt 它是流程数据表。

      它把所有节点字段的汇总集合形成的一个表.流程在启动后,运行中,完成后,这个表的数据一直跟随流程运转而更新.所以你可以查询  

     任何数据在这个流程表中。

   6, ccflow 会产生一个节点视图,V+流程编号. 比如:V001.  这个视图就是把本流程中的各个节点数据,相同的字段都汇总出来。

     事例如下:

     CREATE VIEW [dbo].[V001]

      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

   1. 启动一个流程后,ccflow自动产生一个WorkID, 一个流程一个WorkID, 并且处开始节点表(ND101)中插入一条数据, WFState=0 流程状态=0 表示运行中.

   2. 启动一个流程后,就产生一条数据,放在WF_GenerWorkFlow ,

   3. 发送一个步骤后,就把接受的工作人员放入WF_GenerWorkerlist .

   4. 流程运行完成后,就把两个表中的这个 WorkID 的数据清除.

   5, 在流程数据表里(ND1Rpt)中, 每个节点有新采集的数据就会copy到此表中.

   所以结合流程数据表,与当前的这两个表,你可以查询出来想要的数据满足二次开发.

三, 流程完成后.

    流程完成后,就与 WF_GenerWorkFlow ,WF_GenerWorkerlist 没有关系了.

    所以查询流程数据从,流程数据表里,或者从节点数据表里查询. 比如: ND101, ND102, ND199, NDRpt. V001 .

    开始节点的流程状态=1 , 表示此流程已经完成。

   

类设计与数据库设计命名规则

总体规则

1,  以英文命名,每一个字母大写,提倡用简写。比如Emp 人员 Dept 部门 Station 岗位。

2,  如果英文名称太长,或者不常用可考虑用中文命名,建议用中文的缩写。比如管理机关GLJG。

3,  对于类与表的命名必须有前缀,比如BP.Port.Dept 类名, 表名为Port_Dept.。

4,  前缀命名尽量简单。比如考核命名空间英文名称为Check 空间可以命名为CH。共用的类英文名称为Public可简写为 Pub.

类库设计规则:

1,  格式为 BP+前缀+类名。比如:BP.Port.Emp 人员类。

2,  属性命名与字段命名相同。特殊属性可以遵守总体命名规则。

3,  类库的倒数第一个命名空间要与要与物理表的前缀一致。比如:物理表考核项目。

BP.CH.CheckIiems。物理表为 CH_CheckItem.

4,  如果一个属性是外部实体或者枚举类型,以His 开头。 比如在类人员中的部门类HisDept.

5,  方法命名规则,遵守总体命名规则的 第1,2条。

6,  变量的命名规则,字母小写,以下划线开头。比如: age 年龄。addr 地址。要求每一行都要有注释。

数据库设计命名规则:

1, 物理表命名格式 前缀+“_”+对应的类名。部门操作员 Port_Emp,  Port_Dept ,CH_CheckItem. WF_Flow,

2,视图命名格式。 “V_” + 前缀 + “_” +对应的类名。V_CH_CheckItemExt。

3,  存储过程命名规则“Pro_” + 前缀 + “_”+过程名称. 比如Pro_Sys_Init.

4, 函数命名规则 “Fun” + + 前缀 + “_”+函数名. 比如:Fun_Sys_GenerOID.

5,   外键字段命名规则 “FK_” +对应的物理表类名.

比如:在人员表(Port_Emp)中表示部门的字段 FK_Dept. 同事一看就知道,这个字段是外键,并且它的对应到Dept这个类的物理表上。

http://blog.sina.com.cn/s/blog_4c823de7010150dj.html