IBM®
跳转到主要内容
    中国 [选择]    使用条款
 
 
Select a scope:Search for:    
    首页    产品    服务与解决方案     支持与下载    个性化服务    
跳转到主要内容

developerWorks 中国  >  WebSphere  >

理解 WebSphere MQ Workflow 和 WAS 企业流程策划器如何进行互操作

developerWorks
文档选项

未显示需要 JavaScript 的文档选项


级别: 初级

Kurt Lind (klind@de.ibm.com), , Process Choreographer 的开发组
Friedemann Schwenkreis (fschwenk@de.ibm.com), , Process Choreographer 的开发组

2003 年 12 月 01 日

使用跨越 MQ Workflow 和 Process Choreographer 的业务流程,可以利用两种产品的优势,容许从 MQ Workfolow 到 Process Process Choreographer 的平滑、阶段性的移植。本文提供了 MQ Workflow 和 Process Choreographer 的概述,然后描述了这两种产品之间的互操作性。本文的对象是应用程序开发人员以及商业解决方案的架构设计师。

1. 引言

为什么需要 WebSphere MQ WorkFlow 和 WebSphere Application Server 企业流程策划器 之间的互操作性?在表面来看,两种产品都提供了一个灵活的架构来执行业务流程,它们看起来功能一样。然而,这两种产品都有各自的强项,所以组合使用将很有益处。

使用跨 MQ Workflow 和 Process Choreographer 的业务流程,可以利用两种产品的优势,容许从 MQ Workfolow 到 Process Process Choreographer 的平滑、阶段性的移植。

例如,如果业务流程的一部分需要与 Java 应用程序、EJB 或者 Web 服务进行频繁的交互,那么您就需要在 MQ Workflow 业务流程中将这一部分建模为 Process Choreographer 子流程。这样会有一些好处,能够在 WebSphere Studio Application Developer Integration Edition 中利用对交互建模的构建支持,利用对 EJB 调用的事务支持,使用 EJB 或者 JMS 绑定调用 Web 服务的事务性支持。如果您要将一些活动建模为一个不中断 Process Choregrapher 流程的一部分,您也可以减少所需要的事务的数目。

将 Process Choreographer 建模为 MQ Workflow 主流程的子流程,这意味着您可以使用 MQ Workflow 监视工具以及 Process Choreographer。

为了能在 Process Choreographer 中重用现有的 MQ Workflow 流程,您可以在新建的 Process Choreographer 流程中将它们建模为子流程。这样的话,您就可以避免将这些流程移植到 Process Choregrapher 基线中。

本文提供了 MQ Workflow 和 Process Choreographer 的概述,然后描述了这两种产品之间的互操作性。本文的阅读对象是应用程序开发人员以及商业解决方案的架构设计师。

2. MQ Workflow 概述

MQ Workflow 包括了多个通过 WebSphere MQ 队列通信的服务器组件。用于互操作性的最重要的服务器组件是执行服务器。执行服务器负责启动和导航业务流程。另外,它是任何服务的客户端,这些服务用来执行每一个业务流程。

通过将相关信息植入运行时数据库,执行服务器可以得到关于业务流程、基础架构和参与人员的信息。这需要导入一个流程定义语言(process-definition-language, FDL)文件,通常使用工具来将 FDL 定义翻译为运行期数据库中的实体。通常,在 MQ Workflow 构建期就生成这些 FDL 文件。然而,因为 FDL 描述是公共的,也可以通过其他方法来生成 FDL 文件。

2.1 MQ Workflow 接口

执行服务器的通信接口是发送给 WebSphere MQ 队列的消息。执行服务器可以处理下列消息格式:

  • SDDS

    由客户端 API 生成的 MQ Workflow 消息的内部(专有)格式。

  • XML

    SDDS消息的一个子集是采用 XML 格式。这些 XML 消息作为有效 MQ 消息发送。MQ 消息包含了附加的消息头,例如 JMS 消息头。因此,如果您使用 WebSphere MQ 的 JMS 实现,您可以从 JMS 客户端调用执行服务器。

执行服务器接收到调用特定功能的 XML 消息,它使用 XML 来调用 UPES(user-defined program execution servers,用户自定义程序执行服务器)。因此,XML 消息适用于和非 MQ Workflow 组件的互操作性。

3. Choreographer 概述

Process Choreographer 是一个业务流程引擎,运行高效的执行业务流程。业务流程的类型非常广泛,包括 Web 服务导航和业务事务支持。业务流程可以是自动的、可恢复的流程,或者是需要人为交互的流程。使用 Process Choreographer,您可以将业务流程技术和 J2EE 开放标准所提供的其他服务结合起来。

3.1 Process Choreographer 体系结构

Process Choreographer 将一个业务流程容器添加到 WebSphere Application Server 中,该容器也称为业务流程引擎。有了业务流程容器,在应用服务器中可以无缝的管理和高效的执行各种类型的流程。业务流程也部署为 EAR (企业归档)文件,可以使用 WebSphere Application Server 管理控制台来配置和控制。

图 1 显示了 Process Choreographer 体系结构的概要图。

本图概要的显示 Process Choreographer 的体系结构

图 1. Process Choreographer 体系结构

流程引擎是 Process Choreographer 的主要容器。它负责执行业务流程,它包括了导航器、工厂和工作条目管理器,以及多个领域的插件:

  • 导航器。管理流程实例的状态转变和它们的活动。它也管理这些插件,并且在需要委托一个任务的时候调用它们。
  • 工厂(Factory)。管理这些代表了业务流程的对象的状态。对于不可中断的流程,它允许在内存中暂时保存数据;对于可中断流程,可以在数据库中持久保存数据。
  • 工作条目管理器(Work item manager)。管理人员分配和关联查询。
  • 插件(Plug-ins)。导航器依赖于这些插件提供的功能,这些功能是业务流程状态机没有提供的。这些插件用来作为连接其他组件和系统的桥梁。

Process Choreographer 的功能作为 API 的形式提供给外部系统,同步的 RPC 形式的 EJB 程序和异步的 JMS 形式的程序都可以使用这些 API 。

Web 客户端可以使用基于浏览器的图形用户界面,基于 JSP(Java Server Pages)技术。它给用户提供一系列的工作列表,包含了工作条目,用户可以执行查询,查看消息信息,或者执行一些操作。 Web 客户端通过 API 和流程引擎交互。

除了在图 1 中显示的组件,还有 部署组件管理控制台。部署组件用来安装包含了流程的 EAR 文件,而管理控制台可以控制业务流程容器资源。

要进一步了解 Process Choreographer 体系结构,可以参阅 WebSphere Application Server Enterprise Process Choreographer - Concepts and Architecture白皮书。

3.2 Process Choreographer 接口

Process Choreographer 提供两种主要的接口:

  • Process Choreographer API 为客户端提供了访问引擎的途径。

    Process Choreographer 基本功能是通过 API 提供给外部系统的。EJB 能够以异步的 RPC 形式 API 来访问它们,MDB(Mssage Driven Bean) 也可以通过 JMS 来访问这些异步的消息形式 API 。可以为每个业务流程生成特定的 JEB 或者可选的 MDB ,提供对它的直接的、类型安全的访问。它们也称为“facade”(参考了 facade 设计模式)。

  • 插件允许您使用额外的功能,来扩展引擎基本功能。

    流程引擎使用插件来将任务委托给外部系统。委托给插件的功能包括了对流程数据的处理、对元素操作(活动)的调用、人员支持,以及在审核追踪中保存更改。

本文中只详细描述那些用于互操作的接口:通过 facade MDB 调用的异步 API、通过 WSIF(Web Services Invocation Framework, Web 服务调用框架)调用的 WSDL(Web Services Definition Language、Web 服务描述语言)调用插件。

3.2.1 Process Choreographer facade MDB

这种静态 MDB API 支持消息类型 call(同步过程调用)、 initiate(异步过程调用)、 sendEventforceTerminate

一个 facade MDB 允许您按照在构建期间定制的格式,发送 JMS 消息给指定的队列。 MDB 消息的接收者隐式的调用相关联的流程。完成流程后,响应消息发送回 reply-to 队列,该队列在请求中已经指定了。

例如,生成的 facade MDB 接收类型 PurchaseOrder的导入消息,调用和它相关联的流程模板的一个新建实例,传递这些输入消息。在完成流程后,将流程执行的结果返回给 reply-to 队列,返回结果是 DeliveryData类型的。

3.2.2 WSDL 调用插件

在 Process Choreographer 的?一个元素操作都有一个或者多个相关联的实现,描述在运行期间调用的操作。这些调用插件管理相关联的实现,也就是说,它选择正确的实现,提供输入数据,调用其实现,处理它的输出数据和可能的错误。

调用插件体系结构支持同步(RPC 形式)和异步(JMS 形式)的操作调用。

异步调用可以调用 MQ Workflow 流程。对插件的调用接收这个操作的输入,然后,插件将子流程请求作为一个异步消息。插件返回正确的 ID 给流程引擎,将调用的操作状态设置为运行中。引擎然后可以继续导航到并行的流程分支。在流程引擎的输入队列中接收到对该请求的响应消息时,响应会传递到调用插件的另外一个方法,这个调用插件获取调用结果,将它们再返回给流程引擎。引擎将操作的状态设置为“已经完成”,并且继续导航。

WSDL 调用插件为 Process Choreographer 提供了默认的调用机制。它使用 WSIF 来实现 WSDL 文档描述的服务调用。 WSIF 使用 WSDL 扩展,支持多种绑定,例如 SOAP (Simple Object Access Protocol ,简单对象访问协议),EJB 和 JMS 。在本文中讲述的互操作性使用了 JMS 绑定。

使用 JMS 绑定,可以通过 JMS 消息调用异步的操作。操作的参数编组(marshall)为 JMS 消息,然后发送给操作输入队列。处理请求之后,使用另外一个 JMS 消息来返回操作响应。该 JMS 可以被其他流程解组(unmarshall)和使用。

本互操作性案例中使用 TextMessage类型的 JMS 消息。也就是说, MQ Workflow XML 消息发送为文本字符串,发送到 MQ Workflow 执行服务器,调用远程服务。执行服务器将响应消息返回给 Process Choreographer 引擎的内部 MDB。

4. 如何进行互操作

MQ Workflow 和 Process Choreographer 之间的互操作是双向的。根据 WebSphere Studio 编程范式,建议在建模 Process Choreographer 流程之前,定义 MQ Workflow 流程和活动。这样的话,可以确保 MQ Workflow 和 Process Choreographer 流程模型中的消息定义是对等的。

4.1 从 MQ Workflow 流程中调用 Process Choreographer 流程

4.1.1 流程建模

首先假定:已经在头脑中设计好了 MQ Workflow 调用的 Process Choreographer 流程。因此,本案例中从定义 MQ Workflow 流程开始。操作之一 ( InteropAct) 将调用一个 Process Choreographer 流程。这个操作定义为一个自动的操作,使用 UPES 定义指向一个 WebSphere MQ 队列。另外,您必须定义一个程序,在该程序中定义输入和输出数据的结构,以及要调用的 Process Choreographer 流程的?称。

图 2 显示了如何为互操作的业务流程建模。

本图显示了如何在 MQ Workflow 中为和 Process Choreographer 互操作的流程建模

图2. 在 MQ Workflow 中对和 Process Choreographer 互操作的流程建模

在转换步骤中,操作的定义可以用来生成 WSDL 文件,通过该文件定义 Process Choreographer 业务流程的输入和输出消息的结构。 WSDL 文件必须导入到 WebSphere Studio Application Developer Integration Edition 中,生成相应的对象来代表这些消息。

在创建 Process Choreographer 流程之后,必须定义一个 facase MDB 。 facase MDB 的重要属性是 ListenerPort ,它必须指向 MQ Workflow 流程的 UPES 定义所使用的队列。

执行

图 3 显示了如何在 MQ Workflow 运行时期中启动一个 Process Choreographer 流程。在执行 MQ Workflow 流程,并且启动 InteropActivity操作之后,执行服务器发送一个 XML 消息,采用 MQ Workflow ActivityImplInvoke消息格式,发送到 Process Choreographer facade MDB 的监听队列。

本图显示了如何从 MQ Workflow 流程中调用 Process Choreographer 流程

图3. 从 MQ Workflow 流程中调用 Process Choreographer 流程

facade MDB 读取 JMS 消息,提取有效信息,并将它转换为 Process Choreographer 消息对象的格式。然后,使用 Java 消息对象作为参数来调用流程。

在 Process Choreographer 流程完成之后,输出消息将传递给 facase MDB ,使用 MQ Workflow ActivityImplInvokeResponseXML 消息格式,将它转换为一个 JMS 消息。

Process Choreographer 将这个响应消息发送给 MQ Workflow 执行服务器的输入队列。 MQ Workflow 引擎继续在业务流程中导航。因为队列中的所有消息都是在事务的保护下,完整的执行将受到事务链的保护。

4.2 从 Process Choreographer 流程中调用 MQ Workflow 流程

4.2.1 流程建模

要让 Process Choreographer 可以使用 MQ Workflow 流程,您必须从 MQ Workflow 构建时期中导出流程实例,如图 2 所示。导出步骤生成一个 WSDL 定义,包含了消息格式和调用 MQ Workflow 引擎的 JMS 绑定。在 Process Choreographer 中定义了流程之后,您可以把生成的 WSDL 文件,导入到 WebSphere Studio Application Developer Integration Edition 中,用来定义操作。

执行

图 4 显示了如何在 Process Choreographer 运行期间启动 MQ Workflow 流程。在执行 Process Choreographer 流程,并且启动 InteropActivity操作之后, WSDL 调用插件就会把 Process Choreographer 消息对象转换为 XML 消息,该 XML 消息遵循 MQ Workflow ProcessTemplateExecute消息的格式。随后,会把 XML 消息发送到 MQ Workflow 执行服务器的输入队列。

本图显示了如何从 Process Choreographer 流程中调用 MQ Workflow 流程

图4. 从 Process Choreographer 流程中调用 MQ Workflow 流程

MQ Workflow 执行服务器执行这个流程,返回一个 XML 消息,该消息的格式遵循 MQ Workflow ProcessTemplateExecuteResponse格式。这些消息发送到了请求消息中定义的响应队列中,也就是 Process Choreographer 引擎的内部 MDB 队列。

Process Choreographer 接收这个响应,WSDL 调用插件将它转换称为 Process Choreographer 消息对象。然后继续进行 Process Choreographer 流程导航。

整个执行过程都受到事务链的保护。

相关信息

Matthias Kloppmann, Gerhard Pfau. WAS 企业流程策划器 - 概念和体系结构

IBM WebSphere MQ Workflow Concepts and Architecture, GH12-6285.

IBM WebSphere MQ Workflow Getting Started with Buildtime, GH12-6286.



作者简介

这个白皮书的作者是 Kurt Lind mailto:klind@de.ibm.com 和 Friedemann Schwenkreis mailto:fschwenk@de.ibm.com。他们都在 Process Choreographer 的开发组工作。


这个白皮书的作者是 Kurt Lind mailto:klind@de.ibm.com 和 Friedemann Schwenkreis mailto:fschwenk@de.ibm.com。他们都在 Process Choreographer 的开发组工作。




对本文的评价

太差! (1)
需提高 (2)
一般;尚可 (3)
好文章 (4)
真棒!(5)

建议?




回页首


IBM 公司保留在 developerWorks 网站上发表的内容的著作权。未经IBM公司或原始作者的书面明确许可,请勿转载。如果您希望转载,请通过 提交转载请求表单 联系我们的编辑团队。
    关于 IBM 隐私条约 联系 IBM 使用条款