IBM®
跳转到主要内容
    中国 [选择]    使用条款
 
 
Select a scope:Search for:    
    首页    产品    服务与解决方案     支持与下载    个性化服务    
跳转到主要内容

developerWorks 中国  >  WebSphere  >

专家访谈: Paul Pacholski 谈 WebSphere Integration Developer

developerWorks
文档选项

未显示需要 JavaScript 的文档选项


级别: 初级

Paul Pacholski (pacholsk@ca.ibm.com), WebSphere 顾问, IBM

2006 年 6 月 29 日

在这篇一问一答的文章里,我们邀请 WebSphere® 顾问 Paul Pacholski 来回答关于 WebSphere Integration Developer 的问题。

引言

WebSphere 顾问 Paul Pacholski 回答您关于使用 WebSphere Integration Developer v6.0 构建、测试、调试和部署集成解决方案的问题。WebSphere Integration Developer 是一个基于 Eclipse 的工具,用于开发部署到 WebSphere Process Server 和 WebSphere Enterprise Service Bus 的集成解决方案。有关更多信息,请参考 WebSphere 业务集成专栏WebSphere Process Server and WebSphere Integration Developer resource page

问:如何在 WebSphere Integration Developer 中编写一个小而简单的 Java™ snippet,如两个数求和?

答:Visual Snippet 文件夹中已经存在两个类型为“double”的数求和的 Visual Snippet,如图 1 所示。


图 1. Visual Snippet 文件夹
Visual Snippet 文件夹

您也可以轻松地创建自己的版本。假设您想要创建一个 Java Snippet——my_add 来求两个类型为“int”的数之和。实现步骤如下:

  1. 使用 New Wizard,选择 Custom Visual Snippet,如图 2 所示。


    图 2. New Wizard
    New Wizard

  2. 其次,进入 Visual Snippet 详细信息,如图 3 所示。


    图 3. Visual Snippet 详细信息
    Visual Snippet 详细信息

  3. 当单击 Finish 时,会发生两件事:
    • my_add snippet 将在 Visual Snippet Editor 中打开。
    • 同时还出现在 Visual Snippet 文件夹中,如图 4 所示。


      图 4. my_add snippet
      my_add snippet

  4. 在 Visual Snippet Editor 中,首先创建类型为“int”的输入和输出变量,如图 5 所示。


    图 5. 输入和输出变量
    输入和输出变量

  5. 接下来,您需要为 my_add Customer Visual Snippet 构建逻辑:
    1. 从面板中拖放 Expression 基元。
    2. 在表达式中,输入 num1 + num2
    3. 拖放 Return 基元。
    4. 将表达式“num1 + num2”连接到“return”。


      图 6. 连接表达式
      连接表达式

  6. 您可以在任何组件中使用该自定义的 Visual Snippet。例如,图 7 表明您可以在 BPEL Process 组件中使用 my_add 自定义 Visual Snippet,以在 BPEL Java Snippet 中实现两数求和。


    图 7. 两个数的 Add Process
    两个数的 Add Process

问:请解释一下 IBM Rational Application Developer 和 WebSphere Integration Developer 产品之间的区别。作为 Java 和集成开发人员,我二者均使用。我想要开发一些 EJB 会话 bean 并包装成 Web 服务,最后用 BPEL 将它们链接起来。我是否应该两个产品都使用,或只使用 Integration Developer?

答: WebSphere Integration Developer(以下称为 Integration Developer)几乎是 Rational Application Developer 的一个扩展。下面列出 Rational Developer 拥有而 Integration Developer 没有 的一些功能:

  • EGL (Enterprise Generation Language) Development
  • IBM WebSphere Portal Development
  • 从 JCA 适配器生成 Java Bean 的能力。相反地,Integration Developer 从 JCA 适配器生成 Service Component Architecture (SCA) 组件。
  • WebSphere 集成测试环境和 WebSphere Portal 集成测试环境。Integration Developer 只包括 WebSphere Process Server 和 WebSphere Enterprise Services Bus 测试环境。

要开发 EJB 会话 bean 并将其公开为 Web 服务,您可以使用 Integration Developer。首先,在 Integration Developer 中启用 Web 服务和 EJB“功能”。要实现这一点,请从主菜单栏中选择 Windows -> Preferences -> Workbench -> Capabilities,然后选择 Advanced J2EE 功能,如图 8 所示。


图 8. Advanced J2EE 功能
Advanced J2EE 功能

此操作将启用 Application Developer 提供的 J2EE 和 Web 透视图。一旦您开发 Web 服务,请将 WSDL 文件拖到 Business Integration 透视图的 Navigator 视图中的任何位置。假设您拖动一个名为 polyglot.wsld 的 WSDL 文件,如图 9 所示。


图 9. 拖放 WSDL 文件
拖放 WSDL 文件

此操作将创建几个构件:

  • Polyglot Interface
  • 业务对象,一个用于 Web 服务输入 (Input),一个用于 Web 服务输出 (Output)
  • Web Service Port。

要在您的 BPEL 流程使用 Web 服务,请将 Polyglot Web Service Port 拖放到 Assembly Editor。这将创建一个 Web Service Import Component。要从您的 BPEL 流程调用 Polyglot Web Service,请将 BPEL Process Component 连接到 Web Service Import Component,如图 10 所示。


图 10. 连接组件
连接组件

问:随 Integration Developer 构建的 WebSphere Process Server 解决方案可以访问 SCA 本机组件,例如流程、规则组或状态机。我可以通过 SCA 本机组件访问哪些外部服务呢?

答:使用合适的绑定,您可以通过 Component Imports 将外部服务连接到 SCA 组件以重用以下 IT 资产类型:

  • Enterprise Java Bean
  • Java 类
  • Web 服务(基于 JSR 109/JAX-RPS)
  • WebSphere 适配器 (J2EE JCA 1.5)
  • 所有 J2EE JCA 1.0 或 1.5 标准的适配器
  • WebSphere Business Integration 适配器
  • JMS 消息

Integration Developer 工具有助于编程人员创建 Component Imports。例如,通过利用 WebSphere Adapters,Enterprise Service Discovery Wizard(如图 10a 所示)可以分析一个正在运行的EIS系统,并生成业务对象、接口及组件导入和导出。


图 10a.Enterprise Service Discovery Wizard
 Enterprise Service Discovery Wizard

问:Integration Developer 提供了两种用于定义业务流程的实现类型:BPEL 和状态机。在这两种业务流程实现类型中,我应该选择使用哪种规则呢?

答:当流程中大多数步骤都顺序执行,而只有数量有限的循环或事件处理程序时,应该使用 BPEL 流程。循环和事件处理程序通常意味着控制流回退,这表明状态机是一种更合适的实现方法。

如果流程逻辑为事件驱动的,则使用状态机实现。具体而言,如果您的 BPEL 实现需要多个 Receive 活动,且您开始定义相关集,则有必要考虑状态机实现。如果您的业务逻辑大量使用事件驱动,而这些事件的处理是与状态相关的(因您在业务流程中的位置而异)且业务逻辑可以回退到已执行的活动中,则肯定要使用状态机。

例如,检查图 11 所示的 Vending Machine 状态机。


图 11. Vending Machine 状态机
Vending Machine 状态机

请注意,业务流程主要是事件驱动的。请注意业务回到以前的状态(从 Depositing 状态回到 Idle 状态)且事件处理是与状态相关的(deposit 事件可以在 Idle 和 Depositing 两个状态中接收到)。

问:Integration Developer 提供各种工具来实现不同的组件类型。其中一种组件类型是人工任务组件。请问人工任务组件的功能规范是什么呢?

答:人工任务组件实现由人工完成的任务。它表示业务流程中有人的参与。

有时候,业务流程需要人的介入。例如,一位客户想要购买超出其信用额度的物品。人工任务可以使您介入并重写阻止该客户进行购买的业务规则。人工任务组件意识到这样的事实:对于评估、研究和审批等任务,许多流程需要人工介入。

人工任务组件使人们可以参与到业务流程(BPEL 和状态机)和任意服务编排(通过业务规则调用人工任务)中。人工任务有多个属性,例如设置任务的所有者,以及在无法进行人工指定时提供升级流程。

人工任务有四种类型:

  1. 多方参与的任务 (Machine to Human – M2H) 是一个通过不同的服务调用的人工交互,如图 12 所示。


    图 12. Machine to Human 任务
    Machine to Human 任务

    M2H 任务是由客户端异步调用的。当一个请求到达时,任务开始进入就绪状态。可能的所有者可以在其工作列表中看到就绪任务。当潜在的所有者签出该任务来对其进行处理时,任务状态变为“claimed”并且该任务从其他可能的所有者的工作列表中消失。在对任务进行处理时,用户可以选择保存其状态。任务完成后,Human Task Manager 响应任务的调用者以表明任务完成。

  2. 原始任务 (Human to Machine – H2M) 是一个调用其他服务的人工交互。


    图 13. Human to Machine 任务
    Human to Machine 任务

    H2M 任务是一个异步调用长时间运行的服务的客户端组件。在任务创建后,用户会获取其实例 ID 以便与之进行后续的通信。启动任务同时也会发送一个请求来启动与该任务相关联的长时间运行的服务。用户既可以使用实例 ID 来轮询该任务的状态,也可以等待任务完成时返回结果的通知。

  3. 纯人工任务 (Human to Human – H2H) 是一个由人发起且由人接收的服务组件。通常人们创建 H2H 任务是为了让一个或多个人执行,一般是临时性的,没有预先安装或部署。例如,员工创建 H2H 任务来使其经理批准其差旅请求。


    图 14. Human to Human 任务
    Human to Human 任务

  4. 管理任务是由想要为人工管理员提供接口的组件创建的。例如,一个用于赋予一组特定用户管理操作权限(例如将其挂起、重新开始和修改的权限)的长时间运行的业务流程(一旦创建)就是一个管理任务。

    与工作项相关的是管理职员目录的功能。人工任务管理器支持 LDAP、WebSphere 成员管理器(在与 WebSphere Portal 一起使用时)和 WebSphere 用户注册表预设值。

    一个 Web 客户端 Business Process Choreographer Explorer 允许您与任务相交互,例如处理分配给您的任务,或者管理和修复任务。

问: WebSphere Process Server 有哪些功能可以用于动态更改解决方案而不必重编译和重发布?

答:Selector 和 Business Rule 组件增加了 WebSphere Process Server(以下称为 Process Server)解决方案的动态性。

Selector 组件为调用具有相同接口的组件提供一种选择机制。组件选择机制是基于一些定义好的规则、数据或逻辑集(例如当前日期和时间)而定的。更重要的是,组件是使用晚期绑定方法调用的。在 Process Server Admin Console 中使用特殊的用户接口,您可以动态更新 Selector Component。例如,您可以添加或更改调用目标,或者更新调用选择规则。然后可以从运行时导出这些更改并将其移到 Integration Developer 项目(如果需要)。

Business Rule Group 组件是一个相关业务规则的集合,您可以将其表示成决策表或 if-then 规则集。通过使用 Integration Developer 的 Business Rule Editor,您可以定义业务规则并设计在运行时为动态更新公开这些规则的用户界面。在运行时,通过使用 Business Rules Manager 应用程序,您可以更改、添加或删除业务规则,而不必停止和重发布使用这些业务规则的客户端应用程序。您可以从运行时导出这些更改并将其移到 Integration Developer 项目(如果需要)。

问:WebSphere Integration Developer 为开发人员和集成专家提供全面的创作体验,包括单元测试和调试环境。单元测试环境的关键特征和功能是什么呢?

答:在 Integration Developer 中,可以使用集成测试客户端来测试您的模块和组件,并导出测试结果。所有的测试都是在您的组件的界面操作上执行的,它允许您确定组件是否正确实现、引用是否正确连接。测试客户端提供了一个成熟的用户界面,它使您可以轻松管理和准确控制您的测试。

要测试组件,请在 Detailed Properties 面板中执行以下操作:

  1. 选择 Module -> component -> interface -> operation。接下来,在初始请求参数面板中键入输入数据并单击 Continue


    图 15. 测试组件
    测试组件

  2. 测试客户端自动将选定的模块部署到支持 Process Server 的集成测试环境运行时中,并通过选择的接口和操作调用该组件。其结果将显示在 Events 面板和 Return Parameters 面板中,如图 16 所示。


    图 16. 测试结果
    测试结果

    Events 面板显示在测试期间生成的事件的层次执行跟踪。对于每个已执行的操作,都有一个请求和响应条目。测试客户端允许您检查与已执行的操作相关联的输入和输出参数。例如,如果您单击 Events 页面中的 Response 或 Return 条目,则将显示包含返回的业务对象的 Return Parameters 页面。

问:WebSphere Integration Developer 为开发人员和集成专家提供全面的创作体验(包括单元测试和调试环境)。调试环境的关键特征和功能是什么呢?

答:在 Integration Developer 中,使用集成调试器可以可视化地调试本地或远程业务集成组件,例如业务对象数据映射、业务流程、状态机、中介流、业务规则集、决策表和可视代码段。集成调试器主要是受 Debug 透视图控制的,如图 17 所示。


图 17. Debug 透视图
Debug 透视图
  1. Debug View Toolbar:该工具栏包含控制执行组件中的流逻辑的按钮。您可以单步跳入、单步跳过或单步跳出组件实例中的各种元素。
  2. Variable View:此视图显示选定组件中的变量的值。例如,对于 Process 组件,变量视图显示 BPEL 变量和合作伙伴链接。
  3. Variable Editor:当在断点处停止时,您可以更改组件变量的值。
  4. Breakpoint View:Breakpoints 视图列出组件中您设置的所有断点。您可以在编辑器中双击一个断点来显示其位置。也可以启用或禁用断点、删除断点或者添加新断点。
  5. Process Editor:在组件编辑器中,可以添加、禁用、启用或删除断点。例如,在 Process Editor 中,您可以控制流程中 BPEL 元素上的断点。
  6. Breakpoint:您可以在断点目标执行之前或之后设置断点组件编辑器。在执行时,当到达组件中的逻辑的断点位置时,执行将停止。然后可以使用组件的调试器透视图来检查组件的状态。

问: 没有定义为 SCA 组件的应用程序(例如 JavaServer Page)如何调用 SCA 组件呢?

答:它们是通过使用独立引用来做到这一点的。独立引用具有实际的价值,它允许您将现有的应用程序与在 Integration Developer 中创建的 SCA 组件一起使用。SCA 组件是在 SCA 服务模块中打包的。SCA 模块不只是另一种打包类型。在 WebSphere Process Server 中,SCA 服务模块等同于 J2EE EAR 文件。非 SCA 应用程序可以使用 SCA API 来调用 SCA 组件(假设它是在相同的 J2EE EAR 中打包成 SCA 组件的)。

假设一个 JSP(在 Dynamic Web Project (JSPWAR) 中打包而成的)需要调用一个 SCA 组件。实现步骤如下:

  1. 创建 Dynamic Web Project JSPWAR。
  2. 从 Business Integration 透视图中打开 Module Dependency Editor。将该 WAR 文件作为 J2EE 依赖项添加进来。


    图 18. 添加 WAR 文件
    添加 WAR 文件

  3. 在 Assembly Editor 和 SCA 组件的 Stand-alone Reference 中,从您的 JSP 调用。


    图 19. Assembly Editor
    Assembly Editor

  4. 打开 Stand-alone Reference 的属性页,查看引用名称和操作名称。


    图 20. 属性页
    属性页

  5. 在 JSP 中,使用 SCA API 来调用 SCA 组件。代码应该与图 21 所示的代码相类似。


    图 21. SCA 组件
    SCA 组件

问:在 WebSphere Integration Developer 中,长时间运行的流程组件被实现为 BPEL 流程。通常,长时间运行的流程实现可能运行几小时、几天,甚至几个月。如果我们需要更改逻辑来支持业务需要,则应该如何做呢?当我们进行更改时,处于“in-flight”的流程实例会发生什么呢?

答: WebSphere Process Server 和 Integration Developer 提供了一个简单而完美的解决方案:流程版本管理。流程版本管理允许您保存现有流程模板的多个定义。Process Server 使用流程模板来启动流程实例。现有的实例将依据原始流程模板继续运行,而新的实例将采用新的定义。

在 Process Server 中,版本管理是通过 Valid From 日期的概念进行的。Process Server 使用 Valid From 日期来确定在创建新的流程实例时使用流程模板的哪个已部署版本。更重要的是,一旦实例创建了,它就会依据该模板版本运行,而不管后来什么时候部署该流程模板的其他版本。

为了理解版本管理的概念,我们来看一下下面的场景。

  1. 假设我们创建并部署了一个名为“Process”的流程模板,其 Valid From 日期是 Apr 01, 2006 19:22:39。图 22 显示了 Integration Developer 中的 BPEL Editor。


    图 22. BPEL Editor
    BPEL Editor

  2. 接下来,将流程组件部署到 Process Server。由于 Valid From 日期 4/1/06 1:22:39 比当前日期 Apr 08, 2006 早,所以使用上面的模板来启动新的 Process 实例。图 23 显示了 Business Process Explorer 控制台中的 My Process Templates 页。


    图 23. My Process Template 页
    My Process Template 页

  3. 使用此流程模板启动三个 Process 实例。检查 Business Process Explorer 控制台,您将看到三个活动的实例,如图 24 所示。


    图 24. 流程实例列表
    流程实例列表

  4. 创建一个新的流程版本,其 Valid From 日期为 Apr 08, 2006 01:23:16。图 25 显示 Integration Developer 中的 BPEL Editor。


    图 25. BPEL Editor
    BPEL Editor

  5. 将该流程的新版本部署到 Process Server。检查 Business Process Explorer 控制台,您将看到只有该流程模板 Process 的较新版本可用于启动新的实例。请注意 Valid From 日期是 4/7/06 9:23:16 PM。


    图 26. 新的流程模板
    新的流程模板

    由于日期示例是 4/9/26 2:45:29 PM,所以所有新的实例都将用新的流程模板来启动,而三个正在运行的实例将继续用与它们启动时相同的模板执行。



参考资料

学习

讨论


关于作者

Paul Pacholski 是 IBM Software Group 技术专家, 其主要工作是 WebSphere Integration Developer 技术销售支持。他多次在会议和客户座谈上介绍和演示 WebSphere Integration Developer。他还著有多篇 WebSphere Process Integration 文章,例如 Using the Common Event Infrastructure




对本文的评价

太差! (1)
需提高 (2)
一般;尚可 (3)
好文章 (4)
真棒!(5)

建议?




回页首


IBM 公司保留在 developerWorks 网站上发表的内容的著作权。未经IBM公司或原始作者的书面明确许可,请勿转载。如果您希望转载,请通过 提交转载请求表单 联系我们的编辑团队。
    关于 IBM 隐私条约 联系 IBM 使用条款