- @producerFrom、@producerTo nvarchar(31),业务发起人
- @approverFrom 、@approverTo nvarchar(31),业务审批人
- @templateFrom 、@templateTo nvarchar(21),业务审批模版
- @dateFrom、@dateTo nvarchar(10),业务发生日期
- @cardFrom、@cardTo nvarchar(16),业务伙伴
- @totalFrom、@totalTo nvarchar(41),业务发生金额
- @statusWait nchar(2),当前业务审批状态
- @statusApproved nchar(2):已审批
- @statusRejected nchar(2):被拒绝
- @statusProduced nchar(2):已发起
- @statusCanceled nchar(2):已取消
- @statusApprProduced nchar(2):审批已发起
- @objectsList nvarchar(100),业务对象列表
- @numObjects int,业务对象数
- @docTable nchar(4):业务对象主信息表
- @absEntry int:业务审批记录内部编号
业务审批过程分析与使用Sbo系统存储过程实现业务审批流程状态检索
原创
©著作权归作者所有:来自51CTO博客作者foresun的原创作品,请联系作者获取转载授权,否则将追究法律责任
Sbo系统支持业务审批模版,用于定制某种业务或者某几种业务在某种条件下需要某些人参与进行业务审批,审批通过业务继续进行,审批被拒绝对应业务被取消。那么,Sbo可以通过怎样的方式查看业务审批状态呢?
的确,在Sbo的管理功能菜单下的审批流程中,有一项功能“批准决定报表”,这个功能完成了对需要参与审批的业务及其审批状态进行检索和分析。这项业务审批状态查询是怎样实现的呢?
通过对Sbo的存储过程进行分析之后,我发现在Sbo中有一个现成的存储过程就是完成这项任务的,这个存储过程叫做TmSp_GetWDD,通过存储过程的名字就可以知道,这的确是用来检索业务审批的批准状态的存储过程--前面的一篇博文中我曾经指出过在业务模版指定之后,符合条件的业务发生时刻会写入到OWDD和WDD1数据表中,等候相关人员进行审批。
OWDD是一个业务审批信息记录表,同单据对象一样,用Sbo的话来讲,这是一个业务审批记录的标题信息--其实就是业务审批记录的头信息,用以记录触发业务审批的业务类型、业务编号、业务所有者、业务发生日期等业务信息,以及业务审批当前所处的位置curStep--可见一项业务时可以支持多项审批的,审批顺序号通过WTM2.SortId来定义,而当前审批阶段的SortId就是这里记录的curStep了。标题信息中还有些字段Remark用于指明需要审批的备注信息,CreateDate、CreateTime分别是审批流程创建的日期和时间,IsDraft表明这是否是一个草稿业务。
WDD1表是有意义的,特别在需要多个审批阶段的时候更加显出了这个数据表的存在价值。WDD1其实就是某个业务需要进行审批的阶段列表。阶段列表包括审批人和需要进行审批的人数,当然即使在模版中定义了某个阶段,也未必就肯定会出现在这个业务的审批阶段列表中,因为在WDD1中的业务阶段都是需要予以审批的,就是说只有满足了审批模版中的触发条件时候对应的审批阶段才被记录到WDD1中。审批阶段通过WDD1中的wtCode同审批模版进行对应的。
存储过程TmSp_GetWDD完成了对审批业务状态的检索。这个存储过程带了长长的一串参数,用以指定审批业务检索的条件。这些参数包括:
以上参数有则指定对应条件,无则忽略对应参数。检索结果就是OWDD中符合指定条件的信息。当然,通过对这个记录集的业务关联可以进行其它的业务衍生,不在本文的讨论范围之列。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章