业务流程: 学习 BPEL4WS,第 4 部分用 BPWS4J 编辑器创建流程

来源:百度文库 编辑:神马文学网 时间:2024/03/28 17:10:52
使用 BPEL4WS 的业务流程: 学习 BPEL4WS,第 4 部分
用 BPWS4J 编辑器创建流程

文档选项

将此页作为电子邮件发送

最新推荐

Java 应用开发源动力 - 下载免费软件,快速启动开发
级别: 初级
Nirmal Mukhi, 软件工程师, IBM
2002 年 11 月 01 日
BPWS4J 是 BPEL4WS 规范的一个实现,它包括一个运行时引擎以及一个用于创建 BPEL4WS 流程的编辑器(它是一个 Eclipse 插件)。Nirmal 在本文中描述了创建 BPEL4WS 流程的设计方式,还描述了如何使用 BPWS4J 编辑器来创建、修改和验证这些流程。
用于 Java 的 Web 服务中的业务流程(Business Processes in Web Services for Java,BPWS4J)软件包提供了一个运行时引擎实现,该实现支持 Web 服务的业务流程执行语言(Business Process Execution Language for Web Services,BPEL4WS)规范,这个规范定义了 Web 服务的工作流和业务流程。这个软件包于 8 月份在 alphaWorks 上发行,它提供了一个运行时引擎以及一个用于创建流的工作流编辑工具。本文着重讨论一个简单的回送流程的实现练习,在该流程流中,一个流程接收消息,另一方将一份完全相同的消息副本反射回到发送方。
在本文中,我将假设您熟悉 Eclipse 项目并且熟悉基本 Eclipse 环境的使用。本文解释了用于 Eclipse 的 BPWS4J 功能。
把粗略的概念流程转变成其有效的 BPEL4WS 表达式,有两种显而易见的方式: 自底向上(bottom-up)方式:采用这种方式,您从基本活动入手,然后发展成宏观层次(macro-level)的流程,在进行过程中添加结构、链接以及其他数据。回送流程将包括两个基本任务 ― 通过 receive 活动接收一条消息以及通过 reply 活动向发送方作出应答。您需要添加某种结构,因为您必然要求应答跟在响应后面 ― 它们要按顺序执行,否则对流程是没什么意义的。这意味着您需要进行排序,您可以使用 sequence 活动实施排序。在自底向上方式中,您先通过创建基本活动来定义流程,然后再将活动添加到 sequence 中。BPWS 编辑器为此提供了某种支持,使您能够用结构化活动包装基本活动。因此,例如,您可以创建 receive 活动,然后将它包装在一个 sequence 中。 自顶向下(top-down)方式:另一种看待事物的方式是从外部入手,然后深入到基本任务。对于这个回送流程,您需要让有些步骤按照一定的顺序执行,所以,您添加一个 sequence 作为顶层活动,然后再将 receive 和 reply 植入 sequence 。BPWS4J 编辑器同样允许您采用这种方式。
 
这里,很重要的一点是,完整的、可部署的 BPWS4J 运行时单元由以下部分组成: 描述流程的 BPEL4WS 文件 一个 WSDL 文件,它描述了流程定义(被称作 流程 WSDL)所引用的消息、操作、端口类型以及其他信息(服务链接类型、相关性属性等) 流程中包含的每个伙伴的 WSDL 定义,除非流程不使用伙伴所提供的任何 WSDL 操作
 
在上述这些部分当中,BPWS4J 编辑器允许您创建描述流程的 BPEL4WS 文件。要编辑部署 BPEL4WS 流程所需的 WSDL 文件,您可以使用其他工具。不过,这些工具将不支持 BPEL4WS 规范中已经提议的非标准的 WSDL 扩展(如服务链接、相关性属性等)。您将不得不手工添加那些定义;BPWS4J 中的样本应该足以指导您完成这一任务。
我将阐述 BPWS4J 编辑器是什么样子,还将阐述在开发回送流程示例的过程中如何使用它。
要使用 BPWS4J 编辑器,您将既需要来自 alphaWorks 的 BPWS4J 编辑器软件包,也需要来自 Eclipse.org Web 站点的 Eclipse 软件包。如果您没有 Eclipse 2.0,那么就应该从 Eclipse 站点(请参阅参考资料)下载它,然后安装该软件。
一旦您已经从 alphaWorks(请参阅参考资料)下载了 BPWS4J 编辑器软件包 ― 一个与 BPWS4J 运行时引擎分开的软件包,请将其内容解压缩(unzip)到 Eclipse 安装目录下。解压缩之后,您应该验证您有了一个名为 eclipse/plugins/com.ibm.cs.bpws.tools.bpwsbuilder的目录。然后,您应该启动 Eclipse 环境。




回页首
对于这个项目,您通过在 Eclipse 工作区中创建一个新项目着手。在 File菜单中单击 New,选择 BPWS作为文件类型。如果您在可用文件类型列表中没有看到该类型,那么您可能不得不单击 Other文件类型来查找它。一旦您这样做了,您应该参看图 1a中的抓屏来确定项目的文件名和位置;图 1a 中的抓屏还提供了流程名称(process name)的缺省值和名称空间(namespace)的缺省值。这一屏会转到如图 1b所示的下一个屏幕,它让您设置流程的顶层属性,如 Abstract process、 Suppress join faults、 Enable instance compensation和 Serializable container access;稍后我将解释这些属性。请确保您在选中了 Open this file for editing when done选项之后才单击 Finish。这应该会在您定义的位置中创建该文件并在 BPWS4J 编辑器中打开它。


接下来,您需要确保 Eclipse 的 BPWS 透视图是打开的;这个透视图将创建视图,这个视图和编辑器区域一起有助于您定义流程。在 Window菜单中选择 Open Perspective,然后选择 BPWS 透视图;和前面一样,您可能不得不单击 Other,从而确定 BPWS 是其中一个选项。这应该会在 Eclipse 中打开透视图。BPWS 透视图由 Editor、Navigator 视图、Outline 视图、Properties 视图和 Tasks 视图组成。接下来,我将对其中的每一个进行更详细的研究。




回页首
BPWS4J 编辑器是一个多页工具,其中一个页名为 Source 编辑器,它使您能够对正在定义的业务流程的原始 XML 进行编辑;另一个页名为 Process 编辑器,它是所涉及的流程的树视图。在新创建的文件中显示的是缺省流程编辑器树视图。单击位于编辑区域左下角的 Source选项卡,以切换到 Source 编辑器中的 XML 代码视图。处于 Source 编辑器中之后,您同样可以单击 Process选项卡以返回到树视图。
Process 编辑器(请参见图 2)是流程的树视图,所有的活动和能够包含活动的 BPEL4WS 元素在树中都以节点的形式被显示出来。例如, process 元素包含顶层活动,而 catchFault 元素包含另一个用来捕获 SOAP Fault 消息的活动。
对于新创建的流程,树将只有一个节点,即 process 元素。请注意,树视图不显示有关流程属性的信息,也不显示流程中定义的容器和伙伴。试图这么做将把树视图弄得一塌糊涂。相反,这些内容是在流程的 Outline视图和 Property视图中定义的。当您在树中选择一个流程节点时,您将看到它的属性出现在右边的 Property 视图中。这个示例的 Outline 视图当前只显示了流程;稍后,当您定义容器和伙伴时,它们将出现在 Outline 视图中的流程节点后。

Source 编辑器(请参见图 3)是一个简单的文本编辑工具,它使您能够编辑原始 XML。除非您熟谙 BPEL4WS 语法,否则手工编辑 XML 既易于出错也难以进行,所以,我建议您大多数情况下还是使用 Process 编辑器,当您需要填写详细的信息时,请切换到 Source 编辑器,这是因为在 Process 编辑器的属性框中操作很麻烦。

当您编辑信息时,Source 编辑器和 Process 编辑器是双向同步的。要对此进行测试,请试着在 Source 编辑器中更改流程的名称,然后单击 Process 编辑器检查它。您将看到树中的名称跟着改变了,当您单击流程节点时,已更新的名称也反映在 Property 视图中。现在,请使用 Property 视图修改流程的 Name 属性。当您返回到 Source 编辑器时,您将看到这个相同的属性在原始 XML 中也已经被修改了。
每当在 Source 编辑器中进行编辑时,您都要格外小心,确保没有引入任何语法错误。引入语法错误将会阻止有效的 BPWS 文件,还将 阻止您切换到 Process 编辑器。要进行演示,请删除原始 XML 中的 元素结尾处的 > 字符。这显然是无效的 XML。当您单击 Process 选项卡以切换编辑器时,您将获得一个要求您更正错误的对话框,它给出了有关错误原因的一些详细信息。一旦您将字符放回原处,就可以切换编辑器。




回页首
现在,您可以开始构建回送流程了。该流程定义的根节点是 process 元素,这是 BPEL4WS 的语法所要求的。为此,请添加一个 sequence 活动,它将成为回送流程所要求的最外层的结构元素。您可以通过工具栏添加这个活动,也可以通过 BPWS菜单添加这个活动。工具栏和菜单基本上由两组操作组成: 添加操作:这些操作向流程树中已经存在的一个节点添加一个节点;例如,您可以向一个 process 添加一个 scope 活动,或者向一个 flow 添加一个 while 活动。存在一些只能包含活动的活动节点和元素节点。因此,您不能通过工具栏或菜单向 process 元素添加 container 元素;将来,您可以在 process 元素的 Outline 视图中完成这个操作。 包装操作:这些操作使您能够将一个已经存在的节点包装在一个新节点中;例如,您可以将一个 sequence 包装在一个 scope 中,或者将一个 reply 包含在一个 flow 中。
 
现在,您可以继续前进,向 process 添加 sequence 元素。接下来,您应该向 sequence 添加 receive ,然后添加 reply 。如果您在任何地方犯了错误,您可以删除活动然后重新开始。您也可以通过工具栏或菜单访问 delete操作,该操作能够删除以所选择的节点为根节点的子树。
对于某种特定情形,并不是所有操作都有意义;例如, process 元素可以包含正好一个活动。因此,一旦您已经添加了 sequence ,那么菜单中的 add 操作对于该流程节点就被禁用了。然而,如果您选择 sequence 元素,则这些操作就又被启用了,这是因为一个 sequence 中可以包含无限个活动。BPWS4J 编辑器菜单因此是上下文敏感的且限制了可用的操作,这样,用户在创建流程时就可以少犯一些错误。




回页首
BPWS4J 编辑器中的 Outline 视图(请参见图 4)用于显示流程树中选择的节点的结构。这与 Eclipse 插件中的标准 Outline 视图形成了对比,后者中的 Outline 要求编辑器显示所有输入。将详细信息转到 Outline 视图中将使主 Process 树视图的条理更清晰些,这样设计师就可以将注意力集中在宏观层面(活动以及它们彼此之间的结构关系)上而不用担心细节问题。

针对回送流程,您有一个伙伴:发出回送消息的客户机。由于这条消息一到达就要被存放在容器中,所以我们的流程还需要定义一个容器。因为这条消息保持不变且流程中不涉及其他消息,所以一个容器就足够了。容器和伙伴都通过 outline 视图在 process 元素中进行定义。请在树中选择流程节点,现在,您应该能够使用 Outline 视图的工具栏在 Outline 视图上添加容器和伙伴。当您进行此操作时,您将看到 process 元素的 outline 随每个操作而更新。




回页首
您已经看到了如何使用主菜单和工具栏创建活动及其他结构元素,还看到了如何使用 Outline 视图定义额外的元素。剩下的就是针对每个元素填写其各个属性的详细信息。您可以使用 Property 视图(请参见图 5)来完成这一任务。

当您在 Process 树中或 Outline 视图上选择一个节点时,Property 视图就被更新以反映该特定元素的属性。这个视图列出了属性名称和值,并且允许您编辑这些值。在有些情况下,视图将向您提供可能的值的下拉列表;对于任何有可能减少由输入过失引入的错误的情况,视图都将向您提供这种下拉列表。当无法提供这种下拉列表时,您将被允许直接输入文本。
现在,请选择新定义的容器;该容器具有下面两个属性:容器名称和消息类型。您可以随意填写这些内容。请注意,消息类型必须是一个全限定名,位于窗口底部的 BPWS4J 编辑器的状态栏告诉您所要求的全限定名的格式;对于不符合所要求的格式的输入,消息类型将不会接受。这个消息类型必须与流程 WSDL 中所定义的消息类型一致。最后,请在流程节点的 Outline 视图中填写伙伴元素的属性,同样要确保此处的信息与流程 WSDL 一致。




回页首
BPWS4J 编辑器最有用的功能之一就是,它能够在创建流程的过程中检查流程的有效性。这是通过在 Task 视图(请参见图 6)中显示错误列表实现的。至此,在回送流程示例中,您已经创建了必需的活动、流程的容器并且标识了所涉及的伙伴。不过,您还没有填写 receive 活动和 reply 活动的属性。如果您切换到 Source 编辑器,您将看到 Task 视图已经用我们的流程的错误列表进行了更新。所有这些错误都与不完整的 receive 活动和 reply 活动规范有关。如果您在 Task 视图中单击一个特定的错误,则 Source 编辑器将突出显示存在错误的活动定义。每次您切换编辑器或者保存流程定义的时候,Task 视图都将随之更新。

尽管 Task 视图能够捕获许多常见错误,但 BPWS4J 编辑器是独立运行的,它并不知道流程 WSDL 文件的位置。因此,无法验证对 WSDL 信息(诸如消息、操作、端口类型、相关性属性或服务链接类型)的引用的有效性。




回页首
通过返回到流程编辑器并每次处理一个未完成的任务,您就可以完成流程定义。当您选择任务时,存在错误的节点将被突出显示。您可以单击该节点来查看它的属性,并更新属性数据来消除错误。一旦您完成了 receive 活动和 reply 活动的属性的输入,您的流程定义就完整了。
现在,您应该拥有了一个可以部署和运行的、有效的流程 WSDL 文件。在将来的一篇文章中,我们将对此作进一步的讨论。




回页首
您可以参阅本文在 developerWorks 全球站点上的英文原文.
请参加关于本文的讨论论坛。(您还可以单击文章顶部或底部的 讨论访问此论坛。)
请访问官方Eclipse 站点以获取更多关于 Eclipse 的信息。
请查阅使用 BPEL 的业务流程专栏系列中以前的专栏文章。
请从 alphaWorks 下载Web 服务的业务流程 Java 运行时(BPWS4J)。
请全面研读Web 服务的业务流程执行语言,版本 1.0规范。




回页首


Nirmal K. Mukhi 是 IBM T J Watson Research Laboratory 的 Component Systems Group 的一名软件工程师,从 2000 年 11 月起,他就一直在那里从事 Web 服务方面的研究。此前,Nirmal 是 Indiana University 的一名研究员和学生,1999 年 5 月他在该校获得了硕士学位。Nirmal 从事过很多工作,其中包括下列 Web 服务软件项目:WSDL4J、Web 服务调用框架(Web Services Invocation Framework,WSIF)、Web 服务网关(Web Services Gateway,WSGW)和 BPWS4J。您可以通过nmukhi@us.ibm.com 与他联系。
_xyz