本 OBE 教程向您介绍如何创建一个导入、转换和导出 XML 文件的 Oracle Data Integrator (ODI) 方案。该方案可以在 BPEL 流程中作为一个 partner link 执行。
大约 2 小时 30 分钟
本 OBE 教程包括下列主题:
| 概述 | ||
| 示例 | ||
| 验证前提条件 | ||
| 示例 1:使用接口开发 ODI XML 转换 | ||
| 示例 2:使用过程开发 ODI XML 转换 | ||
| 示例 3:开发用于从 SOA 调用 ODI 方案的 BPEL 流程 | ||
| 示例 4:修改示例 3 中创建的 BPEL 流程使其调用另一个方案 | ||
| 总结 | ||
| 相关信息 | ||
将鼠标置于此图标上以加载和查看本教程的所有屏幕截图。(警告:此操作会同时加载所有屏幕截图,网速较慢时,响应时间可能会比较长。)
注:此外,您还可以在下列步骤中将鼠标放在每个单独的图标上,从而仅加载和查看与该步骤相关的屏幕截图。
这些屏幕截图不能反映用户的具体环境。只是说明如何在 Oracle Data Integrator 中找到特定功能。
对于企业 SOA 部署来说,几乎总是需要进行企业数据的抽取、加载和转换。SOA 的 XML 层在某些企业数据抽取、加载和转换方面已被证明效率低下。通过利用 Oracle Data Integrator 中固有的 SOA 体系结构,您可以利用 Oracle Data Integrator 来执行 ELT。我们的内部测试显示 ODI 可以使其速度轻松超过非 XML ELT 用例的 20 倍,ODI 甚至可以超越 XSLT XML ELT 用例(取决于所涉及转换的类型)。
Linda 是 Global Enterprise 的数据库管理员。在 Global Enterprise,Linda 负责执行关于机构内各种资源的数据库管理和集成任务。具体来说,Linda 负责可在 BPEL 流程中使用的 XML 转换。她需要构建一个用于导入 XML 文件、执行转换,然后将该文件导出到新 XML 文件的 ODI 方案。Linda 还考虑一个创建 ODI XML 过程的方案,该过程将导入 XML 文件以便将来在 ODI XML Driver 中借助 SQL 语句进行转换。然后,将该文件导出为一个新的 XML 文件。Linda 还需创建一个 BPEL 流程,用于执行 ODI 方案,从而转换 XML 文件并创建新的 XML 文件。
在本 OBE 中,学员将通过四个示例来了解该方案。
示例 1:使用接口开发 ODI XML 转换
本示例将向您逐步介绍如何创建用于导入 XML 文件的 ODI 接口。该文件将在 ODI 接口内进行转换。然后,将该文件导出为一个新的 XML 文件。
示例 2:使用过程开发 ODI XML 转换
本示例将向您逐步介绍如何创建用于导入 XML 文件的 ODI 过程。该文件将在 ODI XML Driver 中通过 SQL 语句进行转换。然后,将该文件导出为一个新的 XML 文件。
示例 3:开发用于从 SOA 调用 ODI 方案的 BPEL 流程
本示例将向您逐步介绍创建用于轮询文件的 BPEL 流程。当文件出现后,BPEL 将执行示例 1 中创建的 ODI 方案来转换 XML 文件并创建一个新的 XML 文件。
示例 4:修改示例 3 中创建的 BPEL 流程使其调用另一个方案
本示例向您逐步介绍如何修改示例 4 中创建的 BPEL 流程,从而使该流程执行其他 ODI 方案。当文件出现后,BPEL 将执行示例 1 中创建的 ODI 方案,对 XML 文件进行转换并创建一个新的 XML 文件,然后执行示例 2 中创建的另一个 ODI 方案。
在启动任务前,确保您的系统环境满足以下要求:
软件要求
系统应该已安装以下产品:
系统应该包括以下配置:
| 参数 | 值 |
| Name | Local_XE |
| Instance / dblink (Data Server) | XE |
| User | ODI_STAGE |
| Password | oracle1 |
本示例将逐步介绍如何通过使用接口执行 XML 文件的导入、转换和导出来构建 ODI 流程。ODI Web 服务将调用构建在 PKGXFORMXML 上的 SCENXFORMXML_INT 方案。PGKXFORMXML_INT 声明在程序包内使用的一个变量,然后执行接口 XFORMXML。ImportXformExportXML_INT 将源 XML 文件映射到目标 XML。使用 LKM SQL to SQL 将源 XML 文件加载到临时区域。然后,源 XML 文件并入一个 .csv 文件。当记录与合并文件相匹配时,CLIENT 表的地址字段将进行更新。然后,将使用 IKM SQL to SQL Append 将更新后的 XML 写入一个 XML 文件。IKM SQL to SQL Append 也进行了修改,因此在 Commit 步骤中也将写入 ExportXMLFileLoc。
项目是用户创建的 ODI 对象的集合。其中应包含一个功能域。最好使用项目表示您的集成过程或您需要使用 ODI 开发的集成项目中的功能域。每个项目都有自己的知识模块、变量、标记和其他类型的对象。这些对象可通过复制在不同项目之间进行共享。您还可使用全局对象(如变量或序列)定义所有项目公用的参数。
要在 ODI 中新建项目,执行以下步骤:
|
1. |
单击 Start > All Programs > Oracle > Oracle Data Integrator > Designer 打开 ODI Designer。
|
|
2. |
Oracle Data Integrator Login 屏幕显示。从 Login Name 下拉菜单中选择 Repo_designer。
|
| 3. |
默认的 User Name 和 Password 预设为 SUPERVISOR 和 SUNOPSIS。单击 OK 登录。
|
| 4. |
在左下窗格中,单击 Projects 选项卡。
|
| 5. |
您会看到 Projects 窗格显示在左上角。右键单击并选择 Insert Project。
|
| 6. |
将显示 Project New 窗口。在 Name 中输入 ODI_ER_HSP。您会看到 Code 值也使用相同文本填充。然后,单击 OK 查看 Projects 窗格中填充的新项目。
|
要为源 xml 文件插入新模型,执行以下步骤:
|
1. |
在 ODI Designer 中,滚动至左下窗格并单击 Models 选项卡。
|
||||||||
|
2. |
您会看到 Models 窗格显示在左上角。右键单击并选择 Insert Model。
|
||||||||
| 3. |
在 Model:New 窗口中,需要输入新模型的值。为此,提供以下参数,然后单击 Reverse 选项卡。
|
||||||||
| 4. |
在 Reverse 选项卡下的 Context 下拉菜单中,选择 Global,向下滚动,然后单击 Reverse。这将生成 XML 源。
|
||||||||
| 5. |
单击 Yes 确认。然后,单击 OK。
|
||||||||
| 6. |
在 Models 窗格中,您可能会注意到正在填充新数据存储。单击 + 符号展开并查看 SRC_GEO_DIM_XML 模型。
|
要为新 .csv 查询文件插入模型,执行以下步骤:
|
1. |
单击 Designer 内的 Models 选项卡。
|
||||||||
|
2. |
右键单击并选择 Insert Model。
. |
||||||||
| 3. | 在 Model:New 窗口中,需要输入新模型的值。为此,提供下表中的参数。单击 Reverse 选项卡。选择 Global context。不要单击 Reverse。单击 OK,将在下一步中添加新数据源。
|
||||||||
| 4. |
为 .scv 查询文件插入新的数据存储。右键单击新建的 SRC_FILE_LOOKUP 并选择 Insert Datastore。选择资源名称:DIM_GEO_LOOKUP.csv。将数据存储命名为 DIM_GEO_LOOKUP。
|
||||||||
| 5. |
选择 Files 选项卡,然后选择 Delimited 作为文件格式。设置 Heading (number of lines) 等于 1。对于 File Separator,选择 Other 并键入一个逗号。
|
||||||||
| 6. |
单击 Column 选项卡,单击 Reverse 按钮,然后单击 Yes 确认在反转前保存您的更改。
|
||||||||
| 7. |
以下列应反转。将 Client_id 类型类型设置为 String,然后单击 OK 保存。
|
创建接口之前,将加载和集成 XML 数据所需的 LKM 和 IKM 导入项目中。要导入 LKM SQL to SQL KM,执行以下步骤:
|
1. |
单击 Designer 中的 Projects 选项卡。展开 Knowledge Modules,右键单击 Loading (LKM) 节点,然后单击 Import Knowledge Modules。浏览到 ODI 安装的 IMPEXP 文件夹 (I:\ODI\oracle\impexp),然后单击 OK。选择 LKM SQL to SQL,然后单击 OK。
|
|
2. |
右键单击 Loading (LKM) 节点,然后单击 Import Knowledge Modules。浏览到 IMPEXP 文件夹 (I:\ODI\oracledi\impexp),选择 IKM SQL to SQL Append,然后单击 OK。
|
3. |
右键单击 Loading (LKM) 节点,然后单击 Import Knowledge Modules。浏览到 ODI 安装的 IMPEXP 文件夹 ( I:\ODI\oracledi\impexp),选择 LKM File to SQL,然后单击 OK。
|
4. |
验证 Knowledge Modules 节点如下所示:
|
要创建新接口 INT_ImportXFormExportXML,执行以下步骤:
|
1. |
单击 ODI Designer 中的 Projects 选项卡,展开 First Folder。右键单击 Interfaces 节点,然后单击 Insert Interface。将接口命名为 INT_ImportXFormExportXML。选择 Staging Area Different from Target。选择 Sunopsis_Memory_Engine。
|
|
2. |
单击 Diagram 选项卡,然后单击 Models 选项卡将源和目标拖放到 Designer。将 Client 数据存储从 SRC_GEO_DIM_XML 拖到 Target 容器中。将 Client 数据存储从 SRC_GEO_DIM_XML 拖到 Source 容器中。当 Designer 询问 Do you want to perform and Automatic Mapping? 时,单击 Yes。Diagram 选项卡应如下所示。 注: 对于本练习,我们在 IKM 中设置源文件名称和位置,但要编辑 Commit 步骤。因此,我们可以针对源和目标使用相同的模式,因为它们拥有相同的逻辑设计。
|
3. |
将 DIM_GEO_LOOKUP 源拖放到源容器中,然后通过将 Client 中的 Client ID 拖放到 DIM_GEO_LOOKUP 的 Client_ID 中联接两个表。单击联接图标,然后单击屏幕底部的联接属性内的 Client (CLIENT)。所有 CLIENT (CLIENT) 行,包括与 DIM_GEO_LOOKUP (DIM) 行不匹配的行。
|
4. |
在目标数据存储中单击 ADRESS 字段,将 ADRESS 的 Mapping 更改为 coalesce(DIM.new_address,CLIENT.ADRESS)。
|
5. |
单击 Flow 选项卡。单击 SS_0 (1 - FILE_GENERIC),然后在 LKM 部分中,将 DIM 的 LKM 设置为 LKM File to SQL。单击 SS_0 (2 - XML_GEO_DIM),并确保 Client 的 LKM 设置为 LKM SQL to SQL。单击 Target 窗口,然后确保 Client(目标)的 IKM 设置为 IKM SQL to SQL Append 。将选项 DELETE_ALL 设置为 Yes,如以下屏幕截图所示。单击 OK 保存。INT_ImportXFormExportXML 接口现在已建立。
|
要创建项目变量以设置 XML 导出文件位置,执行以下步骤:
|
1. |
单击 ODI Designer 中的 Projects 选项卡。右键单击 Variables 节点,然后单击 Insert Variable。
|
|
2. |
将变量命名为 ExportXMLFileLoc。将 Data types 设置为 Text。将 Default Value 设置为 "..\demo\xml\DIM_GEO_OUT.xml"。单击 OK。
|
要将 SQL to SQL Append 编辑为在 Commit 步骤创建 XML 文件,执行以下步骤:
1. |
单击 ODI Designer 中的 Projects 选项卡。展开 Knowledge Modules 节点和 Integration (IKM) 节点。右键单击 IKM SQL to SQL Append 节点,然后选择 Edit。如果弹出 Object Locking 窗口,则选择复选框,然后单击 No。
|
2. |
单击 Details 选项卡。双击 step 152 - Commit。将命令更改为 CREATE XMLFILE #ExportXMLFileLoc FROM SCHEMA GEO。单击 OK,然后再次单击 OK 保存 IKM。 注:该语句将内存中已转换的 XML 数据写入存储在变量 ExportXMLFileLoc(在之前步骤中创建的)中的位置。
|
要将 SQL to SQL Append 编辑为在 Commit 步骤创建 XML 文件,执行以下步骤:
1. |
单击 ODI Designer 中的 Projects 选项卡。展开 First Folder 节点,右键单击 Packages,然后单击 Insert Packages。将程序包命名为 PKG_ImportXFormExportXML。
|
2. |
展开节点 Variables。单击 Diagram 选项卡。将项目变量中的变量 ExportXMLFileLoc 拖入 Diagram 中。将 Type 设置为 Declare Variable。
|
| .3. | 将 INT_ImportXFormExportXML 接口拖入 Diagram 中。
|
4. |
单击 OK。通过单击并从变量拖放到接口,将 Declare 变量 ExportXMLFileLoc 连接到接口 INT_ImportXFormExportXML。单击 OK 保存程序包。执行该程序包:右键单击程序包 PKG_ImportXFormExportXML,选择 Execute,然后单击 OK。
|
5. |
在 ODI Operator 中查看执行结果。要启动 ODI Operator,单击 All Programs > Oracle > Oracle Data Integrator > Operator。使用用户 SUPERVISOR 和口令 SINOPSIS 登录 Repo_designer。在左下窗格中,单击 Hierarchical Sessions 选项卡。在窗格中,向上滚动并单击 + 符号展开 Date > The date of execution > Steps。程序包 PKG_ImportXFormExportXML 的所有步骤应该已成功执行。验证新的 XML 文件 DIM_GEO_OUT.XML 已在目录 <ODI 主目录>\demo\xml (I:\ODI\oracledi\demo\xml) 中创建。
|
创建从 ODIInvoke Web 服务执行的新方案,执行以下步骤:
|
1. |
在 ODI Designer 中的 Projects 窗格中,展开 First Folder,右键单击新建的程序包 PKG_ImportXFormExportXML,然后单击 Generate Scenario。将该方案命名为 SCEN_IMPORTXFORMEXPORTXML。将 Version 设置为 001。单击 OK 保存该方案。
|
|
2. |
将出现以下屏幕。单击 OK 保存。现在,您可以从 BPEL 中执行方案。
|
本示例将逐步介绍如何通过使用过程执行 XML 文件的导入、转换和导出来构建 ODI 流程。ODI Web 服务将调用构建在 PKGXFORMXML 上的 SCENXFORMXML_PROC 方案。PGKXFORMXML_PROC 声明在程序包内使用的一个变量,然后执行接口 XFORMXML_PROC。ImportXformExportXML_PROC 将源 XML 文件映射到目标 XML。源 XML 文件通过一个过程步骤和 LOAD XML ODI JDBC driver 语句加载到临时存储区域。然后,源 XML 文件通过使用 ODI XML JDBC 驱动程序执行的 UPDATE SQL 语句在过程步骤内进行更新。已更新的 XML 随后将通过使用过程步骤和 Create XML ODI JDBC driver 语句写入 XML 文件。
| 在 ODI 中新建项目 | ||
| 为 XML 文件插入新模型 | ||
| 创建新过程 ImportXFormExportXML | ||
| 为 ImportXFormExportXML 过程创建选项 | ||
| 创建新过程的 IMPORTXFormExportXML 的详细步骤 | ||
| 创建新项目的项目变量 | ||
| 创建新程序包以声明变量和执行 ImportXFormExportXML 过程 | ||
| 创建从 ODIInvoke Web 服务执行的新方案 | ||
项目是用户创建的 ODI 对象的集合。其中应包含一个功能域。最好使用项目表示您的集成过程或您需要使用 ODI 开发的集成项目中的功能域。每个项目都有自己的知识模块、变量、标记和其他类型的对象。这些对象可通过复制在不同项目之间进行共享。您还可使用全局对象(如变量或序列)定义所有项目公用的参数。
要在 ODI 中新建项目,执行以下步骤:
1. |
单击 Start > All Programs > Oracle > Oracle Data Integrator > Designer 打开 ODI Designer。
|
2. |
Oracle Data Integrator Login 屏幕显示。从 Login Name 下拉菜单中选择 Repo_designer。
|
| 3. | 默认的 User Name 和 Password 分别预设为 SUPERVISOR 和 SUNOPSIS。单击 OK 登录。
|
| 4. | 在左下窗格中,单击 Projects 选项卡。
|
| 5. | 您会看到 Projects 窗格显示在左上角。右键单击并选择 Insert Project。
|
| 6. | 将显示 Project New 窗口。在 Name 中输入 ODI_ER_HSP。您会看到 Code 值也使用相同文本填充。然后,单击 OK 查看 Projects 窗格中填充的新项目。
|
要为源 xml 文件插入新模型,执行以下步骤:
1. |
在 ODI Designer 中,滚动至左下窗格并单击 Models 选项卡。
|
||||||||
2. |
您会看到 Models 窗格显示在左上角。右键单击并选择 Insert Model。
|
||||||||
| 3. | 在 Model:New 窗口中,需要输入新模型的值。为此,提供以下参数,然后单击 Reverse 选项卡。
|
||||||||
| 4. | 在 Reverse 选项卡下的 Context 下拉菜单中,选择 Global,然后向下滚动并单击 Reverse。这将生成 XML 源。
|
||||||||
| 5. | 单击 Yes 确认。单击 OK。
|
||||||||
| 6. | 在 Models 窗格中,您可能会注意到正在填充新数据存储。单击 + 符号展开并查看 SRC_GEO_DIM_XML 模型。
|
该过程将成为您的 ODI 流程的基础。使用选项和变量将过程设置得尽可能的动态。
要创建新过程 ImportXFormExportXML,执行以下步骤:
1. |
在 Projects 选项卡中,展开 BPELXFormWithODI 项目,展开 First Folder 节点,右键单击 Procedures 节点,然后单击 Insert Procedure。将过程命名为 ImportXFormExportXML。在 Definition 选项卡中,将源和目标技术选择为 XML。单击 OK 保存过程。
|
2. |
将过程命名为 ImportXFormExportXML。在 Definition 选项卡中,将源和目标技术选择为 XML。单击 OK 保存过程。 . |
要为新建的过程创建选项,执行以下步骤:
1. |
右键单击新建的过程 ImportXFormExportXML,然后单击 Insert Option。
|
2. |
将选项命名为 ImportXMLFileLoc。将 Type 设置为 Text。设置 Description — Import XML File Location。将 Default Value 设置为练习位置 "..\demo\xml\GEO_DIM.xml",然后单击 OK。
|
| 3. | 同样,插入另一个选项 ImportDTDFileLoc。将 Type 设置为 Text。设置 Description — Import DTD File Location。将 Default Value 设置为练习位置 "..\demo\xml\GEO_DIM.dtd"。验证选项如下所示设置。单击 OK。
|
| 4. | 同样,插入另一个选项 ExportXMLFileLoc。将 Type 设置为 Text。设置 Description — Import DTD File Location。将 Default Value 设置为练习位置 "..\demo\xml\GEO_DIM_OUT.xml"。验证选项如下所示设置。单击 OK。
|
要创建新过程的详细步骤,执行以下步骤:
1. |
在过程 ImportXFormExportXML 中创建 Detail 步骤 LoadXMLFileIntoMemory:右键单击过程 ImportXFormExportXML。单击 Edit,然后单击 Details 选项卡。单击 Add 图标 添加一个新的 Detail 步骤。将该 Detail 步骤命名为 LoadXMLFileIntoMemory。如下表所示配置 Detail 步骤,然后单击 OK。 注:该步骤将在 ODI Options 内设置的文件 ImportXMLFileLoc 加载入内存。当 XML 文件已存在于内存中,将在其他步骤中执行 SQL 命令来转换 XML 数据。ODI 将使用 ODI XML JDBC 驱动程序执行 SQL 命令。
|
||||||||||
2. |
在过程 ImportXFormXML 中创建 Detail 步骤 XFormXMLInMemory:单击 Add 图标添加一个新的 Detail 步骤。将该 Detail 步骤命名为 XFormXMLInMemory 。如下表所示配置 Detail 步骤,然后单击 OK。 注:该步骤将更新之前步骤中加载到内存的 XML。该 SQL 语句将更新客户端的年龄。任何有效的 SQL 语句都可用于转换数据。
|
||||||||||
| 3. | 在过程 ImportXFormXML 中创建 Detail 步骤 CreateExportXMLFileFromMemory:单击 Add 图标添加一个新的 Detail 步骤。将该 Detail 步骤命名为 CreateExportXMLFileFromMemory。如下表所示配置 Detail 步骤,然后单击 OK。 注:该步骤会将内存中已转换的 XML 写入一个 XML 文件。在选项 ExportXMLFileLoc 中指定该 XML 文件的名称和位置。过程应如下所示。单击 OK 保存过程。
|
要创建用于新项目的项目变量,执行以下步骤:
| 1. | 创建用于新程序包的 ExportXMLFileLoc2 项目变量:单击 Projects 选项卡,右键单击 Variables 节点,然后单击 Insert Variable。将变量命名为 ExportXMLFileLoc2,将类型设置为 text,将默认值设置为 "..\demo\xml\GEO_DIM_OUT.XML"。单击 OK 保存变量。
|
2. |
创建用于新程序包的 ImportXMLFileLoc 项目变量:右键单击 Variables 节点,然后单击 Insert Variable。将变量命名为 ImportXMLFileLoc,将类型设置为 text,将默认值设置为 "..\demo\file\Source1.xml"。单击 OK 保存变量。
|
| 3. | 创建用于新程序包的 ImportDTDLFileLoc 项目变量:右键单击 Variables 节点,然后单击 Insert Variable。将变量命名为 ImportDTDFileLoc,将类型设置为 text,将默认值设置为 "..\demo\xml\GEO_DIM.DTD"。单击 OK 保存变量。
|
要创建新程序包,声明变量并执行 ImportXFormExportXML 过程,执行下列步骤:
| 1. | 单击 ODI Designer 中的 Projects 选项卡。展开 First Folder 节点。右键单击 Packages,然后选择 Insert Packages。将程序包命名为 PKG_ImportXFormExportXML_Proc。
|
2. |
单击 Diagram 选项卡。将项目变量中的变量 ExportXMLFileLoc2 拖放到图表中。将 Type 设置为 Declare Variable。
|
| 3. | 同样,将项目变量中的变量 ImportXMLFileLoc 拖放到图表中。将 Type 设置为 Declare Variable。
|
| 4. | 同样,将项目变量中的变量 ImportDTDFileLoc 拖放到图表中。将 Type 设置为 Declare Variable。
|
| 5. | 展开 Procedures 节点,然后将 ImportXFormExportXML 拖放入 Diagram。在 Properties 区域中,单击 Options 选项卡。如下表所示设置选项。
|
| 6. | 单击 OK 依次连接这几个声明变量,然后连接到过程,并且逐个单击并拖放变量,然后从 ImportDTDFileLoc 拖至过程。单击 OK 保存程序包。
|
| 7. | 执行该程序包,然后在 ODI Operator 中查看执行结果。在 ODI Operator 中查看执行结果。要启动 ODI Operator(如未启动),单击 All Programs > Oracle > Oracle Data Integrator > Operator。使用用户 SUPEVISOR 和口令 SUNOPSIS 登录 Repo_designer。在左下窗格中,单击 Hierarchical Sessions 选项卡。在窗格中,向上滚动并单击 + 符号展开 Date > The date of execution > Steps。程序包 PKG_ImportXFormExportXML_Proc 的所有步骤已成功执行。验证新的 XML 文件 GEO_DIM_OUT.XML 已在目录 <ODI 主目录>\demo\xml (I:\ODI\oracledi\demo\xml) 中创建。
|
创建从 ODIInvoke Web 服务执行的新方案,执行以下步骤:
1. |
右键单击新建的程序包 PKG_ImportXFormExportXML_Proc,然后单击 Generate Scenario。将该方案命名为 SCEN_IMPORTXFORMEXPORTXML_PROC。将 Version 设置为 001。单击 OK 保存该方案。
|
2. |
将出现以下屏幕。单击 OK 保存。现在,您可以从 BPEL 中执行方案。
|
在本示例中,我们将构建一个新的 BPEL(业务流程执行语言)流程,该流程将监视源文件传入的目录。当源文件传入,该流程将收集其文件名和位置,并调用 ODI 以转换并将文件移至目标。
我们将构建一个 BPEL 流程,用于调用我们在示例 1 和示例 2 中构建的 ODI 方案。我们将使用 JDeveloper 工具构建 BPEL 流程并将其部署到应用服务器。
要为 BPEL 流程创建新应用程序,执行以下步骤:
1. |
单击 G:\jdevStudio10131 中的 jdeveloper.exe 启动 JDeveloper。或者,使用桌面上的 SOA 套件 Jdev 快捷方式。在左边的 Applications Navigator 中,右键单击 Applications 并选择 New Application。
|
2. |
将应用程序命名为 ODI_Example,然后选择 OK。在打开的 Creat Project 对话框中,选择 Cancel。新应用程序将出现在 Application Navigator 中。
|
要为 BPEL 流程创建新项目,执行以下步骤:
1. |
右键单击新建的应用程序 ODI_Example,然后选择 New project。从项目目录中选择 BPEL Process Project。单击 OK。
|
2. |
在 BPEL Project Creation Wizard 中,将您的 BPEL 流程命名为 SourceFileMonitor,从下拉框中选择 Empty BPEL Process,然后单击 Finish。新项目出现在 Application Navigator 中,SourceFileMonitor.bpel 文件在 JDeveloper 窗口中打开。
|
构建 BPEL 流程。使用文件适配器轮询一个目录查找传入的源文件。当文件传入后,通过同步的 Web 服务调用将文件名和目录传递到方案。
要定义文件适配器,执行以下步骤:
1. |
在右侧的 Component Pallet 的下拉菜单中,选择 Services。选择 File Adapter,然后将其拖放到主图表左侧的 Services 标题下的灰色泳道处。将出现 Adapter Configuration Wizard。在 Welcome 页面中单击 Next。
|
2. |
在 Service Name 域中,输入 FilePoll 并单击 Next。 . |
3. |
将 Operation Type 选择为 Read File,然后单击 Next。 . |
4. |
使用浏览按钮选择轮询传入文件的目录。选择 <ODI 主目录>\oracledi\demo\file,如以下屏幕截图所示。取消选择 Delete files after successful removal,然后单击 Next。 注:由于我们仅使用文件适配器获取文件名称和目录,因此不希望删除该文件。如果我们选中删除文件复选框,该文件将在执行 ODI 方案前被删除。 . |
5. |
在 Include Files with Name Pattern 域中输入 Source*.xml。这将配置该适配器,使其选择匹配该文件名的所有文件。单击 Next。 . |
6. |
将 Polling Frequency 设置为 10 seconds,然后单击 Next。 . |
7. |
选中 Native format translation is not required (Schema is Opaque),因为我们不希望读取该文件内容。单击 Next,然后单击 Finish。 .
|
8. |
保留默认值,在打开的 Partner Link Wizard 上单击 OK。在主图表窗口左侧,您应该会看到 Services 泳道中定义的名为 FilePoll 的 partnerlink。现在,您已经将文件适配器定义为轮询传入目录中的新文件的外部服务 (Partnerlink)。 .
|
要创建 Receive 服务以接收消息,执行以下步骤:
1. |
在左侧的 Component Pallet 的下拉菜单中,选择 Process Activities。将 Receive activity 拖入图表中间位置的 Drop Activity Here 空白处。
|
2. |
将接收活动左侧的箭头拖放到 FilePoll partnerlink 中。将出现 Edit Receive 窗口。在 Name 域中键入 Receive_FileDetail。选中 Create Instance 旁的复选框。单击 Variable 域旁边的 Magic Wand 按钮。将出现一个弹出窗口。保留详细信息,单击 OK 创建新 BPEL 变量。
|
| 3. | 在 Edit Receive 窗口中,选择 Adapters 选项卡。选择 Header Variable 旁的手电筒按钮。在弹出的 Variable Chooser 窗口的树中,选择 Variables 并选择窗口右上方的魔术棒按钮。将出现 Create Variable 窗口。
|
| 4. | 将变量命名为 FileHeaders 并从选项中选择 Message Type。现在,选择 Message Type 旁边的手电筒按钮。如下所示,在 Type Explorer 中展开树,直到出现 InboundHeader_msg,然后单击 OK。
|
| 5. | 在 Create Variable 窗口中,单击 OK。确保 FileHeaders 在 Variable Chooser 窗口中高亮显示,然后单击 OK。现在,Header variable 域中应显示 FileHeaders。单击 Edit Receive 窗口中的 OK。
|
| 6. | 验证您的 FilePoll partnerlink 已连接到 Receive_FileDetail 活动。
|
要将文件适配器更新为仅收集文件名和位置,而不收集文件的内容,执行以下步骤:
1. |
在 Applications 面板中,展开项目 SourceFileMonitor。展开目录 Integration content。展开 FilePoll 对象。双击 FilePoll.wsdl 文件,在主窗口中将其打开。在主窗口的底部(FilePoll.wsdl 在其中打开),选择 Source 选项卡。
|
2. |
向下滚动 FilePoll.wsdl 文件,直到看到标记: <jca:operation 将标记编辑为如下所示: <jca:operation 从主菜单中,选择:File > Save All 保存 FilePoll.wsdl 文件。
|
要创建 Partnerlink 来调用 ODI,执行以下步骤:
| 1. | 在主窗口的顶部,选择 SourceFileMonitor.bpel 选项卡。在图表右侧的灰色 Services 泳道中,右键单击并选择 Create Partner Link。
|
2. |
在弹出的 Create Partner link 向导中,将 partnerlink 命名为 InvokeODI。在 WSDL File 框中键入:http://localhost:8888/axis2/services/OdiInvoke?wsdl,然后单击 Parse WSDL File 按钮,如以下屏幕截图所示。在弹出的 Partnerlink Type 窗口中,单击 Yes。
|
| 3. | 在 Partner Role 域中,从下拉菜单中选择 ODIInvokePortType_Role,然后单击 OK。InvokeODI partnerlink 将出现在 Services 泳道中。
|
要为 InvokeODI partner link 创建调用活动,执行以下步骤:
| 1. | 在右侧的 Component Palette 中,从下拉列表中选择 Process Activities。将调用活动拖放到主图表窗口中接收活动下的位置。
|
2. |
将一个箭头从图表中的 Invoke_1 活动拖到 InvokeODI partner link。将出现 Invoke 向导。将该调用活动命名为 IMPORTXFORMEXPORTXML_PROC。在 Operation 下拉框中选择 invokeScenario,然后选择 Input Variable 域旁的魔术棒图标。在弹出的 Create Variable 窗口中,将变量名称改成 InvokeODI_PROC_InputVariable,然后单击 OK。 注:首先,BPEL 流程将调用在示例 2 中构建的方案 SCEN_IMPORTXFORMEXPORTXML_PROC。对于本方案,您将发送三个已定义变量中的两个。BPEL 流程将设置变量 ExportXMLFileLoc 和 ImportXMLFileLoc。而变量 ImportDTDFileLoc 将使用 ODI 中设置的默认值。
|
| 3. | 同样,选择 Output Variable 域旁的魔术棒。在弹出的 Create Variable 窗口中,将变量名称改成 InvokeODI_PROC_OutputVariable。单击 OK,然后再次单击 OK。
|
| 4. | 验证图表如下所示。
|
要初始化调用 ODI 方案所需的变量,执行以下步骤:
1. |
从右侧的 Component Palette 中,将 Transform 活动拖至 Receive_FileDetail 和 IMPORTXFORMEXPORTXML_PROC 之间的图表上。
|
2. |
双击 Transform_1 活动。在 Transform 向导中,在 Source Variable 下选择 FileHeaders,在 Target Variable 下选择 InvokeODI_PROC_InputVariable。单击 Mapper File 域旁的魔术棒图标。
|
在接下来的步骤中,您将构建 XSL 转换以将值映射入所需域。执行以下步骤:
| 1. | 在右侧的 Target:OdiInvoke?wsdl 模式中,右键点击 <target> 节点并选择 Expand All。
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
2. |
在 target 模式中选择 JdbcDriver 节点。右键单击 JdbcDriver 节点并选择 Set Text。在 Text 域中,输入: oracle.jdbc.driver.OracleDriver,然后单击 OK。 注:确保在 Jdbc 驱动程序名称前后不要添加空格。因为这样会在方案调用过程中导致系统错误。此处我们假设您使用 Oracle 数据库作为 ODI Master 信息库,如果不是这样,您需要输入数据库的正确 JDBC 连接的详细信息。
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 3. | 只需将 JdbcDriver 节点设置为一个静态值,target 模式下的大多数域将设置为静态值。要将节点设置为静态文本,可以像设置 JdbcDriver 节点一样,右键单击该节点并选择 Set Text。静态设置下表中所有节点的值。
验证已完成所有静态映射。Transformation_1.xsl 文件应如下所示。
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||
要设置 ImportXMLFileLoc ODI 变量,执行以下步骤:
| 1. | 设置第一个动态值。在 target 模式中,在 Command 和 Variables 下选择 Name 节点,右键单击并选择 Set text。输入 BPELXFormWithODI.ImportXMLFileLoc 并单击 OK。 注:ODI 变量名称必须以 ODI 项目名称为前缀。这对应我们在 ODI 中针对 SCEN_IMPORTXFORMEXPORTXML_PROC 方案创建的变量之一。
|
2. |
设置对应于 ImportXMLFileLoc 变量的值:转至右侧的 Component Palette,从下拉菜单中选择 String Functions。将 concat 函数拖入 Transform_1.xsl 图表的中间区域。
|
| 3. | 按住左侧的 fileAdapterInboundHeader.wsdl 源模式的 directory 节点并拖动它向 concat 函数左侧界面绘制一条线。对 fileName 节点重复此操作。
|
| 4. | 双击 concat 函数查看串联函数中的值。将指针放置在第一个元素中,单击右侧的 Add 按钮。这将在原有的两个域中添加一个新域。将 ‘\’ 键入该新域(包括单引号)中。 注: 某些值不可从本文档中剪切和粘贴,因为引号无法正确粘贴。
|
| 5. | 将指针放置在第一个元素中,单击右侧的 Add 按钮。添加一个新域。使用 Move Up 按钮将该域变为列表中的第一个域。
|
| 6. | 将 ‘"' 键入新域(包括单引号)中。将指针放置在第一个元素中,单击右侧的 Add 按钮。在底部添加了一个新域。将 ‘"' 键入该新域(包括单引号)中。验证您的串联函数和下图匹配,然后单击 OK。
|
| 4. | 现在选择并按住 concat 函数的右侧界面,将其拖至 target 模式的 value 节点上(在 invokeScenarioRequest、command 和 variables 下)。从主菜单中选择 File > Save All。
|
我们几乎设置了调用 SCEN_IMPORTXFORMEXPORTXML_PROC 方案所需的所有值。但我们仍然需要设置 ExportXMLFileLoc2 变量。要设置该变量,执行以下步骤:
| 1. | 从主窗口中选择 SourceFileMonitor.bpel 选项卡。从右侧的 Component Palette 将一个 assign 活动拖至图表中的 Transform_1 活动之后。在 Copy Operation 选项卡中的 Create 下拉菜单中,选择 Append Operation。将出现 Create Append Operation 向导。
|
2. |
双击赋值活动打开 Assign 向导。您将通过附加一个 XML 片段来创建变量 ExportXMLFileLoc。在左侧的 From 栏中的 Type 下拉菜单中选择 XML Fragment。在 XML Fragment 文本框中出现类型:
|
| 3. | 在右侧的 To 列中展开:Process>Variables>InvokeODI_PROC_InputVariable>part1>invokeScenarioRequest,然后选择 Command 节点。To 列底部的 xpath 域中应包含“/ns3:invokeScenarioRequest/ns3:Command”。单击 Edit Append Operation 上的 OK,然后单击赋值活动上的 OK。
|
| 4. | 现在,验证您的 BPEL 流程应如下图所示。
|
现在可以部署您的 SourceFileMonitor BPEL 流程。在其当前状态下,它将轮询 <ODI 户目录>/oracledi/demo/file 以查找匹配名称 Source*.xml 的文件。然后将调用 SCEN_ImportXFormExportXML_Proc 方案,将所选文件和静态值传递到 ODI。本文假定 GEO_DIM.dtd 文件已存在于 ImportDTDFileLoc 中。
注:假定您已配置了 Axis 2 Framework 和 ODI 来支持 Web 服务。确保 ODI agent 正在运行。如果没有运行,可以通过 Start >All Programs > Oracle_Oracle Data Integrator > Agent 启动。
要配置 BPEL 流程,执行以下步骤:
| 1. | 在左侧的 Applications Navigator 中,右键单击您的项目 (SourceFileMonitor),然后选择 Deploy > SoademointegConnection > Deploy to Default Domain。
|
2. |
在页面底部的日志记录窗口中,选择 Apache Ant 选项卡。完成流程部署后,验证 Build Successful 以绿色显示。 注:如果您发现任何错误和/或者您的流程部署失败,再次执行上述步骤以更正错误。
|
要运行 BPEL 流程,执行以下步骤:
|
1. |
打开一个浏览器并在 URL 中输入 http://localhost:8888/BPELConsole。登录页面将出现。输入您的应用服务器凭证。在 user 域中键入 oc4jadmin,在 password 域中键入 welcome1。选择 Login。主 BPEL 信息板将出现。验证在左侧的 Deployed BPEL Processes 栏下出现 SourceFileMonitor BPEL 项目。
|
|
2. |
要启动该流程,我们将复制 GEO_DIM.xml 文件并将其粘贴到该流程轮询的位置。将 GEO_DIM.xml 从 <ODI 主目录>/oracledi/demo/xml/ 目录复制到 <ODI 主目录>/oracledi/demo/file 目录。
|
|
3. |
将 GEO_DIM.xml 重命名为 Source1.xml。等待 10 秒钟,以允许文件适配器选取文件。 返回您的 BPEL Console,在 Dashboard 页面的底部有一个标题为 Recently Completed BPEL Process Instances 的区域。将显示一个名为 SourceFileMonitor 的新实例。
|
|
4. |
选择该实例链接,在 Flow 视图中打开实例。单击流程中最后一个活动 IMPORTXFORMEXPORTXML_PROC。弹出窗口将显示我们发送到 ODI Web 服务的变量的值。查看信息库连接信息和之前设置的 3 个变量。检查 ImportXMLFileLoc 变量值正确选取了我们放入目录以启动流程的 Source1.xml 文件。 注:这表明该流程已执行完我们之前构建的步骤。我们在第一步中已选取该文件并对标题详细信息进行了检索。然后,我们使用转换步骤准备了要发送到 ODI 的详细信息。执行赋值活动更新即将发送的变量并最后调用 ODI Web 服务。
|
5. |
在弹出窗口的底部,您应该还会看到从 ODI 返回的值。如果 Web 服务成功运行了 SCEN_IMPORTXFORMEXPORTXML_PROC 方案,您应在 Ok 字段中看到已返回 True。要验证该流程成功完成,查看 <ODI 主目录>/oracledi/demo/xml 目录中是否有 GEO_DIM_OUT_BPEL_PROC.xml 文件(或者您在 ExportXMLFileLoc 变量中设置的目录和文件)。如果文件已存在,BPEL 则已调用该方案并完成其集成和转换。 现在,您已成功通过 Web 服务调用了 ODI 方案。 注: 您还可以在 ODI Operator 中验证 ODI 方案的执行情况。如果出现错误,ODI Operator 还是一个进行调试的好地方。如果您希望再次启动该流程,需要确认您放入轮询目录 (Source1.xml) 的文件的修改日期时间戳比之前选择的文件新。因为,我们选择不删除或存档我们用文件适配器监视的文件。要更改时间戳,在文本编辑器中打开该文件,不做任何修改即进行保存,然后关闭该文件。一些文本编辑器将插入控制字符,从而导致该文件不可用。我们建议在 Jdeveloper 中打开该文件、添加,然后删除空格,然后不做任何修改即保存文件。
|
在本示例中,您将从 BPEL 流程中调用另一个 ODI 方案。您将扩展该 BPEL 流程以调用示例 1 中创建的 SCEN_IMPORTXFORMEXPORTXML 方案。该方案希望 ImportXMLFile 的位置为静态地址,因此我们将仅使用变量 ExportXMLFileLoc。因此,该示例应该简单得多。使用以下说明体验本示例作为参考,您自己亲身实践一下。
| 调用 ODI Web 服务 | ||
| 设置变量值以调用 ODI 方案并构建 XSL 转换以将值映射到所需的域中 | ||
| 部署 BPEL 流程 | ||
| 测试 BPEL 流程 | ||
要调用 ODI Web 服务,执行以下步骤:
1. |
打开 Jdeveloper,在主窗口中选择 SourceFileMonitor.bpel 选项卡。从右侧的 Component Palette 中将一个 Invoke 活动拖放到图表中的 IMPORTXFORMEXPORTXML_PROC 活动下。将调用活动的右箭头拖放到右侧的 InvokeODI partnerlink。将出现 Edit Invoke 向导。
|
2. |
在 Name 域中键入 IMPORTXFORMEXPORTXML。在 Operation 下拉框中选择 invokeScenario。选择 Input variable 域旁边的魔术棒按钮。在 Create variable 框中,将变量名称更改为 InvokeODI _InputVariable。单击 OK。
|
3. |
同样,选择 Output Variable 域旁的魔术棒。在弹出的 Create variable 窗口中,将变量名称更改为 InvokeODI _OutputVariable。选择 OK。在 Edit Invoke 对话框中,再次单击 OK。您的图表应如下所示。
|
要初始化并设置 Input Variables 以调用正确的 ODI 方案,执行以下步骤:
1. |
我们将重复示例 3 中的步骤,我们在示例 3 中使用转换活动设置这些值。从右侧的 Component Palette 将一个 Transform 活动拖放到您在最后一步添加的 IMPORTXFORMEXPORTXML 调用活动上方的图表上。双击 Transform_2 活动。将弹出 Transform 向导。在 Source Variable 下选择 InvokeODI_POC_InputVariable,并在 Target Variable 下选择 InvokeODi _InputVariable。选择 Mapper File 域旁边的魔术棒图标创建映射。将在主窗口中打开 Transformation_2.xsl。 注:在本示例中,我们将静态设置 ExportXMLFileLoc(我们 仅设置一个变量)
|
2. |
在 Source:OdiInvoke?wsdl 模式上,右键单击 <source> 节点并选择 Expand All。同样,在 Target:OdiInvoke?wsdl 模式上,右键单击 <target> 节点并选择 Expand All。在 Target 模式中设置 JdbcDriver 节点。如果 Source 中的一切已正确设置,将 JdbcDriver 节点从 source 拖放到 target 中的 JdbcDriver 节点上。
|
3. |
对于 target 中 ScenName 域,source 模式中的值是错误的。您也将对这些进行静态设置。右键单击右侧的 target 中的 ScenName 并选择 Set Text。将弹出 Set Text 窗口。在 Text 域中输入 SCEN_IMPORTXFORMEXPORTXML,然后单击 OK。
|
4. |
按照下表设置所有节点的值。对于其中一些节点,您需要使用 Set Text 功能(和您针对 Scen Name 所做的一样),对于其他节点,您可以从 source 模式中映射相同的节点(和您针对 JdbcDriver 节点所做的一样)。请参考下表。完成所有映射后,Transformation_2.xsl 文件应如以下屏幕截图所示。 最后更新日期:2008 年 3 月 27 日 Oracle 示例第 92 页(共 97 页) 9. 从主菜单中选择 File _ Save all。
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
您现在应该可以部署并测试已更新的 BPEL 流程。
注: 在其当前状态下,它将轮询 <ODI 户目录>/oracledi/demo/file 以查找匹配名称 Source*.xml 的文件。然后将调用 SCEN_ImportXFormExportXML_Proc 方案,将所选文件和静态值传递到 ODI。然后,将调用 ODI 方案 SCEN_ImportXFormExportXML。它假定 GEO_DIM.dtd、GEO_DIM.xml 和 DIM_GEO_LOOKUP.csv 文件已存在于正确的位置。
注:确保 ODI agent 正在运行。如果没有运行,可以通过 Start > All Programs > Oracle > Oracle Data Integrator > Agent 启动。
要配置已更新的 BPEL 流程,执行以下步骤:
| 1. | 在左侧的 Applications Navigator 中,右键单击您的项目 (SourceFileMonitor),然后选择 Deploy > SoademointegConnection > Deploy to Default Domain。如果系统提示您输入版本号,填写 1.0,然后单击 OK。
|
2. |
在页面底部的日志记录窗口中,选择 Apache Ant 选项卡。完成流程部署后,验证 Build Successful 以绿色显示。 注:如果您发现任何错误和/或者您的流程部署失败,再次执行上述步骤以更正错误。
|
要运行 BPEL 流程,执行以下步骤:
1. |
打开一个浏览器并在 URL 中输入 http://localhost:8888/BPELConsole。登录页面将出现。输入您的应用服务器凭证。在 user 域中键入 oc4jadmin,在 password 域中键入 welcome1。选择 Login。主 BPEL 信息板将出现。验证在左侧的 Deployed BPEL Processes 栏下出现 SourceFileMonitor BPEL 项目。
|
2. |
要启动 SourceFileMonitor BPEL 流程,打开您之前在示例 3 的文本编辑器中创建的 <ODI 主目录>/oracledi/demo/file 下的 Source1.xml 文件。要更新其已修改的日期,保存该文件。 注:您需要针对文件适配器轮询流程更新该文件的修改日期,从而将其再次选取。因为您在我们读取该文件的时候已配置文件适配器不删除或存档该文件。确保您使用的文本编辑器不包含控制字符(如行尾字符)的文件,因为 xml 对此敏感。
|
3. |
等待 10 秒钟,以允许文件适配器选取文件。返回您的 BPEL Console,在 Dashboard 页面的底部有一个标题为 Recently Completed BPEL Process Instances 的区域。将显示一个名为 SourceFileMonitor 的新实例。
|
4. |
选择实例链接 SourceFileMonitor,以在 Flow 视图中打开该实例。查看该流程的执行情况并验证该流程正常运行。双击该流程中的最近活动 IMPORTXFORMEXPORTXML 调用步骤。弹出窗口显示该值已发送至 SCEN_IMPORTXFORMEXPORTXML 方案。
|
5. |
在弹出窗口的底部,您应该还会看到从 ODI 返回的值。如果 Web 服务成功运行了 SCEN_IMPORTXFORMEXPORTXML 方案,您应在 Ok 字段中看到已返回 True。要验证该流程成功完成,查看 <ODI 主目录>/oracledi/demo/xml 目录中是否有 GEO_DIM_OUT_BPEL.xml 文件(或者您在 ExportXMLFileLoc 变量中设置的目录和文件)。如果文件已存在,BPEL 则已调用该方案并完成其集成和转换。 注: 您还可以在 ODI Operator 中验证 ODI 方案的执行情况。如果出现错误,ODI Operator 还是一个进行调试的好地方。如果您希望再次启动该流程,需要确认您放入轮询目录的文件的修改日期时间戳比之前选择的文件新。因为,您配置为不删除或存档我们用文件适配器监视的文件。
|
在本教程中,您学习了如何:
| 有关本 OBE 教程的问题,请在 OBE 论坛上发布查询。 |
将鼠标置于该图标上可以隐藏所有的屏幕截图。