表结构:
1. WF_WorkFlowType工作流类型表
每一类工作流都对应这里面一条记录。
2. WF_WorkFlow工作流表
每一条流程都对应这里面的一条记录, WF_WorkFlowType表跟WF_WorkFlow是一对多的关系。一个工作流类型可以对应多个工作流。
我们可以理解成一张单据可以按多个流程来走。
举例:如果我们要设定一张采购单的采购金额大于5000就需要由总经理来审核。那么这里就会有两个工作流:第一个是不需要总经理审核的,第二个是需要总经理审核的。
3. WF_Node节点表
每一个工作流是由节点组成的。与WF_WorkFlow表是多对多的关系。
举例:“总经理审批”这步操作可以做为一个节点插入这张表。
4. WF_WorkFlowNode工作节点关系表
用来记录工作流和节点的多对多关系。
红框框起来的部分是记录关系,后面的字段是权限控制需要的。其实权限控制只根据WorkFlowNodeId来就好了。
如图:WorkFlowID=6的这条工作流就是由3个节点组成的,按顺序NodeId依次为:1,3,5。
根据前面的表我们可以知道这些信息代表:销售管理这条工作流需要 录入,审批,归档 。
5. WF_NodeState节点状态表
举例:销售管理这条工作流有三个节点 1,3,5。 分别代表 录入,审批,归档。
有一条销售管理的工作流现在已经流转到了审批节点,那么它的三个节点的状态应该是:
NodeID NodeName NodeStateID NodeStateName
1 录入 3 已办理
3 审批 2 待办理
5 归档 1 未启用
6. WF_AutoTransactNode自动完成节点表
这个表不重要。可以跳过,以后再理解这个表。
设置自动完成节点,一旦工作流流到这个节点,就自动办理。
其实在WF_WorkFlowNode表里加一个是否自动完成的字段就可以了。
这里的数据代表所有工作流的 (NodeID=5 也就是 “归档”) 这个节点自动完成。自动归档。
前面这些是用来配置工作流的几个基础的表。
我们之前的系统是用工作流来管理单据的流程的,所以需要在配置到的工作流和单据之间建立联系。下面两张表就是这个作用。
7. WF_BillFlowNode单据流程节点表
这个就是流程和单据之间的关系表。每新增一张单据,我们都要确定这张单据所要执行的工作流,然后把这个工作流的所有节点跟这张单据的ID联系起来插入到下面这张表。
举例:
比如我们新增了一张BillID为8的 销售单
销售单的WorkFlowTypeId是6
根据 “4 . WF_WorkFlowNode工作节点关系表”我们知道这张单据需要执行三个节点
那么插入到这个关系表里面的数据就如下图红框框住的部分
根据NodeStateID我们可以知道这张单据现在流到了 “审批” 节点
8. WF_BillFlowNodeRemark单据流程节点备注表
其实就是操作记录,记录每一步操作。
9. WF_BillState单据状态表
以上就是工作流所有的表。下面这张是销售单据表,使用这个工作流来控制流程的单据都需要有一个State字段和WorkFlowTypeID字段
存储过程:
Proc_WorkFlow_Interface
最核心的存储过程
负责:
创建新的工作流
工作流节点的跳转(向前:提交,向后:退回、作废)
单据状态的更新(比如节点流转到 “审核”, 就把单据状态改成“待审核” ;如果“审核”节点被退回,就把单据状态改成“已退回”;如果流程已经跑完,就把单据状态改成“已归档”)
Proc_WorkFlow_List_Filter
用来查询单据。
根据某一个节点以及节点状态来查询。
比如销售单有三个节点 (录入、审批、归档),审批人员登陆系统想要查看待审核的单据,就需要查询出那些 “审批节点” 的状态等于 “待办理” 的单据
NodeID NodeName NodeStateID NodeStateName
1 录入 3 已办理
3 审批 2 待办理
5 归档 1 未启用