corner imagecorner image
FeaturesPluginsDocs & SupportCommunityPartners

BPEL 设计器开发者指南:测试和调试 BPEL 流程


目录

BPEL 设计器开发者指南


测试 BPEL 流程

对部署的业务流程应用程序进行测试时,涉及使用作为远程合作伙伴服务的测试用例,这些服务会将 SOAP 消息发送到 BPEL 服务引擎运行环境。

BPEL 服务引擎运行环境将接收 SOAP 消息,创建一个 BPEL 流程实例并开始执行该实例。一个 BPEL 流程可以包含多个运行实例。BPEL 服务引擎运行环境接收消息,并使用关联将其传送到相应的流程实例。如果尚未建立实例,则创建一个新的实例。

要测试运行部署的业务流程应用程序,您需要将测试用例配置为用作将 SOAP 消息发送到 BPEL 服务引擎运行环境的远程合作伙伴服务。

创建并运行测试用例

要获得测试结果,您必须执行以下操作:

  1. 添加测试用例并将其绑定到 BPEL 操作
  2. 设置测试属性
  3. 定制测试输入
  4. 运行测试程序

在执行本部分中的上述所有步骤之前,假定您已经完成了下面的操作:

  • 创建了一个包含 .wsdl 文件的 BPEL 模块项目,该文件用于对要测试的操作进行编码。
  • 成功生成了 BPEL 模块项目。
  • 已将 BPEL 模块项目作为 JBI 模块,添加到复合应用程序项目中。

添加/绑定测试用例

添加测试用例并将其绑定到 BPEL 操作:

  1. 在 IDE 的“项目”标签中,打开复合应用程序项目以显示其“测试”文件夹。
  2. 右键单击“测试”,然后选择弹出式菜单项“新建测试用例”。
    这将启动“新建测试用例”向导。
  3. 在“请输入测试用例的名称”步骤中,输入测试用例的名称,然后单击“下一步”。
  4. 在“选择 WSDL 文档”步骤中,打开 BPEL 模块项目,选择包含要测试的操作的 .wsdl 文件,然后单击“下一步”。
  5. 在下一步中,选择要测试的操作,然后单击“完成”。
    在项目树中的“测试”下面,将创建一个新的文件夹(采用大写字母 T 表示的图标),其中包含以下两个文件:Input.xmlOutput.xml

如果在“文件”标签中查看该测试用例,则还会看到第三个文件 Concurrent.properties

设置测试属性

设置测试属性:

  1. 右键单击测试用例,然后选择弹出式菜单项“属性”。
  2. 请按如下方式设置测试用例的属性:
    描述:字符串
    用户输入的文本,可帮助用户了解该测试的相关信息。
    目标: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:记录测试的实际结果。

定制测试输入

定制测试输入:

  1. 在项目树中,右键单击 "Input.xml",然后单击“编辑”。
  2. 根据您的需要对其内容进行修改。例如,每当您看到 <value>?string?</value> 时,请在 ?string? 内单击鼠标左键,然后将其替换为任意长度的字符串。但是,请不要在这些替换字符串内包含 <(小于号)字符或 &(与号)字符,除非您在 XML 语义中使用这些字符。
  3. 如果您对输入结果表示满意,请单击“保存”。
  4. 右键单击 "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 流程调试的主要步骤如下所示:

  1. 确保 Sun Java System Application Server 正在运行。
  2. 确保将 BPEL 引擎的 DebugEnabled 属性设置为 true
  3. 在“源”视图或“设计”视图中打开 BPEL 流程。
  4. 在代码或图中设置断点。(可选)在流程中为 XPath 表达式添加监视。
  5. 启动调试会话。观察“BPEL 调试器控制台”窗口以确认调试会话已启动。
  6. 调试会话期间,请在“BPEL 流程实例”窗口中查看运行的 BPEL 流程实例,在“BPEL 变量”窗口中检查变量的值以及在“监视”窗口中观察 XPath 表达式的值。
  7. 当实例在断点处停止时,逐步执行代码或图以检查其执行情况。
  8. 完成调试会话。

启动和完成 BPEL 调试会话

在将 BPEL 调试器连接至 BPEL 服务引擎时,会启动调试会话。每次只能在 BPEL 服务引擎上运行一个调试会话。

调试会话启动后,您可以分步执行流程实例,以便检查流程实例变量和/或 XPath 表达式的值。

准备调试环境:

  1. 在“运行环境”窗口中,确保 Sun Java System Application Server 正在运行。如果应用服务器包含子节点并且标有绿色三角形,则表示应用服务器正在运行。

    应用服务器正在运行

  2. 在 BPEL 源代码中设置断点。
    • 要在“源”视图中设置断点,请在要设置断点的行旁边单击鼠标左键。

      在源代码中设置断点

    • 要在图中设置断点,请切换至“设计”视图,右键单击元素,然后从弹出式菜单中选择“切换断点”。

      在图中设置断点

      含有断点的元素上方将显示一个红色方块。

      包含断点的图元素

    • 位于“导航”窗格“BPEL 逻辑视图”中的元素也可以使用“切换断点”弹出式菜单命令。对于“导航”中包含断点的元素,将显示一个如以下屏幕快照中所示的红色小框 (ReceiveItinerary):

      包含断点的“导航”元素

  3. (可选)您可以为 XPath 表达式添加监视。要添加监视,请复制要监视的 XPath 表达式,从主菜单中选择“运行”>“添加监视”,然后将该表达式粘贴到“监视表达式”字段中。单击“确定”。
    注意:您也可以添加代码中不存在但从调试角度来看非常有价值的 XPath 表达式。

    添加监视

  4. 第一次进行调试时,请将 BPEL 引擎的 DebugEnabled 属性设置为 true
    • 在“运行环境”窗口中,展开“服务器”> "Sun Java System Application Server" >“服务引擎”。
    • 右键单击 "com.sun.bpelse-1.0-2" 节点,然后选择“属性”。

      BPEL 服务引擎

    • DebugEnabled 设置为 true

在 BPEL 引擎上启动调试会话:

  1. 选择“运行”>“连接调试器”。
  2. 在“连接”对话框中,选择“BPEL 调试器”作为调试器类型。
  3. 确保主机名为 localhost,端口为 3343
  4. 单击“确定”。

现在,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 源代码中删除断点,请将光标置于包含断点的行,然后选择“运行”>“切换断点”,或者单击包含断点的行的左旁注处。此外,也可以在图中右键单击包含断点的元素,然后从弹出式菜单中选择“切换断点”。



返回页首

Bookmark this page

del.icio.us furl simpy slashdot technorati digg
Companion
Projects:
MySQL Database Server   GlassFish Community: an Open Source Application Server   Open Solaris  Open JDK: an Open SourceJDK   Mobile & Embedded Community     Sponsored by 
Sponsored by Sun Microsystems