熊道德,焦永杰,吴东峰
XIONG Dao-de1 , JIAO Yong-jie2 , WU Dong-feng3
(1.中国航空工业发展研究中心,北京 100029;2.淄博职业学院,淄博 255314;3.北京神舟航天软件技术有限公司,北京 100094)
工作流管理联盟WFMC(Workflow Management Coalition)对于工作流的定义[1]:工作流是一类能够完全或者部分自动执行的经营过程,根据一系列过程规则,文档、信息或任务能够在不同的执行者之间传递、执行。
工作流引擎为流程的执行提供软件执行的环境,是流程成功执行的关键。一个设计良好、方便使用、可扩展的工作流引擎对工作流流程来说至关重要,它直接关系到流程是否能够正确执行以及流程的执行效率。
工作流技术出现之后得到了广泛的应用,但是目前的应用多是针对比较固定、简单的业务流程,随着企业的发展,要求随时能对业务流程进行修改和扩展[2],迫切需要工作流具有一定的柔性,这种柔性主要体现在以下三个方面:
1)业务流程建模阶段:能够快速、简单、准确地表达各种复杂程度的业务流程,最大程度降低对于业务人员的专业要求;
2)业务流程执行阶段:能够实现业务流程的动态修改和扩展,不会对当前的整体系统造成重大影响;
3)业务流程维护阶段:能够提供比较友好的流程维护环境,实现流程的分析和优化,为企业业务流程优化升级提供技术基础。
为了实现这种柔性,本文基于元数据及工作流的相关技术,提出了一种元数据驱动的工作流引擎技术,实现业务流程的灵活性和可扩展性,并对工作流引擎进行了设计和实现,最后对于元数据驱动的工作流引擎进行了总结与展望。
元数据是对数据资源的描述[3],英文名称是“Metadata”,元数据是信息共享和交换的基础和前提,用于描述数据集的内容、质量、表示方式、空间参考、管理方式以及数据集的其他特征。它可以是单个文件、多个文件或者数据库数据。
元数据一般可以分为描述性元数据、结构性元数据、存取控制性元数据以及管理性元数据等。元数据在工作流中得到了广泛的应用,在程序中并不直接被处理,而是通过值的改变对程序产生影响,也即在程序的具体执行过程中,元数据往往是起到“解释”的作用[3],开发人员可以通过改变元数据的值来改变系统的运行方式。这样,不同的元数据值可以让同一段程序具有不同的运行结果。通过元数据可以使得程序具有一定的柔性,随着元数据值的变化而使程序流转到不同的流程。
工作流的驱动方式主要有两种:一种是控制驱动,另外一种是数据驱动。
基于控制驱动工作流的控制信息由流程设计者在流程设计时建立,活动的执行按照控制信息依次向下执行,活动与活动之间具有较强的依赖性,所以基于控制驱动的工作流缺乏柔性,当企业的业务流程发生变更时需要重新建立工作流,会对整体产生较大的影响。
与控制驱动的工作流不同,基于数据驱动的工作流并不预先确定流程,而是在活动的执行过程中通过改变活动的相关数据而自动建立业务流程,这种数据驱动的工作流,活动与活动之间是解耦的,可以实现工作流的灵活配置。
本文基于元数据的相关概念,建立了元数据驱动的工作流。
工作流的建模方式主要有四种[4]:数据流程图、IDEF方法、角色活动图、事件驱动过程链以及Petri网络等,在工作流建模过程中,活动以及活动之间的关系是需要重点考虑的内容,本文基于面向对象的相关概念,将活动抽象为“对象”,通过元数据建立活动对象的结构,并通过元数据的值的改变,推动活动对象依次向下执行,活动对象的具体结构如图1所示。
图1 活动对象示意图
该活动对象以XML的形式进行描述:各个对象的属性含义如下所示:
活动名称Name:活动的名称,在同一个业务流程中可以有同样的名称,例如采购过程中的审批活动,可能存在多次审批;
活动编号Code:活动对象的唯一确定编号,用以区分各种不同的活动对象;
输入参数In_Par:活动的输入参数,用以触发是否可以执行该活动;
执行条件Condition:活动对象的执行条件,通过输入参数的值判断活动对象是否满足执行条件;
图2 元数据驱动的工作流执行过程
输出参数Out_Par:活动对象执行完毕之后的输出参数,用以向下流转;
开始时间BeTime:活动对象开始执行的时间;
结束时间EndTime:活动对象结束执行的时间。
元数据驱动的工作流建模过程无须指定具体的流程,而是将业务流程分解成一个个活动对象,活动对象之间通过输入、输出参数以及执行条件进行动态的绑定,具体的执行流程如图2所示。
首先对于流程进行初始化,由外界条件对于活动对象A进行触发,活动对象A接到触发条件,然后结合自身的执行条件判断对象A是否可以执行,如果可以执行,则执行活动对象A的相关动作并输出参数,并将参数发布到工作流引擎中,工作流引擎扫描引擎池中的活动对象,看是否具有符合活动对象的输入参数是活动对象A的输出参数,如果活动对象B符合,则通过活动对象B的执行条件判断活动对象是否可以执行,通过此种机制依次向下执行活动,最终活动对象C的输出参数为End,活动终止,完成整个业务流程的执行。
按照工作流管理联盟的相关文件,工作流管理系统的参考模型[5]如图3所示。
图3 工作流管理系统参考模型
工作流引擎位于参考模型的重要位置,关系到流程执行的效率和准确性,主要用来对于流程进行控制、解释、管理相关流程实例的运行并且提供一些流程实例与外界进行交互的功能[6]。本文设计的基于元数据驱动的工作流引擎主要包括以下四个层次:
1)活动对象预处理层
本层主要完成流程执行前的准备工作,主要用来解释整个流程并对流程中的活动对象进行数据预处理。例如当流程开始时,工作流引擎要扫描整个活动对象,判断流程开始的节点。
2)活动对象调度层
当活动对象完成活动的执行后,将输出参数发布到工作流引擎当中,工作流引擎扫描整个活动对象,将该输出参数进行广播,其他活动对象接到参数时,同自身的输入参数进行比对,看看是否满足活动对象执行的条件。
3)活动对象执行层
该层主要用来对于活动对象进行执行工作,是工作流引擎的核心,根据活动的对象的预先定义,完成数据及信息的处理工作,本层往往要调用系统的相关资源,并对流程执行过程中的各个细节进行记录。
4)控制管理层
本层提供了灵活的接口,工作流管理人员可以通过该层对于活动对象进行动态变更,以实现工作流执行的柔性。
本文提出了基于元数据驱动的工作流引擎技术,通过元数据对于活动对象实体进行结构定义,并实现了工作流引擎,通过改变活动对象元数据的值来控制活动的流转方向,实现了工作流在执行过程中的动态变更和灵活扩展,实现了工作流的柔性,很好的解决了业务流程经常变更的企业的需求。
[1]Workflow Management Coalition.The Workflow Reference Model.[WflVICl003][R].WFMC TC00—1003.1994.
[2]陈义松,汪芸.基于数据驱动的工作流引擎的设计与实现[J].微电子学与计算机,2012,29(11):138-140,144.
[3]黄迪.基于元数据的轻量级工作流管理系统的设计与实现[D]:吉林大学,2006.
[4]巩世鹏.工作流驱动的CAPP系统研究与应用[D].重庆大学,2013.
[5]张晖.基于工作流和元数据的ETL工具研究与实现[D].河北工业大学,2006.
[6]杨健,李楠,郑建功.基于工作流和元数据驱动的城市工程测量一体化集成应用平台[J].东北测绘与空间地理信息,2012,(1):191-193,195.