2002 年 11 月 01 日
用于 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 表达式,有两种显而易见的方式:
这里,很重要的一点是,完整的、可部署的 BPWS4J 运行时单元由以下部分组成:
在上述这些部分当中,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 编辑器中打开它。 图 1a. 创建一个新的 BPWS 项目 ![]() 图 1b. 创建一个新的 BPWS 项目 II ![]() 接下来,您需要确保 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 元素在树中都以节点的形式被显示出来。例如, 对于新创建的流程,树将只有一个节点,即 图 2. Process 视图 ![]() Source 编辑器(请参见 图 3)是一个简单的文本编辑工具,它使您能够编辑原始 XML。除非您熟谙 BPEL4WS 语法,否则手工编辑 XML 既易于出错也难以进行,所以,我建议您大多数情况下还是使用 Process 编辑器,当您需要填写详细的信息时,请切换到 Source 编辑器,这是因为在 Process 编辑器的属性框中操作很麻烦。 图 3. Source 视图 ![]() 当您编辑信息时,Source 编辑器和 Process 编辑器是双向同步的。要对此进行测试,请试着在 Source 编辑器中更改流程的名称,然后单击 Process 编辑器检查它。您将看到树中的名称跟着改变了,当您单击流程节点时,已更新的名称也反映在 Property 视图中。现在,请使用 Property 视图修改流程的 每当在 Source 编辑器中进行编辑时,您都要格外小心,确保没有引入任何语法错误。引入语法错误将会阻止有效的 BPWS 文件,还将 阻止您切换到 Process 编辑器。要进行演示,请删除原始 XML 中的
现在,您可以开始构建回送流程了。该流程定义的根节点是
现在,您可以继续前进,向 process 添加 对于某种特定情形,并不是所有操作都有意义;例如,
BPWS4J 编辑器中的 Outline 视图(请参见 图 4)用于显示流程树中选择的节点的结构。这与 Eclipse 插件中的标准 Outline 视图形成了对比,后者中的 Outline 要求编辑器显示所有输入。将详细信息转到 Outline 视图中将使主 Process 树视图的条理更清晰些,这样设计师就可以将注意力集中在宏观层面(活动以及它们彼此之间的结构关系)上而不用担心细节问题。 图 4. Outline 视图 ![]() 针对回送流程,您有一个伙伴:发出回送消息的客户机。由于这条消息一到达就要被存放在容器中,所以我们的流程还需要定义一个容器。因为这条消息保持不变且流程中不涉及其他消息,所以一个容器就足够了。容器和伙伴都通过 outline 视图在
您已经看到了如何使用主菜单和工具栏创建活动及其他结构元素,还看到了如何使用 Outline 视图定义额外的元素。剩下的就是针对每个元素填写其各个属性的详细信息。您可以使用 Property 视图(请参见 图 5)来完成这一任务。 图 5. Property 视图 ![]() 当您在 Process 树中或 Outline 视图上选择一个节点时,Property 视图就被更新以反映该特定元素的属性。这个视图列出了属性名称和值,并且允许您编辑这些值。在有些情况下,视图将向您提供可能的值的下拉列表;对于任何有可能减少由输入过失引入的错误的情况,视图都将向您提供这种下拉列表。当无法提供这种下拉列表时,您将被允许直接输入文本。 现在,请选择新定义的容器;该容器具有下面两个属性:容器名称和消息类型。您可以随意填写这些内容。请注意,消息类型必须是一个全限定名,位于窗口底部的 BPWS4J 编辑器的状态栏告诉您所要求的全限定名的格式;对于不符合所要求的格式的输入,消息类型将不会接受。这个消息类型必须与流程 WSDL 中所定义的消息类型一致。最后,请在流程节点的 Outline 视图中填写伙伴元素的属性,同样要确保此处的信息与流程 WSDL 一致。
BPWS4J 编辑器最有用的功能之一就是,它能够在创建流程的过程中检查流程的有效性。这是通过在 Task 视图(请参见 图 6)中显示错误列表实现的。至此,在回送流程示例中,您已经创建了必需的活动、流程的容器并且标识了所涉及的伙伴。不过,您还没有填写 图 6. Task 视图 ![]() 尽管 Task 视图能够捕获许多常见错误,但 BPWS4J 编辑器是独立运行的,它并不知道流程 WSDL 文件的位置。因此,无法验证对 WSDL 信息(诸如消息、操作、端口类型、相关性属性或服务链接类型)的引用的有效性。
通过返回到流程编辑器并每次处理一个未完成的任务,您就可以完成流程定义。当您选择任务时,存在错误的节点将被突出显示。您可以单击该节点来查看它的属性,并更新属性数据来消除错误。一旦您完成了 现在,您应该拥有了一个可以部署和运行的、有效的流程 WSDL 文件。在将来的一篇文章中,我们将对此作进一步的讨论。
|
联系客服