BPEL 设计器开发者指南:测试和调试 BPEL 流程
最新更新日期:2006 年 10 月 23 日
目录
BPEL 设计器开发者指南
测试 BPEL 流程
对部署的业务流程应用程序进行测试时,涉及使用作为远程合作伙伴服务的测试用例,这些服务会将 SOAP 消息发送到 BPEL 服务引擎运行环境。
BPEL 服务引擎运行环境将接收 SOAP 消息,创建一个 BPEL 流程实例并开始执行该实例。一个 BPEL 流程可以包含多个运行实例。BPEL 服务引擎运行环境接收消息,并使用关联将其传送到相应的流程实例。如果尚未建立实例,则创建一个新的实例。
要测试运行部署的业务流程应用程序,您需要将测试用例配置为用作将 SOAP 消息发送到 BPEL 服务引擎运行环境的远程合作伙伴服务。
创建并运行测试用例
要获得测试结果,您必须执行以下操作:
-
添加测试用例并将其绑定到 BPEL 操作。
-
设置测试属性。
-
定制测试输入。
-
运行测试程序。
在执行本部分中的上述所有步骤之前,假定您已经完成了下面的操作:
-
创建了一个包含 .wsdl 文件的 BPEL 模块项目,该文件用于对要测试的操作进行编码。
-
成功生成了 BPEL 模块项目。
-
已将 BPEL 模块项目作为 JBI 模块,添加到复合应用程序项目中。
添加/绑定测试用例
添加测试用例并将其绑定到 BPEL 操作:
-
在 IDE 的“项目”标签中,打开复合应用程序项目以显示其“测试”文件夹。
-
右键单击“测试”,然后选择弹出式菜单项“新建测试用例”。
这将启动“新建测试用例”向导。
-
在“请输入测试用例的名称”步骤中,输入测试用例的名称,然后单击“下一步”。
-
在“选择 WSDL 文档”步骤中,打开 BPEL 模块项目,选择包含要测试的操作的 .wsdl 文件,然后单击“下一步”。
-
在下一步中,选择要测试的操作,然后单击“完成”。
在项目树中的“测试”下面,将创建一个新的文件夹(采用大写字母 T 表示的图标),其中包含以下两个文件:Input.xml 和 Output.xml。
如果在“文件”标签中查看该测试用例,则还会看到第三个文件 Concurrent.properties。
设置测试属性
设置测试属性:
-
右键单击测试用例,然后选择弹出式菜单项“属性”。
-
请按如下方式设置测试用例的属性:
-
描述:字符串
-
用户输入的文本,可帮助用户了解该测试的相关信息。
-
目标:URL(来自 .wsdl 文件的 <soap:address location="THIS"> 标记)
-
标识要测试的 Web 服务的位置。
-
SoapAction(缺省:空)
-
-
输入文件(只读;由系统生成)
-
输入文件的名称。
-
输出文件(只读;由系统生成)
-
输出文件的名称。
-
并发线程数:整数;缺省值为 1
-
每个线程可以多次调用测试用例(请参见下一个属性)。因此,如果并发线程数为 2,每个线程的调用次数为 3,则会运行 6 次测试用例(即两个线程,每个线程运行 3 次)。
-
每个线程的调用次数:整数;缺省值为 1
-
每个线程调用测试用例的次数。
-
测试超时(秒):整数;缺省值为 30
-
为每个线程分配的时间。如果线程在分配的时间内没有完成,则会抛出异常。
-
计算吞吐量:布尔值
-
如果选中此复选框,则会计算吞吐量统计信息。示例:如果在测试中指定了两个线程,每个线程均调用测试三次,并且测试被调用 6 次所花费的时间为 15 秒,则统计信息会报告每次调用所花费的时间平均为 2.5 秒。
-
比较类型:下拉列表:
-
-
identical:将 Output.xml 的内容和实际输出视为字符流。
-
binary:将 Output.xml 的内容和实际输出视为字节流。
-
equals:将 Output.xml 的内容和实际输出视为 XML 文档。
-
功能状态:下拉列表:
-
-
progress:将测试完成标记为 "success",不考虑实际结果。
-
done:记录测试的实际结果。
定制测试输入
定制测试输入:
-
在项目树中,右键单击 "Input.xml",然后单击“编辑”。
-
根据您的需要对其内容进行修改。例如,每当您看到 <value>?string?</value> 时,请在 ?string? 内单击鼠标左键,然后将其替换为任意长度的字符串。但是,请不要在这些替换字符串内包含 <(小于号)字符或 &(与号)字符,除非您在 XML 语义中使用这些字符。
-
如果您对输入结果表示满意,请单击“保存”。
-
右键单击 "Output.xml",然后单击“编辑”以检查其内容:
-
它是空的。这是一种特殊状态,可在测试运行后触发特殊操作。
-
每次运行测试后,都会将当前的输出内容与 Output.xml 的内容进行比较;无论检测到何种差异,都会将其存储在测试用例文件夹下面的 Actual_yymmddhhmmss.xml 文件中。但在特殊情况下,即 Output.xml 最初为空时,则会将输出内容写入到 Output.xml 中。
-
在首次运行测试后的每次运行中(假定 Output.xml 不再为空),将会保留其内容。换句话说,新结果不会覆盖以前的输出内容。
运行测试程序
运行单个测试用例:
-
在项目树中,右键单击测试用例文件夹,然后选择“运行”。
运行项目中的所有测试用例:
-
选择项目,然后按 Alt-F6 组合键(也可以右键单击该项目,然后选择弹出式菜单项“测试项目”)。
查看测试用例结果
-
第一次运行时将报告测试用例失败(这是正确的):产生的输出与空的 Output.xml 文件不匹配,该文件的空内容将被替换为第一次运行的输出结果。
-
如果再次运行测试且不更改输入,则第二次和后续运行都会报告测试成功,因为输出与 Output.xml 的内容相匹配。
-
如果在 Input.xml 中更改值并重新运行测试,那么:
-
如果将“功能状态”属性设置为 progress,即使出现不匹配,也会指示测试成功。
-
如果将“功能状态”属性设置为 done,则将指示测试失败。
-
如果右键单击 "myTestcase1",然后单击弹出式菜单项“比较”,窗口将显示最新输出与 Output.xml 内容之间的差异。要浏览以前测试的结果,可以从 Actual_yymmddhhmmss.xml 文件的下拉列表中进行选择,然后单击“刷新”按钮。
返回页首
调试 BPEL 流程
BPEL 流程调试遵循的一般原则与 Java 应用程序调试相同。BPEL 流程调试通过以下方法来完成:在源代码或图中设置断点,然后在调试会话中分步执行流程。
BPEL 流程调试的步骤
BPEL 流程调试的主要步骤如下所示:
-
确保 Sun Java System Application Server 正在运行。
-
确保将 BPEL 引擎的 DebugEnabled 属性设置为 true。
-
在“源”视图或“设计”视图中打开 BPEL 流程。
-
在代码或图中设置断点。(可选)在流程中为 XPath 表达式添加监视。
-
启动调试会话。观察“BPEL 调试器控制台”窗口以确认调试会话已启动。
-
调试会话期间,请在“BPEL 流程实例”窗口中查看运行的 BPEL 流程实例,在“BPEL 变量”窗口中检查变量的值以及在“监视”窗口中观察 XPath 表达式的值。
-
当实例在断点处停止时,逐步执行代码或图以检查其执行情况。
-
完成调试会话。
启动和完成 BPEL 调试会话
在将 BPEL 调试器连接至 BPEL 服务引擎时,会启动调试会话。每次只能在 BPEL 服务引擎上运行一个调试会话。
调试会话启动后,您可以分步执行流程实例,以便检查流程实例变量和/或 XPath 表达式的值。
准备调试环境:
-
在“运行环境”窗口中,确保 Sun Java System Application Server 正在运行。如果应用服务器包含子节点并且标有绿色三角形,则表示应用服务器正在运行。
-
在 BPEL 源代码中设置断点。
-
要在“源”视图中设置断点,请在要设置断点的行旁边单击鼠标左键。
-
要在图中设置断点,请切换至“设计”视图,右键单击元素,然后从弹出式菜单中选择“切换断点”。
含有断点的元素上方将显示一个红色方块。
-
位于“导航”窗格“BPEL 逻辑视图”中的元素也可以使用“切换断点”弹出式菜单命令。对于“导航”中包含断点的元素,将显示一个如以下屏幕快照中所示的红色小框 (ReceiveItinerary):
-
(可选)您可以为 XPath 表达式添加监视。要添加监视,请复制要监视的 XPath 表达式,从主菜单中选择“运行”>“添加监视”,然后将该表达式粘贴到“监视表达式”字段中。单击“确定”。
注意:您也可以添加代码中不存在但从调试角度来看非常有价值的 XPath 表达式。
-
第一次进行调试时,请将 BPEL 引擎的 DebugEnabled 属性设置为 true:
-
在“运行环境”窗口中,展开“服务器”> "Sun Java System Application Server" >“服务引擎”。
-
右键单击 "com.sun.bpelse-1.0-2" 节点,然后选择“属性”。
-
将 DebugEnabled 设置为 true。
在 BPEL 引擎上启动调试会话:
-
选择“运行”>“连接调试器”。
-
在“连接”对话框中,选择“BPEL 调试器”作为调试器类型。
-
确保主机名为 localhost,端口为 3343。
-
单击“确定”。
现在,IDE 将在 BPEL 引擎上建立调试会话。观察“BPEL 调试器控制台”窗口以进行确认。连接需要一些时间才能完成。当连接成功完成时,您会在“会话”窗口中看到新的会话,并在“BPEL 调试器控制台”中看到以下消息:
22:17:55 Connecting to localhost:3343
22:17:55 Debug session started
如果存在几个调试会话(例如,您可能同时运行了 Java 调试会话)并且要更改当前会话,请在“会话”窗口中双击要设置为当前会话的会话名称。或者,右键单击该会话,然后选择“激活”。
此会话将变为当前会话,并且会更新“BPEL 流程实例”、“监视”和“BPEL 变量”窗口以显示与新的当前会话有关的数据。
当要结束调试会话时,请在“会话”窗口中打开要停止的会话的弹出式菜单,然后选择“完成”,或者在工具栏中选择“完成调试器会话”。“BPEL 调试器控制台”中将显示调试会话已完成的消息。
要结束所有调试会话,请在“会话”窗口中右键单击任何会话,然后选择“全部完成”。
BPEL 调试器窗口
当调试会话启动时,IDE 将在其编辑区域下面显示调试器窗口。“会话”、“BPEL 流程实例”、“监视”和“BPEL 变量”窗口均包含在当前调试会话中运行的 BPEL 流程的相关信息。
注意:如果未显示调试器窗口,请选择“窗口”>“调试”> "BPEL" > "<窗口名称>"(例如,“窗口”>“调试”> "BPEL" >“BPEL 变量”)。
“调用栈”、“断点”和“监视”是标准的 IDE 调试器窗口。在调试 BPEL 流程时不使用“调用栈”窗口,因此,您可以将其忽略。“断点”窗口反映了当前在 IDE 中设置的所有断点,其中包括 BPEL 流程中的断点。“监视”窗口列出了您已指定在调试时进行监视的所有表达式。
要在调试器窗口之间进行切换,请单击标有窗口名称的标签。
“会话”窗口
“会话”窗口列出了当前在 IDE 中运行的所有调试会话,其中包括 Java 和 BPEL 调试会话。每次只能为 BPEL 引擎启动一个会话,并且只能有一个会话是当前会话(此会话以粗体显示)。其他调试器窗口(如“BPEL 流程实例”、“监视”和“BPEL 变量”)仅显示与当前调试会话有关的流程实例、表达式和变量。
为每个会话提供的信息包括:
-
名称。会话的名称。
-
状态。会话可能正在启动或正在运行。
-
语言。在此会话中调试的应用程序的语言。
您可以在弹出式菜单中对会话执行以下操作:
-
激活。将选定会话设置为当前会话。
-
完成。完成选定会话。
-
全部完成。完成所有调试会话。
“BPEL 流程实例”窗口
“BPEL 流程实例”窗口列出了在当前调试会话中的 BPEL 引擎上运行的所有 BPEL 流程实例。如果当前会话不是 BPEL 调试器会话,则此窗口为空。如果在 BPEL 引擎上启动调试会话,或者 BPEL 调试器会话变为当前会话,则会填充“BPEL 流程实例”窗口。
为每个流程实例显示的信息包括实例名称及其状态。流程实例可以处于以下某种状态:
-
完成。在 BPEL 引擎上已完成实例。
-
正在运行。当前正在 BPEL 引擎上执行实例。
-
暂停。由于某些原因已暂停实例,例如,流程实例到达断点。
-
未知。此实例状态是未知的。
“BPEL 变量”窗口
“BPEL 变量”窗口显示了当前流程实例和当前位置的 BPEL 变量及其值的列表。当前位置是指当前流程实例暂停时所在的位置。更改当前流程实例时,将更新“BPEL 变量”窗口中的记录,以反映新的当前流程实例和新的当前位置的变量。
为每个变量提供的信息包括变量名称和值。
“监视”窗口
“监视”窗口显示了要监视的 XPath 表达式的列表。您可以在调试会话过程中或在此之前显式地添加监视。“监视”窗口显示表达式及其值。随着流程向前执行,表达式的值可能会发生变化,具体取决于流程逻辑。
使用断点调试 BPEL 流程
断点用于指示调试器在源代码的该位置暂停执行流程。当 BPEL 流程到达断点时,它将变为暂停状态,此时您可以执行调试操作,如检查变量的值或者步入代码。
要查看和组织当前在 IDE 中设置的所有断点,请选择“窗口”>“调试”> "BPEL" >“断点”(Alt-Shift-5) 以打开“断点”窗口。对于每个断点,您可以看到其所在的源文件名称以及所在的行。
在 BPEL 流程中设置断点并启动调试会话后,到达断点的任何实例都将变为暂停状态。您可以在“BPEL 流程实例”窗口中查看流程实例的状态。
调试已到达断点的流程实例:
暂停执行流程实例后,从“运行”菜单或工具栏中选择以下命令:
-
继续 (Ctrl-F5)。运行当前流程实例,直至遇到下一个断点或者流程实例完成时为止。实例状态将变为“正在运行”。
-
步入 (F7)。步入下一个 BPEL 活动。在 BPEL 语言术语中,仅支持活动粒度的步入操作,而对于更细的粒度,则不支持其步入操作。在进行步入时,当前行指示符或图中的位置将前移,并相应地更改“BPEL 变量”和“监视”窗口的内容。
-
完成调试器会话 (Shift-F5)。完成当前的调试会话。
要从 BPEL 源代码中删除断点,请将光标置于包含断点的行,然后选择“运行”>“切换断点”,或者单击包含断点的行的左旁注处。此外,也可以在图中右键单击包含断点的元素,然后从弹出式菜单中选择“切换断点”。
返回页首