基于资源需求和业务影响的过程执行管理的制作方法

文档序号:6649469阅读:135来源:国知局
专利名称:基于资源需求和业务影响的过程执行管理的制作方法
技术领域
本发明一般地涉及工作流管理系统(WFMS)领域,具体地说,涉及根据资源需求和对业务的影响来控制WFMS中活动执行的顺序。
背景技术
工作流过程(此处称为“过程”)是要执行的活动的有向、非循环图。通常,活动是将由例如人或软件代理执行的工作的单元;可被重复直至达到某种条件的活动块;或其他过程。在各活动之间是链接(可能是有条件的),其在运行时被评估以确定执行路径。数据也可以在各活动之间被传递或在全局上对所有活动可用。
由于过程是将被有条件地执行的活动的图,因此,过程被看作是执行活动的模型(即模板)。过程的执行被称为过程实例。过程内的活动的表示由活动实例来执行。过程实例中的各活动实例是否和以何种顺序准备执行由过程模型中的各活动实例之间的链接来确定。准备执行的活动实例可以在一个或多个工作列表中排队,每个工作列表都与可执行该活动的人或软件代理相关联,并且所述活动实例通常被称为工作项目。在调度领域中,作业等同于过程实例,任务等同于活动实例或工作项目。
工作流管理系统(WFMS)允许对过程建模并允许执行过程。WFMS可促进业务系统支持(BSS)和运行系统支持(OSS)过程的代码化、自动化、合成以及生命周期管理。IBM WebSphere MQ Workflow是WFMS的一个实例。工作流管理也作为一种重要的应用执行管理技术出现,尤其是在网格和效用计算领域,在这些领域中,计划的应用执行顺序被必要地管理并构成自动的工作流。管理过程执行的能力在许多采用工作流的领域中很有价值。可从过程执行管理受益的过程的某些实例是半自动贷款核准工作流、信息技术(IT)运行管理工作流(例如,提供服务器)以及软件应用作业执行工作流。
示例性地,考虑这样一个企业该企业为其客户提供多种具有服务保证级别与关联的退款和奖金的服务。例如,该企业可以提供具有这样的服务级别保证的存储服务在一个月当中,97%的客户对额外存储的请求将在两个小时内被满足。如果该企业未能满足此承诺,便会将罚金(其是每月服务费用的百分比)返还给客户。罚金可以被定义为一个阶梯函数,其随两个小时的阈值内所完成的客户请求百分比的减少而增加。该企业以适合的价格来提供具有不同服务级别保证(例如,就目标百分比和阈值时间而言)的不同等级的存储(例如,经济、快速以及超快),并具有不同的退款和奖金。该企业向其客户提供的退款和奖金代表了对该企业的实际财务影响以及对客户的价值的客观度量。
该企业具有满足其承诺的义务并且需要以经济和有效的方式来满足其承诺,如果该企业要维持生存和竞争力的话。因此,当企业执行其过程(例如,响应客户对额外存储的请求)时,该企业需要以与企业承诺(例如,定义为服务级别的服务质量)和企业的成本和效率目标(例如,最小化罚金)相一致的方式来管理其资源(例如,人员和计算服务器)。当前的WFMS根据过程定义的条件和导航来准备要执行的活动实例,但是没有明确考虑企业的目标或承诺。
于是,需要使组织能够以满足其承诺同时还满足其成本和效率目标的方式来管理过程执行的技术。

发明内容
本发明提供了用于管理过程执行的技术。使用本发明允许组织满足其承诺同时还满足其成本和效率目标。
在本发明的一个示例性方面中,提供了用于在数据处理系统上管理过程执行的技术。所述数据处理系统包括一个或多个过程实例,每个过程实例都是相应过程的执行。每个过程实例包括一个或多个活动实例。在此示例性方面中,为所述一个或多个过程实例、所述一个或多个活动实例,或所述一个或多个过程实例以及所述一个或多个活动实例两者确定一个或多个业务影响。通过将资源分配给活动实例来管理所述活动实例的执行顺序,以便实现根据所述一个或多个业务影响来定义的目标。
在本发明的另一个示例性方面中,提供了用于在数据处理系统上管理执行一个或多个过程的请求的技术。接收一个或多个执行所述一个或多个过程的请求。对于所述一个或多个请求中的至少一个给定请求,对与该给定请求关联的一个或多个第一业务影响进行指派、更新、聚合以及加权的一个或多个操作被执行,以便创建与该给定请求关联的一个或多个第二业务影响。所述给定请求用于执行给定的过程。给定的请求被修改以便创建修改的请求。所述修改的请求用于执行所述给定的过程或其他过程。未修改的请求和任何修改的请求都被管理以便执行与所述未修改的和修改的请求对应的过程。
通过参考以下详细说明和附图,可以获得对本发明的更完整的理解,以及本发明的进一步特征和优点。


图1是其中可以实现本发明的数据处理系统的表示;图2是示出了其中可以实现本发明的数据处理系统的方块图;图3是组织内的示例性过程执行管理器的示例性高级方块图;图4是跨组织环境中的示例性过程执行管理器的高级方块图;图5是示例性过程执行管理器的更详细视图的方块图;图6是示出了本发明的示例性实施例的过程执行管理器控制器的可能用途的用例图;图7是适合于实现根据本发明的示例性实施例的过程执行管理器的示例性框架的类图;图8是根据本发明的示例性实施例的用于初始化示例性地被称为过程执行管理器控制器的模块的方法的流程图;图9是根据本发明的示例性实施例的用于导入过程的方法的流程图;图10是根据本发明的示例性实施例的用于暂停资源的方法的流程图;图11是根据本发明的示例性实施例的用于恢复资源的方法的流程图;图12是根据本发明的示例性实施例的用于为过程实例及其活动实例更新业务影响的方法的流程图;图13是根据本发明的示例性实施例的用于启动过程实例的方法的流程图;图14是根据本发明的示例性实施例的用于取消过程实例的方法的流程图;图15是根据本发明的示例性实施例的用于暂停活动实例的方法的流程图;图16是根据本发明的示例性实施例的用于恢复活动实例的方法的流程图;图17是根据本发明的示例性实施例的用于查询过程实例的方法的流程图;图18是根据本发明的示例性实施例的用于请求重新启动调度系统的方法的流程图;图19是根据本发明的示例性实施例的用于查询资源信息的方法的流程图;图20是根据本发明的示例性实施例的用于启动任务的方法的流程图;图21是根据本发明的示例性实施例的用于更新资源信息的方法的流程图;图22是根据本发明的示例性实施例的用于请求刷新资源信息的方法的流程图;图23是根据本发明的示例性实施例的用于处理计划重写(override)的方法的流程图;以及图24是根据本发明的示例性实施例的用于请求处理工作流事件的方法的流程图。
具体实施例方式
在传统的工作流管理系统(WFMS)中,需要单个资源(通常是人或软件代理)来执行活动实例。WFMS可以将活动实例指派给可执行该活动的任意数量的资源。最终,某一资源将使用与该活动关联的实现代码来执行该活动实例。在任何时刻,资源都可以具有多个被指派给该资源且被视为“准备执行”的活动实例。执行哪个准备好的活动实例以及资源以何顺序执行这些活动实例通常并非由传统的WFMS来指定。相反,顺序由人的直觉和经验、静态的优先级方案或先来先服务的排队来指定。同时,如果需要任何其他资源(例如,软件许可)以便执行活动实例,则由活动实现代码而不是WFMS来负责发现、保留以及获取这些资源。
在示例性实施例中,通过管理活动执行的顺序(通过根据按照一个或多个业务影响定义的总体目标来指派执行所需的受限资源),本发明可以解决这些问题。这通过示例性地使用过程执行管理器控制器和一个或多个业务影响集成器来集成一个或多个WFMS或等同物、一个或多个调度系统以及一个或多个资源管理器来完成。此外,可以管理每个活动实例的多个资源要求。调度系统确定需要受限资源并被WFMS视为“准备执行”的活动实例应何时启动以及哪些资源将被指派给该活动实例。在示例性实施例中,以及时的方式做出此启动任务的管理操作以便调度系统可以适应系统中的动态更改(例如,新抵达的作业或现有过程实例的业务影响的变更)。结果,资源(例如,人或软件代理)通常在给定时间只具有一项指派(例如,其工作列表中只有一个工作项目)。
业务影响与过程实例或活动实例的执行或二者的执行相关联。业务影响是实例(例如,过程实例或活动实例)的及时执行将对组织具有的相对重要性(例如,通过值来定义)的度量。例如,企业可能想以这样的方式来执行其过程最小化与未能满足保证的服务级别相关联的罚金。因此,业务影响可以是与未满足保证的服务级别相关联的罚金值(例如,定义为阶梯函数)。在这种情况下,总体目标是最小化罚金。业务影响还可以包括当调度系统执行目标最优化时可由调度系统控制器使用的目标函数或目标函数的指针。
业务影响可以被预先定义,或在运行时动态地被获得。业务影响可以是,但不限于,简单的优先级、效用函数或随时间变化的成本函数中的一个或多个。此外,业务影响可以在过程实例、活动实例的持续期间或同时在过程实例和活动实例的持续期间被修改。
在本发明的某些实施例中,资源是执行活动所需的实体(例如,人、软件代理、硬件或软件许可)。通常,本发明的示例性实施例使得组织能够确保具有高业务影响和紧迫最后期限的作业将比那些具有较低业务影响、更灵活的最后期限,或同时具有较低业务影响和更灵活的最后期限的作业优先被分配资源。
本发明的某些实施例能够解决范围从简单任务列表到复杂任务图的过程模型。示例性地,过程可以是完全自动的或是部分自动的(即,包含由人执行的手动任务)。本发明的实施例还可以被应用到跨组织边界的过程,即,包含由其他组织执行的活动的过程。对组织以外的资源的管理程度将取决于监视这些资源的能力、属主组织所允许的控制程度,或同时取决于二者。
为清晰起见,假定术语“实例”涉及过程实例或活动实例。还假定“企业”是任何使用WFMS或等同物的实体,并且术语“组织”和“企业”是可互换的。
本发明的示例性实施例使得组织能够通过具有过程执行管理器的数据处理系统来执行一个或多个以下操作(1)将业务影响与实例关联,其中可以在实例的整个持续期间修改业务影响;(2)捕获关于过程的元数据,其中可将元数据用于调度目的;(3)根据受限资源到实例的指派,使用以下将驻留在不同数据处理系统上的一个或多个系统(尽管通常将使用全部)来管理实例的执行顺序(A)一个或多个WFMS或系统,其具有可比较的功能以定义过程模型并执行过程实例,(B)一个或多个调度系统,通过将资源指派给实例(以这样的方式实现根据与实例关联的业务影响来定义的目标)来对实例的执行排序,以及(C)一个或多个资源管理器,以提供调度系统或选定系统所需的资源信息;(4)通过适配器集成现有的WFMS、调度系统以及资源管理器;(5)扩展所提供的关键数据(例如,业务影响、资源、重写以及任务持续时间)以及函数的定义以便支持给定环境(例如,组织和选定调度系统、工作流系统以及资源管理器)的要求;(6)根据需要重写(多个)调度系统所做的资源指派;(7)如果可能,将WFMS的工作流模型转换为一个或多个选定调度系统所支持的模型;(8)根据需要指派默认的业务影响(包括目标函数)并根据组织的需要来加权业务影响;(9)将具有关联业务影响的各个“相关”请求组合成具有聚合业务影响的单个请求;以及(10)修改(例如,更改或组合)过程执行的请求,所述修改的执行是出于成本和效率目的,所述成本和效率由组织设定的一个或多个准则来确定。
本发明的示例性实施例描述了一种用于在具有可比较功能的一个或多个现有WFMS或系统中管理过程实例执行的方法。本领域的技术人员将认识到,本发明的多数功能还可以被结合到未来WFMS的设计中。
根据本发明的各种示例性实施例以及如上所述,提供了管理过程执行请求的技术以及对一个或多个WFMS中的过程实例内的活动实例的执行排序的技术。本发明的一个示例性目的是实现某些目标,所述目标由组织根据与实例执行关联的业务影响来定义。例如,组织可以将罚金函数与每个过程实例的完成相关联并使用将指派资源的调度系统,使得所承受的总体罚金被最小化。
示例性框架的设计元素(其可用于实现本发明的示例性实施例)可以包括以下一项或多项(1)假定WFMS提供在活动实例级别监视进度和控制活动实例开始的能力,则框架应支持多个和任意WFMS;(2)框架应支持多个和任意调度系统;(3)框架应支持多个和任意资源管理器;(4)框架应支持多个业务影响集成器;(5)框架应尽可能地支持将工作流模型转换为特定调度系统所支持的模型;(6)框架应提供通常由WFMS支持的核心功能,并且对于那些可能随环境变化的功能,应提供可扩展的功能;(7)可以假定WFMS将维护工作流执行的当前状态和历史,资源管理器将维护可用性和所需的技巧信息,调度系统不维护永久性数据;(8)框架可以使用与每个业务影响集成器关联的存储,以便维护与过程请求、可能的请求聚合、可能的请求修改及其关联业务影响和聚合有关的信息;以及(9)框架可以使用存储,以便维护与过程实例、过程模型信息以及重写信息关联的业务影响有关的信息。
现在参考附图,具体地说,参考图1,图1示出了根据本发明的示例性实施例的其中可以实现本发明的计算机系统100的图形表示。示出了计算机系统100,其包括系统单元102、视频显示终端104、键盘106、存储设备108(其可以包括软盘驱动器和其他类型的永久性存储介质和可移除存储介质)以及鼠标110。其他输入设备可以包括在计算机系统100中,诸如例如,操纵杆、触控板、触摸屏、轨迹球、麦克风等。可以使用任何适合的计算机来实现计算机系统100。尽管所示的表示示出了计算机,但是可以以其他类型的数据处理系统(例如网络计算机)来实现本发明的其他实施例。计算机系统100还优选地包括图形用户界面(GUI),其可以通过驻留在计算机可读介质中并在计算机系统100中运行的系统软件来实现。
现在参考图2,图2示出了其中可以实现本发明的实施例的数据处理系统200的方块图。数据处理系统200是计算机系统(例如图1中的计算机系统100)的一个实例,实现本发明的诸过程的代码或指令可以位于其中。数据处理系统200采用外围组件互连(PCI)局部总线体系结构。尽管所示实例采用了PCI总线,但是可以使用诸如加速图形端口(AGP)和工业标准结构(ISA)之类的其他总线体系结构。处理器202和主存储器204通过PCI桥208连接到PCI局部总线206。PCI桥208还可以包括用于处理器202的集成的存储器控制器和高速缓存存储器。通过直接组件互连或通过附加板,可以进行到PCI局部总线206的其他连接。
在所示实例中,局域网(LAN)适配器210、小型计算机系统接口SCSI主机总线适配器212以及扩展总线接口214通过直接组件连接连接到PCI局部总线206。相反,音频适配器216、图形适配器218和音频/视频适配器219通过插入扩展槽的附加板连接到PCI局部总线206。扩展总线接口214为键盘和鼠标适配器220、调制解调器222以及附加存储器224提供了连接。SCSI主机总线适配器212为硬盘驱动器226、磁带驱动器228以及CD-ROM驱动器230提供了连接。典型的PCI局部总线实现将支持三个或四个PCI扩展槽或附加连接器。
操作系统(未示出)在处理器202上运行并用于协调和提供对图2中的数据处理系统200内的各种组件的控制。所述操作系统可以是可从市场上购买的操作系统,例如可从Microsoft Corpoartion购买的Windows XP。诸如Java之类的面向对象的编程系统可以与操作系统一起运行并从在数据处理系统200上执行的Java程序或应用来提供对操作系统的调用。“Java”是Sun Microsystems,Inc的商标。操作系统、面向对象的编程系统以及应用或程序的指令(例如,计算机可读代码)位于存储设备(例如硬盘驱动器226)上,并可以被加载到主存储器204中以便由处理器202来执行。
如本领域中所公知的,此处描述的方法和装置可以作为一件制品来分发,所述制品本身包括计算机可读介质,所述计算机可读介质上包含计算机可读程序代码装置。例如,所述计算机可读介质可以是磁盘226、磁带228或CD-ROM 230。所述计算机可读程序代码装置可以与数据处理系统200一起运行以执行全部或某些步骤,以便执行所述方法或创建此处讨论的装置。
进而,本领域的技术人员将理解,图2中的硬件可以根据实现而改变。除了图2中所示的硬件,或替代图2中所示的硬件,还可以使用其他内部硬件或外围设备,例如闪速只读存储器(ROM)、等同的非易失性存储器或光盘驱动器等。同样,本发明的诸过程可以应用于多处理器数据处理系统。
例如,数据处理系统200,如果可选地被配置为网络计算机,可以不包括SCSI主机总线适配器212、硬盘驱动器226、磁带驱动器228以及CD-ROM 230。在这种情况下,所述计算机(严格地说将被称为客户端计算机)包括某种类型的网络通信接口,例如局域网适配器210、调制解调器222等。作为另一个实例,数据处理系统200可以是配置为不依赖某种类型的网络通信接口便可引导的独立系统,无论数据处理系统200是否包括某种类型的网络通信接口。作为进一步的实例,数据处理系统200可以是个人数字助理(PDA),其配备有诸如闪速ROM之类的非易失性存储器,以便存储操作系统文件、用户生成的数据或同时存储这二者。
图2中所示的实例和上述实例并非旨在暗示体系结构限制。例如,除了采取PDA的形式之外,数据处理系统200还可以是笔记本计算机或手持计算机。数据处理系统200还可以是信息站或Web家电。本发明的诸过程由处理器202使用计算机实现的指令来执行,所述指令位于诸如例如主存储器204、存储器224之类的存储器中,或者位于一个或多个外围设备226-230中。
图3的高级方块图中示出了本发明的一个示例性实施例,其中示出了过程执行管理器390。应当指出,过程执行管理器390可以在许多数据处理系统中所包含的分布式计算机系统上实现。过程执行管理器390示出了过程执行管理器控制器307,其与一个或多个调度系统305、资源管理器306以及WFMS 308交互。图3还示出了过程执行请求300可以被发送给业务影响集成器301,在一个示例性实施例中,所述集成器301可以(1)指派默认的业务影响;(2)加权业务影响;(3)组合相关的请求300并聚合、加权或同时聚合和加权其业务影响;(4)更改单个或组合的请求300;或(5)执行(1)-(4)的组合以改进实例执行的成本和效率,这应改进企业的成本和效率。实例执行的成本和效率的改进由组织设定的一个或多个准则来确定。换言之,组织本身通常确定如何定义“成本”和“效率”,例如更快的响应时间和更低的成本。应当指出,不是所有请求300都需要具有关联的业务影响。尽管如此,对于那些接收并应过滤针对同一过程执行的多个请求300的环境,组合相关请求300的能力是有用的。
例如,可以使用单个过程执行来满足启动服务器的若干请求300。业务影响集成器301应实现一个或多个程序(例如,算法、方法或函数),以便判定两个请求是否相关以及它们应如何被组合。组织通常定义一个或多个用于组合请求300的程序。对于成本和效率目的(例如,由组织定义并可以包括成本或时间),更改请求的能力非常有用。例如,可以更改执行过程的请求300以使用另一个将更有效地完成同一目标的过程。业务影响集成器301也可以组合和更改过程执行请求300。例如,业务影响集成器301可以接收多个对额外存储的请求300,其中所述多个请求可以被组合成具有聚合业务影响的另一个请求300,其中所述另一个请求300将以更加成本有效的方式完成(例如,通过执行相应的过程)所有存储的添加。可以以任何数量的方式(包括过程的执行时间)来确定成本有效性。业务影响集成器301应使数据和方法被实现以提供此组合功能。应当指出,给定的请求300将使请求300与一个目标进行关联。
在本发明的示例性实施例中,如图3所示,可以有多个业务影响集成器301。过程执行请求302与关联的业务影响可以被一起发送到其中一个业务影响集成器。可替代地,过程执行请求302可以被直接发送到过程执行管理器控制器307。此外,执行过程实例的请求304可以被直接发送到WFMS 308。在这种情况下,过程实例的关联业务影响303应被发送到过程执行管理器控制器307,或以其他方式由过程执行管理器控制器307来获得或确定。
过程执行管理器控制器307被用于允许本发明的实施例通过根据业务影响的资源分配来管理过程执行。业务影响集成器301可以被用于允许本发明的实施例管理过程执行请求及其关联的业务影响。具体地说,过程执行管理器控制器307与调度系统305、资源管理器306以及WFMS 308交互并为它们提供框架以便管理过程执行。用于业务影响集成器301和过程执行管理器控制器307的技术和数据存储可以在其他实体(例如,WFMS308)中实现。
调度系统305的作用是确定那些已被WFMS 308视为“准备执行”的任务中的哪些任务(例如,活动实例)应启动,以便以最优化目标函数(根据组织的业务影响来定义)的方式来使用所需的受限资源。过程执行管理器控制器307向调度系统305提供关于资源的信息(例如,可用性、成本和功能)、过程模型信息、当前过程执行状态,以及与特定过程实例和活动实例关联的业务影响。传统的调度系统可能以最大化吞吐量的方式来指派资源。相比之下,本发明的示例性实施例中的调度系统将使用其目标优化器312以实现根据业务影响(例如,最小化罚金)定义的业务目标的方式和及时的方式来指派资源,以便考虑系统中的任何动态更改(例如,新增作业、对现有作业的业务影响的更新等)。
图4示出了如图3所示的过程执行管理器400如何被用于管理跨组织边界的过程实例401的实例。过程执行管理器400可以使用从监视外部资源(例如,在外部组织C 403中执行的应用C1402或在外部组织B 405中执行的应用B3404)收集的信息或从拥有外部资源的组织(例如,外部组织C 403或外部组织B 405)获得(例如,可能动态地)的信息。此类信息可以被框架用来控制将活动指派给外部资源,其中外部资源将执行活动。在图4的实例中,应用402由组织C 403拥有,但是组织C 403不拥有过程执行管理器400(例如,实现过程执行管理器400的数据处理系统)。
图5是示例性过程执行管理器590的更详细视图的方块图。过程执行管理器590包括一个或多个调度系统500、一个或多个资源管理器504、一个或多个业务影响集成器508、过程执行管理器控制器510以及一个或多个WFMS 515。每个调度系统500包括与调度系统适配器502交互的模型转换器503,调度系统适配器502又与调度系统控制器501交互。调度系统控制器501包括目标优化器582,其被用于以最优化目标的方式将资源指派给活动实例。过程执行管理器控制器510与调度系统500的模型转换器503交互。模型转换器503可以被用作调度系统500与过程执行管理器590的另一部分之间的接口。例如,WFMS 515可能支持复杂的过程模型,但调度系统500支持简单的过程模型。然后,模型转换器503可以尽可能地将与复杂过程模型有关的信息转换为适合于由调度系统500使用的信息。
对于每个资源管理器504,过程执行管理器控制器510与资源适配器507交互,资源适配器507又与资源管理器控制器505交互。类似地,对于每个WFMS 515,过程执行管理器控制器510与工作流系统适配器516交互,工作流系统适配器516又与WFMS控制器517交互。过程执行管理器控制器510还为每个WFMS 515创建监视器513,以便跟踪WFMS 515中的过程实例的进度。分别为每个交互520、525、530、540、545、550、555、560、565和570定义了应用程序编程接口(API)方法521、526、531、541、546、551、556、561、566和571。
与过程实例(例如,API 521中的startProcessInstance)有关的请求可以被直接或通过业务影响集成器508发送到过程执行管理器控制器510。如上所述,业务影响集成器508可以被用于添加默认的业务影响或可以加权或以其他方式修改与过程实例请求关联的业务影响。此外,业务影响集成器508可以将相关的过程实例请求组合成单个请求并将关联的业务影响聚合、加权或同时聚合和加权为单个业务影响。业务影响集成器508还可以将请求的过程更改为对组织更有效(例如,成本有效或及时)的过程。业务影响集成器508还可以将过程实例请求组合和更改成单个请求以便执行另一个过程,其中另一个过程对于企业更有效。业务影响集成器508维护过程请求、关联的业务影响以及所做的任何组合和更改的存储509。
资源管理器504(注意,可能有多个资源管理器504)被期望在存储506中维护调度(例如,技巧和计划)所需的资源信息。WFMS 517(注意,可能有多个WFMS 517)被期望在存储518和519中维护过程和过程实例的信息。过程执行管理器控制器510维护存储512(用于配置512的信息)、存储511(用于过程实例及其关联的业务影响),以及存储514(用于过程和调度重写514)。调度重写会重写资源的指派。例如,管理器可能有理由想让特定的员工执行特定过程实例的活动,并因此可以选择将该活动的由调度系统进行的指派重写到另一个员工。
图6示出了诸如图5中的过程执行管理器控制器510之类的过程执行管理器控制器601的用例。操作者(例如,人、系统以及软件代理)及其关联的任务如下(1)系统管理员605初始化过程执行管理器(步骤606-1);导入过程模板(步骤606-2);暂停活动实例(步骤606-3);以及恢复活动实例(步骤606-4)。
(2)活动受让者610暂停到他/她自身的指派(步骤611-1);以及恢复到他/她自身的指派(步骤611-2)。
(3)业务影响分配者615将业务影响与实例关联或使用实例来更新业务影响(步骤616)。
(4)业务影响请求者加业务影响分配者(例如,业务影响集成器)620将业务影响与过程实例关联或使用过程实例来更新业务影响(步骤616);查询过程实例的状态(步骤621-1);创建或启动过程的执行(步骤621-2);以及取消过程实例(步骤621-3)。
(5)过程请求者625直接在WFMS 630中创建和启动、取消以及暂停过程实例(步骤626)。
(6)调度系统640请求刷新全部所需的信息(步骤641-1);查询某些或全部资源(步骤641-2);通过向任务指派(多个)资源来启动任务(例如,可能抢占其他指派)(步骤641-3);以及更新与选定的(多个)资源有关的信息(步骤641-4)。
(7)资源管理器635为某些或全部资源刷新信息(步骤636-1);以及重写由调度系统进行的(多个)资源到任务的指派(步骤636-2)。
(8)WFMS 630更新实例的进度(步骤631)。
图7示出了适合于实现过程执行管理器(包括过程执行管理器控制器307、510或601以及业务影响聚合器301或506)的框架的示例性类图700。主类是过程执行管理器控制器705。过程执行管理器控制器的实例是过程执行管理器控制器并包含下列项目(1)资源管理器(resManagers 707,资源管理器716的实例);(2)WFMS管理器(wfSystems 708,WF系统717的实例);(3)调度系统管理器(schedulers 709,调度系统718的实例);(4)过程(processes 710,过程715的实例);(5)WFMS中的过程实例标识(ID)与调度系统中的作业ID之间的唯一映射(jobMap 712,作业ID映射720的实例);(6)工作流系统中的工作流资源ID与调度系统中的资源ID之间的唯一映射(resMap 711,资源ID映射719的实例)。
过程715包含活动(activities 721,活动722的实例)列表和各活动之间的链接(links 724,链接725的实例)列表。每个活动实例包含持续时间(持续时间723)。影响(影响726)可以被与过程实例或活动实例关联。每个资源管理器(resManagers 707,资源管理器716的实例)都包含资源适配器(adapter 727,资源适配器728的实例),该资源适配器实现资源管理器适配器接口752并被过程执行管理器控制器705用来与资源管理器(资源管理器716)交互。每个工作流系统管理器实例(wfSystems 708,WF系统717的实例)都包含工作流适配器(adapter 730,WF适配器731的实例)的名称,该工作流适配器实现WF系统适配器接口753并被过程执行管理器控制器705用来与工作流系统管理器和监视器(monitor 732,监视器733的实例)交互,该监视器用于监视WFMS(例如,708)中的进度。
每个调度系统管理器(schedulers 709,调度系统718的实例)都包含模型转换器(modelTransformer 735,模型转换器736的实例)和调度系统适配器(adapter 750,调度适配器751的实例)的名称。过程执行管理器控制器705与模型转换器(例如,736)交互,该模型转换器又与调度系统适配器(例如,751)交互。调度系统适配器类760定义了编程接口,该编程接口应被任何与过程执行管理器框架700集成的调度系统适配器所支持。WF模型转换器类780定义了编程接口,该编程接口应被任何与过程执行管理器框架700集成的模型转换器所支持。
每个调度系统管理器(schedulers 709,调度系统718的实例)还包含作业(jobs 737,从作业738实例化)、资源(res 743,从资源744实例化)、重写(overrides 741,从重写742实例化)、通用性(commonalities 745,从通用性746实例化),以及同时性(simultaneities 739,从同时性740实例化)的列表,调度系统管理器(schedulers 709,调度系统718的实例)将该列表用于调度目的。每个作业738可以包含业务影响(影响766)、任务(tasks 761,从任务762实例化)的列表、各任务之间的链接(links 763,从链接764实例化)的列表。每个任务(任务762)包含持续时间(持续时间765)并可选地包含业务影响(影响766)。
框架700还包含业务影响集成器770的类,业务影响集成器770用于将相关的执行过程请求聚合成单个请求并用于将类似请求的关联业务影响聚合、加权或同时聚合和加权成单个业务影响(例如,然后与所述单个请求关联)。业务影响集成器770还可以被用于将默认的业务影响指派给执行过程请求,或用于出于某种业务目的(例如,优先考虑特定类型的请求或来自特定客户的请求)来加权请求。此外,业务影响集成器770可以被用于出于成本和效率目的,将过程执行请求更改(单独地或组合地)为另一个过程(具有聚合的业务影响)的请求。
还为资源事件776、工作流事件777以及通用事件775指定了类。这些类被用于向过程执行管理器控制器705和调度系统718通知有关资源更改(例如,资源事件776)或工作流进度(工作流事件705)的事件(例如,事件775)。
图8-24是图6中的每个用例的高级流程图。每个图示出了一种方法且每种方法具有以伪代码表示的示例性指派名称。在描述图8-24的期间,同时请参考图5和图7。
参考图8,其中根据本发明的示例性实施例示出了被示例性地称为过程执行管理器控制器(例如,过程执行管理器控制器705,在接下来的描述中将采用该控制器)的模块的初始化。图8中示出的方法890可以使用伪代码被示例性地命名为PEMC.init()。当初始化后,过程执行管理器控制器705将读取永久性存储(例如,图5的配置存储512)中的配置数据。这发生在步骤800。在步骤801中,过程执行管理器控制器705将创建要被支持的调度系统(例如,schedulers 709)的列表,其中包括将被用于每个调度系统的适配器(例如,adapter 730)和模型转换器(例如,modelTransformer 735)。在步骤802中,将创建WFMS(例如,wfSystems708)的列表,其中包括将用于每个工作流系统的适当的适配器。在步骤803中,将创建资源管理器(例如,resManagers 707)的列表,其中包括将用于每个资源管理器的适配器。在步骤804中,将创建当前被管理的过程(例如,processes 710)的空列表。根据存储(例如,过程实例+图5的影响存储511)中的信息,将创建调度系统作业ID到工作流系统作业ID的映射(例如,jobMap 712)。这发生在步骤805。
在步骤806-812中,通过资源管理器(例如,resManagers 707)来确定资源ID以及关联的调度器ID和工作流资源ID(它们将由每个调度系统来管理)的列表。步骤806(“对于每个资源管理器resManagers[i]”)开始一个循环,其在步骤812结束。在步骤807中,资源ID、关联的调度器ID以及工作流资源ID信息的列表被添加到由过程执行管理器控制器705维护的资源映射(例如,resMap 711)。在步骤807中,用于确定与调度器和工作流资源ID关联的资源列表的伪代码是res=resManager[i].adapter.getResources()。在步骤808中,资源ID和WFMS中的匹配ID一起被添加到resMap 711。在步骤809-811中,资源信息被添加到每个适当的调度器。步骤809开始循环(“对于每个调度器,Schedulers[i]”),该循环在步骤811结束。在步骤810中,由当前选定的调度器(例如,schedulers 709)调度的res中的资源被添加到schedulers[j].res。
步骤813开始一个循环,其在步骤826结束。对于每个WFMS(例如,步骤813中的“对于每个wf系统wfSystems[i]”),步骤814-825被执行。在步骤814中,为在审核跟踪中记录的最后一个事件确定时间戳(例如,步骤814中的“获得记录的审核跟踪的结束日期,auditDate=wfSystem[i].adapter.getAuditAsOf()”)。在步骤815中,确定当前活动的作业过程实例的列表(例如,步骤815中的“获得有关正在运行的作业的信息,jobs=wfSystem[i].adapter.getStatus(auditDate)”)。
在步骤816中,根据需要更新映射(例如,jobMap 712),其中该映射是调度系统作业ID到工作流系统过程实例ID的映射。在步骤817中,任何新增过程都被添加到过程(例如,processes 710)的列表中。步骤818开始一个循环(对于每个作业,jobs[j]),并且该循环在步骤823结束。步骤819开始一个循环(对于每个调度器,schedulers[j]),并且该循环在步骤822结束。因此,对于步骤818-823中的每个作业和步骤819-822中的每个调度器,如果作业需要由调度器管理的资源(步骤820,在图8中编写为“jobs[j]使用scheduler[i].res中的资源吗?”),则有关该作业的信息被添加到调度器(步骤821,在图8中编写为“将jobs[j]添加到schedulers[i].jobs”)中。
在步骤824中,为此WFMS创建监视器(例如,“创建监视器wfSystem[i].adapter.mon”),并在步骤825中监视进度(例如,“开始监视wfSystem[i].adapter.mon.monitorProgress()”)。最后,步骤827开始为每个调度器schedulers[i]执行的循环,该循环在步骤830结束。对于每个调度器,从该调度器管理的资源和作业的存储(例如,图5的存储514)获得重写列表(步骤828)。此外,使用作业、资源和重写信息来初始化调度器,使用伪代码编写为以下语句schedulers[i].modelTransformer.init(schedulers[i].jobs,schedulers[i].res,schedulers[i].overrides)。方法890在步骤830之后结束。
参考图9,其中根据本发明的示例性实施例示出了用于导入过程的方法990。使用伪代码,图9中示出的方法990可以被示例性地命名为PEMC.importProcess(wfs,pID,validFrom,inputClass)。输入参数指定了WFMS、过程ID、“有效”日期(例如,用于区别过程的版本)以及类的名称,所述类被用于为此过程(例如,由过程ID定义)的执行准备输入。方法990被用于将过程执行管理器控制器705所需的过程信息以及一个或多个调度器所需的元数据导入存储(例如,图5的过程存储514)。
方法990的第一个步骤(步骤900)是将指定的WFMS与其中一个被支持的WFMS进行匹配(在图9的步骤900中示为“为指定的工作流系统wfs确定wfSystems[i]”)。在步骤901中,调用此WFMS的工作流适配器以便加载过程执行管理器控制器705所需的基本过程信息。这在图9的步骤901中被描述为“如果需要,调用wfSystems[i].adapter.importProcess(pID,validFrom)以从wfs或其他位置获得过程细节”。在步骤502中,有关新过程的元数据被存储在存储(例如,图5的存储514)中,编写为“在永久性存储中记录有关新过程wfs、pid、validFrom、inputClass等的信息”。在步骤903中,如果更新成功或者更新不成功,分别将0(例如,成功)或1(例如,不成功)返回给请求者。方法990在步骤903之后结束。
参考图10,其中根据本发明的示例性实施例示出了用于暂停资源的方法1090。图10中示出的方法1090可以被示例性地使用伪代码命名为PEMC.suspendResource(wfs,wfRresID,duration,flag)。输入参数指定了WFMS、工作流资源ID、持续时间(其间资源将不可用)以及标志,所述标志指示当前的指派(如果有)将如何被处理(例如,允许资源在开始暂停之前完成当前的指派,将当前的指派重新指派到另一个资源,或为此资源保留此指派)。方法1090旨在允许人力资源通知调度器计划外的不可用时段。
方法1090中的第一个步骤(步骤1000)是将指定的WFMS与其中一个被支持的WFMS进行匹配,其是为指定的WFMS(wfs)确定wfSystems[i]的步骤。在步骤1001中,为指定的工作流资源ID获得适当的资源ID(例如,“为此wfs和wfResID获得resID”)。步骤1002开始为每个调度器(schedulers[i])执行的循环,该循环在步骤1005结束。在步骤1003中,判定此资源是否由所述调度器来管理(在图10中示为“resIDscheduler[i].res?”)。如果否(步骤1003=否),则方法1090在步骤1005中继续。如果是(步骤1003=是),则执行步骤1004,并使用模型转换器和适配器的handleEvent方法将此资源的“暂停事件”发送给调度器。在步骤1004中,用于通知调度器的伪代码被编写为如下schedulers[i].modelTransformer.handleEvent(“suspend”,resID,duration,flag)。在步骤1006中,如果暂停资源成功或者暂停资源不成功,分别将0(例如,成功)或1(例如,不成功)返回给请求者。方法1090在步骤1006之后结束。
参考图11,其中根据本发明的示例性实施例示出了用于恢复资源的方法1190。图11中示出的方法1190可以被示例性地命名为PEMC.resumeResource(wfs,wfRresID)。输入参数指定了WFMS和工作流资源ID。此方法旨在允许资源通知调度器他/她在计划外的不可用时段之后的可用性。
第一个步骤(步骤1100)是将指定的WFMS与一个被支持的WFMS进行匹配,例如,为指定的工作流系统wfs确定wfSystems[i]。在步骤1101中,为指定的工作流资源ID、wfResID获得适当的资源ID、resID。步骤1102开始为每个调度器(schedulers[i])执行的循环,该循环在步骤1105结束。对于步骤1102-1105中的每个调度器,如果此资源由调度器来管理(步骤1103,使用伪代码编写为“resIDscheduler[i].res?”),则在步骤1104中,使用模型转换器和适配器的handleEvent方法将此资源的“恢复事件”发送给调度器。通知调度器以伪代码编写为如下schedulers[i].modelTransformer.handleEvent(“suspend”,resID,duration,flag)。在步骤1106中,如果恢复资源成功或者恢复资源不成功,分别将0(例如,成功)或1(例如,不成功)返回给请求者。方法1190在步骤1106之后结束。
现在转到图12,其中根据本发明的示例性实施例示出了用于为过程实例更新影响的方法1290。图12的方法1290可以被示例性地命名为PEMC.updateImpact(wfs,piID,impact)。输入参数指定了WFMS、过程实例ID以及业务影响。方法1290允许将业务影响与不是由过程执行管理器控制器705启动的过程实例进行关联,允许为任何过程实例更新业务影响,或同时允许这二者。
方法1290开始于步骤1200,其中WFMS ID(wfs)与其中一个被支持的WFMS进行匹配,例如,为指定的WFMS(wfs)确定wfSystems[i]。在步骤1201中,根据所述wfs和reqID来确定指派给此过程实例的唯一job ID。在步骤1202中,业务影响和job ID被存储在存储(例如,图5的存储511)中。步骤1203为每个调度器sch[i]开始一个循环,该循环在步骤1207结束。因此,对于步骤1203-1207中的每个调度器,在步骤1204中检查该作业是否正由调度器来管理(使用伪代码,“jobID在schedulers[i].jobs中吗?”)。如果作业没有由调度器来管理(步骤1204=否),则选择另一个调度器(步骤1207)。如果作业正在由调度器来管理(步骤1204=是),则在步骤1205中,为该调度器更新调度器(例如,schedulers[i].jobs)列表中的信息(例如,包括业务影响)。在步骤1206中,执行模型转换器的updateImpact方法以通知该调度器通过调度系统适配器进行的更新,以伪代码示为“schedulers[i].modelTransformer.updateImpact(jobID,impact)”。在步骤1208中,如果对业务影响的更新成功或者对业务影响的更新不成功,分别将0(例如,成功)或1(例如,不成功)返回给请求者。方法1290在步骤1208之后结束。
参考图13,其中根据本发明的示例性实施例示出了用于启动过程实例的方法1390。图13中示出的方法1390可以被示例性地使用伪代码命名为PEMC.startProcessInstance(wfs,pID,input,impact)。输入参数指定了WFMS、过程ID、过程的输入以及业务影响。方法1390被用于请求过程执行管理器控制器705使用给定的输入来启动指定过程的实例并将业务影响与该过程实例相关联。
方法1390中的第一个步骤(步骤1300)是将指定的WFMS与其中一个被支持的WFMS进行匹配,其是为指定的WFMS(wfs)确定wfSystems[i]的步骤。在步骤1301中,判定哪个类准备用于执行过程(例如,由pID定义)的输入,并且如果需要,加载该类(例如,prep)。在步骤1302中,使用指定的输入调用该类以准备用于工作流系统执行的输入。使用伪代码,这显示为pi_input=wfSystems[i].adapter.prep(input)。
在步骤1303中,为过程ID(pID)创建唯一的过程实例ID(piID)。在步骤1304中,还为过程ID创建唯一的作业ID(jobID)。在步骤1305中,在诸如图5的存储511之类的存储中记录有关此过程实例的信息(例如,wfs、pID、piID、jobID、input、impact)。下一个步骤(步骤1306)是调用工作流适配器的startProcessInstance方法,以便使用准备好的输入数据来启动过程实例。使用伪代码,其为wfSystems[i].adapter.startProcessInstance(pID,pi_input,piID)。接着,使用此过程实例(由wfs和piID定义)的“started”状态来更新存储(例如,图5的存储511)。在步骤1308中,如果启动过程实例成功,则过程实例ID被返回给请求者。如果启动过程实例不成功,则在步骤1308中,“FAILURE”被返回给请求者。
参考图14,其中根据本发明的示例性实施例示出了用于取消过程实例的方法1490。方法1490可以被示例性地使用伪代码命名为PEMC.cancelProcessInstance(wfs,piID)。输入参数指定了WFMS和唯一的过程实例ID。方法1490被用于请求过程执行管理器控制器705取消指定的工作流系统(例如,由wfs定义)中指定的过程实例(例如,由piID定义)。
方法1490中的第一个步骤(步骤1400)是将指定的WFMS与其中一个被支持的WFMS进行匹配,其是为指定的WFMS(wfs)确定wfSystems[i]的步骤。在步骤1401中,cancelProcessInstance方法被用于指定的WFMS的工作流适配器。使用伪代码,这可以被编写为wfSystems[i].adapter.cancelProcessInstance(piID)。在步骤1402中,使用状态“cancelled”为指定工作流中的指定过程实例ID(例如,piID)更新存储(例如,存储511)。在步骤1403中,如果取消过程实例成功或者取消过程实例不成功,分别将0(例如,成功)或1(例如,不成功)返回给请求者。方法1490在步骤1403之后结束。
现在转到图15,其中根据本发明的示例性实施例示出了用于暂停活动实例的方法1590。方法1590可以被示例性地使用伪代码命名为PEMC.suspendActivityInstance(wfs,piID,actID)。输入参数指定了WFMS、唯一的过程实例ID以及活动ID。方法1590被用于请求过程执行管理器控制器705暂停指定WFMS(例如,由wfs定义)中的指定活动实例(例如,由piID和actID定义)。
方法1590中的第一个步骤(步骤1500)是将指定的WFMS与其中一个被支持的WFMS进行匹配,其是为指定的WFMS(wfs)确定wfSystems[i]的步骤。下一个步骤(步骤1501)是使用活动实例信息来调用工作流适配器的suspendActivityInstance(在图15中表示为“suspendAI”)方法。使用伪代码,这可以被编写为wfSystems[i].adapter.suspendActivityInstance(piID,actID,flag)。在步骤1502中,如果暂停活动实例成功或者暂停活动实例不成功,分别将0(例如,成功)或1(例如,不成功)返回给请求者。方法1590在步骤1502之后结束。
参考图16,其中根据本发明的示例性实施例示出了用于恢复活动实例的方法1690。方法1690可以被示例性地使用伪代码命名为PEMC.resumeActivityInstance(wfs,piID,actID)。输入参数指定了WFMS、唯一的过程实例ID以及活动ID。方法1690被用于请求过程执行管理器控制器705恢复指定WFMS(例如,由wfs定义)中的指定活动实例(例如,由piID和actID定义)。
在步骤1600中,指定的WFMS被与其中一个被支持的WFMS进行匹配,其是为指定的WFMS(wfs)确定wfSystems[i]的步骤。在步骤1601中,进行检查以查看活动是否真正被暂停。如果否(步骤1601=否),则在步骤1603中将错误(例如,0)返回给请求者。否则(步骤1601=是),使用有关活动实例的信息来调用工作流适配器的resumeActivityInstance方法(在图16中表示为“resumeAI”)。这发生在步骤1602中,并可以使用伪代码被编写为wfSystems.adapter.resumeActivityInstance(piID,actID)。在步骤1603中,如果恢复活动实例成功或者恢复活动实例不成功,分别将0(例如,成功)或1(例如,不成功)返回给请求者。方法1690在步骤1603之后结束。
现在转到图17,其中根据本发明的示例性实施例示出了用于查询过程实例的方法1790。方法1790可以被示例性地使用伪代码命名为PEMC.query(wfs,piID)。输入参数指定了WFMS和唯一的过程实例ID。方法1790被用于查询过程执行管理器控制器705以得到指定WFMS中的指定过程实例的当前状态。
在步骤1700中,为指定的WFMS(例如,由wfs定义)和过程实例ID确定作业ID。步骤1701开始一个循环,该循环检查每个调度器(scheduler[i])并在步骤1704结束。因此,对于每个调度器,在步骤1702中检查jobID是否对应于某一被管理的作业(schedulers[i].jobs)。如果是(步骤1702=是),则在步骤1703中为此作业返回状态并且方法1790结束。如果过程实例不是活动的作业之一(步骤1702=否),则继续循环1701-1704,检查其他调度器。如果所有调度器都已被检查并且没有在这些调度器中找到作业,则在步骤1705中,查找存储(例如,图5的存储511)中的作业的状态。在存储中找到的作业的状态或者一个错误(如果在存储中没有找到作业)被返回(步骤1706)给请求者。方法1790在步骤1706之后结束。
参考图18,其中根据本发明的示例性实施例示出了用于重新启动调度器的方法1890。方法1890可以被示例性地使用伪代码命名为PEMC.restartScheduler(sch)。输入参数指定了调度器。调度系统(例如,schedulers 709)使用方法1890来请求过程执行管理器控制器705发送调度器重新初始化所需的所有信息(例如,关于作业和资源的信息)。
方法1890中的第一个步骤(步骤1800)是将指定的WFMS与其中一个被支持的WFMS进行匹配,其是为指定的WFMS(wfs)确定wfSystems[i]的步骤。在步骤1801中,调用调度器模型转换器和适配器的init方法并传递所需的信息。使用伪代码,这可以被编写为schedulers[i].modelTransformer.init(schedulers[i].jobs,schedulers[i].res,commonalities,simultaneities,overrides)。在步骤1802中,如果启动调度器(sch)成功或者启动调度器(sch)不成功,分别将0(例如,成功)或1(例如,不成功)返回给请求者。方法1890在步骤1802之后结束。
参考图19,其中根据本发明的示例性实施例示出了用于查询资源信息的方法1990。方法1990可以被示例性地使用伪代码命名为PEMC.queryResources(res[])res[]。输入参数指定了一个或多个资源。调度系统(例如,schedulers 709)使用方法1990来请求过程执行管理器控制器705获得关于指定资源的信息。步骤1900开始一个为每个资源(例如,res[i])执行并在步骤1902结束的循环。对于每个指定的资源,在步骤1901中,过程执行管理器控制器705调用关联的资源管理器适配器的queryResource方法。使用伪代码,这可以被编写为res[i].rm.adapter.queryResources(res[i])。在步骤1903中,结果被返回给请求者并且方法1990在步骤1903之后结束。
转到图20,其中根据本发明的示例性实施例示出了用于执行任务启动的方法2090。方法2090可以被示例性地使用伪代码命名为PEMC.startTask(jobID,taskID,res[],preempt)。输入参数指定了作业ID、任务ID、一个或多个资源以及指示当前指派是否应被抢占的参数。调度系统(例如,schedulers 709)使用方法2090来请求过程执行管理器控制器705将指定的一个或多个资源指派给指定的过程活动实例(可选地,抢占先前的指派)。
第一个步骤是将调度系统与其中一个被支持的调度系统进行匹配,并为指定的作业ID和任务ID获得过程实例ID和活动实例ID。这发生在步骤2000。下一个步骤是将调度器使用的一个或多个资源ID转换为WFMS所使用的资源ID(wfResID[]),这发生此步骤2001。在步骤2002中,过程执行管理器控制器705调用关联的工作流系统适配器的startActivityInstance方法(在图20中表示为“startAI”)以启动活动。这可以使用伪代码被编写为wfSys[i].adapter.startActivityInstance(piID,actID,wfRresID[],preempt)。在步骤2003中,如果一个或多个资源被指派给或没有被指派给过程的活动实例,分别将0(例如,成功)或1(例如,不成功)返回给请求者。方法2090在步骤2003之后结束。
参考图21,其中根据本发明的示例性实施例示出了用于更新资源信息的方法2190。方法2190可以被示例性地使用伪代码命名为PEMC.updateResources(res[])。输入参数指定了一个或多个将被更新的资源。调度系统(例如,schedulers 709)使用方法2190来发送过程执行管理器控制器705获得的关于指定的一个或多个资源的资源更新信息。
步骤2100开始一个为每个资源res[i]执行的循环,该循环在步骤2102结束。对于每个指定的资源,在步骤2101中,过程执行管理器控制器705使用资源信息来调用关联的资源管理器适配器的updateResource方法。使用伪代码,这可以被编写为res[i].rm.adapter.updateResources(res[i])。在步骤2103中,如果更新资源成功或者更新资源不成功,分别将0(例如,成功)或1(例如,不成功)返回给请求者。方法2190在步骤2103之后结束。
参考图22,其中根据本发明的示例性实施例示出了用于执行刷新资源请求的方法2290。方法2290可以被示例性地使用伪代码命名为PEMC.refreshResources(rm,res[],all)。输入参数指定了要使用的资源管理器、一个或多个将被刷新的资源以及一个指示所有资源是否正在被刷新的值。方法2290被资源管理器(例如,resManager 707)用于刷新资源信息。
第一个步骤(步骤2200)是将资源管理器(例如,rm)与其中一个被支持的资源管理器(例如,resManagers[i])进行匹配。步骤2201开始一个为每个调度器(例如,schedulers[i])执行的循环,并且该循环在步骤2217结束。因此,对于每个调度器,步骤2201-2217被执行。在步骤2202中,将创建资源的空列表(saveRes)。步骤2203开始一个为每个资源res[j]执行的循环,并且该循环在步骤2206结束。在步骤2204中,判定资源是否由此调度器来管理,使用伪代码,这可以被编写为“res[j].scheduler=schedulers[i]?”。如果否(步骤2204=否),循环2203-2206以下一个资源(如果有)继续。如果是(步骤2204=是),则资源被添加到列表saveRes。
在步骤2207中,检查所有资源是否正在被刷新。如果是(步骤2207=是),则在步骤2214中,在资源的调度器列表中删除用于此资源管理器的所有资源。使用伪代码,这可以被编写为删除schedulers[i].res中的所有资源,其中schedulers[i].rm=rm。然后在步骤2215中,将新的资源信息添加到调度器。使用伪代码,步骤2215可以被编写为“将saveRes添加到schedulers[i].res”。最后,在步骤2216中,使用此调度器的资源列表以及值TRUE来调用关联的调度系统模型转换器和适配器的refreshResources方法。使用伪代码,这可以被编写为schedulers[i].modelTransformer.refreshResources(schedulers[i].res,TRUE)。
如果在步骤2207中为否,则步骤2208开始一个为由此调度器管理的每个资源执行的循环,并且该循环在步骤2212结束。在步骤2209中,判定此资源是否已在由该调度器管理的资源的列表中。使用伪代码,这可以被编写为saveRes[j]在schedulers[i].res中。如果是(步骤2209=是),则在步骤2211中更新资源信息。否则(步骤2209=否),在步骤2210中将资源信息添加到由调度器保存的列表。最后,在步骤2213中,使用此调度器的资源列表以及值FALSE来调用关联的调度系统模型转换器和适配器的refreshResources方法。使用伪代码,这可以被编写为schedulers[i].adapter.refreshResources(schedulers[i].saveRes,FALSE)。
一旦为所有被支持的调度器完成了步骤2201-2217,将为所有资源重新生成资源映射(例如,resMap 711)。这发生在步骤2218。在步骤2219中,如果资源刷新完成或者资源刷新未完成,则分别返回0(例如,成功)或1(例如,不成功)。方法2290在步骤2219之后结束。
参考图23,其中根据本发明的示例性实施例示出了用于请求重写调度的方法2390。方法2390可以被使用伪代码示例性地命名为overrideSchedule(sch,override[])。输入参数指定了调度器和一个或多个重写。方法2390被资源管理器(例如,resManagers 707)用于请求过程执行管理器控制器705重写调度器所做的一个或多个资源指派。
第一个步骤(步骤2300)是将调度系统sch与其中一个被支持的调度器schedulers[i]进行匹配。下一个步骤(步骤2301)是在诸如图5的存储514之类的存储中记录重写信息。在步骤2302中,过程执行管理器控制器705使用重写信息来调用关联的调度系统模型转换器和适配器的overrideSchedule方法。使用伪代码,这可以被编写为schedulers[i].modelTransformer.overrideSchedule(override)。方法2390在步骤2302之后结束。
现在转到图24,其中根据本发明的示例性实施例示出了用于请求处理事件的方法2490。方法2490可以使用伪代码被示例性地命名为wfSystems[i].adapter.mon.handleEvent(wfEvent)。输入参数指定了将被处理的事件。WFMS(示例性地,工作流适配器)使用方法2490来将过程实例执行的进度通知给过程执行管理器控制器705中的适合的监视器。
第一个步骤(2400)是确定与指定的过程实例ID(wfEvent.piID)对应的作业ID(jobID)。步骤2401开始一个为每个调度器sch[i]执行的循环,该循环在步骤2405结束。因此,对于每个调度器,步骤2401-2405都被执行。在步骤2402中,判定该作业ID(jobID)是否正在被该调度器来调度。使用伪代码,这可以被编写为“jobID在schedulers[i].jobs中?”。
如果是(步骤2402=是),则在步骤2403中更新状态(例如,schedulers[i].jobs(jobID)=wfEvent.status)。在步骤2404中,使用事件的详细信息来调用适合的调度器模型转换器和适配器的handleEvent方法。这可以使用伪代码编写如下schedulers[i].modelTransformer.handleEvent(wfEvent)。如果步骤2402为否,则在步骤2405中选择另一个调度器并在步骤2402中继续方法2490。
一旦已经检查了所有调度器,在步骤2405中,判定事件是否指示过程实例的结束。如果否(步骤2406=否),则方法2490结束。如果是(步骤2406=是),则在步骤2407中,使用此过程实例(例如,由piID定义)的状态(例如,“完成”)来更新诸如图5的存储511之类的存储。在步骤2408中,判定过程执行管理器控制器705(例如,PEMC)是否启动了此过程实例。如果是(步骤2408=是),则在步骤2409中,将过程实例的结束通知请求者并且将任何输出(如果需要)传送给请求者。如果否(步骤2408=否),则方法2490结束。
应当理解,此处示出和描述的实施例和变型只是本发明原理的示例,本领域的技术人员可以实现各种修改而不偏离本发明的范围和精神。
权利要求
1.一种用于在数据处理系统上管理过程执行的方法,所述数据处理系统包括一个或多个过程实例,每个过程实例都是相应过程的执行,每个过程实例包括一个或多个活动实例,所述方法包括以下步骤为所述一个或多个过程实例、所述一个或多个活动实例,或所述一个或多个过程实例以及所述一个或多个活动实例两者确定一个或多个业务影响;以及通过将资源分配给活动实例来管理所述活动实例的执行顺序,以便实现根据所述一个或多个业务影响来定义的目标。
2.根据权利要求1的方法,还包括以下步骤接收一个或多个执行一个或多个过程的请求;以及对于所述一个或多个请求中的一个给定请求,对与所述给定请求关联的一个或多个第一业务影响执行指派、更新、聚合以及加权中的一个或多个操作,以便创建与所述给定请求关联的一个或多个第二业务影响,所述给定请求用于执行给定的过程;以及修改给定的请求以创建修改的请求,所述修改的请求用于执行所述给定的过程或另一个过程;以及其中所述管理步骤还包括管理未修改的请求和任何修改的请求的步骤。
3.根据权利要求2的方法,其中所述执行步骤还包括以改进所述过程实例的执行的成本和效率的方式,对与所述给定请求关联的所述一个或多个第一业务影响执行指派、更新、聚合以及加权中的一个或多个操作,以便创建与所述给定请求关联的所述一个或多个第二业务影响的步骤,所述成本和效率由组织设定的一个或多个准则来确定。
4.根据权利要求1的方法,其中所述一个或多个过程实例包括多个过程实例;以及所述数据处理系统包括一个或多个工作流管理系统(WFMS),每个WFMS包括所述多个过程实例中的至少一个过程实例。
5.根据权利要求1的方法,其中一个给定活动实例对应于一个活动,所述活动实例将由组织来执行,所述组织控制将执行所述活动的资源,但是其中所述组织并不控制所述数据处理系统。
6.根据权利要求1的方法,其中所述数据处理系统中的给定过程的范围是从简单的任务列表到复杂的任务图形。
7.根据权利要求1的方法,其中所述数据处理系统中的给定过程可以是完全自动的或部分自动的。
8.根据权利要求1的方法,其中所述一个或多个活动实例以及所述一个或多个活动实例中的一些活动实例在过程实例中的相对执行顺序由一个或多个工作流过程模型来描述;以及所述管理步骤还包括通过将资源分配给活动实例来管理活动实例的执行顺序的步骤,以便在实现目标的同时满足所述一个或多个工作流过程模型的一个或多个约束,以及从一个或多个资源管理器进行重写。
9.根据权利要求1的方法,其中将被执行的给定活动实例可能需要零个、一个或多个资源。
10.根据权利要求1的方法,其中所述一个或多个业务影响中的一个给定业务影响包括简单的优先级、效用函数、阶梯函数以及随时间变化的成本函数中的一个或多个。
11.根据权利要求1的方法,其中所述目标由目标函数或指向所述目标函数的指针来定义。
12.根据权利要求1的方法,其中资源包括但不限于以下各项之一人、软件代理、硬件、许可或它们的组合。
13.一种用于管理过程执行的数据处理系统,所述数据处理系统包括存储器,所述存储器存储计算机可读代码、一个或多个过程实例以及一个或多个活动实例,其中所述一个或多个过程实例中的每个过程实例都是相应过程的执行,每个过程实例包括一个或多个活动实例;以及处理器,所述处理器在操作上被连接到所述存储器,所述处理器被配置成实现所述计算机可读代码,所述计算机可读代码被配置成执行以下步骤为所述一个或多个过程实例、所述一个或多个活动实例,或所述一个或多个过程实例以及所述一个或多个活动实例两者确定一个或多个业务影响;以及通过将资源分配给活动实例来管理所述活动实例的执行顺序,以便实现根据所述一个或多个业务影响来定义的目标。
14.一种用于在数据处理系统上管理执行一个或多个过程的请求的方法,所述方法包括以下步骤接收一个或多个执行所述一个或多个过程的请求;以及对于所述一个或多个请求中的一个给定请求,对与所述给定请求关联的一个或多个第一业务影响执行指派、更新、聚合以及加权中的一个或多个操作,以便创建与所述给定请求关联的一个或多个第二业务影响,所述给定请求用于执行给定的过程;以及修改给定的请求以创建修改的请求,所述修改的请求用于执行所述给定的过程或另一个过程;以及管理未修改的请求和任何修改的请求以便执行与所述未修改的请求和修改的请求对应的过程。
15.根据权利要求14的方法,其中所述数据处理系统还包括一个或多个过程实例,每个过程实例都是相应过程的执行,每个过程实例包括一个或多个活动实例;以及所述管理步骤还包括通过将资源分配给活动实例来管理所述活动实例的执行顺序的步骤,以便实现根据所述一个或多个第二业务影响来定义的目标。
16.根据权利要求14的方法,其中所述方法还包括使用一个或多个预定的准则来判定所述给定过程的目标与对应于第一请求的第一过程的目标相同的步骤;并且所述修改步骤还包括将所述给定请求更改为所述修改的请求的步骤,所述修改的请求用于执行所述第一过程。
17.根据权利要求16的方法,其中所述执行步骤还包括对与所述给定请求关联的一个或多个第一业务影响执行指派、更新、聚合以及加权中的一个或多个操作以便创建所述一个或多个第二业务影响的步骤;以及所述修改步骤还包括将所述一个或多个第二业务影响与所述修改的请求关联的步骤。
18.根据权利要求14的方法,其中所述执行步骤还包括对与所述给定请求关联的一个或多个第一业务影响执行指派、更新、聚合以及加权中的一个或多个操作以便创建与所述给定请求关联的一个或多个第二业务影响的步骤,其中所述指派操作指派与所述给定请求关联的一个或多个默认业务影响以创建所述一个或多个第二业务影响。
19.根据权利要求14的方法,其中所述方法还包括以下步骤接收所述给定请求以及至少一个其他请求;以及使用一个或多个程序来判定所述给定请求和所述至少一个其他请求是相关的;以及所述修改步骤还包括将所述相关的请求组合成所述修改的请求的步骤。
20.根据权利要求19的方法,其中所述一个或多个程序中的一个给定程序由组织来定义。
21.根据权利要求19的方法,其中每个所述给定请求以及所述至少一个其他请求都包括执行所述给定过程的请求。
22.根据权利要求19的方法,其中所述执行步骤还包括对与所述给定请求和所述至少一个其他请求关联的一个或多个第一业务影响执行指派、更新、聚合以及加权中的一个或多个操作以便创建与所述给定请求关联的一个或多个第二业务影响的步骤;以及所述组合所述相关请求的步骤还包括将所述一个或多个第二业务影响与所述修改的请求关联的步骤。
23.一种用于管理执行一个或多个过程的请求的数据处理系统,所述系统包括存储器,所述存储器存储计算机可读代码;以及处理器,所述处理器在操作上被连接到所述存储器,所述处理器被配置成实现所述计算机可读代码,所述计算机可读代码被配置成执行以下步骤接收一个或多个执行所述一个或多个过程的请求;以及对于所述一个或多个请求中的一个给定请求,对与所述给定请求关联的一个或多个第一业务影响执行指派、更新、聚合以及加权中的一个或多个操作,以便创建与所述给定请求关联的一个或多个第二业务影响,所述给定请求用于执行给定的过程;以及修改给定的请求以创建修改的请求,所述修改的请求用于执行所述给定的过程或另一个过程;以及管理未修改的请求和任何修改的请求以便执行与所述未修改的请求和修改的请求对应的过程。
全文摘要
一种在数据处理系统上管理过程执行的技术。该数据处理系统包括过程实例,每个过程实例都是相应过程的执行。每个过程实例包括活动实例。为所述过程实例、活动实例或两者确定业务影响。通过将资源分配给活动实例来管理所述活动实例的执行顺序,以便实现根据所述业务影响来定义的目标。在另一个实施例中,接收执行所述过程的请求。对于给定请求,对与所述给定请求关联的第一业务影响执行指派、更新、聚合以及加权操作中的一个或多个操作,以便创建与所述给定请求关联的第二业务影响。此外,请求可以被修改。修改可以包括更改请求的过程或过程输入(如果认为适当),将相关请求组合成单个请求或同时包括这二者。未修改的请求和任何修改的请求被管理。
文档编号G06F9/46GK1783123SQ200510109248
公开日2006年6月7日 申请日期2005年10月17日 优先权日2004年10月18日
发明者M·J·布科, J·K·沙尔, R·N·长, G·D·H·亨特, L·Z·卢安, C·沃德 申请人:国际商业机器公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1