级别: 初级 Thomas Kasemir (kasemir@de.ibm.com), Lab-Services 团队负责人, WebSphere 解决方案中心,IBM 德国
2005 年 4 月 01 日 此“清单”描述了使用 WebSphere Business Integration Modeler 5.1 和 IBM WebSphere Studio Application Developer Integration Edition 5.1 的集成场景。您可以使用该清单了解和演示这些产品的集成性能。
引言
IBM® WebSphere® Business Integration Modeler 5.1(以下简称为 Modeler)和 IBM WebSphere Studio Application Developer Integration Edition 5.1(以下简称为 Application Developer)的集成技术对每一个使用 IBM 的 Business Integration 软件的用户来说都是非常重要的。Modeler 使业务分析员能够设计、模拟、优化公司的流程并将其归档。Application Developer 就是用于实现和维护这些流程的 IT 部门工具。将 Modeler 和 Application Developer 集成是将业务分析和 IT 系统集成的关键。
我们的实例是一个来自银行客户的实际流程,它实现了一个资金订单流程。该流程检查订单的详细信息的有效性,然后决定是否需要经理的批准。依赖于这些确认和批准的结果,该流程将订单传递到错误队列中,创建工作条款用于经理的批准,向客户发送拒绝邮件,或者——如果一切都已通过—— 就执行该订单。
该清单包括三个章节:
- 第 1 章:对 Modeler 中的流程进行建模——使用 Modeler 创建实例流程,然后添加数据对象、判决条件和资源。
- 第 2 章:最后确定 Application Developer 中流程的实现——以 BPEL 的格式解释了输出到 Application Developer 的程序。
- 第 3 章:部署和测试流程——展示了流程的技术实现,包括现有服务的复用和新的服务实现的创建。
您应当对这两种解决方案的用法以及 Eclipse 开发环境的使用具有基本的技能和了解。
支持的资料
在该清单的下载部分中,您将找到支持的资料和下面列出的文件,您将需要在实践中执行这些步骤。
WTC04——WBI Modeler 和 BPC.ppt——这种表示方法,“集成 IBM WBI Modeler 5.1 和 WebSphere Studio Application Developer Integration Edition 5.1,”给您 Modeler 5.1 的概述,详细地描述了包括 BPEL4WS 输出在内的外部集成技术,并且给您概要地介绍了第一个最佳的实例。
WorkspaceA.zip、WorkspaceB.zip、WorkspaceC.zip——在执行该清单中的操作步骤的同时,您将会找到第 1 章和第 2 章里的检查点。对每一个检查点来说,都存在一个工作区,您可以使用该工作区跳过某章,或者继续进行新的环境。您也可以使用最后一个检查点来显示整个集成场景。
FundsOrderData.xsd、FundsOrderEAR.ear——这些文件包含了用于资金订购数据对象的 XML schema 定义以及 EJB 项目,该项目实现实例流程中的某一服务。
第 1 章:对 Modeler 中的流程进行建模
第 1 部分:准备 Modeler 里的流程环境
- 使用空工作区启动 Modeler。如果您正使用 Modeler 插件,那么请启动 Application Developer,然后打开 Business Modeling 视图。如果您想略过该流程建模操作,那么可以打开工作区 WorkspaceA,然后从第 2 章继续。如果您想要首先查看完整的样例,那么启动 WorkspaceC,然后从第 3 章继续。下载部分描述了如何导入工作区(请见 .zip 文件中的 How-to_import_workspaces.txt)。
- 切换到 4 个窗格的布局视图,单击工具栏上的 Apply 4-pane layout。
- 切换到 BPEL 模式。这种模式使得 Modeler 中的所有元素必须与 BPEL 兼容,并且使得用于 BPEL 输出的模型有效。
- 在 Project Tree 中单击右键,创建新的 Business Modeling Project。
- 将项目命名为
FundsOrderModel 、流程目录命名为 bankProcesses 以及流程命名为 FundsOrderProcess。
- 在 Business items 上单击右键,然后重新命名文件夹
bankDO。然后在 bankDO 上单击右键,创建新的 Business Item。
- 命名该业务项目为
FundsOrderData,然后单击 Finish。
- 现在添加属性,如图 1 所示,保存 Business Item。
- 为以后的人员交互创建组织。在 Project Tree 里的 Organization 上单击右键,然后创建新的 Organization Unit。命名新组织为 Manager,然后将其保存。
在此样例中,无需更多的数据定义。在具有实际的环境中,通常需要定义更多的资源、业务项目和组织。
图 1:业务项目 FundsOrderData 的详细资料
第 2 部分: 流程建模
- 现在开始流程建模。关闭已经创建的业务项目和资源,然后从 Project Tree 打开 FundsOrderProcess 模型。
- 删除编辑器面板上的 start 和 end node,因为将要为该流程明确地定义输入和输出标准(数据结构)。
- 首先添加所有的 Local Task、Decision、Merge 和 Map 元素。重新命名它们,如图 3 至 5 所示,但是现在不要连接这些元素。忽略出现的警告和错误,它们将在以后的操作中得到解决。
- 为本地任务添加输入和输出标准。选择第一个任务,Verify Funds Order,然后转到 Attributes View 中的 Input 标签。
- 添加一个称为 VerfiyRequest 的输入标准。设置 Associated data 为复合类型 FundsOrderData。
- 重复步骤 4 和 5,并为所有的任务设置输入和输出标准,如表 1 所示。将复合类型 FundsOrderData 用于所有任务的输入标准,将简单类型 Boolean 用于所有任务的输出标准。
表 1:本地任务的输入和输出标准
|
本地任务
|
输入标准(类型)
|
输出标准(类型)
| | 检验资金订单 | VerifyRequest | VerifyResponse | | 经理批准 | ApprovalRequest | ApprovalResponse | | 转向错误队列 | ForwardRequest | ForwardResponse | | 发送拒绝邮件 | RejectionRequest | RejectionResponse | | 执行订单 | ExecuteRequest | ExecuteResponse |
- 连接这些元素,如图 3 至 5 所示。当将其中的一个本地任务连接到另一个元素时,要确保如图 2 所示使用现有的输入和输出连接。只需为映射(Map)、判决(Decision)和合并(Merge)元素创建新的输入和输出连接。
图 2:使用现有的输入和输出连接
- 最后,保存该流程模型。
图 3:整个流程模型的第一部分
图 4:整个流程模型的第二部分
图 5:整个流程模型的最后一部分
第 3 部分:向该流程模型中添加判决条件
- 将操作模式改为 Intermediate。在编辑判决元素的条件表达式时,该操作是必须的。
- 为判决元素添加条件。单击第一个判决元素 Order valid?。
- 转到 Attributes View 里的标签 Output branches,然后选择 Yes 输出分支。
- 在 Attributes View 中向下浏览,直到您看到 Decision Branch Condition 部分。
- 单击 Edit expression,然后输入该条件,如图 6 所示。
图 6:用于判决元素 Order valid?的判决条件
- 重复这些步骤,为其他判决元素添加条件,并且应用这些条件,如表 2 所示。
表 2:用于本地任务的输入和输出标准
|
判决元素
|
条件
| | Order Valid? | 'Processes.FundsOrderProcess.Order valid?.Input' 相当于条件为真 | | Approval? | 'Processes.FundsOrderProcess.Approval?.Input:2.amount' 大于 10.0 | | Approved? | 'Processes.FundsOrderProcess.Approved?.Input' 相当于条件为真 |
- 将操作模式更改为 Basic,然后保存该流程。
第 4 部分:向该流程模型中添加资源定义
- 为任务经理批准添加资源定义(实现此任务所需的人)。单击 Local Task Manager approval。
- 转到 Attributes View 里的 Resources 标签,并且浏览到 Individual resource requirements 部分。
- 单击Add,然后将资源的需求重新命名为 ManagerGroup。
- 将 Individual resource 设置为 Staff。
- 输入 Resource Selection Criteria,如图 7 所示。
- 保存该流程模型。
图 7:用于本地任务经理批准的资源选择标准
第 2 章:最后完成 Application Developer 中的流程实现
第 5 部分:输出流程
- 保存所有未决的改动,然后从 File 菜单中选择 Export。
- 从列表中选择 WebSphere Business Integration Modeler Export,然后单击 Next。如果您想略过导入该流程和集成现有的服务实现的操作,那么可以打开工作区 WorkspaceB,从第 2 章第 10 部分继续。下载部分解释了如何导入这些工作区(请见 .zip 文件中的 How-to_import_workspaces.txt)。
- 从列表中选择 BPEL export,然后单击 Next。
- 选择目标目录和项目 FundsOrderModel 以输出整个项目。单击 Next。
- 选择将该流程作为带有接受/应答行为的 Long-running process 输出,然后单击 Finish。这样的操作应该不会出现错误或者警告信息。
当您正在使用 Modeler 插件用于 Application Developer 时,可以将模型直接输出到同一工作区中的新的服务项目(Service Project)中去。如果您的工作区位于 C:\MyWorkspace\,并且新的 Service Project 名为 FundsOrderService,那么就可以将自己的模型输出到 C:\MyWorkspace\FundsOrderService 中。然后切换到 Business Integration 视图,并刷新该视图。
- 关闭 Modeler,然后使用新的工作区启动 Application Developer。当您正在使用 Modeler 插件时,请切换到 Business Integration 视图。右键单击 Project Tree,然后创建一个新的 Service Project。
- 将该项目命名为
FundsOrderService,然后单击 Finish。
- 右键单击 Tree 里的 FundsOrderService 项目,然后选择 Import。
- 从列表中选择 File System,然后单击 Next。在用于 Modeler 输出之前,请选择您使用的文件夹。
- 选择所有目录,然后核查指向您的 FundsOrderService 项目的 Into 文件夹。单击 Finish。
第 6 部分:研究导入的流程
- 在导入操作结束后应该不会出现错误或者警告信息。扩展 Project Tree,然后研究该流程结构 。
- 删除 RootOrganizationModel.xsd 和 RootResourceModel.xsd,因为以后将不再使用这些文件和数据包。
- 打开流程 FundsOrderProcess,然后研究该 BPEL 流程。
- 该输出功能为此流程中的所有服务创建了 Partner Links 和 Service 接口。该行为与操作及已创建的输入/输出变量相关联。在必要的地方也添加了分配(Assign)行为。判决元素的条件已经被映射到链接的条件中,在经过如下行为之后:Order valid?、Approval?和 Approved?。
- 用于任务 Manager approval 的资源设置已经被映射到 Staff 行为中,并且用于 Potential Owner 的动词已经被设置为表达式 Group Members,如图 8 所示。
为了今后的测试,将 Group Name 更改为 Manager,并且确保在您的本地用户注册处中名为 Manager 的小组至少要有一个分配给它的用户。
图 8:用于 Staff 行为 Manager approval 的 Staff 设置
- 在此样例中,无需实现映射行为。只需要做一点改动。将 Approval? 行为置于流程中,如图 9 所示。
图 9:Approval? 行为和输出链接
- 修改这些链接上的条件,因为它们使用还未实现的映射行为的输出。选择 Approval? 行为和 Manager approval 行为之间的链接。
- 转到 condition 标签,删除现有的表达式,然后使用 Visual Expression 编辑器输入以下表达式 。
InputCriteriaVariable.InputPart.amount > 10
- 选择 Approval? 行为和 Merge Input Criteria:2 行为之间的链接。
- 转到 condition 标签,删除现有的表达式,然后为该条件选择 Otherwise。
第 7 部分:导入现有的 EJB 项目
- 将现有的 EJB 项目导入到您的工作区中,然后使用您的业务流程中现有的 EJB 服务。从菜单中选择 Import,然后选择 EAR file。
- 导航到文件 FundsOrderEAR.ear,它是您使用清单下载的文件,然后单击 Finish。
- 切换到 J2EE Hierarchy,然后检查这个新的 EJB 项目,它使用远程接口中的方法 verifyFundsOrder 包含了一个名为 VerifyOrderPT 的会话 bean。此方法将在我们的业务流程中作为服务使用。
- 在我们的服务项目中为此 EJB 创建服务接口。切换到 Services 视图。在 FundsOrderService 项目上单击右键,选择 New,然后再选择 Service built from。
- 为现有的会话 bean 选择创建服务。选择 EJB,然后单击 Next。
- 选择 VerifyOrderPT bean,然后选择方法 verifyFundsOrder。单击 Next。
- 将数据包的名称更改为
bankProcesses.ejb,然后默认其他的缺省值。单击 Finish,然后接受对 Java 创建路径的更改。
- 检查已经生成的 WSDL 文件,然后查看这些操作和消息是否与 EJB 方法匹配。请注意到输入消息中包含了复合类型 FundsOrderData。
第 8 部分:使用流程中现有的服务
- 使用此服务接口将行为 Verify Funds Order 链接到业务流程中。打开 FundsOrderProcess,然后在右边选择 Partner Link VerifyFundsOrderPartner,如图 10 所示。
图 10:选择 Partner Link VerifyFundsOrderPartner
- 转到 Implementation 标签,然后单击 Edit 来更改 Partner Link 的设置,如图 11 所示。
图11:编辑 Partner Link Type VerifyFundsOrderPartnerLink
- 更改 Port Type File,使之指向数据包 bankProcesses.ejb 中的文件 VerifyOrderPT.wsdl,该数据包在前面部分中已经生成。
- 在 BPEL 编辑器中,选择 Verify Funds Order 行为,然后转到 Implementation 标签。
- 从列表中选择操作 verifyFundsOrder。
- 为称为 VerifyFundsOrderRequest 和 VerifyFundsOrderResponse 的请求和响应消息创建新的变量。
- 删除变量 VerifyFundsOrderOutputCriteriaVariable,然后保存该流程。其余的错误将在下一步操作中得到解决。
第 9 部分:向您的流程中添加转换器服务
- 将流程输入消息映射到第一个行为 Verify Funds Order 的输入消息中。在第一个调用行为之前插入转换(Transform)行为。
- 在 Implementation 标签中,将变量 InputCriteriaVariable 和 VerifyFundsOrderRequest 分别作为输入和输出进行分配。
- 单击 New 以创建新的转换器服务。
- 将 Partner Link 的名称更改为
TransformPartner,并将命名空间改为 http://FundsOrderProcess.bankProcesses。单击 OK。
- 将输入消息的所有部分都映射到输出消息的相应部分中,然后保存转换器服务。
- 在 Verify Funds Order 行为之后调整条件,使之能够与该行为的新的输出变量一起运作。选择 Order valid? 行为和 Map1 Java 片断之间的链接。
- 使用 Visual Expression 编辑器将条件更改为
VerifyFundsOrderResponse.result == true。
- 选择 Order valid? 行为和 Map2 Java 片断之间的链接,然后将条件设置为 Otherwise。
- 保存该流程。
第 10 部分:创建新的服务实现
- 使用 Application Developer 的向导来创建新的 EJB,它们实现了定义在由 Modeler 产生的接口中的服务。如果您想略过创建服务实现这步操作,那么可以打开工作区,WorkspaceC,然后从第 3 章继续。
在 Services 视图中,扩展 FundsOderProcessInterface.wsdl 和 Port Types。
- 右键单击第一个 Port Type ExecuteOrderPT,然后启动向导 Build from Service。
- 选择创建 EJB Service Skeleton,然后单击 Next 两次以接受默认的设置。
- 选择 WSDL 文件 FundsOrderProcessInterface.wsdl 以包含对于您的新服务的接口描述,然后选择 Port type ExecuteOrderPT。接受其他所有缺省设置,然后单击 Next。
- 选择 FundsOrderEJB 项目,然后单击 Finish。
- 回到 J2EE 视图,扩展 EJB Modules 文件夹以查看创建的 EJB。打开 ExecuteOrderPTBean。
- 查找方法 sendExecuteOrder_InputCriteria,然后添加代码声明,如图 12 所示。保存并关闭 Java 编辑器。
图 12:向生成的 EJB 框架中添加用户代码
- 为 Port Types ForwardtoerrorqueuePT 和 SendRejectionMailPT 重复步骤 7 。这些 EJB 的方法应该返回布尔值假。保存您所做的改动。
- 在创建完所有的三个 EJB 后,将生成用于这些 EJB 的部署代码。在 J2EE 视图中,右键单击 FundsOrderEJB 项目,然后选择 Deployment and RMIC Code...。
- 在下一屏的视图中,单击 Select All,然后点击 Finish。
第 3 章:部署并测试该流程
第 11 部分:生成部署代码并创建测试服务器
- 为您的业务流程创建部署代码。转到 Services 视图,右键单击 FundsOrderProcess,然后选择 Generate Deploy Code。
- 由于该流程是长期运行的流程,并且使用请求/响应接口,所以只能生成 JMS 绑定。在 Referenced Partners 部分中,为流程中的 Partners 设置服务端点。为每个 Partner 选择 xxxEJBService.wsdl,然后点击 Finish,如图 13 所示。
图 13:为您的流程的 Partner Links 设置 Referenced Partners
- 在 Process Settings 部分中,接受缺省值以使用 Staff Plugin Provider 配置,它将在以后创建。请确保您的系统中存在名为 Manager 的组,并且至少有一个用户是该组的成员。
如果您不想配置 Staff Plugin Provider 和为您的测试服务器启用安全性,请选择 Process Settings 中的 bpe/staff/everybodyconfiguration,将其作为 Staff Plugin Provider。现在任意未经验证的用户都可以声明每一个工作项目,用户可以使用该配置略过第 12 部分,用户也不必拥有 Manager 组。
- 创建服务器和服务器配置来测试用户的业务流程。转到屏幕底部的 Servers 视图,在空的清单中单击右键,创建一个新的服务器配置。
- 输入名称
TestServer,然后核查是否选中 Integration Test Environment。单击 Finish。
- 在新的服务器上单击右键,然后选择 Add and remove projects。选择所有的项目,单击 Finish。
- 在该服务器上再次单击右键,然后选择 Publish。
- 在服务器 TestServer 上单击右键,然后选择 Create tables and data sources 来为长期运行的流程创建表格。
第 12 部分:准备 Staff-Plugin Provider 并配置安全性
- 双击服务器 TestServer,打开服务器配置。转到 Staff 标签,一直浏览到 Server Settings部分。
- 在第一个清单中选择 User Registry Staff Plugin Provider,然后为第二个清单单击 Add。
- 输入
User Registry Staff Plugin Provider Configuration 将其作为名称,并输入 bpe/staff/userregistryconfiguration 作为 JNDI 的名称。
- 对于 XSL Transformation File,在用户的 Application Developer 中选择安装文件夹
/runtimes/ee_v51/ProcessChoreographer/Staff/UserRegistryTransformation.xsl。
- 转到 Security 标签,使得该服务器的安全性可用。输入您机器的管理员的信任状。不要启用 Java 2 的安全性。
- 保存并关闭该配置。
- 为 BPESystemAdministrator 角色设置用户。右键单击服务器 TestServer,然后选择 Edit BPEContainer Deployment Descriptor。
- 转到 Security 标签,然后选择角色 BPESystemAdministrator。核查清单里的用户是否是您本地机器的系统管理员,在必要请况下更改设置。
- 接下来选择 JMSAPIUser,一直浏览到 Run As 部分,然后核查清单里的用户是否是系统管理员。保存并关闭 Deployment Descriptor。
第 13 部分:测试 Business Process Web Client 里的流程
- 启动服务器 TestServer,然后使用 Business Process Web Client 来测试该流程。启动服务器后,右键单击 TestServer,启动 Business Process Web Client。
- 使用有效的用户 ID 登录服务器,然后从左边菜单中选择 My Templates。选择该流程模版,然后单击 Start Instance。
- 在一个测试运行阶段,键入输入参数,方法如图 14 所示,然后单击 Start Instance。
图 14:用于第一次测试运行的输入参数
- 使用这些设置,该流程就会很快结束,这是因为它不需要管理员的批准。核查系统日志,获得服务实现的状态消息,如图 15 所示。
图 15:在第一次测试运行后的状态消息
- 现在启动一个新的流程实例,然后将参数 amount 改为 20。这时该 Manager 组的成员就必须同意该订单。
- 启动该流程后,系统的日志显示只有第一个行为可以执行,如图 16 所示。
图 16:在第二次测试运行后的状态消息
- 从 Web Client 中注销后,作为一个 Manager 组的用户登录。在 My ToDo's 清单中,您可以看到已经存在的工作项目,如图 17 所示。
图 17:在第二次测试运行中未完成的工作项目
- 声明该工作项目,然后输入用于批准该订单的正确或者错误信息。单击 Complete,结束该工作项目。如果您已经选择拒绝该订单,那么将在系统日志中看到行为 Send Rejection Mail 已经得到了处理,如图 18 所示。
图 18:在第二次测试运行中订单遭到拒绝后的状态消息
您已经完成全部操作。从 Modeler 里的流程建模到 Application Developer 中的实现,现在您拥有了运行中的集成场景。
结束语
利用该集成清单, 您已经使用 WebSphere Business Integration Modeler 5.1 和 WebSphere Studio Application Developer Integration Edition 5.1 开发了一个集成场景。在该实践的三章中,您已经完成了全部操作流程,从 Modeler 里的流程模型开始,以在
Application Developer 里运行应用程序结束。
您现在可以演示这个运行的解决方案,或者再重新进行一遍该实践,并且将集成流程显示给其他用户。您也可以使用您自己业务环境中的流程和需求来扩展该实例。
下载
参考资料
关于作者  | 
|  |
Thomas Kasemir是 IBM 德国 Boeblingen 实验室的一名软件工程师。他是 Lab-Services 团队的负责人,主要致力于流程编排和 Web 服务方面 。您可以通过 kasemir@de.ibm.com 联系 Thomas。
|
对本文的评价
|