本文讲解jxTMS中的业务过程,整个系列的文章请查看:jxTMS+进销存:概述
现代企业的管理遵循分工协作、分权制衡的基本原则,这一思想反映到管理信息系统上最典型的就是流程。但流程有一个比较麻烦的地方,流程启动后,其所涉及到的业务数据【代表的是业务处理对象,如销售的客户订货明细、报销的费用明细等】是一成不变的。但有的业务环节却需要批处理,否则效率太低。
也就是说,流程是一事一理,但有的业务环节却需要按自己的节奏、粒度进行作业,这就会造成不同业务处理环节间的脱节。针对这个问题,jxTMS又增加了业务过程来解决。
和流程一样,业务过程也是跨岗位、跨专业的过程性推动部件。不过和流程关注的是同一任务在不同角色间的推动不同,业务过程是部门/功能模块间的业务推动。
而从信息管理系统的角度看,流程是角色间任务信息的流转,业务过程是功能模块间业务数据的流转。
也就是说,从管理角度看,业务过程是部门间过程性作业的推动;从管理系统角度看,业务过程是功能模块间过程性数据的流转。
理解了这些,业务过程其实就非常简单了:就是一个通过标准接口进行的数据交接机制。
业务过程组件
通过上述的讨论,我们可知业务过程包括两个部分:
1、业务过程流转定义
参考流程的定义与实现,业务过程的定义与实现是非常简单的:
@myModule.bizProcess('psi')
def bpPSI(self):
'''
node 销售 capa=psi.sales ;
node 备货 by 销售 capa=psi.inventory ;
node 通知收货 by 备货 capa=psi.inventory, func=informDeliver ;
node 发货 by 通知收货 capa=psi.inventory ;
node over by 收货 capa=psi.main;
'''
上述用bizProcess修饰的函数,定义了一个名为psi的业务过程,包括了销售、备货、通知收货、发货以及最后默认结束的over等环节。非常简单,只需就【通知收货】节点加以说明,其是交接给函数【informDeliver】处理,处理完毕后自动交接给【发货】节点,而其它节点都是需要工作人员手工作业,并确认本环节作业完毕的。
2、业务各环节的标准接口
@myModule.Interface('psi', '备货'.decode('utf-8'))
def bpPSI_stockUp(self, db, ctx,active,params):
......
上述用新引入的修饰符Interface修饰的函数,指示该函数用于psi业务过程的备货节点处理,其中active是来自哪个节点【这里是:销售】,params是销售节点传递出的json型业务数据。
推动业务过程的流转
定义好业务过程后,当本节点处理完毕需转交下一节点继续处理时,执行下述命令即可:
bizProcess.over(db,ctx,self,本节点名,params)
params根据约定,应是一个array型的json数组,其中每一行代表一个bizDataItem对象,该对象的BizProcessID属性指示了相应的业务号,如果存在多个业务号,则按业务逐一转交,以支持本业务中该节点的批处理能力。
目前jxTMS已经开放个人注册试用,欢迎大家注册试用:
下面的系列文章讲述了如何用jxTMS开发一个实用的业务功能:
下面的系列文章讲述了jxTMS的一些基本功能: