简单的同步 BPEL 流程
最新更新日期:2006 年 11 月 14 日
撰稿人:Sherry Barkodar,修订人:Alyona Stashkova
本教程对样例项目 SynchronousSample 进行了概述,并说明了如何使用 NetBeans Enterprise Pack 5.5 软件包以及所有必需的运行环境来部署、执行和测试同步 BPEL 流程。
同步 BPEL 流程表示简单的同步流。此流程接收输入消息并以同步方式发回该消息。
客户端通过调用请求-响应操作来启动同步流程。调用同步流程后,在流程完成并返回结果之前,将阻止客户端的操作。
在本教程中,您将使用名为 SynchronousSample 的简单 BPEL 项目和名为 SynchronousSampleApplication 的复合应用程序项目。项目包括 WSDL 和 XML 架构文件、部署描述符以及用于测试的输入文件。此流程的 Web 服务接口是单个的同步操作。
先决条件
要了解本教程,您需要具备 Java 语言及其平台以及 NetBeans IDE 的一些基本知识或编程经验。
系统要求
本教程假定您的系统满足 NetBeans Enterprise Pack 5.5 发行说明的“系统要求”主题中指定的要求。
本教程所需的软件
在开始之前,您必须在计算机中安装以下软件:
- 包含 NetBeans Enterprise Pack 5.5 的 NetBeans IDE 5.5(下载)
- 要完成本教程中的部署步骤,必须安装 Sun Java System Application Server Platform Edition 9 Update 1。该应用服务器与 NetBeans Enterprise Pack 5.5 下载包捆绑在一起。
目录
返回页首
配置教程环境
在部署应用程序之前,必须正确配置 Sun Java System Application Server 和 JBI 运行环境,并且使它们处于运行状态。
配置教程环境:
- 单击“运行环境”标签以打开“运行环境”窗口。
- 在“运行环境”窗口中,展开“服务器”节点。
- 如果“服务器”节点已包含 "Sun Java System Application Server 9" 节点,请转至步骤 5。
- 如果“服务器”节点不包含 "Sun Java System Application Server 9" 节点,请执行以下操作来添加应用服务器:
- 右键单击“服务器”节点,然后从弹出式菜单中选择“添加服务器”。
将打开“添加服务器实例”对话框。
- 在“选择服务器”页中,从“服务器”下拉列表中选择 "Sun Java System Application Server"。
- (可选)在“名称”字段中,接受缺省值,或键入要用来在 IDE 中标识服务器的名称。
- 单击“下一步”。
将打开“平台文件夹位置”页。
- 在“平台位置”字段中,使用“浏览”按钮导航并选择应用服务器的安装位置。
如果在安装过程中接受了缺省值,则该位置应为 C:\Sun\Appserver。
- 选择“注册本地缺省域”单选按钮。
- 单击“下一步”。
- 提供域管理员的用户名和口令。
如果在安装过程中接受了缺省值,则用户名应为 admin,口令应为 adminadmin。
- 单击“完成”。
- 在“运行环境”窗口中,右键单击 "Sun Java System Application Server 9" 节点,然后选择“启动”。
如果“启动”选项不可用,则说明服务器已在运行,您可以跳过下一步。
- 一直等到“输出”窗口中显示以下消息:
“应用服务器启动完成。”
当服务器处于运行状态时,IDE 将在 "Sun Java System Application Server 9" 节点的旁边显示一个绿色箭头标记。
返回页首
打开 SynchronousSample 项目
- 从 IDE 的主菜单中,选择“文件”>“新建项目”。
将打开“新建项目”向导。
- 在“类别”列表中,选择“样例”>“面向服务的体系结构”。
- 在“项目”列表中,选择“同步 BPEL 流程”。
- 单击“下一步”。
- 在“项目名称”字段中,键入 SynchronousSample。
- (可选)在“项目位置”字段中,使用“浏览”按钮导航并选择 IDE 用于存储项目文件的其他文件夹。
- 单击“完成”。
现在,“项目”窗口会包含两个项目节点:一个是名为 SynchronousSample 的 BPEL 项目的节点,另一个是名为 SynchronousSampleApplication 的复合应用程序项目的节点。
- "SynchronousSampleApplication" 节点中包含了一个坏的引用。这是一种正常的现象。复合应用程序对 JBI 模块具有依赖性。
您可以随后在将项目部署到应用服务器上部分中解决坏引用的问题。
返回页首
在“项目”窗口中浏览 BPEL 项目
- 在“项目”窗口中,展开 "SynchronousSample" 节点,然后展开“流程文件”节点。
“流程文件”节点包含以下项:
- SynchronousSample.bpel(BPEL 流程)
- SynchronousSample.wsdl(流程 Web 服务接口)
- SynchronousSample.xsd(架构文件)
- 双击 "SynchronousSample.bpel" 节点。
请注意查看以下内容:
- 源代码编辑器中包含了 SynchronousSample.bpel 的标签。
- “设计”视图中显示了 SynchronousSample 图。
“设计”视图是业务流程的可视设计器。在此视图中,您可以按可视方式对业务流程进行建模。BPEL 设计工具将自动生成对应于可视设计的 BPEL 代码。
- 在源代码编辑器的右侧打开了 BPEL 元素的组件面板。
- “导航”窗口显示了 BPEL 流程的 BPEL 逻辑视图。

单击以放大
返回页首
在源代码编辑器中浏览 WSDL 编辑器
在 WSDL 编辑器中,可以创建和编辑 Web 服务描述语言 (Web Services Description Language, WSDL) 文件。WSDL 编辑器包含“设计”视图和“源”视图。
查看“设计”视图:
- 在“项目”窗口中,双击 SynchronousSample.wsdl 文件。
现在,源代码编辑器中包含了 SynchronousSample.wsdl 文件的标签。
此 WSDL 文件是在设计视图中打开的。
- 在设计视图中,WSDL 文件显示为树组件,您可以在其中配置该文件的元素和属性。

单击以放大
查看“源”视图:
单击“源”按钮。
将在“源”视图中显示相应的 XML 源代码。

单击以放大
返回页首
在“设计”视图中添加 If 活动
- 在“项目”窗口中,依次展开 "SynchronousSample" 节点、“流程文件”节点,然后双击 "SynchronousSample.bpel" 节点。
IDE 将在“设计”视图中显示 SynchronousSample.bpel 图。
- 在源代码编辑器中,单击“设计”视图。
- 在组件面板的“结构化活动”类别中,选择 "If" 图标,然后将所选的活动拖到设计区域中的 Start 和 Assign 活动之间。
IDE 将向您提供可视线索提示,以显示可放置所选活动的位置。
此操作将在“设计”视图中放置一个名为 If1 的 If 活动。
- 在“设计”视图中,单击 "If1" 活动。
将在 IDE 底部显示“BPEL 映射器”。
如果未显示 BPEL 映射器,请选择“窗口”>“BPEL 映射器”。
您可以使用 BPEL 映射器来定义布尔条件。
请注意,BPEL 映射器的顶部是方法组件面板。
- 在方法组件面板中,单击“运算符”,然后选择 "== EQUAL" 方法
。
将在 BPEL 映射器(编辑器)的中间部分显示 "== EQUAL" 方法。
- 在方法组件面板中,单击“字符串”方法,然后从“字符串”下拉列表中选择 "String Literal"
。
将在编辑器中显示 "String Literal" 框。
- 在 "String Literal" 方法中键入 Hello World,然后按 Enter 键。
- 将 "String Literal" 框和 "== EQUAL" 框移到编辑器的中间位置。
- 在 BPEL 映射器左侧的“变量”下面,展开 "inputVar" > "inputType"。
"inputType" 下面将显示 "paramA"。
- 将 "paramA" 拖到 "== EQUAL" 方法中的 "any1" 部分。
- 选择 "String Literal" 框右侧的小方块。当显示手形光标时,拖动一条连线至 "== EQUAL" 方法中的 "any2" 部分。
- 将 "== EQUAL" 方法中的 "return boolean" 拖到“结果”上。
返回页首
在“设计”视图中添加分配活动
- 在“设计”视图中,将现有 "Assign1" 活动拖到 "If1" 活动中。将此分配活动放在 "If1" 活动区域中的两个大 X 图标中间。
- 打开组件面板的“基本活动”类别,然后将“分配”活动拖到设计区域中,将第二个分配活动放在现有分配活动的右侧。
- 选择新的 "Assign2" 活动。
- 在映射器的方法组件面板中,单击“字符串”方法,然后从“字符串”下拉列表中选择 "Concat"
。
将在编辑器的中间部分显示 "Concat" 方法。
- 双击 "Concat" 框中的第一个字段,然后在第一个字符串中键入 Hello,后跟一个空格。按 Enter 键。
- 在映射器的左侧,展开 "inputVar" > "inputType"。
- 将 "paramA" 拖到 "Concat" 方法中的 "string2" 部分(第二个字段)。
- 在映射器的右侧,展开 "outputVar" > "resultType"。
- 将 "Concat" 方法中的 "return string" 拖到 "outputVar" > "resultType" 下面的 "paramA"。
这会将字符串 Hello 连接至输入,并将语句复制到输出中。
返回页首
将项目部署到应用服务器上
在部署 BPEL 项目之前,您必须在部署项目中添加 JBI 模块。部署项目后,服务组将可供应用服务器使用,从而允许运行其服务单元。
添加 JBI 模块:
- 在“项目”窗口中,右键单击 "SynchronousSampleApplication" 项目节点,然后从弹出式菜单中选择“添加 JBI 模块”。
将打开“选择项目”对话框。
- 选择 SynchronousSample 项目,然后单击“添加项目 JAR 文件”。
将关闭“选择项目”对话框。
- 在“项目”窗口中,展开 "SynchronousSampleApplication" 项目节点,然后展开“JBI 模块”节点。
请注意,已添加了一个 "SynchronousSample.jar" 节点。
部署复合应用程序:
- 右键单击 "SynchronousSampleApplication" 项目节点,然后选择“部署项目”。
请注意,“输出”窗口中显示了类似于以下内容的消息:
“生成成功(总时间:7 秒)。”
- 如果未显示“输出”窗口,请选择“窗口”>“输出”。
返回页首
创建测试驱动程序
可通过以下方法来改进复合应用程序项目:添加测试用例,绑定到操作,提供输入,然后使用测试程序。
添加测试用例:
- 在“项目”窗口中,展开 "SynchronousSampleApplication" 项目节点,右键单击“测试”节点,然后从弹出式菜单中选择“新建测试用例”。
将打开“新建测试用例”向导。
- 输入 MyTestcase 作为名称,然后单击“下一步”。
- 展开“SynchronousSample - 流程文件”,选择 "SynchronousSample.wsdl",然后单击“下一步”。
- 选择 "operation1",然后单击“完成”。
请注意,在项目树的“测试”下面创建了一个新文件夹 "MyTestcase",其中包含了以下两个文件:“输入”和“输出”。
- 双击“输入”并修改其内容,如下所示:
- 在主体内容中找到以下行:
<syn:paramA>?string?<syn:paramA>。
- 将 ?string? 替换为 Sherry。
该行应如下所示:
<syn:paramA>Sherry<syn:paramA>。
- 要保存您所做的更改,请从 IDE 的主菜单中选择“文件”>“保存”。
- 双击 "Output.xml" 以检查其内容。
请注意,在运行测试之前,此文件为空。
在每次运行测试时,都会将当前输出与输出文件的内容进行比较。当输出文件为空时,则会将输入文件复制到输出文件中。
返回页首
测试 SynchronousSampleApplication
- 在“项目”窗口中,依次展开 "SynchronousSampleApplication"、“测试”和 "TestCase0"。
"TestCase0" 节点包含了以下两个 XML 文件:“输入”(输入文件)和“输出”(输出文件)。
在每次运行测试时,都会将当前输出与输出文件的内容进行比较。
- 右键单击 "TestCase0" 项目节点,然后从上下文菜单中选择“运行”。
请注意“输出”窗口中出现的以下消息:
- 右键单击 "MyTestcase" 节点,然后从上下文菜单中选择“运行”。
这是一个特例,因为输出文件为空,并且输出将写入到输出文件中。
将显示“是否覆盖空的输出文件?”对话框。
- 单击“确定”。
- 请注意出现的失败消息:
- 重复执行步骤 3。
在第一次运行后,Output.xml 文件不再为空;将会保存该文件的内容,并且其内容不会被新结果所覆盖。
返回页首