法律状态公告日
法律状态信息
法律状态
2018-02-27
未缴年费专利权终止 IPC(主分类):G06Q10/00 授权公告日:20100929 终止日期:20170104 申请日:20080104
专利权的终止
2010-09-29
授权
授权
2008-09-03
实质审查的生效
实质审查的生效
2008-07-09
公开
公开
技术领域
支持分布式执行的工作流模型动态分割方法属于企业信息处理,尤其是面向服务体系结构的工作流模型分割技术领域。
背景技术
面向服务体系结构(Service Oriented Architecture,SOA)正以其面向业务、松散耦合、基于标准等特点,成为企业信息系统的主流架构。
在面向服务的工作流模型中,各个活动来自于不同的服务,这些服务物理上是分布的。因此采用由多个工作流机共同执行一个(合成的)工作流模型成为工作流执行技术发展的必然要求。这不仅符合服务分散和自治的特点,也可以使业务流程的并行性和系统的性能得到提高。
建模是工作流执行的首要任务,而对于分布式工作流,也存在同样的问题。因此,为了实现工作流的分布式执行,即将业务流程的控制逻辑分布到多个工作流引擎上,首先要进行工作流模型的分割(分片)。目前这方面的研究和应用还处于起步阶段。
Mentor项目提出了一个分布式工作流执行框架,并采用状态图(state chart)作为其工作流模型。Mentor项目基于状态图模型给出了模型静态分割算法,并验证了算法的正确性(MuthP.et a1.From centralized workflow specification to distributed workflow execution.Journal ofIntelligent Information Systems,1998,10(2):159-184)。刘必欣等提出了基于角色(刘必欣等.一种基于角色的分布式动态服务组合方法.软件学报,2005,16(11):1859-1867.)的分布式动态服务组合方法。该方法将一个全局定义的流程有向图模型划分为各个角色的本地流程模型,每个本地流程模型由该角色的工作流引擎控制,系统模拟实验结果表明该方法比集中式流程控制的性能更好。
上述的方法多集中在对模型静态分割方法的关注。已有的方法多用于解决模型静态分割的情况。也就是说,在工作流实例初始化前就确定各个活动的执行站点,从而进行一次性的模型分割。而SOA下流程的灵活性和动态性对模型动态分割提出了需求,也就是说,需要根据工作流的运行情况实时地进行模型的分割和活动的分配。
发明内容
本发明的目的是针对SOA架构下业务流程分布自治的需求,提供工作流模型动态分割的方法,使得业务流程在执行过程中实时地进行分割,分割得到的分片被发送到执行站点,从而增强模型执行的并行性,提高流程执行的效率。
本发明由多个工作流机共同完成一个业务流程,而且活动在工作流机间的分配随着流程的运行而动态地进行,其特征是,所述方法是在每一套由服务器端和客户端共同组成的工作流执行系统中依次按照以下步骤实现的:
步骤(1)初始化
在做站点用的服务器端安装建模模块、分片池模块、活动分配模块、分片管理模块、活动监控模块,以及数据库,其中:
建模模块:建立以活动网络图模型描述的全局工作流模型,所述活动网络图是一种由节点和连接弧组成的有向图;节点包括代表在工作流流程中活动的活动节点;代表活动之间关系的逻辑节点,包括与分支节点、与汇合节点、或分支节点、或汇合节点;其中与分支节点连接出多个并行执行,即同时执行的分支活动,而与汇合节点汇聚多个并行执行的分支活动;或分支节点连接出多个选择执行,即互斥的分支活动,而或汇合节点汇聚多个选择执行的分支活动;参见[范玉顺主编.工作流管理技术基础-实现企业业务过程重组、过程管理与业务过程自动化的核心技术.北京:清华大学出版社,施普林格出版社,2001年3月]节点还包括代表工作流流程开始和结束的标志节点;连接弧连接各种节点,定义节点间的执行顺序关系,所述活动网络图使用CIMFlow工作流建模软件定义;
数据库,设有:活动-站点表,活动-实际分配站点表,分片实例表,活动实例表,相关数据表,其中:
活动-站点表用于预先存储每个活动的允许执行站点,该活动-站点表分别用活动标识ID和允许执行站点标识ID标志;
活动-实际分配站点表用于记录活动的实际分配站点,设有以下数据项:主键,用于标志活动的标识ID;实际执行站点标识ID;以及分配该活动执行站点的时间;
分片实例表,用于记录分片池中的由于对活动网络图模型进行分割后产生的分片的实例,设有以下数据项:主键,为分片实例标识ID,自动生成;分片所关联的过程标识ID;分片实例状态,包括运行、暂停和终止状态;创建该分片实例的实际执行站点标识ID;该分片实例的创建时间;以及该分片实例的当前活动标识ID;
活动实例表,记录分片实例中的当前活动实例,设有以下数据项:主键,是当前活动实例标识,自动生成;当前活动所关联的分片实例标识ID;当前活动实例的状态,包括运行、暂停和终止状态;当前活动实例的创建时间;创建该当前活动实例的实际执行站点标识ID;当前活动实例的名称;当前活动实例执行者标识ID;及后继活动标识ID列表;
相关数据表,记录分片实例的相关数据,设有以下数据项:当前活动实例标识ID;分片实例标识ID;数据名称;数据类型,包括数值型、布尔型、字符串型;以及数据值;
活动分配模块,在初始化时,从数据库中输入所建活动-站点表,在运行时,接受所述分片管理模块发送来的当前活动标识,查询该活动-站点表,为当前活动随机选择一个站点作为实际执行站点,向分片管理模块返回执行站点标识ID;
活动监控模块,根据分片管理模块输入的当前活动和实际执行站点数据,构建活动-实际分配站点表,存储于所述数据库中;
分片池模块,与所述分片管理模块互连,用于存取由所述活动-实例执行站点表中的当前活动实例形成的分片运行信息,其中包括所述分片实例、活动实例和相关数据表;
分片管理模块,是用于执行分片的工作流引擎,在运行时向所述活动监控模块报告活动执行情况,按以下步骤对所述活动网络图模型进行动态分割,并把后继分片发送给目标站点的分片池模块:
第1步:分片池模块向所述分片管理模块输入用分片实例表示的分片FD,以及分片的当前活动ts
第2步:所述分片管理模块如步骤(1)所述,从活动分配模块得到一个实际执行站点标识ID;
第3步:判断当前活动节点的类型:
若:当前活动ts非“与分支”类型的节点,
则:当前活动ts的后继活动记为ti,所述后继活动即在活动网络图中与ts直接连接,并且在ts之后的活动;
把所述后继活动在分片FD中所能达到的那部分记为一个新的分片,并把该部分加入到后继分片列表F_LIST中;
若:当前活动ts为“与分支”类型的节点,
则:当前活动ts的多个后继活动分别为{t1,t2,...tk},计算限制活动的集合TC,其中所述TC是分片FD中,与分支活动ts对应的与汇合活动组成的集合;对集合{t1,t2,...tk}中的任意一个ti:
当i=1时,将ti在分片FD中达到的那部分加入F_LIST;
否则将ti在分片FD中达到的,同时TC中的活动在分片FD中不能达到的那部分加入F_LIST;
在客户端安装任务客户端模块,该模块通过HTTP协议访问服务器端的分片池模块,获得站点的实际执行活动列表,供该站点的工作流用户访问并完成任务;
步骤(2)按以下步骤实施活动网络图模型的动态分割:
步骤(2.1)在设定站点,用所述建模模块构建用活动网络图形式描述的全局工作流模型;
步骤(2.2)所述建模模块把活动网络图模型实例信息输入到分片池模块,并把当前设定的站点作为该活动网络图模型实例的实际执行站点;
步骤(2.3)在该实际执行站点执行分片的当前活动,其步骤如下:
步骤(2.3.1)分片池模块把该活动网络图模型实例输入所述分片池模块,进行动态分割,产生当前分片;
步骤(2.3.2)该分片管理模块检查分割产生的当前分片,若该当前分片的所有前驱活动已全部完成,则通知任务客户端模块执行该当前分片中的当前活动;
步骤(2.3.3)该分片管理模块向活动监控模块报告活动实际执行完成的情况,该活动监控模块在活动-实际分配站点表中添加一条记录,表明该活动在该实际执行站点执行;
步骤(2.3.4)若:该当前分片还有未执行的后继活动,则由分片管理模块向活动分配模块请求分配执行站点,若:后继活动仍在当前的实际站点执行,则转向步骤(2.1);否则,转向步骤(2.4);
步骤(2.4)所述分片管理模块对分片池模块中所述当前分片作动态分割,按以下步骤把产生的后继分片送到由活动分配模块所指定的执行站点的分片池模块中;
步骤(2.4.1)分片管理模块向活动分配模块请求为分割后每个新产生的分片分配执行站点;
步骤(2.4.2)把步骤(2.4.1)中所述的新产生的分片发送到指定的执行站点的分片池模块中;
步骤(3)反复执行步骤(2.3)、(2.4),直到没有新的分片产生。
目前的研究和实践较少关注流程的动态分割问题,也就是流程如何随着执行的过程做实时的分割。而这种动态分割方式,随着SOA、网格,对等(Peer to Peer)计算等的出现将越来越有广泛的应用。本发明提出的方法,给出了模型动态分割和执行的解决方案。同时,在产生并行执行的动态分片的时候,通过引入“受限制的可达子分片”,使得流程中在产生多个并行分片的时候,产生的分片不包含冗余的执行片段,可以使运行时的机制得到简化。
附图说明
图1.系统结构图;
图2.系统运行流程图。
具体实施方式
1.初始化设定
建立工作流分布式建模和运行环境。该环境如图1所示,分为客户端和服务器端两个部分。由于我们讨论的是工作流的分布式执行,图1以两套工作流执行系统为例来说明系统如何进行初始化。本发明适用于存在多套工作流执行系统的情况。
一个工作流执行站点的环境建立过程如下:
(1)为服务器安装操作系统和数据库软件,其中操作系统应选用微软公司的视窗(Windows)系列操作系统中的Windows 2000及以上版本;数据库软件应当选择支持ODBC访问接口的关系数据库软件,例如甲骨文公司的Oracle、IBM公司的DB2、微软公司的SQLServer等。为客户端安装操作系统,应选用微软公司的视窗(Windows)系列操作系统中的Windows 2000及以上版本。
(2)在服务器端安装建模模块:建模模块供用户输入全局工作流模型。本发明使用活动网络图模型作为工作流模型的描述方式。活动网络图是由节点和连接弧组成的有向图。其中节点包括代表流程中活动的活动节点、代表活动之间关系的逻辑节点和代表流程开始和结束的标志节点。连接弧连接各种节点,定义节点间的执行顺序关系。
该模型可使用CIMFlow工作流建模软件进行定义,参见[范玉顺主编.工作流管理技术基础-实现企业业务过程重组、过程管理与业务过程自动化的核心技术.北京:清华大学出版社,施普林格出版社,2001年3月]。
(3)在服务器端数据库中建立活动-站点表(activity_site),用于预先存储每个活动的允许执行站点。如表1所示。
(4)在服务器端安装活动分配模块:活动分配模块在运行时接受分片管理模块发送来的活动标识ID,查询活动-站点表,为活动随机选择一执行站点,返回站点标识ID。
(5)在服务器端数据库中建立活动-实际分配站点表(activity_assigned_site),用于存储活动的实际执行站点。如表2所示。
(6)在服务器端安装活动监控模块:活动监控模块在活动-实际分配站点表中记录每个活动被实际分配的站点。
(7)在服务器端数据库中建立:分片实例表(fragment_instance),用于记录分片池中的分片实例;活动实例表(activity_instance),用于记录分片中的活动实例;相关数据表(relevant_data),用于记录分片中的相关数据。如表3所示。
(8)在服务器端安装分片池模块:分片池模块用于存取表3定义的该站点分片的运行信息。
(9)在服务器端安装分片管理模块:分片管理器是用于执行分片的工作流引擎,它的功能是在运行时向活动监控模块报告活动执行情况,对模型进行动态分割(分割的时机和方法参见“2.方法和运行过程”),并负责将后继分片发送给目标站点的分片池模块。
(10)在客户端安装任务客户端模块:任务客户端通过HTTP协议访问服务器端的分片池模块,获得站点的实际执行活动列表,供该站点的工作流用户访问并完成活动。
由于本方法运用于存在多个工作流执行站点的分布式环境下,因此对每个工作流执行站点应重复执行步骤(1)至(10)以完成软件环境的初始化。
2.方法运行过程
运行过程如图1所示。不失一般性,假设环境中有两个工作流执行站点。
(1)在某站点(如站点1),使用建模模块,构建以工作流网形式描述的全局工作流模型
(2)流程实例启动,实例信息被导入分片池模块。当前的站点(即站点1)作为该实例的管理站点
(3)在当前站点(站点1)执行分片的当前活动
1)当分片池中有新的分片产生时,分片管理模块检查该分片的当前活动是否可以立即执行(即所有前驱活动是否全部完成),如果可以立即执行,则通知任务客户端模块执行该活动。
2)分片管理模块向活动监控模块报告活动执行完成的情况,活动监控模块在活动-实际分配站点表中添加一条记录,表明活动在该站点执行。
3)如果当前分片还有未执行的后继活动,向活动分配模块请求分配执行站点。如果后继活动仍在当前站点执行,则继续进行流程导航并转向步骤1)。如果后继活动不在当前站点执行,则转步骤(4)。
(4)分片管理模块对分片池模块中的当前分片做模型分割(方法参见算法1),将产生的后继分片发送到其执行站点的分片池模块中
1)分片管理模块向活动分配模块请求为每个新产生的分片分配执行站点
2)将新分片发送到指定的执行站点的分片池模块
(5)对每个新分片,重复执行步骤(3)和(4),直到没有新分片产生。
模型分割算法
模型分割算法是本方法运行过程中所使用到的关键算法。算法1给出了模型(动态)分割算法。
算法1.模型分割算法
输入:分片FD,以及分片的当前活动ts
输出:后继分片的列表,记为F_LIST
如果在分片FD中ts不是“与分支”类型的节点记ts的后继活动为ti
将ti在分片FD中可以达到的那部分(记为f(ti,FD))加入F_LIST如果在分片FD中ts是“与分支”类型的节点记ts的多个后继活动为{t1,t2,...tk}计算限制活动的集合TC,TC是分片FD中,与分支活动ts对应的与汇合活动组成的集合对{t1,t2,...tk}中的任意一个ti
如果(i==1)
将ti在分片FD中的可以达到的那部分(简称为ti的可达子分片,记为
f(ti,FD))加入F_LIST
如果
将ti在分片FD中的可以达到的,同时TC中的库所不能达到的那部分(简称为
ti受限制的可达子分片,记为f(ti,FD,TC))加入F_LIST
如果结束
如果结束
返回F_LIST
表1:
活动-站点分配表(activity_site),记录活动和执行站点的匹配信息
表2:
活动-实际分配站点表(activity_assigned_site),记录活动的实际执行站点
表3
分片实例表(fragment_instance),记录分片池中的分片实例
活动实例表(activity_instance),记录分片中的活动实例
相关数据表(relevant_data),记录分片中的相关数据
机译: 工作流程支持设备,工作流程执行设备,工作流程系统,工作流程支持方法,工作流程执行方法和程序
机译: 从非结构化循环过程模型生成可执行工作流代码的方法和执行任意过程模型的工作流代码的方法
机译: 从非结构化循环过程模型生成可执行工作流代码的方法和执行任意过程模型的工作流代码的方法