探索中国CIO人才现状 | 第四季调研报告
基于动态领域模型的业务流程管理
2013-12-03  作者:CIO时代网 

  引言


  业务流程是对业务流程程及其各操作步骤之间业务规则的抽象、概括和描述。采用业务流程模式可以使用计算机系统在业务流程的多个参与者之间,按某种预定规则自动传递文档、信息或者任务。


  二十世纪九十年代业务流程机制被引入到ERP系统中。采用业务流程技术,可以把ERP业务过程逻辑从具体的业务实现中分离出来,解决了ERP系统缺乏灵活性,不能适应企业业务流程迅速变化的实际需求。促进了ERP系统的发展。


  进入二十一世纪,企业越来越多的出现了多组织、多业务都的特征,并且提出了随时随地访问ERP数据的需求。结合当前热门的云计算技术,提出了建立企业ERP云计算平台的设想。


  企业ERP云计算平台是企业自己购买服务器,部署一套ERP云计算系统,实现对企业信息进行随时随地访问和管理的功能。


  与理想状态的云计算相比,企业ERP云计算平台的范围较小,只有企业内部人员或经过授权的特定人员可以使用。与传统的企业IT系统相比,企业ERP云计算平台不局限于企业内部的局域网,而提供了广域网范围的,Pc、手机等多终端的访问支持,具有更好的扩展性和应用价值。


  在云计算环境下业务流程呈现出一些新的问题,跨组织的业务流程逐渐增加,传统的业务流程工作方式不能很好地满足要求,金蝶公司结合企业ERP云计算平台的特点提出了云计算环境下的业务流程解决方案。


  1业务流程开发现状


  业务流程是对业务流程及其各操作步骤之间业务规则的抽象、概括和描述。业务流程技术起源于二十世纪七十年代中期办公自动化领域的研究。1983年至1985年间,在图像处理领域和电子邮件领域出现了早期的含有业务流程特征的商用系统。


  进入二十世纪九十年代以后,随着个人计算机、网络技术的普及和推广,以及信息化建设的日益完善,使得业务流程技术的研究与开发进入了一个新的热潮。先后出现了BPMN,XPDL,BPEL三种主要的业务流程定义和执行语言。


  关于业务流程的学术研究也十分活跃,国内外许多学者对业务流程进行了深入地研究。


  中南大学的李玺、胡志刚、胡周君等提出将以DAG图形式表示的任务执行关系转换为以数值表示的任务执行优先级,并根据最大截止时间满意度优先的思想,提出了一种截止时间满意度增强的业务流程调度算法川。


  吉林大学的张朝辉、刘大有根据ERP的领域需求及特点,开发出一种改进的基于活动网络图的业务流程模型,并引入了事件管理器和事件订阅器。经过改进的业务流程管理系统能够很好地满足ERP系统的业务要求,可以有效增加系统的柔性,简化系统建模的难度。


  烟台大学的毕远伟、胡潇琨提出在ERP系统中采用嵌入式业务流程管理的方法。介绍了基于UML活动图模型的嵌入式业务流程管理模块的设计和实现方法。给出了支持业务流程的ERP系统的实施方法。通过嵌入业务流程管理到传统ERP系统中,提高了系统对企业业务的适应能力,也提高了软件重用和开发效率。


  以上这些研究将业务流程与ERP系统进行了结合,较好地解决了EltP系统流程管理的需要。但这些研究不是基于云计算平台的,不能满足当前企业多组织,多事业部的管理要求。


  2基于动态领域模型的业务流程管理


  业务流程设计是ERP系统的重要组成部分。企业经常根据市场的变化调整内部的业务流程,传统的预设的业务流程不能很好地满足要求,金蝶公司结合动态领域模型提出了建立动态业务流程管理的新模式。


  2.1ERP中业务流程的特点


  ERP系统对企业的采购,生产,销售,分析,决策进行全面管理。企业在生产过程中会有各种各样的业务流程,要设计出适合ERP应用的业务流程就必须首先了解ERP系统中业务流程的特点。


  随着企业信息化水平的提高,当前越来越多的多个组织共用一套ERP系统,在ERP系统的协助下,业务流程打破了企业各组织的界限,将生产、销售、采购整个过程整合到一起。


  可以看出当前企业业务流程的设计变得非常复杂,经常涉及到多个组织的人员,可能出现条件、循环等多种情况,必须使用新的方法进行设计。


  2.2动态业务流程架构


  结合当前企业业务流程的实际情况,结合动态领域模型建模方法,设计了一个全新的动态业务流程架构,如图2所示。


  采用动态领域建模的方法对业务流程中的元素进行抽象得到统一的流程模型定义,在此基础上设计了一个业务驱动的流程设计器。使用该设计器,不需要编码就可以完成业务流程的设计。业务用户可以直接构建业务流程,减少了业务用户和IT部门的沟通隔阂。


  同时业务流程设计器来提供了可扩展业务组件库,二次开发SDK等,方便第三方人员进行扩展开发,具有良好的开放性。追踪/状态图,统计查询等功能提供了企业用户进行业务流程管理和统计的多种接口。


  2.3业务流程的分层模型


  传统的业务流程是流程一动作两层模型,整个业务流程有多个动作组成,动作之间只有顺序关系,没有考虑动作问的其他关系。每个动作在业务流程图上表示为一个点。


  当动作数量很少时,相互间关系简单时,这样做没有问题。如果动作很多,动作的执行者之间关系复杂,要理清楚各个动作之间的关系就显得非常困难。


  但实际上,在业务流程中有很多动作其实是一个整体,例如判断是否有权限,做出审核决定,自动下推流程,这三个动作其实是业务流程中的一个步骤,但在传统业务流程管理中,它们是分离的,这样增加了业务流程设计的复杂性。


  为此,提出了三层业务流程模型。


  在流程和动作之间增加了一个节点层。节点是多个相关动作的集合。节点可以设置进入条件和离开条件,当符合进入条件,流程将进入节点,并完成节点中的多个动作;如果不满足进入条件,将等待条件满足。如果节点满足离开条件,将离开节点,否则将等待条件满足。如果流程等待进入或离开节点时间超过设定的时间。流程实例会被丢弃。


  进入节点的例子:要生产桌子,必须木板,螺钉都采购完成才能开始。生产桌子是一个节点,它的进入条件是木板,螺钉都采购完成。这两个条件有一个不满足,流程就不能进行“生产桌子”这个节点。等待指定时间,条件还不满足,流程结束,暂时不生产这批桌子。


  离开节点的例子:一项议案需要10个人中至少8人参与表决才能形成决议。“表决议案”是一个节点,离开条件是8人以上投票。不满足条件,流程不能离开节点,当等待指定时间,条件还不满足,流程结束,投票失败。


  使用三层业务流程模型,简化了流程设计。重新设计的业务流程如图4所示。


  2.4业务流程的领域建模


  通过前面的分析,可以发现业务流程主要有节点、动作及节点间连线组成。可以把它们作为领域建模的基本元素来简化业务流程的设计。


  动作对应于业务流程中一个具体的操作。不同的动作的差别在于调用的函数名称及参数的不同。如果把这种不同固化到动作中,增加一个动作将需要增加一个元素,且不能动态修改动作的内容。


  同样,连线作为一个基本的元素表示动作转移的条件,不同业务流程中动作转移的条件不同,同样不能将这种差异固化到元素的定义中。


  在抽象节点时也存在类似的问题。为了解决这个问题,提高领域模型的灵活性和动态性,在金蝶公司的ERP动态领域模型中,增加了属性的概念。将相同元素的不同点使用元素的属性来表示。


  加入属性后,ERP动态领域模型成为由模型-元素-属性组成的三层体系结构,如图5所示。


  在动态领域模型中增加属性后。业务流程设计只有三个基本元素:节点、动作、连线。同一元素的具体实例间的差异使用属性来表示。例如两个不同的动作调用的函数是不同的,在相应的属性字段中填入不同的内置函数名即可。


  2.5业务流程设计的扩充


  在金蝶公司的ERP产品中,业务流程设计使用了前面提到的动态领域建模方法,并且的内置了大量业务流程处理相关的动作及动作处理的函数。要改变一个动作具体的操作,只需要修改动作的属性即可。


  但这种修改是基于内置函数的,如果要修改的操作在ERP系统中没有内置,这种方法肯定不能达到预期的效果。


  企业的这种特殊的需求,可以使用自定义动作的方法来实现。


  系统提供了动作的接口类和接口函数,想自定义特殊的动作时,先继承该类,然后实现类的几个特定的接口函数,最后将新定义的动作在业务流程中进行注册就可以使用了。使用这个功能,用户可以根据需要开发出满足企业需要的动作,从而设计出特殊的业务流程。


  2.6业务流程的解析


  基于动态领域建模完成业务流程设计后,在实际运行时,需要一个解释引擎将使用领域模型封装过的业务流程还原为简单的业务流程。


  在迸行流程设计时,动作具体的操作是使用文本的形式填写在动作的属性中的。解析的过程其实就是将文本填写的内容转化为具体的函数调用。


  具体的业务流程解析是由后台的解析模块来完成。在设计解析模块时,对动作的调用是执行基类的一个虚函数。系统内置的各个动作函数都继承于该虚函数。用户以文本的形式将函数名填写在动作的属性中时,就将具体的函数注册到了节点上。当流程执行到该节点时。就会自动的执行具体的函数,从而完成流程功能。


  2.7多组织业务流程的权限设计


  在企业ERP系统中,权限管理是一个重要的内容,对任意一张单据,只有有权限的用户才能进行创建、修改或删除。


  业务流程经常在多个组织间流动,在一个组织的业务处理完成后往往需要自动创建一张新的单据。如果这张新的单据是其他组织的,就会出现没有权限无法创建的问题。


  单据视图是操作者直接打开或操作单据时的情况,由操作者的权限来确定。


  业务流程视图是当业务流程指定业务流程转向某个用户时,该用户将获得对该单据的特定区域的临时权限。当操作人完成业务流程指定的任务后,对单据的临时权限将消失。使用业务流程视图可以方便的实现对单据的临时权限管理。从而解决业务流程跨组织支持的问题。


  3实现


  经过大量的努力,根据80万用户对流程的需求和最佳实践,设计出了一套符合中国企业的业务流程管理(BPM:BusinessProcessManagement)解决方案。


  通过将业务流程与动态领域模型的融合,实现动态商业应用的概念,建立了一个基于动态领域模型的业务流程框架。实现了动态设计和修改业务流程的功能,具有良好的易用性和可扩展性。


  使用这个业务流程框架,ERP系统中大量的业务流程设计变得非常简单,使用业务流程设计模块,不需要编写代码,就可以完成业务流程的设计和修改,并且可以设计出复杂的跨组织业务流程。


  使用这个业务流程设计框架,开发效率大幅上升,系统设计大大简化,可迁移性也得到了显著提高。采用这种技术前,90%的精力花费在业务流程的实现上,无法专注与ERP业务流程的设计。采用这个业务流程设计框架后,具体的业务流程实现的时间降低为10%,开发人员90%的精力关注业务流程的逻辑设计和系统建模。从而可以开发出更加适合企业需求的产品。


  另一方面,采用新的技术后,系统开发的难度大幅下降,新员工经过简单培训就可以开始工作。同时,由于减少了代码修改的数量,系统的质量也得到了大幅提高。


  4结束语


  在动态领域模型和业务流程的动态设计方面进行了大量的探索和实践,发现这种方法对大幅提高了ERP系统的设计和开发效率,并有效提升了软件产品的质量。


  在业务流程设计中使用的动态领域建模方法在软件设计中具有很强的通用性,可以推广到其他类似的系统中,具有较高的理论和应用价值。