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 服务器例程功能。
作为 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 服务。
Web 服务是由一系列远程操作构成的归档,用户可以通过 Internet 发送消息来调用它们。Web 服务提供商发布一个 Web 服务供查询和使用,而 Web 服务使用者可以调用服务中的操作。Web 服务提供商需提供一个 Web 服务 Description Language (WSDL) 文档来定义服务接口。WSDL 文档采用 XML 格式。接口内部的行为和操作将由提供商决定,但提供商通常都会在受支持的编程语言中将接口映射到过程调用。来自使用者的传入请求将传递给底层代码,并且结果将返回给使用者。
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 将完成剩余工作
您可以使用若干种方法在 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 下方。
- 确保在 Domino Administrator 中,Server document > Security tab 下方的 Programmability Restrictions 字段中包括签署 Web 服务的人,包括管理员和服务器。默认情况下,这些字段是空的,并且不允许访问。
- 启动 Domino Designer。
- 单击 File > Database
> New 或 CTRL+N 创建一个新的空数据库,或者单击 File > Database > Open 或 CTRL+O 打开一个已有数据库。在设计视图中,您将看到一个新的 Web
Services 设计元素被添加到了 Lotus Notes 数据库中,如图 1 所示。
图 1. Domino Designer 及其 Web 服务元素
- 单击 New Web Service 生成一个新的 Web 服务。
- 使用 Lotus
Script 或 Java 在此 Web 服务设计元素中编写一个类。该类的所有方法都将自动公开为 Web 服务方法。
- 如果不希望公开特定的方法,则将它更改为 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
参考资料 中的 Domino Designer 文档提供了关于设置属性的完整文档,因此本文仅介绍一些重要内容。
- 右键单击编码窗格,并单击 Web Service Properties 调出属性对话框。
- 设置 Web 服务设计元素的名称,比如
Math。 - 指定哪些类将被公开为 Web 服务,比如
MathService。 - 提供一个名称(必需)。
- 提供一个别名或注释(可选)。
- 指定在编码变更导致生成新 WSDL 后接收提醒(可选)。
- 提供 PortType 类,它是定义映射到 WSDL 操作的过程的类的名称。这些过程必须是使用 Lotus Script 编写的公有函数或子元素,或者必须是使用 Java 编写的公有方法。私有函数、子元素和方法不会通过 Web 服务接口公开。注意,您不能在 Properties 窗口中输入 PortType 类,除非通过编写或导入 WSDL 创建了类,如图 3 所示。
图 3. Web 服务属性
- 在 Security 选项卡中,单击 Run as web user,指定希望 Web 服务以调用 Web 服务的有效用户名运行。对于简单的 Math 示例,您不需要运行任何限制操作,如图 4 所示。
图 4. Web 服务属性
您可以使用 Advanced 选项卡调优 Soap Message 参数以满足自己的需求,如图 5 所示。
图 5. 高级选项卡上的 SOAP 消息参数
下面给出了访问 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 集成
对于希望从 Web Servie Pack 中调用的各 Web 操作,您需要导入相应 WSDL 文档中的消息和元数据信息。WSDL 文档将经过解析并转换为表定义。要访问和导入 WSDL 文档,请使用 Web Service Metadata Importer。
- 打开 InfoSphere DataStage Designer。
- 选择 Import > Table Definitions > Web Service Table Definitions,如图 7 所示。这将打开 Web Service Metadata Importer。
图 7. DataStage Designer
- 在 Address 字段中输入 WSDL 文档的 URL。对于本示例,输入
http://servername<:port>/databasename.nsf/webservicename?WSDL,如图 8 所示。
图 8. WSDL Importer
- Web Service Explorer 窗口将显示由若干 WSDL 元素构成的树视图。在 Web Service Explorer 窗口中选中一个或多个操作。
- 右键单击选中的选项,并选择 Import。此时将打开 Import Progress 窗口,如图 9 所示。
图 9. WSDL Importer: Import Progress
- 单击 Details 查看已导入消息的列表。
- 单击 Close 完成导入任务。
设置 Web Service Pack stage 和 DataStage 作业
- 从 Palette 窗口中的 Real Time 类别中,将 Web 服务客户机 stage 图标拖动到画布上。
- 根据 Web 服务作为数据源还是数据目标连接其他 stage。
- 将目标 stage 连接到 Web 服务将被写入的 Web 服务 stage。举例来说,使用 Peek Stage,它将打印 director 日志中的 Web 服务响应,如图 10 所示。
图 10. DataStage 并行作业
- 在 Web 服务客户机 stage 窗口中,单击 General 选项卡。
- 单击 Select Web Service Operation,如图 11 所示。此时将打开 Web 服务浏览器窗口。
图 11. Web 服务客户机 stage
- 在 Web 服务窗口中,高亮服务名称。
- 在 Operations 窗口中,高亮希望在 Web 服务客户 stage 中使用的操作。
- 单击 Information 窗口中的 Select this item 链接。这将再次打开 Web 服务客户机 stage 窗口。Web 服务名称和所选操作名称将显示在 General 窗口中,如图 12 所示。
图 12. Web 服务操作名称
图 13. Web 服务属性
- 使用 Security 选项卡定义访问 Web 服务所需的凭证,如图 14 所示。
图 14. 单点登录详细信息
- 在 Output 选项卡中,单击 Input Arguments > Load Arguments,如图 15 所示。Web 服务的输入参数将自动加载。用户可将输入值输入到这些参数。
图 15. Web 服务输入参数
- 在 Output Message 选项卡中,单击 Load Message Information,如图 16 所示。所有 WSDL 名称空间都将自动填充。
图 16. 输出消息属性
- 在 Columns 选项卡中找到自动填充的 Web 服务响应参数,如图 17 所示。
图 17. Web 服务输出参数
- 将目标 stage 连接到 Web 服务将被写入的 Web 服务 stage。举例来说,附加 Peek Stage,它将打印 director 日志中的 Web 服务响应。
- 在 DataStage Designer 中,单击 Compile 按钮。此时将弹出一个窗口显示已成功编译作业,如图 18 所示。
图 18. 编译作业
- 关闭窗口,并单击 Run 按钮,如图 19 所示。作业成功运行。
图 19. 运行作业
- 打开 DataStage Director 并查看作业日志。举例来说,Web 服务将返回 director 日志的总数为 300,如图 20 所示。
图 20. director 日志中的结果
本文首先介绍了 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 服务。
| 描述 | 名字 | 大小 | 下载方法 |
|---|---|---|---|
| 本文的示例 DataStage 作业 | Domino_IS.tar | 30KB | HTTP |
学习
- 阅读 “IBM Lotus Domino 7 中的实用 Web 服务,第 1 部分: 什么是 Web 服务以及它们为何如此重要”(developerWorks,2006 年 11 月)
- 阅读 “在 IBM Lotus Domino 7 中使用 Web 服务,第 3 部分: 编写复杂的 Web 服务”
(developerWorks,2006 年 11 月)
- 阅读 “Lotus Notes/Domino 7 Web Services”(developerWorks,2004 年 9 月)
- 访问 developerWorks 上的 InfoSphere 产品专题,获取必需的资源以增加您在架构领域中的技能。
- 从 IBM Information Server 信息中心 获取更多信息。
- 在 developerWorks Information Management 专区 上了解关于 Information Management 的更多信息。获取技术文档、how-to 文章、培训、下载、产品信息等。
- 随时关注 developerWorks 技术活动 和 网络广播。
获得产品和技术
- 下载
IBM 产品试用版 Lotus Domino 及其产品套件。
- 使用可从 developerWorks 直接下载的
IBM 产品评估试用版软件 构建您的下一个开发项目。
讨论
- 参与论坛讨论。
- 从
Lotus 论坛 获取更多信息
- 访问
developerWorks
博客
并参与
developerWorks 社区。

Santhosh Kotte 在 IBM 位于印度海得拉巴的软件实验室的 IBM InfoSphere Information Server Group 担任系统软件工程师。他于 2007 年以助理软件工程师的身份加入 IBM。他主要负责 DataStage ASB Packs(XML Pack 2.0、Java Pack 2.0 和 Web Service Pack 2.0)以及下一代 Web Service Pack (WS Pack 3.0) 的开发和维护工作。他的主要兴趣是研究各种新兴技术,比如 XML、DB2 pureXML、SOA 和 Web 服务,以及探索各种信息集成技术。

