具体实施方式
下面参照附图来说明本发明的实施例。应当注意,为了清楚的目的,附图和说明中省略了与本发明无关的、本领域普通技术人员已知的部件和处理的表示和描述。
图1是根据本发明一个实施例的流程执行系统100的框图。
如图1所示,流程执行系统100包含流程执行引擎101、流程请求处理设备102和服务请求处理设备103。
流程执行系统100可通过网络104与流程请求方(未示出)和服务提供方105相连。虽然这里以网络104作为例子,然而也可以使用其它能够在流程执行系统100和流程请求方、服务提供方之间进行消息通信的连接手段,包括但不限于有线/无线的网络、交换电路、分组链路等。
流程执行引擎101可以包括现有流程执行引擎的部件,以实现相似的功能。例如流程执行引擎101可以基于IBM公司的Websphere ProcessServer、ORACLE公司的Oracle BPEL Process Manager等等。
流程执行引擎101根据交互接口定义处理消息并根据流程定义执行流程的实例。例如,流程执行引擎101加载有定义流程执行流的流程定义。响应于接收到流程请求方的流程请求消息时,流程执行引擎101根据被请求流程的流程定义创建流程实例并执行。在流程实例执行期间,流程实例可以发出服务请求消息,以调用相应服务提供方提供的服务。流程执行引擎101通过消息与流程请求方和服务提供方进行交互。所进行的交互遵从预定的接口规范。可以通过为流程执行引擎101提供交互接口定义来指定接口规范。流程执行引擎101根据交互接口定义来确定如何解析所接收的消息,以及如何构成要发出的消息。以基于Web服务业务流程执行语言(BPEL4WS)标准的流程执行引擎为例,流程定义通过BPEL脚本文件来实现,交互接口定义通过Web服务描述语言(WSDL)文件来实现,而消息传送基于SOAP协议。
流程请求处理设备102向所接收的用于创建流程实例的流程请求消息添加唯一的实例标识,并提供给流程执行引擎。流程执行引擎101接收的流程请求消息和流程请求处理设备102接收的流程请求消息遵从不同的交互接口规范,即前者(称为扩展接口规范)可以包括后者的接口参数和附加的接口参数(在本实施例中为实例标识),使得在保持与外部的交互接口固定的同时,能够对流程执行引擎101的交互接口进行扩展。
例如,当流程请求方通过网络104向流程执行系统100请求执行流程时,流程请求处理设备102检测到来自流程请求方的流程请求消息,向流程请求消息添加为被请求流程的实例产生的唯一实例标识,以使流程请求消息符合扩展接口规范。实例标识可以由流程请求处理设备102来产生。
优选地,也可由与流程请求处理设备相连的外部设备(未示出)来产生。在这种情况下,流程请求处理设备102可通过向外部设备发送被请求的流程的标识(可从例如流程请求消息中得到)来请求实例标识。对于有多个流程执行系统的情况,由外部设备统一产生实例标识可保证实例标识的全局唯一。
可选地,在由流程请求处理设备102产生实例标识的情况下,流程请求处理设备102可以向外部设备输出所产生的实例标识和相应的流程标识,使得能够监视流程的实例的创建。
流程执行引擎101经由服务请求处理设备103向服务提供方发送服务请求消息。与前述类似地,流程执行引擎101传出的服务请求消息和服务请求处理设备103传出的服务请求消息遵从不同的交互接口规范,即前者(也称为扩展接口规范)可以包括后者的接口参数和附加的接口参数(在本实施例中为实例标识),使得在保持与外部的交互接口固定的同时,能够对流程执行引擎101的交互接口进行扩展。服务请求处理设备103清除流程执行引擎101用于向服务提供方请求服务的服务请求消息中的实例标识,以便传送给服务提供方。例如,当流程实例要发出服务请求消息以调用相应服务提供方提供的服务时,执行流程实例的流程执行引擎101根据扩展接口规范生成包含该流程实例的实例标识的服务请求消息,并将服务请求消息传送给服务请求处理设备103。由于和服务提供方的交互所基于的接口规范不包含实例标识,因此服务请求处理设备103除去服务请求消息中的实例标识以符合接口规范的要求。
这里,流程请求处理设备102和服务请求处理设备103在流程执行引擎101所基于的平台中耦合在流程执行引擎101和负责经由网络104进行通信的通信接口之间。可通过各种方式配置流程请求处理设备102和服务请求处理设备103,例如通过操作系统提供的接口配置消息协议层、通过钩住与消息接收和发送相关的事件来衔接、通过流程执行引擎101提供的接口来嵌入(例如作为插件),等等。就消息传送路径而言,不需要改变流程执行引擎101的设计。
流程执行引擎101包括提取装置111和生成装置112。
提取装装置111从来自流程请求处理设备102的流程请求消息中提取实例标识,并且在流程实例中存储所提取的实例标识。由于流程执行引擎101根据流程定义来创建流程实例并且执行该流程实例,因此可以在流程定义中添加限定提取装置111的处理逻辑的活动定义。这样,当流程执行引擎101执行流程实例时,在流程执行引擎101中提供了提取装置111。此外,可以在流程的流程定义中设置用于存储相应实例标识的变量,由提取装置111将提取的实例标识存储在该变量中。以基于BPEL的流程脚本文件为例,可以在每个文件中增加用于存储实例标识的全局变量,并且在每个“receive”和“pick”活动之后插入用于将传入的流程请求消息中的实例标识拷贝到全局变量的“assign”活动。
生成装置112响应于流程实例的服务请求,将相关实例标识拷贝到服务请求消息中。与提取装置111类似,可以在流程定义中添加限定生成装置112的处理逻辑的活动定义。类似地,当流程执行引擎101执行流程实例时,在流程执行引擎101中提供了生成装置112。例如,当要进行服务请求时,生成装置112将全局变量中的实例标识拷贝到服务请求消息中。以基于BPEL的流程脚本文件为例,可以在每个“invoke”和“reply”活动之后插入用于将相应实例标识拷贝到服务请求消息中指定位置的“assign”活动。
当服务请求处理设备103收到来自流程执行引擎101的服务请求消息时,除前面描述的处理之外,还输出服务请求消息中的实例标识,以便外部设备进行监视。
图2是根据本发明一个实施例的配置设备201的框图。
如图2所示,配置设备包括接口修改装置203和流程修改装置204。在完成配置之前,流程执行系统202的流程执行引擎205配置有交互接口定义和流程定义。如
接口修改装置203读取交互接口定义,在其中增加例如实例标识的附加接口参数,从而形成扩展交互接口定义。流程执行引擎205加载扩展交互接口定义,但流程请求方和服务提供方仍然通过基于原交互接口定义的消息与流程执行系统进行交互。
流程修改装置204在流程定义中,在获得流程请求消息的代码之后插入用于提供提取装置的活动定义,并且在向服务提供方发送服务请求消息的代码之前插入用于提供生成装置的活动定义。如前所述,以基于BPEL的流程脚本文件为例,可以在每个文件中增加用于存储实例标识的全局变量,在每个“receive”和“pick”活动之后插入用于将传入的流程请求消息中的实例标识拷贝到全局变量的“assign”活动,并且在每个“invoke”和“reply”活动之后插入用于将相应实例标识拷贝到服务请求消息中指定位置的“assign”活动。
可以看出,配置流程执行系统的方法包括:接口配置步骤,用于提供上述扩展交互接口定义;和流程修改步骤,用于在流程定义中,在获得流程请求消息的代码之后插入用于提供提取装置的活动定义,并且在向服务提供方发送服务请求消息的代码之前插入用于提供生成装置的活动定义,其中,所述流程定义用于控制流程执行引擎执行预定操作。
图3示出了根据本发明一个优选实施例的流程执行系统300的框图。
如图3所示,流程执行系统300包含流程执行引擎301、流程请求处理设备302和服务请求处理设备303。流程执行引擎301包括提取装置311和生成装置312。流程执行引擎301、服务请求处理设备303、提取装置311、生成装置312、网络304和服务提供方305分别与图1的流程执行引擎101、服务请求处理设备103、提取装置111、生成装置112、网络104和服务提供方105功能相同,因此不再重复说明。
流程请求处理设备302包括图1的流程请求处理设备102的功能,并且还向控制设备306输出流程请求消息中的被请求流程标识。作为响应,控制设备306生成唯一的实例标识,并且输入流程请求处理设备302以作为要添加的实例标识。可选地,可以由流程请求处理设备302生成要添加的实例标识,并且向控制设备306输出该实例标识和流程请求消息中的被请求流程标识。这样,可以更加完善对流程实例的执行进度的监视。
在进一步的优选实施例中,服务请求处理设备303可以在传送经过清除的服务请求消息到服务提供方之前输出实例标识到控制设备306。控制设备306根据调度策略确定是否继续相应流程实例的执行。如果继续,则向服务请求处理设备303发出指示。服务请求处理设备303响应于指示继续的输入,允许将经过清除的服务请求消息传送到服务提供方。
作为对前述实施例的进一步改进,流程执行引擎可以包括获得装置,其获得导致服务请求的流程实例的任务的任务标识。流程定义通过将任务衔接来定义流程。有关当前正执行的任务的信息有助于了解流程的执行进度,也有助于对执行进度进行更精细的控制。
例如,修改交互接口定义,在服务请求消息类型的接口中增加作为附加接口参数的任务标识。修改在流程定义中增加存储任务标识的全局变量,并且在每个任务的起始代码之前插入获得任务标识并存储在全局变量中,即用于提供所述获得装置的活动定义。任务标识可以在修改流程定义以提供获得装置时指定,例如任务编号,也可以是任务代码在流程定义中的位置等等,只要能够标识出任务。还修改用于提供生成装置的活动定义,使得生成装置在所生成的服务请求消息还添加相关任务、即导致该服务请求消息的任务的任务标识。相应地,服务请求处理设备还输出服务请求消息中的任务标识。
相应地,在图2所示的配置设备中,代码修改装置可以进一步在每个任务的起始代码之前插入用于提供获得装置的活动定义。
也可在流程执行引擎的处理逻辑中引入提取装置、生成装置和获得装置的功能。这种方式不需要或较少修改流程定义,但需要对流程执行引擎进行一定的修改。
优选地,在图3所示的实施例中,流程请求处理设备302或服务请求处理设备303可以响应流程实例的结束输出相应实例标识和结束指示。外部设备306因而能够对所收集的信息进行相应更新和管理。例如,可通过监视指示会话结束的消息、流程执行引擎提供的应用编程接口(API)等等来确定流程实例的结束。
应当注意,附加接口参数并不限于实例标识和任务标识。可以根据需要配置其它接口参数,并相应配置流程请求处理设备、服务消息处理设备、提取装置、生成装置,以进行相应的处理。
可以看出,本发明的实例不需要改变或较少地改变流程执行引擎101的本来设计。
图4是根据本发明一个实施例的流程执行方法的流程图。在该流程执行方法中,由流程执行引擎根据交互接口定义处理消息并根据流程定义执行流程的实例。对于所接收的用于创建流程实例的流程请求消息,在步骤400,向流程请求消息添加实例标识,并提供给流程执行引擎,其中实例标识是唯一的。响应于步骤400提供的流程请求消息,在步骤402,从流程请求消息中提取实例标识,并且在流程实例中存储所提取的实例标识。响应于流程实例的服务请求,在步骤404,将相关实例标识拷贝到服务请求消息中。对于步骤404产生的服务请求消息,在步骤406,清除所述服务请求消息中的实例标识,以传送给服务提供方,并且输出所清除的实例标识。
图5是根据本发明另一个实施例的流程执行方法的流程图。图5所示的方法中的步骤500、502和504分别与图4所示的步骤400、402和404相同,因此这里不再重复说明。在步骤506,清除在步骤504产生的服务请求消息中的实例标识,并且输出所清除的实例标识。在步骤508,作为对步骤506的输出的响应,由一个控制设备根据调度策略确定是否继续相应流程实例的执行。如果继续,则由控制设备提供指示继续的输入。在步骤510,响应于指示继续的输入,允许将经过清除的服务请求消息传送到服务提供方。
本发明的流程执行系统、配置设备和方法的实现环境如图6所示。
在图6中,中央处理单元(CPU)601根据只读存储器(ROM)602中存储的程序或从存储部分608加载到随机存取存储器(RAM)603的程序执行各种处理。在RAM 603中,也根据需要存储当CPU 601执行各种处理等等时所需的数据。
CPU 601、ROM 602和RAM 603经由总线604彼此连接。输入/输出接口605也连接到总线604。
下述部件连接到输入/输出接口605:输入部分606,包括键盘、鼠标等等;输出部分607,包括显示器,比如阴极射线管(CRT)、液晶显示器(LCD)等等,和扬声器等等;存储部分608,包括硬盘等等;和通信部分609,包括网络接口卡比如LAN卡、调制解调器等等。通信部分609经由网络比如因特网执行通信处理。
根据需要,驱动器610也连接到输入/输出接口605。可拆卸介质611比如磁盘、光盘、磁光盘、半导体存储器等等根据需要被安装在驱动器610上,使得从中读出的计算机程序根据需要被安装到存储部分608中。
在通过软件实现上述装置和处理的情况下,从网络比如因特网或存储介质比如可拆卸介质611安装构成软件的程序。
本领域的技术人员应当理解,这种存储介质不局限于图6所示的其中存储有程序、与设备相分离地分发以向用户提供程序的可拆卸介质611。可拆卸介质611的例子包含磁盘、光盘(包含光盘只读存储器(CD-ROM)和数字通用盘(DVD))、磁光盘(包含迷你盘(MD)和半导体存储器。或者,存储介质可以是ROM 602、存储部分608中包含的硬盘等等,其中存有程序,并且与包含它们的设备一起被分发给用户。
在前面的说明书中参照特定实施例描述了本发明。然而本领域的普通技术人员理解,在不偏离如权利要求书限定的本发明的范围的前提下可以进行各种修改和改变。