一种支持工作流活动实例成批处理执行的方法

文档序号:6603166阅读:179来源:国知局

专利名称::一种支持工作流活动实例成批处理执行的方法
技术领域
:本发明属于工作流
技术领域
,涉及一种支持工作流活动实例成批处理执行的方法。
背景技术
:在制造业信息化、电子商务以及现代服务业信息基础设施中,存在大量以过程为核心的应用需求。业务流程描述了企业资源的使用方式,以自动化或者半自动化方式来管理流程能够大幅度提高业务执行的工作效率,降低成本,使企业能更快地适应不断变化的需求和业务的增长。起源于生产组织与办公自动化领域的工作流技术为实现这一目标提供了先进的技术手段。该技术自20世纪80年代中期出现以来就得到广泛关注并被大量应用于企业实际运作,也一直是研究的热点之一。1993年8月,工作流管理联盟(WorkflowManagementCoalition,WfMC)的成立标志着工作流技术开始进入了相对成熟的阶段。WfMC的主要职责是负责工作流及工作流管理系统(WorkflowManagementSystem,WfMS)的一些标准化工作。目前该组织的成员已经超过了200个,其中包括软件厂商、科研机构与咨询机构。1994年11月29日,WfMC发布了著名的工作流参考模型(WorkflowReferenceModel),它详细描述了WfMS的各个主要组成部分、各部分的功能及相互之间的接口。这些标准的制定对于实现不同厂家的产品之间的互操作及基于工作流执行服务开发新的应用都具有重要而深远的影响。在过去的十年里,人们已经可以很容易的接触到工作流管理技术。除了纯粹的工作流管理系统外,如Staffware、COSA,Actionfforkflow等,许多其它的软件系统也都使用了工作流技术。SAP等企业资源计划(EnterpriseResourcePlanning,ERP)系统、客户关系管理(CustomerRelationshipManagement,CRM)系统、供应链管理(SupplyChainManagement,SCM)系统、企业间的电子商务(BusinesstoBusiness,B2B)应用等都嵌入使用了工作流技术。为了本说明书表述的方便,这里以工作流管理联盟(WfMC)的定义为标准,给出与工作流技术相关的概念1)工作流(Workflow)是一类能够完全或者部分自动执行的经营过程,它根据一系列过程规则、文档、信息或任务能够在不同的执行者之间进行传递与执行;2)工作流管理系统(WorkflowManagementSystem,WfMS)是一个软件系统,它完成工作流的定义和管理,并按照在计算机中预先定义好的工作流逻辑推进工作流实例的执行;3)业务流程(BusinessProcess)指在现实环境中,能够实现业务目标和策略的相互连接的过程和活动集。如公文处理流程,投保过程及项目开发过程等;4)工作流模型(WorkflowModel,也称为过程定义,即ProcessDefinition)是计算机所能识别的业务流程的形式化描述,用来支持运行过程的自动化。过程可分解成一些子过程和活动,其定义主要包括运行过程中涉及到的各种数据和参数,如过程的开始和终止条件、各个工作环节(活动)及相互之间的控制流和数据流关系以及其它的相关信息,如组织成员、应用和数据等。工作流模型由过程模型、组织模型、资源模型以及工作流相关数据四部分组成。过程模型用来定义工作流的过程逻辑,它包括组成工作流的所有活动以及活动间的依赖关系,它是整个工作流模型的基础与核心。组织模型用来定义企业人员的组织结构,其主要任务是为企业人员执行工作流过程提供柔性的组织定义。资源模型用来定义企业资源的组织结构。而工作流相关数据用来定义工作流执行过程中需要用到的数据;5)过程(Process)是业务流程的规范视图,由一系列为共同目标联接在一起的协同的过程活动组成;6)活动(Activity)是工作流中一个逻辑步骤或环节的工作任务,可分为人工操作和自动处理两类。活动是过程执行中可被工作流机调度的最小工作单元。它包含的信息包括开始和结束条件;可参与到此环节中的用户;完成此活动所需的应用程序或数据;以及关于此活动应如何完成的一些限制条件(如时间上的限制等);7)过程/活动实例(Process/ActivityInstance)过程实例是某个工作流过程的一次执行。在过程实例的执行过程中,WfMS负责解释相应的流程定义来生成有关的活动实例,并根据定义中的控制规则协调这些活动之间的顺序关系,同时根据数据流动关系的定义完成活动之间的数据传送。从参与者的角度来说,过程实例的执行实际上是由参与者处理它所涉及的那个环节的数据。完成该环节的任务之后由WfMS根据相应结果激活后续环节,同时通知后续参与者对之进行处理,由此依次反复直至整个过程完成。每个活动实例代表一个活动的一次调用,只和一个过程实例相关,并使用过程实例的数据。一个过程实例可能由若干活动实例组成,但一个活动实例不能同时属于几个过程实例。一般情况下每一个活动实例都将表现为一个工作项(Workltem,它将由某个或某组用户负责完成);8)参与者(Participant)是部分或全部执行某个活动实例的资源(注资源最根本的特征是它能够执行特定的任务)。参与者包括实际完成某个活动的人或设备,它把恰当的资源分配给某个可以开始的活动。每位参与者都必须具有属于某个(某些)角色的属性;9)工作项(WorkItem):是在一个过程实例中由工作流参与者进行的具体工作。一个活动一般包含一个或几个工作项,这些工作项构成任务给工作流参与者完成。工作项通常是通过工作列表表达给用户;10)工作项列表(Worklist)是一个参与者所负责的所有工作项的详细描述;11)代理(Agent)在工作流系统中,一个独立的执行实体被定义为代理;12)角色(Role)角色标识代理在过程模型中对某项任务或相关任务集合具有的访问权限和完成能力。角色用来指定代理的职责,它表示的是责任的集合,而代理是扮演一个或多个角色的物理实体。针对不同的工作流系统,同一企业组织结构的划分可能不同,角色与代理实体的映射关系由授权完成。工作流管理系统(WfMS)是支持企业经营过程高效执行并监控其执行过程的计算机软件系统,能有效提高企业的信息化程度,降低企业管理成本,更好的实现企业经营目标。因此,自20世纪90年代开始,它吸引了学术界与产业界的广泛关注,大量的工作流管理技术被应用到企业的实际运作。工作流管理系统在实际系统中的应用一般分为3个阶段,即模型建立阶段、模型实例化阶段和模型执行阶段。工作流管理系统的实施与企业的经营过程重组以及经营过程改变是紧密相关的。实施工作流管理的目的就是要提高企业的柔性,并且能够根据市场的变化不断改进业务过程,因此其相应的工作流模型也需要不断的改进。根据经营过程及组成活动复杂程度的不同,工作流管理系统可以采取许多种实施方式。从较高的层次来抽象考虑工作流管理系统,所有的工作流管理系统都提供了以下三种功能(1)建立阶段功能主要考虑工作流过程和相关活动的定义与建模功能;(2)运行阶段的控制功能在一定运行环境下,执行工作流过程并完成每个过程中活动的排序和调度功能;(3)运行阶段的人机交互功能实现各种活动执行过程中用户与IT应用工具之间的交互。其中,工作流管理系统建立阶段的功能主要是完成经营过程的计算机化的定义。在这个阶段,利用一个或多个建模技术与工具,完成实际的经营过程到计算机可处理的形式化定义的转化,所得到的定义通常可称为过程模型、过程模板、过程元数据或过程定义。在完成过程模型的定义后,所生成的工作流模型将工作流执行服务软件进行实例创建并控制其执行过程。工作流执行服务对使用工作流模型描述的过程进行初始化、调度并且监控过程中每个活动的执行,在需要人工介入的场合完成计算机应用软件与操作人员的交互。工作流执行服务可以包括一个或多个工作流引擎,前者是一种集中式的实现方式,而后者是一种分布式的实现方式。分布式的实现方式又可以分为同构和异构两种不同的情况。这种分布性要求客观上是由企业的实际运行环境决定的,工作流管理系统可以采用不同的方法来满足企业应用对于分布性的要求。工作流引擎是工作流管理系统的核心软件部件。它的主要功能有解释过程定义,控制过程实例(创建、激活、挂起、终止等),按照过程定义已确定的业务逻辑调用各项活动,为用户工作表添加工作项,维护工作流控制数据和工作流相关数据,调用应用程序,提供监督,管理和审计功能。在工作流建模问题上,研究人员从各自的研究背景和应用需求上提出了很多有价值的方法,目前主要的建模方法有以下几种1)基于状态与活动图的建模方法它介于Petri网模型和图形化模型之间。对于用户它比Petri网更容易学习和理解,在模型的准确性方面,它比图形化模型易于验证。其欠缺方面是模型验证比Petri网模型麻烦,可视化效果比图形化模型差。2)基于形式化表示的建模方法如基于Petri网的建模方法。在扩展Petri网的基础上,Aalst提出了工作流网的概念,并对应用中的许多问题,如结构特性以及如何将工作流映像到Petri网等进行了研究。Aalst还研究了使用Petri网支持企业经营过程重组的问题,提出了“What,Now,andByWhom”的三个阶段。3)基于事务模型的建设方法事务的概念源于数据库研究领域,用于解决数据的并发访问和出错恢复问题。在数据库事务模型的基础上,研究人员提出了多种高级事务模型来描述工作流过程,包括嵌套事务模型、多层事务模型、分支/汇合事务模型等。4)基于活动网络的建模方法这是指以活动和活动之间的关系为基础建立的工作流模型。这是大多数工作流管理系统采用的工作流建模方法,其特点是用户界面友好,易于理解,并且可以转化为Petri网络模型来进行验证。5)基于对话模型的建模方法这种工作流模型是从客户方与服务方这两个角色之间的语言行为交互上对工作流过程进行定义。它是在语言行为理论的基础上提出的一种基于对话的工作流模型。“成批处理”思想最早可追溯到操作系统领域,但传统的工作流模型并没有提供这一方面的支持。工作流是一类能够完全或部分自动执行的业务过程,活动是工作流中的一个逻辑步骤或者环节。工作流活动的成批处理,是指通过将同一类型活动的多个工作流活动实例进行合并处理,从而使原本多个活动实例的分别执行变为成组合并执行。成批处理可以降低活动执行成本和提高活动执行效率,而这一语义在实际应用中也非常普通,并十分重要。例如,企业或政府集中采购业务就需要对同一供应商的不同采购申请活动合成一个集中采购活动,即将来自多个采购申请部门的多张申请单合并到集中采购部门的一张采购订单来处理;物流优化配送中需要将若干个客户的订单合并为一次运输单以节省运输费用。在工作流的实际应用中还有很多这种需要在某个阶段对过程或活动实例进行合并处理的情形。但是,传统的工作流模型中并不支持活动的成批处理,现有的工作流管理系统也未提供相应的支持机制。
发明内容本发明的目的是提出一种支持工作流活动实例成批处理执行的方法,该一种支持工作流活动实例成批处理执行的方法可实现工作流系统中多个同类型活动实例的成批处理,有利于工作流系统执行性能的提高,能为企业提高运营效率,降低或节约生产或经营成本提供方法指导和应用支撑。本发明的技术解决方案如下一种支持工作流活动实例成批处理执行的方法,具有工作流引擎的工作流服务模块建立在支持成批处理的工作流模型上,其特征在于,工作流服务模块包括一个分组批处理调度引擎,采用事件触发机制来组织活动实例成批处理的执行过程,事件被送入事件队列,由分组批处理调度引擎中的ECA规则解释器监控事件队列,当事件队列长度发生变化,由ECA规则解释器对事件队列中的新到事件进行处理;所述的ECA规则解释器为事件-条件-动作规则解释器;所述的事件包括正常事件、缓冲区长度低于阈值事件、定时器事件和执行者空闲事件;所述的正常事件、缓冲区长度低于阈值事件、定时器事件产生过程如下步骤1产生活动实例工作流引擎检测到工作流模型中当前要处理的活动为可成批处理的工作流活动,则产生活动实例并送往分组批处理调度引擎;步骤2由分组批处理调度引擎中的缓冲区管理器将接收到的活动实例分配到对应的成批服务区缓冲区(成批服务区缓冲区即BPA缓冲区),引起成批服务区缓冲区的长度变化,当成批服务区缓冲区的长度变化达到预设的阈值,则由缓冲区管理器触发正常事件;当缓冲区管理器监测到某一个成批服务区缓冲区长度发生变化但又未达到预设阈值时,则触发缓冲区长度低于阈值事件;缓冲区长度低于阈值事件被ECA规则解释器解释完,由分组批处理调度引擎启动定时器定时Atl时间,当Atl时间到,而正常事件没有被触发时,则由定时器产生定时器事件;(当Atl时间还没有到,而正常事件已经被触发时,则定时器事件不被触发)执行者空闲事件的产生过程为执行者执行完,由执行者产生执行者空闲事件;由执行者将该执行者空闲事件送入到事件队列中;活动实例与成批服务区缓冲区具有一一对应关系;所述的对新到事件进行处理的过程为根据下表执行处理事件名称处理过程第i个执行者对应的执1、将由第i个成批服务区缓冲区产生的定行者空闲事件时器清零;2、清除事件队列中与第i个成批服务区缓冲区有关的所有事件;3、开启缓冲区管理器对第i个成批服务区缓冲区监控;4、将ECA规则解释器复位以使下一次调度得以进行。来自于第i个缓冲区的1、关闭缓冲区管理器对第i个成批服务区定时器事件缓冲区监控;2、从第i个成批服务区缓冲区提取一组符合成批处理条件的活动实例送给第i个执行者进行批处理;3、将ECA规则解释器复位以使下一次调度得以进行;正常事件(来自于第i1、关闭缓冲区管理器对第i个成批服务区个缓冲区)缓冲区监控;2、从第i个成批服务区缓冲区提取一组符合成批处理条件的活动实例送给第i个执行者进行批处理;3.将ECA规则解释器复位以使下一次调度得以进行;缓冲区长度低于阈值事启动定时器,设置定时器的等待时间为件(来自于第i个缓冲区)Atl,定时器开始工作。1)提供了一种支持成批处理工作流模型的建模方法其特征在于在传统的工作流模型中引入一新类型的活动-可成批处理的工作流活动,并定义了一个支持成批处理的工作流模型。成批处理对工作流模型与工作流管理系统带来了新的要求,因为分组批处理是动态的,并且要将活动实例整合成新的实例提交给参与者执行,因此必须要考虑整合的方法问题。这些必须在工作流模型中给予描述。为在工作流中支持成批处理,本发明在传统的工作流模型中引入一新类型的活动_可成批处理的工作流活动。具体定义如下定义1支持成批处理的工作流模型,为一个五元组<T,E,s,BT,F〉。其中T是一个工作流活动的集合,可包含传统工作流活动与可成批处理的工作流活动,£口是活动间非循环关系的集合,seT是起始活动,[Γ是一个可成批处理的工作流活动的集合,F^Γ是结束活动的集合。定义1中,传统工作流活动是指传统工作流模型中所支持的工作流活动,这些活动在定义后,其活动实例在实际执行时可完全由现有工作流管理系统的相关机制进行管理与维护。为说明其与可成批处理的工作流活动的区别,对其定义如下定义2传统工作流活动,为一个三元组<A,1,0>。其中,A是工作流活动名称,I是A的输入数据项集合,0是A的输出数据项集合,I和0又称为输入数据参数和输出数据参数。例如在图1的申请活动等就是传统工作流活动,申请活动包含了申请人数、地点、时间等输入项,车牌号,费用开销等输出项。定义3可成批处理的工作流活动,为一个六元组<A,I,0,BLower,B1,BC>。其中,A是工作流活动名称,I是A的输入数据项集合,0是A的输出数据项集合,I和0又称为输入数据参数和输出数据参数;BtaCT,B1为与活动实例成批处理有关的参数,BLower就是即为阈值,BLower与B1分别表示执行一次成批处理分组选择时活动A的实例的数目的最小值与最大值;BC=<x,D,y>为A的一个成批处理特征,其中XeI,ye0,/)口/-χ。例如在图1的派车活动与通知司机活动都为可成批处理的工作流活动。2)提供了一个支持成批处理工作流模型的建模工具的实现方案。该工具整个设计框架分为四个模块,UI界面模块、控制层、模型层以及XPDL存储层,具体如图2所示。其中,控制层模块在整个架构中的主要作用为监控UI界面事件的发生以及对节点对象的生成。其包括事件监听器,事件响应模块,对象生成器。事件监听器监听到事件的发生后,就将相应的参数交给事件响应模块进行具体的处理。在事件响应模块中,设计了两个主要的类GraphController和Handler,其中GraphController处理一些相对简单的事件,如对例外或异常的一些处理,而Handler则具体涉及到与流程实例相关的事件处理,如流程节点的添加、删除、修改以及参数的设置等等。当事件响应模块发出具体生成某节点的动作后,便由对象生成器具体生成相应的对象。其中,模型层包括模型验证模块,其对其进行合法性验证,对于符合工作流模型规则要求的转换成XPDL,否则进行异常处理。其中,XPDL存储层主要对XPDL文档的导入以及导出,对于通过模型验证的流程将在XPDL层中进行导出,并最终存储到磁盘中。同样,对于要导入进建模工具的XPDL文件,要先进行模型验证,如果通过验证,则在视图区进行显示,否则不予导入。3)提供了一个基于事件驱动机制的支持成批处理的工作流执行服务系统解决方案,方便在工作流引擎中完成活动实例成批处理。工作流模型在具体执行时,将会产生该模型的过程实例。而在过程实例的执行过程中,WfMS将负责生成与工作流模型中的活动相对应的活动实例,并根据定义中的控制规则协调这些活动实例之间的顺序关系,同时根据数据流动关系的定义完成活动之间的数据传送。每个活动实例代表一个活动的一次调用,只和一个过程实例相关,并使用过程实例的数据。一个过程实例可能由若干活动实例组成,但一个活动实例不能同时属于几个过程实例。通过本发明提供的支持成批处理工作流模型的建模工具,可实现本发明提供的支持成批处理工作流模型的可视化建模。在完成支持成批处理工作流模型模型的定义后,所生成的工作流模型将由工作流执行服务系统进行实例创建并控制其执行过程。工作流执行服务系统对使用工作流模型描述的过程进行初始化、调度并且监控过程中每个活动的执行,在需要人工介入的场合完成计算机应用软件与操作人员的交互。下面如无特别说明,工作流活动都指可成批处理的工作流活动。由于传统的工作流执行服务系统是不支持成批处理,为使其在执行时能支持工作流活动实例成批处理,我们需要对传统的工作流执行服务系统进行功能扩展。本发明在现有工作流执行服务系统中增加了一个成批处理调度引擎,由其专门负责成批处理调度的实现。图4描述了成批处理调度引擎的体系结构及其与其它部分的关系。从图4中可看出,成批处理调度引擎由ECA规则解释器、GSA算法组件(提供了支持工作流活动实例分组的分组调度算法)、缓冲区管理器、以及ECA规则表、事件队列和一系列的缓冲区组成。每一个缓冲区代表一个成批处理区BPA,每一个BPA对应工作流模型中的一个工作流活动,即工作流模型中第i个工作流活动在执行时的活动实例将被送入第i个BPA缓冲区中。成批处理调度引擎在具体执行时,主要基于事件驱动的GSA-SA算法,对其可描述如下1、启动成批处理调度引擎,设置各执行者的初始状态为闲,各BPA缓冲区的初始状态为Empty。2、当新的服务请求到达时,工作流引擎产生服务到达事件,并根据服务请求的要求,生成活动实例并将其送入到缓冲区管理器,然后缓冲区管理器将其送入对应的各BPA的缓冲队列中。3、缓冲区管理器监控各BPA缓冲区的状态,当状态改变时产生相应的事件(具体详见表1),并将事件送入事件队列。(各BPA缓冲区有4种状态=Empty,Lower,Normal,Full,分别表示缓冲区空、低于警戒下限、正常、满。Lower与氏。_有关,详见定义3的说明。其状态转换为在启动时,缓冲区为Empty,当有服务到时,则转入&。■,如果此时一直有服务到达,但等待队长Q彡BLower,则仍是处于Lower状态,如果Bl。wct<Q<B1,则转入Normal状态,一直到Q=B1,则进入Full状态。而在一个分组选优算法结束后会启动服务机构去处理分组4,用Length表示该分组中的服务个数,则其相当于从缓冲队列中Wte中删除Gr.Length个服务,即Q=Q-G,Length,此时有可能改变缓冲区的状态。它为服务到达的逆操作。4、ECA规则解释器对事件队列中的事件进行监听,并负责ECA规则的解释执行。当事件队列中的事件满足某条ECA规则的执行条件时,则该条ECA规则被ECA解释器解释执行。当有由工作流系统触发的退出事件(Event_Exit)发生,关闭成批处理调度引擎,算法结束。5、当定时器按照ECA规则解释器的要求完成了一段长为Atl的等待时间后,产生一个等待时间1到事件。6、当GSA算法组件按照ECA规则解释器的要求对第i个BPA缓冲区中的活动实例完成一次分组批处理调度后,生成一个新的分组服务请求提交给第i个执行者处理,并产生一个分组批处理调度结束事件。其中,分组服务请求中包括了一个新的成批处理活动实例及一个与分组情况相对应的活动实例状态映射表。7、各执行者监控是否有新的分组服务请求到达。如果有新的分组服务请求到达第i个执行者,而第i个执行者的当前状态为“闲”,将第i个执行者的状态改变为“忙”,并产生相应的忙事件(具体详见表1),并将事件送入事件队列,第i个执行者开始处理该新的分组服务请求,处理完后,并执行结果返回给工作流引擎,并将第i个执行者的状态改变为“闲”,并产生相应的忙事件(具体详见表1),并将事件送入事件队列;如果有新的分组服务请求到达第i个执行者,而第i个执行者当前状态为“忙”,则等第i个执行者的状态改变为“闲”时再处理该新的分组服务请求。(各执行者只有两种状态“忙”,“闲”。“忙”表示执行者正在执行服务,而“闲”则表示服务结束,执行者在等待新的分组服务的到来)8、重复2-7操作,直到算法结束为止。步骤2-7将产生的事件可用表1来描述表1GSA-SA算法涉及到的事件列表<table>tableseeoriginaldocumentpage11</column></row><table>ECA规则解释器是调度引擎的核心。在实现时Idle_PrOCeSSOr事件将作为开始一次新的分组调度进程的出发点(因为只有执行者空闲时,才有开始一次新的调度的必要),但在开始一次新的分组调度进程之前,必须清除与前一次分组调度有关的事件、定时器等,如不清除,则可能造成混乱。表2描述了步骤2-7中ECA规则解释器对成批处理区i进行处理时的ECA规则及其执行语义的解释。一般的,与第i个成批处理区(即成批处理区i)对应的活动实例在实例成批处理时的分组活动ID将被设置为BPAi。而ECA规则中的各个动作在执行时都将接受BPAi的具体取值(例如BPAI、BPA2等),即当成批处理调度引擎在执行第i个成批处理区(即BPAi)中的活动实例的成批处理时,ECA规则中的各个动作都对BPAi执行。表2实现GSA-SA算法的ECA规则及其执行语义的解释<table>tableseeoriginaldocumentpage12</column></row><table><table>tableseeoriginaldocumentpage13</column></row><table><table>tableseeoriginaldocumentpage14</column></row><table>在这些ECA规则中,SetTimerO,GPAlgorithm(),ResetECARule(),ClearEvent(),OpenBufferMonitor(),CloseBufferMonitor()为工作流执行服务内部函数,下面对它们的执行功能进行一般性描述,其中Para、Paral、Para2均表示参数,而这些参数在具体执行时都将如表2所示的那样被具体化1、SetTimer(Paral,Para2)表示设置定时器,即在等待一段时间Para2后将产生Paral;2、ClearTimer(Para)表示清除为产生事件Para而设置的定时器;3、GPA_Algorithm()表示启动GSA算法组件执行实例成批处理时的分组选择操作;4,ResetECARule(Para)表示清除所有与成批服务区Para有关的定时器、事件,并开启缓冲区监控和重置ECA规则以使下一次调度得以进行。5、ClearEvent(Para)表示清除事件队列中与成批处理区Para有关的所有事件;6,OpenBufferMonitor(Para)表示允许对成批处理区Para对应的缓冲区监控,即允许产生与缓冲区有关的事件(如Lower,Normal等);7、CloseBufferMonitor(Para)表示禁止对成批处理区Para对应的缓冲区监控,即没有与缓冲区有关的事件产生。GSA算法组件在执行时主要依据GSA算法,假设现在对第i个成批处理区对应的缓冲区BPAi中的活动实例进行分组选择,BC=<x,D,y>为第i个成批处理区对应的可成批处理的工作流活动的成批处理特征,为便于说明GSA算法,我们引入一个符号I[D],其中I表示活动实例对应的工作流实例号,D为BC中工作流活动成批处理特征的条件项集合,I[D]表示活动实例在输入数据项子集合D上的取值。以表3中的数据为例,设D={出发时间,目的地},则、0)]=(2005.10.13,9AM,长沙)。GSA算法的具体描述如下1、创建η个空集合S1,S2,……,Sn,其中η为当前BPAi中的活动实例数目,设置一个计数器t,t的初值为1。2、当t的值小于η时,执行步骤3;当t的值大于η时,转去执行步骤7;3、取缓冲区BPAi中的第t个活动实例,设为It;设置一个计数器x,x的初值为1,4、若It[D]=IX[D],则将It放到集合Sx中,即=Sx=SxU{It},转去执行步骤6;若It[D]=Ix[D]不成立,则执行步骤5;5、x=x+1,转去执行步骤4;6、t=t+Ι,转去执行步骤2;7、选择S1,S2,……,Sn中一个包含活动实例数目最多的集合,设其为S”假设Si={la,la+1,……,Ib},则将Ia,Ia+1,……,Ib合并为一个新的成批处理活动实例,并生成一个与分组情况相对应的活动实例状态映射表,算法结束。通过GSA算法,缓冲区BPAi中的活动实例将依据在输入数据项子集合D上的取值进行分组选择,在D上取值相同活动实例将被分到同一个集合中,S卩同一个分组中的各活动实例在D上取值上均相同。其中,GSA算法的步骤7中的将Ia,Ia+1,……,Ib合并为一个新的成批处理活动实例,设为T,即T在输入数据项X上的取值是Ia,Ia+1,……,Ib在输入数据项X上的取值累力口,而在输入数据项D上的取值与Ia,Ia+1,……,Ib均相同。即<formula>formulaseeoriginaldocumentpage15</formula>而对于其它输入数据项的取值,在进行成批处理时可暂不考虑。另外,GSA算法的步骤7中同时生成一个与分组情况相对应的活动实例状态映射表的数据结构如下。其中,分组时合并的输出数据项在新的成批处理活动实例被执行者处理完毕后,根据T[y]的具体取值再进行分配,分配规则为根据分组前各活动实例在输入<table>tableseeoriginaldocumentpage16</column></row><table>有益效果传统的工作流模型中并不支持活动的成批处理,传统的工作流管理系统也未提供相应的支持机制。本发明通过引入了支持成批处理的工作流模型,并在工作流执行服务中加入了分组批处理调度引擎,从而可实现对工作流系统中多个同类型活动实例的成批处理,有利于工作流系统执行性能的提高,能为企业提高运营效率,降低或节约生产或经营成本提供方法指导和应用支撑。本发明的支持工作流活动实例成批处理执行的方法,采用事件触发机制来组织执行过程。当一个事件发生后,由ECA规则解释器捕获该事件,并依据ECA规则(Event-Condition-Action,事件-条件-动作规则的简称)进行条件判断,选择合适的执行动作。因此,整个过程是在工作引擎与分组批处理调度引擎的作用下自动完成的,自动化程度高。图1为本发明提供的用于处理共享租车流程的模型图;图2为本发明提供的工作流建模工具的设计框架示意图;图3为本发明提供的工作流实例方面可视化建模工具功能模块图;图4为本发明提供的支持工作流活动实例成批处理的实施过程示意图。具体实施例方式以下将结合图和具体实施过程对本发明做进一步详细说明。实施例1图1为工作流活动实例成批处理的一个案例,其由七个活动组成“申请”、“审批”、“拒绝通知”、“派车”、“通知司机”、“通知乘车人”、“收费”。一般情况下,系统中的租车实例是独立执行的,即一辆汽车每次为一位乘客服务,但是如果汽车可容纳一个以上的乘客,那么在乘客有共同的目的地及出发时间,并同意与其它人一同乘车的前提下,一辆汽车每次可以同时为多位乘客服务。换言之,多个不同的过程实例中的活动实例按照某一规则进行分组组合,各组的多个活动实例的工作任务最终可组合成一个活动实例的执行来完成。依本发明提供的方法,为使工作流系统在执行时能支持工作流活动实例成批处理,我们需要完成下列步骤1、按照支持成批处理工作流模型的建模方法在支持成批处理工作流模型的建模工具中定义支持成批处理的工作流模型2、将定义好的模型输出到支持成批处理的工作流执行服务系统3、由支持成批处理的工作流执行服务系统对模型进行解释执行下面我们将以处理图1中共享租车流程为例的详细介绍各步骤的执行过程。用户定义好工作流模型后,将图1中虚线框中的派车活动与通知司机活动设置为可成批处理的工作流活动,具体设置如下对于派车活动,其输入数据项集合为{出发时间,目的地,乘车人数},输出数据项集合为{距离,费用,车次},假设执行一次成批处理分组选择时活动实例数目的最小值与最大值(即BLower与Bi)分别为6与8,〈乘车人数,{出发时间,目的地},费用〉为派车活动的一个成批处理特征。对于通知司机活动,其输入数据项集合为{出发时间,目的地,车次,乘车人数},输出数据项集合为{执行开销},假设执行一次成批处理分组选择时活动实例数目的最小值与最大值(即BLower与Bi)分别为6与8,〈乘车人数,{出发时间,目的地,车次},执行开销>为通知司机活动的一个成批处理特征。当利用该工具完成建模后,该工具可自动生成XPDL文档保存刚才定义好的共享租车模型输出到支持成批处理的工作流执行服务系统。表3为共享租车模型在执行时某段时间内产生的派车活动实例,各实例的出发地点为湘潭。由于派车活动的Blower值为6,故当第7个工作流实例t7到达时,第1个成批处理区(派车活动为共享租车模型的第一个成批处理活动)对应的缓冲区BPAl中派车活动实例数超过了6个,达到成批处理分组条件。若此时第1个执行者为空闲,则Rule3被ECA规则解释器执行,从而启动GSA算法组件执行实例成批处理时的分组选择操作,具体选择过程如下1、根据派车活动的成批处理特征〈乘车人数,{出发时间,目的地},费用>,将缓冲区BPAl中派车活动实例按照在输入数据项集合{出发时间,目的地}({出发时间,目的地}的取值一致为本实例的成批处理条件)取值是否一致的标准,将BPAl中7个派车活动实例分为三组,分别为Sl=It1,t3,t5,t6},S2={t2,t4}。2、由于{t1;t3,t5,t6}中的派车活动实例数目最多,故{t1;t3,t5,t6}中的各派车活动实例被选择出来,并被组合成一个新的成批处理派车活动实例Tl,与{t1;t3,t5,t6}及Tl相对应的活动实例状态映射表如表4所示,Tl的取值如表6所示。表3共享租车过程在执行时某段时间内产生的派车活动实例<table>tableseeoriginaldocumentpage18</column></row><table>表4共享租车过程在执行时某段时间内产生的活动实例状态映射表<table>tableseeoriginaldocumentpage18</column></row><table>第1个执行者接到这个服务请求后,将状态由“闲”转为“忙”并产生执行者忙事件。当第1个执行者对新的成批处理派车活动实例Tl处理完毕后,将产生表6、表7所示的信息,其中的费用取值为25的计算依据为100*1/4=25。表5共享租车过程在执行时某段时间内产生的成批处理派车活动实例<table>tableseeoriginaldocumentpage19</column></row><table>表6共享租车过程在执行时某段时间内产生的成批处理派车活动实例<table>tableseeoriginaldocumentpage19</column></row><table>表7共享租车过程在执行时某段时间内产生的活动实例状态映射表<table>tableseeoriginaldocumentpage19</column></row><table>当第1个执行者对新的成批处理派车活动实例Tl处理完毕后,第1个执行者的状态已由“忙”转为“闲”,这时产生了执行者空闲事件,第1个缓冲区BPAl中的活动实例数目也由7个变成了3个(有4个刚才已处理),这时产生了Lower事件,于是Rule4被ECA规则解释器解释执行,设置一个定时器等待时间Atl。当等待时间Atl到达后,Rule2被ECA规则解释器解释执行,因此对第1个缓冲区BPAl中的活动实例t2、t4、t7与t8执行实例成批处理时的分组选择、操作,具体处理过程与It1,t3,t5,t6}的处理。而最后得到的结果如表8所示。表8共享租车过程某段时间内产生的派车活动实例的最终执行情况<formula>formulaseeoriginaldocumentpage20</formula>类似的,通知司机活动的实例到达情况与最终执行情况如表9、表10所示。在该实例中,如果不进行组合处理,那么汽车公司须按照申请活动数,分配8辆汽车,进行组合处理后只需分配2辆汽车,通知司机的执行开销也由原来的每乘客平均通知1次降为了每乘客平均通知1/4次。很显然组合处理操作为汽车公司节约和合理利用资源提供了一个新的处理方法,从减少开销方面为公司创造了财富。表9共享租车过程在执行时某段时间内产生的通知司机活动实例<table>tableseeoriginaldocumentpage21</column></row><table>定时时间为15分钟。权利要求一种支持工作流活动实例成批处理执行的方法,具有工作流引擎的工作流服务模块建立在支持成批处理的工作流模型上,其特征在于,工作流服务模块包括一个分组批处理调度引擎,采用事件触发机制来组织活动实例成批处理的执行过程,事件被送入事件队列,由分组批处理调度引擎中的ECA规则解释器监控事件队列,当事件队列长度发生变化,由ECA规则解释器对事件队列中的新到事件进行处理;所述的ECA规则解释器为事件-条件-动作规则解释器;所述的事件包括正常事件、缓冲区长度低于阈值事件、定时器事件和执行者空闲事件;所述的正常事件、缓冲区长度低于阈值事件、定时器事件产生过程如下步骤1产生活动实例工作流引擎检测到工作流模型中当前要处理的活动为可成批处理的工作流活动,则产生活动实例并送往分组批处理调度引擎;步骤2由分组批处理调度引擎中的缓冲区管理器将接收到的活动实例分配到对应的成批服务区缓冲区,引起成批服务区缓冲区的长度变化,当成批服务区缓冲区的长度变化达到预设的阈值,则由缓冲区管理器触发正常事件;当缓冲区管理器监测到某一个成批服务区缓冲区长度发生变化但又未达到预设阈值时,则触发缓冲区长度低于阈值事件;缓冲区长度低于阈值事件被ECA规则解释器解释完,由分组批处理调度引擎启动定时器定时Δt1时间,当Δt1时间到,而正常事件没有被触发时,则由定时器产生定时器事件;执行者空闲事件的产生过程为执行者执行完,由执行者产生执行者空闲事件;由执行者将该执行者空闲事件送入到事件队列中;活动实例与成批服务区缓冲区具有一一对应关系;事件名称处理过程第i个执行者对应的执行者空闲事件1、将由第i个成批服务区缓冲区产生的定时器清零;2、清除事件队列中与第i个成批服务区缓冲区有关的所有事件;3、开启缓冲区管理器对第i个成批服务区缓冲区监控;4、将ECA规则解释器复位以使下一次调度得以进行。来自于第i个缓冲区的定时器事件1、关闭缓冲区管理器对第i个成批服务区缓冲区监控;2、从第i个成批服务区缓冲区提取一组符合成批处理条件的活动实例送给第i个执行者进行批处理;3、将ECA规则解释器复位以使下一次调度得以进行;正常事件(来自于第i个缓冲区)1、关闭缓冲区管理器对第i个成批服务区缓冲区监控;2、从第i个成批服务区缓冲区提取一组符合成批处理条件的活动实例送给第i个执行者进行批处理;3.将ECA规则解释器复位以使下一次调度得以进行;缓冲区长度低于阈值事件(来自于第i个缓冲区)启动定时器,设置定时器的等待时间为Δt1,定时器开始工作。所述的对新到事件进行处理的过程为根据上表执行处理。全文摘要本发明提供了一种支持工作流活动实例成批处理执行的方法,具有工作流引擎的工作流服务模块建立在支持成批处理的工作流模型上,其特征在于,工作流服务模块包括一个分组批处理调度引擎,采用事件触发机制来组织活动实例成批处理的执行过程,事件被送入事件队列,由分组批处理调度引擎中的ECA规则解释器监控事件队列,当事件队列长度发生变化,由ECA规则解释器对事件队列中的新到事件进行处理;所述的ECA规则解释器为事件-条件-动作规则解释器。本发明可实现工作流系统中多个同类型活动实例的成批处理,有利于工作流系统执行性能的提高,能为企业提高运营效率,降低或节约生产或经营成本提供方法指导和应用工具支撑。文档编号G06Q10/00GK101833712SQ20101018494公开日2010年9月15日申请日期2010年5月27日优先权日2010年5月27日发明者刘建勋,文一凭,胡锦敏申请人:湖南科技大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1