内容


使用 DataStage Web Service Pack 将 Lotus Notes 数据提取到 InfoSphere Information Servers DataStage 模块中进行更多 ETL 处理

详细指南

Comments

简介

InfoSphere® Information Server 的 DataStage® 模块为 Oracle、 DB2®、XML、Teradata 和 SAP 等各种数据提供了许多操作符和插件。但是,DataStage 模块并未提供将 Lotus Notes® 数据提取到 DataStage 中以执行 ETL 操作的专用插件或操作符。

许多客户都问到了这个功能。常见的需求是将 Notes 数据提取到 DataStage 中、执行解压、转换和加载 (ETL),然后将此数据传递给其他 Information Server 模块以便于完成更多 ETL 处理。您不能使用 Lotus SQL 驱动程序,因为它在基于 UNIX® 的系统上出现一些问题(由于与最新的 ODBC 标准不兼容)。您不能使用第三方 ODBC-to-ODBC 桥,因为它们需要许可。因此,我们需要寻找一种经济高效的创新方法来将 Lotus Notes 数据提取到 InfoSphere Information Servers DataStage 模块中以便于完成更多 ETL 处理。

本文将探索 Lotus Domino® Server 提供的用于创建 Lotus 并将其部署为 Web 服务的各种特性。您将了解 IBM InfoSphere Information Server 如何通过 DataStage Web Service Pack 来使用这些应用程序。这篇详细的指南将帮助您在 Lotus Domino 中创建、配置和部署 Web 服务,并帮助您创建、配置、编辑和执行使用 Lotus Web 服务的 DataStage Web Service Pack 作业。

产品简介

本节将讨论 IBM Information Server、DataStage Web Services Pack、Lotus Domino 和 Lotus Domino 产品套件。

IBM Information Server 和 DataStage Web Service Pack

IBM InfoSphere Information Server 是一个统一、全面的信息集成平台。它可以解析、清理和转换来自全异数据源的数据,以便于交付一致和准确的业务数据。IBM Information Server 是集成和同步 XML 数据与存储在后端企业资源规划 (ERP) 系统和其他数据分析应用程序中的业务数据的理想解决方案。

使用 DataStage Web Service Pack,您可以访问 IBM InfoSphere Information Server DataStage 作业中的 Web 服务操作。Web Service Pack 提供了插件平台,并添加了 DataStage 服务器例程功能。

Lotus Domino 及其产品套件

作为 IBM Workplace 系列的必需组件,IBM Lotus Notes 和 Domino 使用户能够更加高效地共享、管理和组织信息。Lotus Notes and Domino 7 软件产品提供了一个可靠、高度安全的消息传递和协作环境,可帮助各公司增强员工的生产力、精简业务流程以及改善总体业务响应能力。Lotus Domino 是一个应用服务器,它提供了创建消息传递、协作、工作流、跟踪、Internet 和 Intranet 应用程序所需的组件功能和开发工具。Domino 服务器将信息存储在 Lotus Notes 数据库中。所有信息,包括 POP3、HTTP 和 Web 服务,都存储在这些 Notes 数据库中,它们是开发人员和管理用于创建应用程序和服务的基本元素。Notes 数据库用于存储信息并保留了在 Lotus Domino 平台上开发应用程序所需的额外功能。

IBM Lotus Domino Designer 提供的应用程序开发软件可允许应用程序开发人员和网站设计人员创建高度安全的协作式应用程序,并可通过 Lotus Notes 或受支持的 Web 浏览器来访问这些应用程序。开发人员可以轻松地根据若干因素来创建核心业务解决方案,这些因素包括:

  • 表单
  • 视图
  • 页面
  • 模式支架
  • 集成即时消息传递
  • XML
  • Java™
  • JavaScript

Lotus Domino Web 服务简介

本节描述 Lotus Domino 和 Web 服务。

Web 服务概述

Web 服务是由一系列远程操作构成的归档,用户可以通过 Internet 发送消息来调用它们。Web 服务提供商发布一个 Web 服务供查询和使用,而 Web 服务使用者可以调用服务中的操作。Web 服务提供商需提供一个 Web 服务 Description Language (WSDL) 文档来定义服务接口。WSDL 文档采用 XML 格式。接口内部的行为和操作将由提供商决定,但提供商通常都会在受支持的编程语言中将接口映射到过程调用。来自使用者的传入请求将传递给底层代码,并且结果将返回给使用者。

Lotus Domino 和 Web 服务

Lotus Domino V7.0 在 Lotus Domino Designer 中引入了全新的 Web 服务设计元素。如果您在 Lotus Domino Designer V7.0 客户机中打开一个数据库,则会在设计元素树的 Shared Code 部分中的熟悉的 Agents 条目下看到 Web Services 条目。Lotus Domino 将 WSDL 接口映射到一个类似于代理的 Web 服务设计元素,并且可使用 Lotus Script 或 Java 编写。Web 服务必需位于启用了 HTTP 的 Domino 服务器中才可以供用户使用。

Lotus Domino 将帮助您完成所有的 WSDL 创建和 SOAP 处理任务,因此您只需要在您的 Web 服务设计元素中编写代码,就像是在编写代理一样。只要您指定了使用哪个类作为服务的接口类,Lotus Domino 就可以发布一个 WSDL 文件,可以将传入 SOAP 请求转换为对类的方法调用,并且可以将方法的结果(如果有)作为 SOAP 响应返回。从编码的角度来说,您只需要编写一个 Lotus Script 或 Java 类。Lotus Domino 将完成剩余工作

创建一个 Lotus Domino Web 服务

您可以使用若干种方法在 Domino Designer 中创建 Web 服务设计元素。如果您完全使用 Lotus Script 或 Java 编写它,则保存设计元素将生成一个反映 Lotus Script 或 Java 代码的 WSDL 文档。如果您导入已有的 WSDL 文档,则会生成反映导入的 WSDL 中的操作 Lotus Script 或 Java。Web 服务设计元素将保存 WSDL 文档和代码。如果公有接口未更改,则 WSDL 文档将保持原样。如果在编写代码的过程中更改了任何公有接口的项目,则会生成一个新的 WSDL。在 Domino Designer 中,Web 服务设计元素将位于 Shared Code 下的 Agents 下方。

  1. 确保在 Domino Administrator 中,Server document > Security tab 下方的 Programmability Restrictions 字段中包括签署 Web 服务的人,包括管理员和服务器。默认情况下,这些字段是空的,并且不允许访问。
  2. 启动 Domino Designer。
  3. 单击 File > Database > NewCTRL+N 创建一个新的空数据库,或者单击 File > Database > OpenCTRL+O 打开一个已有数据库。在设计视图中,您将看到一个新的 Web Services 设计元素被添加到了 Lotus Notes 数据库中,如图 1 所示。
图 1. Domino Designer 及其 Web 服务元素
屏幕快照:Design - Domino Designer 中的 Web 服务窗口显示了选中的 Webservices 选项卡
屏幕快照:Design - Domino Designer 中的 Web 服务窗口显示了选中的 Webservices 选项卡
  1. 单击 New Web Service 生成一个新的 Web 服务。

编写新 Web 服务

  1. 使用 Lotus Script 或 Java 在此 Web 服务设计元素中编写一个类。该类的所有方法都将自动公开为 Web 服务方法。
  2. 如果不希望公开特定的方法,则将它更改为 Private Method,方法是在函数之前添加 Private 限定符。

基本编码

Web 服务的代码包含以下元素:

  • 实现代码的类定义:该类必须成为属性框的 Basics 选项卡中指定的 PortType 类,并且该类必须是公有的。
  • 在类中,针对 Web 服务中的各操作的过程(函数、子元素或方法)定义:这些过程必须是公有的。您不希望出现在接口中的支持过程必须是私有的。
  • 包括 Lotus Script .lss 文件或导入 java 包。
  • Notes Session (LotusScript) 或 Session (Java) 对象的初始化(如果访问了 Domino Objects)。

清单 1 和图 2 展示了如何创建一个非常简单的 Lotus Script 类,该类仅使用一个方法对两数求和并返回结果。

清单 1. 两数求和的示例 Lotus Script 代码
Class MathService
Function Sum(X as Integer, Y as Integer) As Integer
Sum = X+Y
End Function
End Class
图 2. 用于两数求和的 Lotus Script
屏幕快照:MathService - 包含清单 1 内容的 Web 服务选项卡
屏幕快照:MathService - 包含清单 1 内容的 Web 服务选项卡

设置 Web 服务属性

参考资料 中的 Domino Designer 文档提供了关于设置属性的完整文档,因此本文仅介绍一些重要内容。

  1. 右键单击编码窗格,并单击 Web Service Properties 调出属性对话框。
  2. 设置 Web 服务设计元素的名称,比如 Math
  3. 指定哪些类将被公开为 Web 服务,比如 MathService
  4. 提供一个名称(必需)。
  5. 提供一个别名或注释(可选)。
  6. 指定在编码变更导致生成新 WSDL 后接收提醒(可选)。
  7. 提供 PortType 类,它是定义映射到 WSDL 操作的过程的类的名称。这些过程必须是使用 Lotus Script 编写的公有函数或子元素,或者必须是使用 Java 编写的公有方法。私有函数、子元素和方法不会通过 Web 服务接口公开。注意,您不能在 Properties 窗口中输入 PortType 类,除非通过编写或导入 WSDL 创建了类,如图 3 所示。
图 3. Web 服务属性
屏幕快照:MathService - Web Service 选项卡中的 Web Service Properties 窗口显示 Name = MathService and PortType=MathService
屏幕快照:MathService - Web Service 选项卡中的 Web Service Properties 窗口显示 Name = MathService and PortType=MathService
  1. 在 Security 选项卡中,单击 Run as web user,指定希望 Web 服务以调用 Web 服务的有效用户名运行。对于简单的 Math 示例,您不需要运行任何限制操作,如图 4 所示。
图 4. Web 服务属性
屏幕快照:Web Service Properties 窗口显示了 Run as Web User、Allow Remote Debugging、Profile This Web Service 和 All Readers and Above checked
屏幕快照:Web Service Properties 窗口显示了 Run as Web User、Allow Remote Debugging、Profile This Web Service 和 All Readers and Above checked

您可以使用 Advanced 选项卡调优 Soap Message 参数以满足自己的需求,如图 5 所示。

图 5. 高级选项卡上的 SOAP 消息参数
屏幕快照:Web Service Properties 窗口高级选项卡显示了 Programming Model = RPC、SOAP Message Format = RPC/encoded、Include Op name in SOAP=checked、Port Type Name=MathService、Service Element Name=MathServiceService 和 Service Port Name=Domino
屏幕快照:Web Service Properties 窗口高级选项卡显示了 Programming Model = RPC、SOAP Message Format = RPC/encoded、Include Op name in SOAP=checked、Port Type Name=MathService、Service Element Name=MathServiceService 和 Service Port Name=Domino

访问 Web 服务

下面给出了访问 Web 服务的 URL 的示例:

  • 您所创建的 Web 服务 WSDL 定义位于 http://servername<:port>/databasename.nsf/webservicename?WSDL
  • 在示例中,它将变换为 http://9.182.77.93/webservi.nsf/MathService?WSDL
  • Web 服务本身位于 http://servername<:port>/databasename.nsf/webservicename?OpenWebService
  • 在示例中,这将变换为 http://9.182.77.93/webservi.nsf/MathService?OpenWebService

通过 Web Serivce Pack 访问 Lotus Domino Web 服务

高级设计架构

本节描述部署在 IBM WebSphere Application Server 上的 InfoSphere Information Server 如何与部署在 Lotus Domino Server 上的 Web 服务应用程序通信。DataStage Web Service Pack 将通过用户定义的输入创建一个 SOAP 请求,并通过 HTTP 将它发送出去。Domino 应用程序将接收针对已公开 Web 服务的请求(包含 Web 服务设计元素的 .nsf 文件)。Domino Web 服务应用程序将处理 SOAP 请求并且结果将以 SOAP 响应的形式通过 HTTP 传递给 DataStage Web Service Pack。然后,Web Service Pack 将解析 SOAP 响应,提取响应值并将它传递给 DataStage 用户。在本例中,响应值将记录到 DataStage Director 中。图 6 演示了此架构流程。

图 6. DataStage 和 Domino 集成
此图显示,(A) 请求和响应在 Lotus Domino 服务器任务与带 Web 服务                    设计元素的数据库之间传递。(B) 正在运行任意 ETL 工具的 DataStage Web Service Pack 和 Quality 平台。然后,请求和响应在 A 与 B 之间传递。
此图显示,(A) 请求和响应在 Lotus Domino 服务器任务与带 Web 服务 设计元素的数据库之间传递。(B) 正在运行任意 ETL 工具的 DataStage Web Service Pack 和 Quality 平台。然后,请求和响应在 A 与 B 之间传递。

导入 WSDL 元数据

对于希望从 Web Servie Pack 中调用的各 Web 操作,您需要导入相应 WSDL 文档中的消息和元数据信息。WSDL 文档将经过解析并转换为表定义。要访问和导入 WSDL 文档,请使用 Web Service Metadata Importer。

  1. 打开 InfoSphere DataStage Designer。
  2. 选择 Import > Table Definitions > Web Service Table Definitions,如图 7 所示。这将打开 Web Service Metadata Importer。
图 7. DataStage Designer
屏幕快照:DataStage Designer 显示了选中的菜单选项
屏幕快照:DataStage Designer 显示了选中的菜单选项
  1. 在 Address 字段中输入 WSDL 文档的 URL。对于本示例,输入 http://servername<:port>/databasename.nsf/webservicename?WSDL,如图 8 所示。
图 8. WSDL Importer
屏幕快照: Web Service Meta Data Importer 窗口在 Address 字段中显示了 C:\Documents and                     Settings\Administrator\HYDCONDEVWIN01\Desktop\LotusPics\MathService.wsdl
屏幕快照: Web Service Meta Data Importer 窗口在 Address 字段中显示了 C:\Documents and Settings\Administrator\HYDCONDEVWIN01\Desktop\LotusPics\MathService.wsdl
  1. Web Service Explorer 窗口将显示由若干 WSDL 元素构成的树视图。在 Web Service Explorer 窗口中选中一个或多个操作。
  2. 右键单击选中的选项,并选择 Import。此时将打开 Import Progress 窗口,如图 9 所示。
图 9. WSDL Importer: Import Progress
屏幕快照:Import Progress 窗口
屏幕快照:Import Progress 窗口
  1. 单击 Details 查看已导入消息的列表。
  2. 单击 Close 完成导入任务。

设置 Web Service Pack stage 和 DataStage 作业

  1. 从 Palette 窗口中的 Real Time 类别中,将 Web 服务客户机 stage 图标拖动到画布上。
  2. 根据 Web 服务作为数据源还是数据目标连接其他 stage。
  3. 将目标 stage 连接到 Web 服务将被写入的 Web 服务 stage。举例来说,使用 Peek Stage,它将打印 director 日志中的 Web 服务响应,如图 10 所示。
图 10. DataStage 并行作业
Access_Lotus_DB 使用 DSLink2 链接到 View_Result
Access_Lotus_DB 使用 DSLink2 链接到 View_Result
  1. 在 Web 服务客户机 stage 窗口中,单击 General 选项卡。
  2. 单击 Select Web Service Operation,如图 11 所示。此时将打开 Web 服务浏览器窗口。
图 11. Web 服务客户机 stage
屏幕快照: Access_Lotus_DB - WSClientPX stage 窗口显示了供选择的 Select Web Service Operation 按钮
屏幕快照: Access_Lotus_DB - WSClientPX stage 窗口显示了供选择的 Select Web Service Operation 按钮
  1. 在 Web 服务窗口中,高亮服务名称。
  2. 在 Operations 窗口中,高亮希望在 Web 服务客户 stage 中使用的操作。
  3. 单击 Information 窗口中的 Select this item 链接。这将再次打开 Web 服务客户机 stage 窗口。Web 服务名称和所选操作名称将显示在 General 窗口中,如图 12 所示。
图 12. Web 服务操作名称
屏幕快照:选中了 MathServiceService 的 Web 服务浏览器窗口
屏幕快照:选中了 MathServiceService 的 Web 服务浏览器窗口
图 13. Web 服务属性
屏幕快照: Access_Lotus_DB - WSClientPX stage 窗口显示了选中的 Stage 选项卡和已完成的服务信息
屏幕快照: Access_Lotus_DB - WSClientPX stage 窗口显示了选中的 Stage 选项卡和已完成的服务信息
  1. 使用 Security 选项卡定义访问 Web 服务所需的凭证,如图 14 所示。
图 14. 单点登录详细信息
屏幕快照:选定了 Security 选项卡并选中了 Authentication Required 选项的 Access_Lotus_DB - WSClientPX stage 窗口
屏幕快照:选定了 Security 选项卡并选中了 Authentication Required 选项的 Access_Lotus_DB - WSClientPX stage 窗口
  1. 在 Output 选项卡中,单击 Input Arguments > Load Arguments,如图 15 所示。Web 服务的输入参数将自动加载。用户可将输入值输入到这些参数。
图 15. Web 服务输入参数
屏幕快照:Access_Lotus_DB - WSClientPX stage 窗口中选定了 Output 选项卡、Output Name=DSLink2 和 Input Arguments 选项卡
屏幕快照:Access_Lotus_DB - WSClientPX stage 窗口中选定了 Output 选项卡、Output Name=DSLink2 和 Input Arguments 选项卡
  1. 在 Output Message 选项卡中,单击 Load Message Information,如图 16 所示。所有 WSDL 名称空间都将自动填充。
图 16. 输出消息属性
屏幕快照: Access_Lotus_DB - WSClientPX stage 窗口中选定了 Output Message 选项卡,并高亮显示了 Load Message Information 按钮
屏幕快照: Access_Lotus_DB - WSClientPX stage 窗口中选定了 Output Message 选项卡,并高亮显示了 Load Message Information 按钮
  1. 在 Columns 选项卡中找到自动填充的 Web 服务响应参数,如图 17 所示。
图 17. Web 服务输出参数
屏幕快照: Access_Lotus_DB - WSClientPX stage 窗口中选定了 Output 选项卡和 Columns 选项卡
屏幕快照: Access_Lotus_DB - WSClientPX stage 窗口中选定了 Output 选项卡和 Columns 选项卡
  1. 将目标 stage 连接到 Web 服务将被写入的 Web 服务 stage。举例来说,附加 Peek Stage,它将打印 director 日志中的 Web 服务响应。

编译和运行 DataStage 作业

  1. 在 DataStage Designer 中,单击 Compile 按钮。此时将弹出一个窗口显示已成功编译作业,如图 18 所示。
图 18. 编译作业
屏幕快照:Compile Job - AccessDomino 窗口中显示作业已成功编译
屏幕快照:Compile Job - AccessDomino 窗口中显示作业已成功编译
  1. 关闭窗口,并单击 Run 按钮,如图 19 所示。作业成功运行。
图 19. 运行作业
屏幕快照: AccessDomino - Job Run Options 窗口中选择了 Run 按钮
屏幕快照: AccessDomino - Job Run Options 窗口中选择了 Run 按钮
  1. 打开 DataStage Director 并查看作业日志。举例来说,Web 服务将返回 director 日志的总数为 300,如图 20 所示。
图 20. director 日志中的结果
屏幕快照: Event Detail 窗口在 Message 字段中显示了                     View_Result=0; SumReturn=300
屏幕快照: Event Detail 窗口在 Message 字段中显示了 View_Result=0; SumReturn=300

结束语

本文首先介绍了 IBM InfoSphere Information Server、DataStage Web Service Pack、Lotus Domino 和 Lotus Domino Web Services 支持。您了解了如何使用 Domino Designer 中的 Web 服务设计元素创建 Web 服务,以及如何在 Lotus Domino Server 中部署 Web 服务。随后,您详细探究了如何配置 DataStage Job 中的 Web 服务客户机以调用 Lotus Domino Web 服务。


下载资源


相关主题


评论

添加或订阅评论,请先登录注册

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Information Management, Lotus, SOA and web services
ArticleID=469785
ArticleTitle=使用 DataStage Web Service Pack 将 Lotus Notes 数据提取到 InfoSphere Information Servers DataStage 模块中进行更多 ETL 处理
publish-date=02252010