好久没写博客,上一篇 没想到大家讨论还挻热烈,非常感谢大家关注和提出的一些建议和意见。
大家关注的还是两点:
1、现实流程会复杂得多;
2、流程平台需要复杂的设计(作图)工具。
我想说的是我这里不是做一个“大而全”的工作流平台,只是从最基本的地方入手,通过这样一些测试,让初学者发现工作流的一些原理。
了解这些原理后,你使用各种平台(如K2)开发就会清楚一些。
上篇算是一个概要设计,这篇简单的做一个数据库实现,本实现暂不包括“规则处理”,即由调用端决定下一手步骤和处理人。
兄弟刚离职,现在正找工作,关乎一家人是否有饭吃,所以时间不多,写得很粗糙,大家还请原谅则个!
用的sql server.
1、先建一个数据库MyData
2、执行一下结构脚本
3、执行一下数据脚本
4、发起一个流程
exec usp_FlowStart 1,1,1,2,'2,3',null
参数解释:
@FlowID int,--流程模板编号
@UserID int,--流程用户
@ApplyUserID int,--流程申请用户
@NextStepID int,--下一步骤
@OwnerUserIDStr varchar(500),--多个下手审批人,以‘,’分隔
@Data nvarchar(max) --表单数据,xml格式
5、读一下任务信息
查看应该可以看到FlowInstance一条数据,这是流程实例主表。
查看应该可以看到FlowActionTrace三条数据,即申请已办一条,待办两条,为什么待会是两条,因为上面的参数
'2,3'就表示下一步处理人是两个。
select * from dbo.FlowInstance
select * from dbo.FlowActionTrace
6、执行一个待办提交
exec usp_FlowSubmit 3,3,3,0,'3/2,3',null
参数解释:
@TraceID int,--flowactiontrace的id,选择一个submittime 为null的记录的id
@AcionID int,--操作编号,就是做的是哪种操作,一般1代表同意提交
@SubmitUserID int,--提交人编号
@IsEnd int,--是否结束步骤
@NextStr varchar(2000),--'1/3,4;3/5,6'这个结构表示“下一步骤编号/处理人编号串;下一步骤编号/处理人编号串”
@Data nvarchar(max)--表单数据,xml格式
大家会觉得组装下一步骤和下一步操作人很麻烦,我们做了组件后会使用更好结构的属性。
下和篇如果有兴趣就做一个简单dll和website demo,以便跑跑看。