驰骋工作流引擎,工作流程管理系统,表结构与运行机制。

-------------------------------------------------------

前言:

1, ccflow 有自动修复数据表功能, 所以表的字段的变化不需要用户干预由ccflow自动完成. 所以如果你看到sql的错误,在执行一般就可以解决,如果解决不了,就执行一次数据库修复工具。

2, ccflow 有自动增加字段备注功能,所以每个字段的中文名称都已经增加了数据表的字段的备注属性上了,请注意对照,以方便您阅读ccflow.

3, 了解ccflow 的表结构是您二次开发的基础,所以ccflow的高级用户需要熟悉每个表,掌握必要的表结构. 但是没有必要全部掌握。

4, ccflow 表命名规则是 前缀+"_"+表名. 大多以英文缩写或者,拼音大写组成. 比如: Port_Emp 人员表. WF_Flow 流程表。

ccflow 表分为框架表、流程规则描述表、流程数据运行表、公共表4大类:

-------------------------------------------------------------------

1, 框架表.

通常以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: 默认值表,快速填写大块文本时临时信息存储.

2, 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 : 一对多的关系存储表.

4, 公共字典表. 大多以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

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 , 表示此流程已经完成。

ccflow表机构与运行机制(二次开发必看)的更多相关文章

  1. 利用JS提交表单的几种方法和验证(必看篇)

    第一种方式:表单提交,在form标签中增加onsubmit事件来判断表单提交是否成功 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 <scr ...

  2. 试着讲清楚:js代码运行机制

    一. js运行机制 js执行引擎 经常看文章的说到js是带线程的,其实这个说法非常的模糊,准确的是js执行引擎是单线程的,js执行引擎就是js代码的执行器,有了这个概念就可以下来说说js是如何运行的了 ...

  3. 3.NetDh框架之缓存操作类和二次开发模式简单设计(附源码和示例代码)

    前言 NetDh框架适用于C/S.B/S的服务端框架,可用于项目开发和学习.目前包含以下四个模块 1.数据库操作层封装Dapper,支持多种数据库类型.多库实例,简单强大: 此部分具体说明可参考博客: ...

  4. Chrome扩展开发之二——Chrome扩展中脚本的运行机制和通信方式

    目录: 0.Chrome扩展开发(Gmail附件管理助手)系列之〇——概述 1.Chrome扩展开发之一——Chrome扩展的文件结构 2.Chrome扩展开发之二——Chrome扩展中脚本的运行机制 ...

  5. SSL/TLS 协议运行机制概述(二)

    SSL/TLS 协议运行机制概述(二) 在SSL/TLS 协议运行机制概述(一)中介绍了TLS 1.2 的运行机制,现在我们来看年 TLS 1.3 的运行机制.会涉及到SSL/TLS 协议运行机制概述 ...

  6. 《疯狂Java讲义》(二)---- Java程序的运行机制和JVM

    1. 运行机制 Java源文件(*.java)-----使用javac编译----编译成*.class文件----使用java解释执行----特定平台的机器码 2. 原理 负责解释执行字节码文件的就是 ...

  7. 通过案例对 spark streaming 透彻理解三板斧之二:spark streaming运行机制

    本期内容: 1. Spark Streaming架构 2. Spark Streaming运行机制 Spark大数据分析框架的核心部件: spark Core.spark  Streaming流计算. ...

  8. 深入GPU硬件架构及运行机制

    目录 一.导言 1.1 为何要了解GPU? 1.2 内容要点 1.3 带着问题阅读 二.GPU概述 2.1 GPU是什么? 2.2 GPU历史 2.2.1 NV GPU发展史 2.2.2 NV GPU ...

  9. SSL/TLS协议运行机制的概述

    互联网的通信安全,建立在SSL/TLS协议之上. 本文简要介绍SSL/TLS协议的运行机制.文章的重点是设计思想和运行过程,不涉及具体的实现细节.如果想了解这方面的内容,请参阅RFC文档. 一.作用 ...

随机推荐

  1. 分享13道上海尚学堂拿回来的Java面试真题,这些都是Java核心常见问题,想拿OFFER必看!

    上海尚学堂Java培训学员参加面试带回来的真题,分享出来与大家,希望大家能认真地看看做一遍.后面有详细题解答案,对照下,看看自己做得怎么样,把这些面试遇到的真题全部掌握,做好面试笔试前的准备. 一.1 ...

  2. InputStream和Reader,FileInputStream和 FileReader的区别

    一.InputStream和Reader的区别 InputStream和Reader都可以用来读数据(从文件中读取数据或从Socket中读取数据),最主要的区别如下: InputStream用来读取二 ...

  3. Python 爬虫利器 Selenium

    前面几节,我们学习了用 requests 构造页面请求来爬取静态网页中的信息以及通过 requests 构造 Ajax 请求直接获取返回的 JSON 信息. 还记得前几节,我们在构造请求时会给请求加上 ...

  4. [Swift]LeetCode503. 下一个更大元素 II | Next Greater Element II

    Given a circular array (the next element of the last element is the first element of the array), pri ...

  5. [Swift]LeetCode692. 前K个高频单词 | Top K Frequent Words

    Given a non-empty list of words, return the k most frequent elements. Your answer should be sorted b ...

  6. Python内置函数(30)——hex

    英文文档: hex(x) Convert an integer number to a lowercase hexadecimal string prefixed with “0x”, for exa ...

  7. java多线程(4)---volatile关键字

    volatile关键字 一旦一个共享变量(类的成员变量.类的静态成员变量)被volatile修饰之后,那么就具备了两层语义: 1)保证了不同线程对这个变量进行操作时的可见性,即一个线程修改了某个变量的 ...

  8. knockoutjs 上自己实现的flux

    在knockoutjs 上实现 Flux 单向数据流 状态机,主要解决多个组件之间对数据的耦合问题. 一.其实简单 flux的设计理念和实现方案,很大程度上人借鉴和参考了Vuex的实现,只是简化了某些 ...

  9. asp.net core系列 40 Web 应用MVC 介绍与详细示例

    一. MVC介绍 MVC架构模式有助于实现关注点分离.视图和控制器均依赖于模型. 但是,模型既不依赖于视图,也不依赖于控制器. 这是分离的一个关键优势. 这种分离允许模型独立于可视化展示进行构建和测试 ...

  10. Java开发知识之Java的包装类

    Java开发知识之Java的包装类 一丶什么是包装类 包装类的意思就是对基本数据类型封装成一个类.这些类都是Number的子类.区别就是封装数据类型不同.包含的方法基本相同. 具体可以查询JAVA A ...