Welcome 微信登录

首页 / 软件开发 / JAVA / 在业务流程中融合J2EE和.NET技术

在业务流程中融合J2EE和.NET技术2011-03-14注意:您应该熟悉 WebSphere Studio Application Developer Integration Edition Version 5.1.1 Web 服务开发环境、ASP .NET Web 服务,并了解构建 BPEL 流程的知识。本文还带有 BPEL 业务流程的样本代码。

引言

由于 XML 和 Web 服务需要使用 BPEL,它迅速成为面向服务体系结构(SOA)的基础,BPEL 还提供了 WebSphere Application Server Enterprise Process Choreographer(Process Choreographer)的公开标准。这些年来,许多企业应用程序都分别在 J2EE 和.NET 平台上被独立和并行的开发和部署。这些业务应用程序都设计有细粒度的业务功能。例如,在 J2EE 中,使用实体 bean 实现信息持久性,并使用会话 bean 实现业务逻辑。这些业务应用程序同样还在有限的业务域里提供集成框架,用于后端或是遗留企业应用程序的集成。举例来说,Java Connector Architecture(JCA)和 Java Messaging Service(JMS)都是典型的 J2EE 应用程序集成框架。

随着 Web 服务的出现,后端企业应用程序通过使用 WSDL 被公开为可发现并可调用的业务服务。WSDL 为 Web 服务接口定义了服务语义,例如操作、协议绑定和消息类型等。BPEL 层在 WSDL 之上,它指定参与流程流的复合 Web 服务的行为。因此,它使业务分析人员和架构师可以定义业务流程流的逻辑,并可以使用 BPEL 来支持与 J2EE Web 服务和 .NET Web 服务的长期运行的会话。

实际上,BPEL 流程流成功与否,基本取决于每个 Web 服务的 WSDL 文档中定义的 XML 服务语义。XML schema 使 XML 与其他文件格式区别开来,XSD 是 XML schema 定义,它是综合且复杂的数据类型定义系统。简单地说,XSD 定义了 XML 文档的外型。使用 XSD 设计简单且强类型(strongly-typed)的对象是 Web 服务互操作性的基础。“改进 J2EE 技术和 .NET 间的互操作性”(本系列的第 1 部分)指出,许多 Web 服务编程人员忽视了 XSD schema 设计的重要性。换句话说,即他们使用自己喜爱的编程语言来为 Web 服务实现编写代码,并随后用供应商的工具从实现中获得 Web 服务语义。这种自底向上的方法产生了有关互操作性的问题。

.NET 和 J2EE 之间的互操作性问题通常源于 XML 命名空间和复杂数据类型,例如嵌套的复杂类型数组以及日期和时间(本系列的第 2 部分和第 3 部分)。本文中讲述的技巧将展示在 BPEL 流程集成中如何在两个平台之间安全并正确的传递嵌套数组、复杂类型和日期。但这需要您为这些复杂类型仔细设计 XSD schema。

着手准备

要构建流程,您需要在 Windows 中安装 IBM WebSphere Studio Application Developer V5.1.1 和 Microsoft .NET Framwork 1.1。对于本文来说,这两种产品都在同一台机器上安装并运行。.NET Visual Studio 是用来构建 .NET Web 服务的集成工具,在本技巧中不予使用。

IIS 的文档根目录在缺省情况下为 C:Inetpubwwwroot。我将使用该目录发布 .NET Web 服务。同时,.NET Framework 1.1 安装在 C:WINDOWSMicrosoft.NETFrameworkv1.1.4322 目录下,且 SDK 在 C:Program FilesMicrosoft.NETSDKv1.1 目录下。

将以下目录添至系统 PATH 变量:

c:WindowsMicrosoft.NETFrameworkv1.1.4322

c:Program FilesMicrosoft.NETSDKv1.1Bin

BPEL 业务流程的样本代码在下载部分。

典型的互操作业务场景

设想一个购买场景,购买者通过货物代理商来执行定购请求。货物代理商拥有许多提供货源的供应商;每个参与者都是独立的订户且拥有自己的产品库存管理系统。也就是说,某个供应商可能运行 J2EE Web 服务来管理其库存而其它供应商可能会使用 .NET Web 服务来进行相同的操作。

购买流程从向不同的供应商索取产品报价开始。在购买者提交订单之前,代理商与每个供应商联系以获取相应产品的报价,且每个供应商将返回该产品的详细信息。之后购买者将浏览信息并继续进行下个定购流程。图 1 展示了两个供应商(Supplier A 和 Supplier B)报价请求的流程图。购买者请求代理商提供报价,代理商将该报价请求传给各供应商,并随后将供应商提供的信息返回给购买者。

图 1.报价请求的流程图

在该图中:

Buyer 是提出购买请求的客户端。

Agent 是业务流程,请求供应商提供产品信息并处理购买者的订单。

Supplier A 是 Java Web 服务,管理供应商 A 的库存。

Supplier B 是 .NET Web 服务,管理供应商 B 的库存。

对于购买者提出的购买请求,代理流程将首先对各供应商构造产品报价请求。各供应商作出反应,提供相应的产品信息,包括价格、数量和其它产品信息。代理随后将这些产品信息返回给购买者以供浏览和定购。

在接下来的章节中,我们将构建代理流程,为 Supplier A 构建 Java Web 服务,并为 Supplier B 构建 .NET Web 服务。