工作流表的结构
之前已经研究过工作流的东西,但是这次做.net的开发还是没能把工作流弄好。所以再认真看了工作流一遍,写出来之后,自己也更加熟悉。希望这篇介绍能帮助大家了解系统工作流。
一、首先来介绍一下工作流需要的表
1) Workflow
2) WorkflowState
3) WorkflowRules
4) WorkflowActions
5) WorkflowActionLinks
6) WorkflowTransition
7) WorkflowInstance
8) WorkflowHistory
二、通过visio的图来看看他们之间的关系
三、具体介绍
1) Workflow :主表,保存工作名称等基本信息
2) WorkflowState: 表名称可以是工作流中的状态节点
3) WorkflowRules: 表的规则基本信息
4) WorkflowActions: 表规则里面的细节,例如执行sql,重置列等信息
5) WorkflowActionLinks: 这个表是中间表,是规则和 细节的中间表。
6) WorkflowTransition: Transition意思是过渡,转变。这个表就是工作流的节点之间的关系。把工作流的树形结构保存起来。
7) WorkflowInstance: 这个表记录着每条走工作流的记录。
8) WorkflowHistory:每条记录走一步工作流,这里都会生成一条历史记录
四、用例
1) 我们创建一个工作流的时候,Workflow就插入一条记录,保存工作流名称等。
2) 我们新建一个工作流状态,WorkflowState保存工作流状态,并且关联工作流。
3) WorkflowRules保存规则。
4) 在规则中新建一条执行sql 之后,首先WorkflowActions新建一条记录保存,然后在表WorkflowActionLinks 创建一条记录,该记录保存刚才在WorkflowActions表创建的记录的id 以及规则表中规则记录的wkri_actionGroupid字段。这样规则和他里面的子项就对应起来了。这里的子项就是这个规则走完之后,要执行的sql,要修改的字段,要。。。
5) 当我们在工作流编辑页面,拖拖拉拉,做好工作流的树形结构之后,点击保存。系统就会把工作流的关系保存到表WorkflowTransition中。 这个表的记录保存工作流的id和工作流树形结构中的一条线以及这条线两头的状态。即是:它保存当前状态,如果这个状态下有六个规则,那么就有六条记录,每条记录保存一个规则以及这个规则的下一步状态。
6) 整个工作流的创建工作就完成了。下面我们在新建记录的界面中新建一条记录的时候,这条记录启动工作流后,就会在WorkflowInstance表中创建一条记录,这条记录保存着这条记录工作流状态。同时还会往WorkflowHistory表中插入一条记录保存操作记录。
7) 打开summary之后,可以自己写方法去WorkflowTransition表中找到当前记录的工作流记录,找到记录的当前状态的下一个状态有哪些,然后执行规则里面的创建脚本,如果创建脚本的值为true,就显示这个规则,其实规则就是我们看到按钮。
写到这里工作流的整个过程已经出来了。
五、最后提一下我们在其他系统使用的处理记录方法:
1) 新建了一个叫做workflowlog 的表。刚开始的时候被他的名字骗了。呵呵我以为是系统自带的表。
2) 在我们要走工作的表中新建【处理人userid】、【提交人summiter】、【处理意见】,然后还不要忘记了在workflowlog表中创建 走工作流的表id字段
3) 这样就可以通过工作流规则中执行sql 往里面插入一条记录。
4) 最后在新建一个表前缀+log(例如:aopplog) 的asp 文件把该记录的处理意见显示到一个列表,并把这个asp放到summary的tag旁边。
六、Sage Crm 里面有个叫做 跟踪的 功能。
新建表的时候会问你要不要跟踪功能。但请注意,只有主要实体才有跟踪功能。
有了跟踪表之后,你只需要在跟踪表里面增加字段,CRM在没走一次工作流之后,会新增一条跟踪记录。当然只显示跟踪表里面有的字段。如果有很多不便。
11年初在准备使用.net程序来做接口时,需要程序实现工作流走到下一步的功能,就认真看了系统的表结构。现在整理一下,发布出来。