FeaturesDocs & SupportCommunityBlogsPartners

开发一个简单的同步 BPEL 流程

本教程概述示例项目 SynchronousSample,演示如何使用 NetBeans IDE 6.0 以及所有必要的运行时部署、执行、测试同步 BPEL 流程。

同步 BPEL 流程表示简单的同步流程。此过程接收输入消息并将此消息同步发回。客户机通过调用请求-响应操作启动同步过程。调用同步过程之后,客户机被阻塞,直到此过程完成并返回结果为止。

在本教程中,将使用一个简单的 BPEL 项目(名为 SynchronousSample)和一个复合应用程序(名为 SynchronousSampleApplication)。项目包括 WSDL 和 XML 模式文件、部署描述符和用于测试的输入文件。此过程的 web 服务接口是单个同步操作。

预计时间:30 分钟

教程要求

在开始之前,确保对本节的系统要求有所了解。

前提条件

本教程假设您已经具备 Java 语言、平台以及 NetBeans IDE 的基础知识或编程经验。

系统要求

本教程假定您的系统满足 NetBeans IDE 6.0 发行说明“系统要求”部分所指定的要求。

本教程所需的软件

开始之前,需要在您的计算机中安装以下软件:附带 SOA 及 GlassFish 应用服务器的 NetBeans IDE 6.0,可通过 NetBeans IDE 6.0 下载页面 获得,需选中 All 选项。

回到顶部

配置和启动 GlassFish 应用服务器。

安装完整的 NetBeans 6.0 下载时,GlassFish 应用服务器将一并安装。NetBeans IDE 将根据需要自动启动应用服务器。

启动 GlassFish 应用服务器:

  1. 如果“服务”窗口不可见,则选择“窗口”>“服务”选项。
  2. 在“服务”窗口中,展开“服务器”节点。
    “服务器”节点中应该包含 GlassFish Application Server 子节点。如果未出现 GlassFish Application Server 节点,请参阅 配置 GlassFish 应用服务器

 

  1. 右键单击 GlassFish 应用服务器节点并选择“启动”。
    “输出”窗口将显示关于应用程序启动的日志信息:如果“输出”窗口不可见,请选择“窗口” > “输出” > “输出”选项。

    如果 Application server startup complete 消息出现在输出窗口中,则表示应用服务器正在运行。
    注意: 如果 GlassFish 应用服务器节点上出现了一个绿色的箭头标志,则表示服务器正在运行。

注意在 GlassFish 应用服务器中部署应用程序将自动启动 GlassFish 应用服务器。这样,我们就不需要手动启动该应用服务器。

注意:以下步骤将演示如何配置 NetBeans 6.0 IDE 使用另一个版本的(GlassFish V2)应用服务器。

配置 GlassFish V2 应用服务器:

您可能希望使用不同版本的应用服务器,而不是 NetBeans 6.0 所提供的版本。比如说,您可以从 GlassFish 社区 站点下载并安装一个更新版本的 GlassFish V2。

以下步骤将演示如何配置 NetBeans 6.0 IDE 使用另一个版本的(GlassFish V2)应用服务器。假定您已经下载并安装了另一个版本的应用服务器。

  1. 在“服务”窗口中,右键单击“服务器”节点并从弹出菜单中选择“添加服务器”选项。
    此时将打开“添加服务器实例”对话框。
  2. 在“选择服务器”页面中,从拉列表中选择 GlassFish V2。
  3. 单击“下一步”。
    此时将打开“平台文件夹位置”页面。
  4. 在“平台位置”字段中,使用“浏览”按钮导航到应用服务器的安装位置并选择该位置。

    如果将 GlassFish 应用服务器安装在默认位置,那么可以使用 表 1 作为查找安装位置的向导。否则,导航到 GlassFish V2 应用服务器的安装位置。

    表 1:应用服务器的默认安装目录

    平台 安装为... SOA 安装 工具包安装
    Solaris OS 
    Linux
    root /opt/glassfish-v2 /opt/SUNWappserver
    Solaris OS 
    Linux
    user ~/glassfish-v2 ~/SUNWappserver
    Mac OS X N/A /Applications/NetBeans/glassfish-v2b58g /Applications/NetBeans/NetBeans 6.0
    Windows N/A C:\Sun\AppServer C:\Sun\AppServer
  5. 选中“注册本地域”单选按钮,然后单击“下一步”。
  6. 输入域管理员的用户名和口令。
    如果在安装时接受了默认值,则用户名和口令分别为 adminadminadmin
  7. 单击“完成”。

回到顶部

打开 SynchronousSample 项目

  1. 从 IDE 的主菜单中,选择“文件”>“新建项目”。
    此时将打开“新建项目”向导。
  2. 在“类别”列表中,选择 Samples > SOA
  3. 在“项目”列表中,选择 Synchronous BPEL Process

    选定的 Sample BPEL Module 项目

  4. 单击“下一步”。
  5. 在“项目名称”字段中,键入 SynchronousSample

    键入项目名称

  6. (可选)在“项目位置”字段中,使用“浏览”按钮导航到 IDE 将要存储 EJB 项目文件的位置并选择它。
  7. 单击“完成”。
    “项目”窗口现在包含两个项目节点:一个对应于 BPEL 项目(名为 SynchronousSample);另一个对应于复合应用程序(名为 SynchronousSampleApplication)。

回到顶部

在“项目”窗口中浏览 BPEL 项目

  1. 在“项目”窗口中,展开 SynchronousSample 节点,然后再展开流程文件节点。
    流程文件节点包含以下项:

    • SynchronousSample.bpel,BPEL 流程
    • SynchronousSample.wsdl,过程 web 服务接口
    • SynchronousSample.xsd,模式文件

    SynchronousSample 项目视图

  2. 双击 SynchronousSample.bpel 节点。
    请注意以下内容:

    • BPEL 设计器包含 SynchronousSample.bpel 的选项卡。
    • SynchronousSample 图显示在设计视图中。
      “设计”视图是业务流程的可视设计器。在此视图中,您可以按可视方式对业务流程进行建模。BPEL 设计器将自动生成对应于可视化设计的 BPEL 代码。
    • BPEL 元素设计视图 Palette 在右边打开。
    • “导航”窗口显示了 BPEL 流程的 BPEL 逻辑视图。


    SynchronousSample BPEL Design 视图
    单击查看大图

回到顶部

在“源代码编辑器”中浏览 WSDL 编辑器

在 WSDL 编辑器中,可以创建并编辑 Web Services Description Language (WSDL) 文件。WSDL 编辑器包括“设计”视图、“源”视图和“合作伙伴”视图。

查看 WSDL 视图:

  1. 在“项目”窗口中,双击 SynchronousSample.wsdl 文件。
    此 WSDL 文件在 WSDL 视图中打开。
  2. 在 WSDL 视图中,WSDL 文件显示为树组件,在其中可以配置文件的元素和属性。

    SynchronousSample WSDL
    单击查看大图

查看“源”视图:

查看“合作伙伴”视图:

  • 单击“合作伙伴”按钮。
    WSDL 文件中表示合作伙伴之间交互的抽象元素显示在“合作伙伴”视图中。

    SynchronousSample WSDL 源视图
    单击查看大图

回到顶部

 

将 If 活动添加到 Design 视图中

  1. 在“项目”窗口中,展开 SynchronousSample 节点、流程文件 节点,并双击 SynchronousSample.bpel 节点。
    IDE 在“设计”视图中显示 SynchronousSample.bpel 图。
  2. 在 Palette 的“结构化活动”部分中,选择 If 图标,并将您的选择拖至 Start 和 Assign 活动之间的设计区域中。
    IDE 提供了可视化的提示来告诉您选项的放置位置。
    此操作将名为 If1 的 If 活动放在设计视图中。

    添加的 If 活动

  3. 在“设计”视图中,单击 If1 活动。
    “BPEL 映射器”窗口显示在 IDE 底部。
    如果 BPEL 窗口不可见,则选择“窗口”>“BPEL 映射器”选项。使用 BPEL 映射器定义布尔条件。注意,BPEL 映射器顶部的部分组成菜单栏。

    BPEL 映射器

  4. 在菜单栏上,单击“运算符”并选择 ==EQUAL 方法 Equal
    == Equal 方法显示在 BPEL 映射器的中部,叫做映射窗格。
  5. 在菜单栏上,单击“字符串”方法并从“字符串”下拉列表中选择 String Literal String Literal
    String Literal 框显示在“映射器”的映射窗格中。
  6. 在 string literal 方法中键入Hello World 并按下回车键。
  7. 将 string literal 框和 == Equal 框移动到映射窗格的中部。

    插入的 Equal 和 String Literal

  8. 在 BPEL 映射器的“源”树窗格中,在 Variables 下展开 inputVar > inputType
    paramA 出现在 inputType 下。
  9. paramA 拖至 == Equal 方法的 any1 部分上。
  10. 选择 string literal 框右边的小方块。当手形鼠标出现时,将连线拖至 == Equal 方法的 any2 部分。
  11. 从 == Equal 方法中,将返回的布尔值拖至 Result 中。

    映射

回到顶部

 

将 Assign 活动添加到“设计”视图中

  1. 在“设计”视图中,将现有 Assign1 活动拖至 If1 活动中。将此 Assign 活动放置在 If1 活动区域的两个 X 图标之间。

    添加的 Assign 活动

  2. 从 Palette 的 Basic Activities 部分中,将 Assign 活动拖至“设计”视图中,并将其放置在现有 Assign 元素的右边。

    添加的第二个 Assign 活动

  3. 选择新的 Assign2 活动。
  4. 从映射器的菜单栏中,单击“字符串”方法并从“字符串”下拉列表中选择 concat Concat
    concat 方法显示在 BPEL 映射器的映射窗格中。
  5. 右键单击 concat 框中的第一个字段,并从弹出菜单中选择 Add Literal。
  6. 在第一个字符串中键入 Hello 和空格,并按 Enter。
  7. 从 BPEL 映射器的“源”树窗格中,展开 inputVar > inputType
  8. paramA 拖至 concat 的 string2 部分中,即第二个字段。
  9. 从 BPEL 映射器的“目标”树窗格中,展开 outputVar > resultType
  10. 将 concat 方法的返回字符串拖至 outputVar > resultType 下的 paramA 上。
    这将字符串 Hello 连接到输入中,并将语句复制到输出中。

    连接的字符串 Hello

  11. 按 Ctrl-S 保存编辑。

回到顶部

 

将项目部署到应用服务器中

部署项目将使应用服务器可以使用服务组装功能,从而允许服务单元运行。

部署复合应用程序:

  1. 如果未显示“输出”窗口,请选择“窗口”>“输出”。
  2. 右键单击 SynchronousSampleApplication 项目节点,然后选择“部署项目”。
  3. 在警告对话框中,请确保选择了 GlassFish V2 服务器,然后单击“确定”。
    注意,一个与下列消息相似的消息会出现在“输出”窗口:
    BUILD SUCCESSFUL

    “输出”窗口

回到顶部

 

创建测试驱动器

要增强复合应用程序的功能,我们可以添加一些测试用例并绑定到操作,然后提供输入并使用测试程序。

  1. 在“项目”窗口中,展开 SynchronousSampleApplication 项目节点,右键单击测试节点,然后从弹出菜单中选择“新建测试用例”。
    此时将打开“新建测试用例”向导。
  2. 在“名称”中输入:MyTestCase 并单击“下一步”。
  3. 展开 SynchronousSample - Process Files,选择 SynchronousSample.wsdl 并单击“下一步”。
  4. 选择 operation1 并单击“完成”。
    注意,在项目树中,在测试下创建了新文件夹 MyTestCase,其中包括两个文件:InputOutput

    MyTestcase

  5. 双击 Input 并将其内容修改如下:

    1. 在 Body 内容中查找下列行:
      <syn:paramA>?string?<syn:paramA>
    2. ?string? 替换为 Sherry
      此行应如下:
      <syn:paramA>Sherry<syn:paramA>
    3. 要保存更改,从 IDE 的主菜单中,选择“文件”>“保存”。
  6. 双击 Output.xml 检查其内容。
    注意,运行测试之前,此文件为空。
    每次运行测试时,当前输入与 Output 的内容进行比较。当 Output 为空时,Input 复制到 Output 中。

回到顶部

 

测试 SynchronousSampleApplication

  1. 在“项目”窗口中,导航至 SynchronousSampleApplication > 测试 > TestCase0 目录。
    TestCase0 节点包含两个 XML 文件:Input 用于输入,Output 用于输出。
    每次运行测试时,当前输入与 Output 的内容进行比较。
  2. 右键单击 TestCase0 项目节点,并从上下文菜单中选择“运行”。
    注意,“单元测试结果”窗口中的此消息:

    测试通过

  3. 右键单击 MyTestCase 节点,并从弹出菜单中选择“运行”。
    这是一种特殊情况:即 Output 文件为空,且输出写入到 Output
    “覆盖空输出”对话框打开,以便可以确认要覆盖 Output.xml

    覆盖空输出?

  4. 单击“确定”。
    注意失败消息:

    MyTestcase 失败

  5. 重复步骤 3。
    第一次运行之后,Output.xml 文件不再为空;其内容被保留,且不会被新结果覆盖。

    MyTestcase 通过

更多信息

回到顶部

Companion
Projects:
                  Powered by: