一种面向分布式工作流的数据流调度方法和系统的制作方法

文档序号:6431940阅读:151来源:国知局
专利名称:一种面向分布式工作流的数据流调度方法和系统的制作方法
技术领域
本发明属于信息处理领域,更具体地,涉及业务流程管理领域。
背景技术
业务协作是驱动企业业务增长的重要力量。来自于不同企业的资源、观点以及其他互补力量的聚合,将会创造出强有力的联盟来应对日益激烈的市场竞争。企业应用集成是解决业务协作中信息交互和共享问题的方法和技术。目前,随着我国企业信息化程度的不断提高,几乎每个企业中都迫切需要一个集成框架来解决企业内部不同系统之间的交互问题。该集成框架作为一个开放的框架,使现有的系统根据企业业务的需要实现集成,并且能快速地添加新的系统,使企业既可以保护已有的投资又可以根据市场和业务的需求重新整合原有的系统产生新的竞争力。随着过程代理技术的提出,业务流程管理成了企业应用集成的核心内容。随着Web服务的出现,面向服务的架构给业务流程管理带来了新的发展。在这种架构下,业务流程只需要通过组合服务来实现,由此带来的松散耦合非常适合动态、多变的市场需求和日益激烈的市场竞争,大大增强了企业的竞争力。企业中经常存在地理分布的异构型计算资源通过复杂的交互才能完成的业务流程,例如供应链管理,在线购物,城市应急等。当前的集中式工作流引擎不适合处理上述业务流程。分布式的工作流系统使用户能够透明地应用由不同机型、不同运行平台组成的异构型计算资源,借助信息共享的分布式技术完成一个业务流程。这种分布式的执行架构,分布式工作流系统天然地适合多个组织参与的大规模流程的环境。基于事件的分布式引擎是分布式工作流系统的一个代表,例如瑞士的苏黎世大学的事件驱动的分布式工作流执行引擎EVE(EVent Engine);在面向服务的架构下,加拿大的多伦多大学的面向服务架构的分布式的业务流程执行引擎是一个典型工作。在工作流中,存在控制流和数据流两种流程。其中,控制流是指控制业务活动执行顺序的逻辑,数据流为业务活动的执行提供数据,它是随着业务过程的推进产生的。数据流的调度是指对数据交互的协调和控制,把正确的数据有效地传递给正确的业务活动。现有的分布式工作流引擎往往只重视控制流的调度,而忽视数据流的调度,使得它们在处理地理分布的业务流程中的数据流时存在数据流转时间长的缺点。每次运行业务流程实例时, 地理分布的业务流程之间都需要通过互联网在数据集存放库之间进行数据流转,特别在多个业务流程实例同时运行的情况下,每个业务流程实例都需要重复地进行数据流转,导致工作流引擎需要很长的数据流转时间。

发明内容
本发明的目的是克服现有地理分布的业务流程在协作时,通过互联网进行数据流转存在的时间长、效率低的缺陷,从而提供一种面向分布式工作流的数据流调度方法和系统。
根据本发明一个方面,提供了一种面向分布式工作流的数据流的调度方法,包括10)对于运行时新产生数据是可移动数据的情况,确定新产生数据和现有数据集的协作关系的紧密程度;20)根据新产生数据和现有数据集的协作关系的紧密程度,确定新产生数据和任一数据集存放库的协作关系的紧密程度;30)将新产生数据存储在与之关系最紧密的数据集存放库中。2.根据权利要求1所述的调度方法,其特征在于,还包括40)计算活动到节点的预测数据流转时间,将活动调度到预测数据流转时间最短的节点。优选地,上述方法在所述步骤10)前还包括00)在运行前,对数据流进行初始调度。根据本发明另一方面,还提供了一种面向分布式工作流的数据流的调度系统,包括新数据和数据集协作关系确定模块,用于对于运行时新产生数据是可移动数据的情况,确定新产生数据和现有数据集的协作关系的紧密程度;新数据和数据集存放库协作关系确定模块,用于根据新产生数据和现有数据集的协作关系的紧密程度,确定新产生数据和任一数据集存放库的协作关系的紧密程度;存储模块,用于将新产生数据存储在与之关系最紧密的数据集存放库中。优选地,上述系统还包括活动调度模块,用于计算活动到节点的预测数据流转时间,将活动调度到预测数据流转时间最短的节点。优选地,上述系统还包括初始调度模块,用于在运行前,对数据流进行初始调度。本发明上述方法和系统的优点在于不仅可以有效减少地理分布的业务流程之间数据流转的时间,还可以减少由于网络中断导致工作流引擎无法运行的次数。


图1为根据本发明一个实施例的数据流初始调度的流程图;图2为根据本发明一个实施例的数据和活动依赖关系的示意图;图3为根据图1所示的数据和活动依赖关系的数据之间协作关系的示意图;图如和图4b分别为根据本发明一个实施例的转换前后的数据协作关系矩阵的示意图;图5是根据本发明一个实施例的待分块矩阵的示意图;图6是根据本发明一个实施例的分块后矩阵示意图;图7为根据图6的分块后矩阵确定的数据集和数据集存放库的存放关系示意图;图8为根据本发明一个实施例的工作流管理流程图;图9为根据本发明一个实施例的运行时数据调度示意图;图10为根据本发明一个实施例的运行时活动调度示意图。
具体实施例方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图,对根据本发明一个实施例的一种面向分布式工作流的数据流调度方法和系统进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。在本发明中,通过对分布式流程中的数据进行关联分析,根据分析的结果对数据进行调度,从而减少活动调度到节点后等待数据的流转时间。在对本发明的具体实施例进行详细说明之前,首先对本发明中所涉及的相关概念进行统一说明,以方便理解。业务流程共同完成一个业务目标或者政策目标的一组关联的程序或者活动的集
I=I O活动业务流程中的执行单元,其可以是数据库事务或者任何访问数据的操作。 在本发明中,所述的活动可以包括人工活动和自动执行的活动,自动执行的活动可以包括 Java类和Web服务业务流程实例一个流程及其关联数据的一次配置的表示。每个实例表示流程的一次独立的执行,它可以被独立控制,有自己内部的状态和外部可视化的实体。其中,这些实体可以被看作句柄。例如,记录和查找与每个流程实例相关的审计数据。状态转移工作流从一个流程状态到另一个流程状态的一次转移,反应工作流状态的变化。例如,初始化一个特定的活动。数据业务流程中活动执行依赖的数据,主要是相关数据和文件。这些在工作流管理系统中使用的相关数据用来判断一个工作流实例的状态转移。例如,前置和后置条件,转移条件或者工作流参与者任务。数据和活动依赖关系活动完成业务流程状态转移所需要的数据。数据之间的协作关系参与活动执行,实现从业务流程的一个状态变迁到另一个状态的数据之间建立的关系。数据集一组具有协作关系的数据的集合。数据集存放库存放数据集的数据库,当然,也可以使用文件存放数据集,则该文件也称为数据集存放库。节点分布在不同地理位置共同执行一个业务流程实例的机器,每个机器都有一个数据集存放库。数据和数据集存放库之间的存放关系数据和存放该数据的数据集存放库之间建立的关系。关联分析对上述所有关系进行计算的过程统称为关联分析。以上是对本发明中所涉及的一些常用概念的说明,下面在这些概念的基础上结合附图对工作流管理过程进行说明。工作流引擎要完成数据调度,实际上是要将相互间具有协作关系的数据按照协作关系的紧密程度放在一起,以形成数据集。业务流程在运行过程中,会产生一些数据,考察这些数据的类型,可以分为二个类型,一类是可移动数据,一类是不可移动数据,其中后者包括必须用专门设备处理的数据,太大而无法有效移动的数据,隐私保护的数据。上述两种类型的数据处理过程有很大的差异,因此在下文中将分别加以说明。
遵循“数据流转的代价远远大于调度活动的代价”基本原理,初始化数据调度主要是把活动依赖的数据调度到与它协作关系程度最高的数据集中,以便将活动调度到存放该数据集的数据集存放库中,从而减少数据流转时间。业务流程包含很多活动和数据,它们构成了复杂的多对多的关系,一个活动或者需要多个数据,一个数据或者被多个活动使用,不仅如此,在业务流程运行时,新的数据可能产生,活动产生的数据可能被随后的活动或者其他业务流程的活动所使用,因此初始化数据调度应该建立在这些活动和数据之间依赖关系基础上。下面将根据图1详细描述数据流调度的过程。a、数据和活动依赖关系的津立图2为数据和活动依赖关系的示意图,如图2所示,对于活动Al,它在数据上依赖 dl和d2。用符号D表示数据集合,用符号A表示活动集合。为了表示活动和数据之间的依赖关系,对每个数据di e D,定义一个活动集合和数据大小<SAi,si>,称为数据和活动依赖关系。其中,SAiQA,表示依赖数据di的活动的集合,并且任意活动每使用数据di —次则该集合中包括一个该活动,例如,活动Al使用数据d2两次,则SA2中包括两个等于Al的元素;si表示di的大小。基于数据和活动依赖关系,可以计算出数据之间协作关系的紧密程度。如图2所示,假设本文中用到的数据大小都是1Mbyte,则dl = < {Al},1Mbyte〉,d2 = <{A1},1Mbyte〉。b、数据之间协作关系的津立在业务协作过程中,很多业务流程实例同时运行,它们中每一个都有复杂的结构, 其中的活动将会使用大量数据并且产生大量的数据。为了执行活动,所有需要的数据必须调度到一起,这需要花费大量的数据流转时间。如果两个数据经常被同一个活动所使用, 那么为了减少数据流转的次数,在初始化时,它们应该被调度到一起,把这样的数据之间的关系称为数据之间的协作关系。换句话说,两个数据被认为有协作关系当且仅当它们被相同活动所使用。同时,使用这两个数据的活动越多,这些数据之间的协作关系越紧密。使用符号Cij表示数据di和数据dj之间的协作关系的紧密程度。如果存在依赖数据di 和dj 二者的活动,那么认为数据di和数据dj存在协作关系。根据本发明一个实施例, 将di和dj协作关系的紧密程度Cij表示为使用di和dj 二者的活动个数,表示为Cij = Count (SAi Π SAj)。图3示出了根据图1所示的数据和活动依赖关系的数据之间协作关系, 活动Al同时使用数据dl和数据d2,那么C12 = 1。根据所有数据之间的协作关系,生成数据之间的协作关系矩阵,其中矩阵中的每个元素Cij表示对应数据di和dj协作关系,即使用di和dj 二者的活动个数。然后,对协作关系矩阵进行转换,进一步而言,进行协作关系矩阵的行列转换以使相近的行和列之间相互关系较高,来最终获得到具有全局最优协作关系的数据分布。具体地,对协作关系矩阵进行转换包括如下步骤步骤1 首先从原始协作关系矩阵中任意选两个行向量Mi和Mj,放置到一个与原始协作关系矩阵具有相同行列的新矩阵的前两行。步骤2 从原始协作关系矩阵剩余的行向量中任意选取一个行向量Mk,依次插入新矩阵中现有t个行向量的两侧相邻位子,共有t+Ι个位子,根据相邻的三个行向量的位置关系利用公式计算相关系数cont。以Mk插在Mi和Mj之间为例,则利用如下公式1计算相关系数cont cont (Mi,Mk,Mj) = 2C (Mi,Mk) +2C (Mk,Mj) -2C (Mi,Mj)1其中C(Mi,Mj)为向量Mi和Mj的点积,C(Mi, Mk)和C(Mk,Mj)与之类似。步骤3 选择cont值最高的t+Ι个向量的组合,并按照该组合中向量的顺序重新将上述t+Ι个向量放到新矩阵的前t+Ι行。步骤4 重复上述步骤2和3,直到t+Ι等于矩阵的行数。步骤5 根据原始协作关系矩阵的上述行转换进行相应列转换,生成转换后矩阵。根据上述优选实施例,C(Mi,Mj)为向量Mi和Mj的点积,当然,也可以采用其他表征向量Mi和Mj之间关系的参数。例如
ηC(Mi,Mj)=ZC//x cJl ,其中,η是协作关系矩阵的行数,Cil和Cjl分别为向
‘Z=I
量Mi和Mj的第1个元素。C(Mi, Mk)和C(Mk,Mj)与之类似。图如和图4b分别示出了根据本发明一个实施例进行数据协作关系矩阵转换前后的协作关系矩阵。完成上述对数据协作关系矩阵的转换后,对转换后矩阵进行分块,使共同被任意活动使用的数据共存于一个子块,其中该活动可以是1个或多个。图5示出了根据本发明一个优选实施例的转换后矩阵,其中在该矩阵的对角线上找到一个点X用于分块,该X满足CLX⑶-CI2最大。其中,以点X为交点做一横线和纵线, 将矩阵分为左上、左下、右上和右下四部分。CL表示只使用分块后矩阵的左上部分对应数据的活动使用左上部分对应数据的次数,对于图5中所示转换后矩阵,即SAl和SA3中只使用 dl和d3中的一个或二者的活动个数。具体地,包括只使用dl的活动、只使用d3的活动和只使用dl和d3的活动的总个数。类似地,CU表示只使用分块后矩阵的右下部分对应数据的活动使用右下部分对应数据的次数,对于图5中所示转换后矩阵,即SA2、SA4和SA5中只使用d2、d4和d5中一个或多个数据的活动的个数。CI表示即使用分块矩阵的左上部分数据同时又使用右下部分数据的活动同时使用左上部分数据和右下部分数据的次数加即使用分块矩阵的右上部分数据同时又使用左下部分数据的活动同时使用右上部分数据和左下部分数据的次数。具体地,分块过程包括如下步骤步骤1 确定分块数。步骤2 在当前协作关系矩阵下,选择使得CLX⑶-CI2最大的χ点,并且把该点下 CLX⑶-CI2的值设置为阈值。循环执行η-1次步骤3到步骤5,η是协作关系矩阵的行数。步骤3 把协作关系矩阵的最左边的列移动到最右边,同时最上边的行移动到最下边。步骤4 在当前协作关系矩阵下,选择使CLX⑶-CI2最大的χ点。步骤5 如果χ点对应的CLX⑶-CI2大于当前设置的阈值,则就将该点下 CLX⑶-CI2的值设置为阈值。步骤6 根据当前阈值对应的χ点把协作关系矩阵分为左上和右下两个子块。步骤7 对每个子块依次重复步骤2到步骤6,直到满足划分块等于用户指定的分块数目。本领域普通技术人员可以理解,上面提供了一种根据本发明优选实施例的分块方 式,但是还可以有其他分块方法,只要尽可能使共同被任意活动使用的数据共存于ー个子 块中即可,例如,可以根据活动与数据的依赖关系来人工分块。另外,在上面的优选实施例 中,通过接收用户设置的分块数来设定分块操作的边界条件,当然也可以采用其他边界条 件,例如可以通过对CLX⑶-CI2设置阈值来控制分块操作的结束。图6示出了根据本发明一个实施例的分块后矩阵,其中的方框表示生成的子块, 每个子块对应的数据组成一个数据集。具体地,数据dl和数据d3組成一个数据集,数据 d2和数据d4組成一个数据集,数据d5組成一个数据集。这里用P表示数据集,例如Pl = {dl, d3}。c.数据集和数据集存放库的存放关系的建立用符号R表示数据集存放库集合,其中数据集存放库Ri G R,且假设数据集存放库 的容量足够大。用符号B表示带宽,Bij表示数据集存放库Ri和数据集存放库Rj之间的 帝宽。如果数据集Pk中包含不可移动数据di,那么把数据集Pk调度到数据di所在节点 的数据集存放库中。如果数据集Pk只包含可移动数据,那么根据公式2计算数据集Pk调度到哪个节点 可以使得预测数据流转时间T最少,其中预测数据流转时间T是指将数据集Pk中所有数据 调度到该节点所需要的数据流转时间总和。
权利要求
1.一种面向分布式工作流的数据流的调度方法,包括10)对于运行时新产生数据是可移动数据的情况,确定新产生数据和现有数据集的协作关系的紧密程度;20)根据新产生数据和现有数据集的协作关系的紧密程度,确定新产生数据和任一数据集存放库的协作关系的紧密程度;30)将新产生数据存储在与之关系最紧密的数据集存放库中。
2.根据权利要求1所述的调度方法,其特征在于,还包括40)计算活动到节点的预测数据流转时间,将活动调度到预测数据流转时间最短的节点ο
3.根据权利要求1或2所述的调度方法,其特征在于,所述10)进一步包括根据如下公式确定新产生数据和现有数据集的协作关系的紧密程度CPej= Z Cei,diePj其中,di为数据,Pj为任意现有数据集,C6i = CountiSA6 Π SAi},SA6为依赖新产生数据的活动的集合,SAi为依赖数据di的活动的集合,Count表示集合中元素的个数。
4.根据权利要求3所述的调度方法,其特征在于,所述20)进一步包括根据如下公式确定新产生数据和任一数据集存放库的协作关系的紧密程度kCRet = max (CPej)/=1,0 上其中,Pj为数据集,Rt为任一数据集存放库,k为Rt中数据集的个数。
5.根据权利要求1至4任一项所述的调度方法,其特征在于,所述步骤10)前还包括00)在运行前,对数据流进行初始调度。
6.根据权利要求5所述的调度方法,其特征在于,所述步骤00)进一步包括01)根据活动使用数据的次数确定活动和数据的依赖关系;02)对于任意两个数据,根据活动和数据的依赖关系确定依赖该两个数据的活动的个数;03)以依赖任意两个数据的活动的个数为元素建立协作关系矩阵,进行协作关系矩阵的行列转换以使相近的行列之间相互关系紧密;04)将转换后的协作关系矩阵分块,使共同被任意活动使用的数据共存于一个子块,将每个子块对应的数据组成一个数据集;05)将只包含可移动数据的数据集调度到使该数据集所需要的流转时间最短的数据集存放库。
7.一种面向分布式工作流的数据流的调度系统,包括新数据和数据集协作关系确定模块,用于对于运行时新产生数据是可移动数据的情况,确定新产生数据和现有数据集的协作关系的紧密程度;新数据和数据集存放库协作关系确定模块,用于根据新产生数据和现有数据集的协作关系的紧密程度,确定新产生数据和任一数据集存放库的协作关系的紧密程度; 存储模块,用于将新产生数据存储在与之关系最紧密的数据集存放库中。
8.根据权利要求7所述的系统,其特征在于,还包括活动调度模块,用于计算活动到节点的预测数据流转时间,将活动调度到预测数据流转时间最短的节点。
9.根据权利要求7或8所述的系统,其特征在于,还包括 初始调度模块,用于在运行前,对数据流进行初始调度。
10.根据权利要求9所述的系统,其特征在于,所述初始调度模块进一步包括活动和数据依赖关系确定模块,用于根据活动使用数据的次数确定活动和数据的依赖关系;公共活动确定模块,用于对于任意两个数据,根据活动和数据的依赖关系确定依赖该两个数据的活动的个数;协作关系矩阵建立和转换模块,用于以依赖任意两个数据的活动的个数为元素建立协作关系矩阵,进行协作关系矩阵的行列转换以使相近的行列之间相互关系紧密;协作关系矩阵分块模块,用于将转换后的协作关系矩阵分块,使共同被任意活动使用的数据共存于一个子块,将每个子块对应的数据组成一个数据集;数据集装载模块,用于将只包含可移动数据的数据集调度到使该数据集所需要的流转时间最短的数据集存放库。
全文摘要
本发明提供一种面向分布式工作流的数据流的调度方法和系统,该方法包括10)对于运行时新产生数据是可移动数据的情况,确定新产生数据和现有数据集的协作关系的紧密程度;20)根据新产生数据和现有数据集的协作关系的紧密程度,确定新产生数据和任一数据集存放库的协作关系的紧密程度;30)将新产生数据存储在与之关系最紧密的数据集存放库中。本发明上述方法和系统的优点在于不仅可以有效减少地理分布的业务流程之间数据流转的时间,还可以减少由于网络中断导致工作流引擎无法运行的次数。
文档编号G06Q10/00GK102289747SQ20111025354
公开日2011年12月21日 申请日期2011年8月30日 优先权日2011年8月30日
发明者刘晨, 季光, 张鹏, 徐学辉, 王桂玲, 韩燕波 申请人:中国科学院计算技术研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1