有朋友希望我就Sbo的业务审批流程及在Sbo SDK的基础上怎样进行Sbo业务流程审批的定制与控制谈点看法。要进行Sbo的业务审批流程二次开发必须先行了解Sbo中的业务审批流程是怎样工作的,涉及到哪些数据表等基础问题,然后才能根据具体的业务需要定制基于Sbo业务流程之上的二次开发软件。本文主要谈谈在Sbo中是如何进行业务审批的。
Sbo的业务审批在结构上还算比较简单,操作上也很容易,通过业务审批模版和业务审批阶段的定义来实现业务审批。
在Sbo中,业务审批用于在某种或某几种业务发生过程中,在某种条件满足时触发某人或者某几个人要对此业务进行审批,审批通过,业务被正式执行,否则被中止。
通过业务审批模版来定义某种业务发生过程中的审批触发条件,参与业务审批的人。由于一项业务可能在开展过程中因为业务环境不同而需要几个阶段的审批(之所以称之为阶段--Sbo称之为Approval Stage,是因为可能需要多个部门的审批--所以Sbo中就有了Approval Stages和 Approval Stage List,而每个审批阶段(Stage)需要一个或者多个人员进行审批),审批阶段对于一项业务的审批模版来讲,是1<-->N的关系。在Sbo中将审批阶段专门提取出来进行管理,称之为Sbo阶段。
要完成对一个业务的审批控制,需要先明确此业务在什么情况下的审批人(Approvers),将业务开展过程中需要审批的人员进行列表管理,放在表OWST和WST1中进行管理,即为审批阶段管理。
定义好了审批阶段了,事实上触发这个审批阶段的条件也就比较明确了。如果他们的逻辑关系没有理解清楚,审批模版就可能运行不正确。
接下来定义业务审批模版。需要注意,一个业务审批模版可以对应多个Sbo业务,比如所有的采购订货业务的审批流程都是一样的,所有的销售的业务审批流程也是一样的,这样可以将这些业务同时选取,使用同一个审批模版。
业务审批流程对应着数据表OWTM和WTM1,用于记录业务审批的状态、是否属于条件审批,业务发起人列表(WTM1中),如果不是条件审批,就为什么时候都需要进行审批。业务审批对应的业务保存在数据表WTM3中,所有的Sbo采购订货业务、Sbo销售业务、Sbo库存管理业务如收货发货和转储(缺省情况下Sbo是不支持调拨的,只能通过其它收货、发货来处理)、Sbo付款业务等都可以得到Sbo业务审批流程的支持。
业务审批阶段在Sbo中是必须提供的,这很好理解,对于一个业务审批流程来讲,没有指定审批人,那还要审批什么呢?业务审批模版的审批人保存在数据表WTM2中。因为一项业务可能需要几个审批阶段的控制,所以在WTM2中,有字段SortId用于指名它的执行顺序。
如果业务审批阶段是根据业务条件进行触发的,那么还需要指明触发条件。触发条件可以是指定的有效条件之一或者之几个,也可以通过自定义SQL语句进行触发。
- Sbo系统内部自带的有效触发条件包括六种类型,分别是:1-信贷限额偏移、2-偏离承诺、3-毛利 %、4-折扣 %、5-偏离预算、6-凭证总额;这些条件类型通过触发条件运算符号opCode(包括1-大于、2-大于或等于、3-小于、4-小于或等于、5-等于、6-在范围内、7-不在范围内),使Sbo发生业务在指定的触发类型condId按照指定的运算方法opCode计算后同opValue进行比较,条件满足时触发审批。这种触发方式的触发条件保存在数据表WTM4中。
- Sbo支持用户自定义触发条件,用于指定一个符合Ms SQL Server标准语法和Sbo业务逻辑的SQL语句(语句保存在OUQR中),OUQR通过WTM5同OWTM进行业务关联。
从上面的分析中,我们可以看出,要定义一个Sbo业务审批流程,先要清楚解析在什么条件下触发哪些人参与的什么样的审批阶段,定义好这些审批阶段后通过审批模版定义审批流程对应的审批业务和审批条件,形成审批条件同审批阶段的对应关系,就可以实现Sbo的业务审批控制了。
但是,看了这些定义了之后,你业务很迷惑,我们怎么查询到触发业务的当前审批状况呢?至于Sbo是怎么触发的,这一点咱们先不去讨论,但是如果你要看审批状态,光知道上面几个数据表是不够的,因为Sbo业务审批只是在业务发生的时候检查系统定义的业务审批模版,就像Sbo SDK Help所说,增加一个审批模版并不能触发审批业务,只有在业务发生的时候才会触发业务审批流程。当业务审批流程触发条件满足时,就会在数据表中OWDD和WDD1进行登记注册,并且将业务单据作为草稿处理而不真正发生。要知道业务是否审批了,通过检查WDD数据表才能够知了业务审批的当前状况。
对业务审批数据表总结一下:
- 审批阶段:OWST、WST1
- 审批模版:OWTM、WTM1(发起人)、WTM2(审批阶段关联)、WTM3 (支持业务)、WTM4(系定义触发条件)、WTM5(自定义触发条件关联,自定义SQL语句放置在OUQR)
- 审批过程:OWDD、WDD1
有时间再讨论如何使用SDK进行业务审批流程的二次开发。
本文转自foresun 51CTO博客,原文链接:http://blog.51cto.com/foresun/42775,如需转载请自行联系原作者