PK ;,Aoa,mimetypeapplication/epub+zipPK;,AiTunesMetadata.plistX artistName Oracle Corporation book-info cover-image-hash 969812975 cover-image-path OEBPS/dcommon/oracle-logo.jpg package-file-hash 807815369 publisher-unique-id E10582-05 unique-id 798791570 genre Oracle Documentation itemName Oracle® Warehouse Builder Sources and Targets Guide, 11g Release 2 (11.2) releaseDate 2011-09-21T23:32:40Z year 2011 PKݢ]XPK;,AMETA-INF/container.xml PKYuPK;,AOEBPS/sap_integrate.htm Extracting Data from SAP Applications

7 Extracting Data from SAP Applications

Many companies implement the SAP Enterprise Resource Planning (ERP) system and Oracle Warehouse Builder enables easy access to the data in these SAP systems.

This chapter describes how you can extract data from SAP systems. It describes why you require an SAP connector, how to import metadata from SAP tables, use them in a mapping, generate ABAP code for the mappings, and deploy them to an SAP system. The chapter also describes the various methods by which you can extract data from the SAP system and load this data into a target table on Oracle Warehouse Builder system.

This chapter contains the following topics:

Why SAP Connector

The SAP R/3 system operates differently compared to SQL-based systems like Oracle E-Business Suite and Oracle's PeopleSoft systems.

The major differences include:

The SAP connector assists you in managing all these issues. Furthermore, the SAP connector enables you to follow the administrative and security processes of the SAP environment.

Supported SAP Versions

For information about the SAP R/3 versions supported by Oracle Warehouse Builder 11g, log in to https://support.oracle.com/, and go to the Certify link.

Overview of SAP Objects

This section provides a brief overview of the different types of tables in SAP, and how data is organized within an SAP system. The section consists of the following topics:

SAP Object Types

With the SAP connector, you can import metadata definitions for the following SAP table types:

  • Transparent: A transparent table is a database table that stores data. You can access the table from non-SAP systems as well, for example, using SQL statements. However, Oracle Warehouse Builder uses ABAP code to access transparent tables.

  • Cluster: A cluster table is usually used to store control data. It can also be used to store temporary data or documentation. Because cluster tables are data dictionary tables and not database tables, you can access these tables only by using ABAP.

  • Pooled: This is a logical table that must be assigned to a table pool in the database. A table pool consists of multiple pooled tables. A pooled table is used to store control data such as program parameters. You require ABAP code to access pooled tables.

SAP Business Domains

SAP application systems logically group tables under different business domains. In SAP, a business domain is an organizational unit in an enterprise that groups product and market areas. For example, the Financial Accounting business domain represents data describing financial accounting transactions. These transactions might include General Ledger Accounting, Accounts Payable, Accounts Receivable, and Closing and Reporting.

When you import SAP definitions, you can use a graphical navigation tree in the Business Domain Hierarchy dialog box to search the business domain structure in the SAP source application. This navigation tree enables you to select SAP tables from the SAP application server.

Overview of the Interaction Between Oracle Warehouse Builder and SAP

Moving data from the SAP system to an Oracle database using Oracle Warehouse Builder consists of the following tasks:

  1. Connecting to the SAP system.

  2. Importing metadata from SAP data objects.

  3. Creating an extraction mapping in Oracle Warehouse Builder that defines:

    • The SAP source tables from which data is to be imported.

    • The transformation operators that operate on the source tables to extract data based on certain criteria.

    • The target table in Oracle Warehouse Builder to store the data imported from the SAP source tables.

  4. Deploying the mapping.

    This creates the ABAP report for the mapping.

  5. Starting the mapping.

    This results in the following sequence of tasks, all of which are performed automatically by Oracle Warehouse Builder:

    • Transfer of the ABAP report to the SAP server.

    • Compiling of the ABAP report.

    • Execution of the ABAP report, which results in the generation of a data file (this file has a .dat extension).

    • Transfer of the data file to the Oracle Warehouse Builder server using FTP.

    • Loading data from the data file into the target table in Oracle Warehouse Builder. The loading takes place using SQL*Loader.

SAP Function Modules

To access SAP data from non-SAP systems, you typically use a function module to execute an ABAP program that extracts the data. A function module in SAP is a procedure that is defined in a special ABAP program known as a function group. After the function group is defined, the function module can then be called from any ABAP program.

SAP contains a predefined function module called RFC_ABAP_INSTALL_AND_RUN to execute ABAP report. To upload the Oracle Warehouse Builder-generated ABAP report and execute it in SAP, you need access rights to this function module.

Alternatively, you can ask the SAP administrator to create a customized function module that executes a specific ABAP program. You can then use this function module to execute the ABAP report generated by Oracle Warehouse Builder.

Data Retrieval Mechanisms

Data retrieval from the SAP system can be "Completely Managed by Oracle Warehouse Builder", "Managed by Oracle Warehouse Builder with SAP Verification", or "Manual". This depends on whether the SAP administrator provides the Oracle Warehouse Builder user with access rights to the predefined function module RFC_ABAP_INSTALL_AND_RUN or creates a customized function module to execute the ABAP report.

Completely Managed by Oracle Warehouse Builder

In this mechanism, Oracle Warehouse Builder has access to upload and execute the generated ABAP using the default function module RFC_ABAP_INSTALL_AND_RUN, and to use FTP to import the generated data file from the SAP system.

Thus the entire process of retrieving data from the SAP system and creating a target table is managed by the Oracle Warehouse Builder and can be completely automated. It is therefore the simplest method of data retrieval. See "Automated System" for more details on implementing this data retrieval mechanism.

Managed by Oracle Warehouse Builder with SAP Verification

In this mechanism, as an Oracle Warehouse Builder user, you do not have access rights to the default function module RFC_ABAP_INSTALL_AND_RUN that executes the ABAP report in the SAP system. Instead, the SAP administrator first verifies the ABAP report that you generate using Oracle Warehouse Builder, and then creates a customized function module to execute this ABAP report. You can then run the ABAP code on the SAP system using this customized function module.

See "Semi-Automated System" for more details about implementing this data retrieval mechanism.

Manual

In this mechanism, as a Oracle Warehouse Builder user, you cannot directly run the ABAP code on the SAP system. Instead, you generate the ABAP report for the mapping, and send it to the SAP administrator, who runs the code on the SAP system. You then import the generated data file using FTP and load the target table.

The tasks involved in retrieving data using FTP and creating the Oracle table are implemented using a Process Flow. See "Manual System" for more details about implementing this system.

Implementing the SAP Data Retrieval Mechanism

As a Oracle Warehouse Builder user, you must be aware of certain restrictions while trying to extract data from an SAP system.

Because the SAP and Oracle Warehouse Builder systems are totally independent systems, as an Oracle Warehouse Builder user, you may only have restricted access rights to the SAP data (especially in the production environment). You therefore have to interact with the SAP administrator to extract data from the system.

Access privilege to the SAP system is most often determined by whether it is the development, test, or the production environment. Each of the data retrieval mechanisms can be implemented in the development, test, or production environment depending on the privileges granted by the SAP system administrator.

Development Environment

Typically, in the development environment, the SAP administrator gives you access rights to use the predefined function module RFC_ABAP_INSTALL_AND_RUN. Therefore, in this environment, you can implement a completely "Automated System" for data retrieval.

Test and Production Environment

Typically, in the test and production environments, the SAP administrator may not give you access rights to use the predefined function module RFC_ABAP_INSTALL_AND_RUN. Instead, the SAP administrator verifies the ABAP report, and either creates a customized function module that you can use, or runs the ABAP report on the SAP system, and enables you to extract the resultant data. You can therefore implement either a "Semi-Automated System" or a "Manual System" for data retrieval.

A typical data retrieval system may therefore consist of any of the three mechanisms implemented in the different environments.

Scenario 1

You run the automated system in the SAP development environment. After you verify the ABAP report in this environment, you then move the ABAP report to the SAP test environment and test the code using a customized function module. You then finally move this to the SAP production environment.

This implementation is recommended by Oracle, as it automates and simplifies the data retrieval task.

Scenario 2

Depending on the access rights to the development, test, and production environments, you implement any one of the data retrieval mechanisms in each of the environments.

The following sections provide details of the tasks involved in retrieving data from an SAP system:

  1. "Connecting to the SAP System"

  2. "Importing Metadata from SAP Tables"

  3. "Creating SAP Extraction Mappings"

  4. "Deploying and Executing SAP ABAP Mappings".

Connecting to the SAP System

To connect to the SAP system from Oracle Warehouse Builder, you must use certain SAP-specific DLL files. After you establish connection, you can then import metadata from SAP tables into SAP modules in Oracle Warehouse Builder.

This section contains the following topics:

Required Files for SAP Connector

Different sets of files are required depending on whether you are working on a Windows or a UNIX system.

Files Required in Windows

The SAP connector requires a DLL file named librfc32.dll to use remote function calls on the client computer. You must copy librfc32.dll to the location specified in java.library.path on your client system.

To find this location, click MyComputer, Properties, and then click Advanced. Next click Environment Variables, and under System variables, check the locations specified for the variable Path.

You can copy the librfc32.dll file to any one of the multiple locations specified in Path. One of the locations correspond to OWB_HOME, and is therefore the preferred location. This location is usually OWB_HOME\owb\bin.

See Table 7-1 for the list of files required in Windows.

Table 7-1 Required Files for Windows

Required FilesPathDescription

librfc32.dll

OWB_HOME\owb\bin

This file is available on the SAP Application Installation CD.

sapjcorfc.dll

OWB_HOME\owb\bin

Copy this file to the same location where you placed librfc32.dll.

sapjco.jar

OWB_HOME\owb\lib\int



Restart the client after copying these files.

Files Required in UNIX

The SAP connector requires a DLL file named librfccm.so to use remote function calls on the client computer. You must copy this file to the location specified by the UNIX environment variable path LD_LIBRARY_PATH on your client system.

By default, OWB_HOME/owb/bin/admin is the location specified in LD_LIBRARY_PATH. If it is not, then ensure that you add OWB_HOME\owb\bin\admin to LD_LIBRARY_PATH.

See Table 7-2 for the list of files required in UNIX.

Table 7-2 Required Files for UNIX

Required FilesPathDescription

librfcccm.so

OWB_HOME\owb\bin\admin

This file is available on the SAP Application Installation CD.

libsapjcorfc.so

OWB_HOME\owb\bin\admin

Copy this file to the same location where you placed librfcccm.so.

sapjco.jar

OWB_HOME\owb\lib\int



Restart the client after copying these files.


Note:

Different versions of SAP R/3 might require different versions of the DLL, SO, and JAR files. The correct versions are available in the SAP installation CD. The files can also be downloaded from:

http://service.sap.com/patches


Troubleshooting Connection Errors

The most common errors while connecting to the SAP system are listed in Table 7-3:

Table 7-3 SAP Connection Errors

Error MessagePossible Reason

Connection failed.You are not authorized to logon to the target system (error code 1).

Incorrect user name or password to connect to the SAP server.

Connection failed.

Connect to SAP gateway failed.

Incorrect application server, system number, or client details.

Some Location Details are missing.

Please verify the location information is completely specified.

Missing DLL files, or DLL files placed in the wrong location.

Missing saprfc32.dll

Missing saprfc32.dll file, or file placed in the wrong location.



Note:

If you create the SAP source module and import SAP tables but cannot see the columns in the tables, then you have an incompatible librfc32.dll file. Download the correct version of the DLL file from the SAP Web site.

Creating SAP Module Definitions

Use the Create Module Wizard to create the SAP source module that stores data from the SAP source.

To create a SAP Module:

  1. Right-click SAP and select New SAP.

    The Create Module Wizard is displayed.

  2. On the Name and Description page, provide a name for the SAP module. Select the module status and optionally also provide a description. Click Next.

  3. On the Connection Information page, either select from an existing location or click Edit to open the Edit SAP Location dialog box. Specify the details as described in "Connecting to the SAP System". Click Next.

  4. On the Summary page, click Finish.

    A new sap module is now available on the Projects Navigator.


Note:

Before you create a SAP location, ensure that you have all the necessary information. You can provide the location information either while creating the module or before importing metadata into the module. You require the following information to create the location: server name, user name, password, system number, and client number. Obtain these details from the system administrator.

When you set the connection information, you can choose the connection types described in the subsequent sections.

Remote Function Call (RFC)

A remote function call enables you to call a function module on a remote system. This method requires specific IP Address information for the SAP application server.

SAP Remote Function Call (SAPRFC.INI)

You can also specify the connection information in a file called SAPRFC.INI, and copy this file to the following location: OWB_HOME\owb\bin\admin.

Using the SAPRFC.INI file requires prior knowledge of ABAP parameters, because you must specify the values for certain parameters to make the SAP connection, and is not the recommended connection method if you are not familiar with ABAP.


Note:

The SAPRFC.INI file comes with the SAP installation CD.

The Create Module Wizard creates the module for you based on the metadata contained in the SAP application server.

Connecting to the SAP System

  1. Select one of the following connection types:

    • Remote Function Call (RFC)

      This is the recommended connection type, and is selected by default in Oracle Warehouse Builder.

    • SAP Remote Function Call (SAPRFC.INI)

    For more information about these connection types, see "Creating SAP Module Definitions".

  2. Enter the connection information in the appropriate fields. The fields displayed on this page depend on the connection type you choose.


    Note:

    Ensure that you have copied the DLL files to the right location. For more information, see "Required Files for SAP Connector".

    You must obtain the connection information for your SAP application server from the system administrator before you can complete this step.

    RFC Connection type requires the following connection information:

    Application Server: The alias name or the IP address of the SAP application server.

    System Number: The SAP system number. This must be provided by the SAP system administrator.

    Client: The SAP client number. This must be provided by the SAP system administrator.

    User Name: The user name with access rights to the SAP system. This name is supplied by the SAP system administrator.

    Language: EN for English or DE for German. If you select DE, the description text is displayed in German and all other text is displayed in English.

    The SAPRFC connection type requires the following connection information:

    RFC Destination: Enter the alias for the SAP connection information.

    In addition, both the connection types require the following connection information if the ABAP report is to be executed in SAP using a function module and the data file is to be transferred by FTP to Oracle Warehouse Builder:

    Host Login User Name: A valid user name on the system that hosts the SAP application server. This user must have access rights to copy the data file using FTP.

    FTP Directory: The directory in the SAP server that stores the data file generated when the ABAP report is executed. For systems where the FTP directory structure is identical to the operating system directory structure, this field can be left blank. For systems where the file system directory structure is mapped to the FTP directory structure, enter the FTP directory path that is mapped to the staging file directory in the file system directory structure. For example, on a computer that runs Windows, if the staging file directory "C:\temp" is mapped to "/" in the FTP directory structure, then enter "/" in this field.

    Execution Function Module: In the SAP instance, if a remote function module other than the SAP delivered function module RFC_ABAP_INSTALL_AND_RUN is used to remotely execute ABAP reports through RFC connections, then enter the remote function module name here.

  3. Click Test Connection to verify that the connection information you provided is correct.

  4. Click OK to go back to the Connection Information page of the Create Module Wizard.

Figure 7-1 Edit SAP Location Dialog Box

Description of Figure 7-1 follows
Description of "Figure 7-1 Edit SAP Location Dialog Box"

Importing Metadata from SAP Tables

After you establish a connection with the SAP server, you can import metadata from SAP tables.

This section contains the following topics:

Importing SAP Metadata Definitions

After creating the SAP source module, you can import metadata definitions from SAP tables using the Import Metadata Wizard. This wizard enables you to filter the SAP tables to import, verify those tables, and reimport them. You can import metadata for transparent tables, cluster tables, or pool tables.

To import SAP metadata:

  1. From the Projects Navigator, expand the Applications node.

  2. Right-click the SAP source module into which you want to import metadata and select Import.

    Oracle Warehouse Builder displays the Welcome page for the Import Metadata Wizard.

  3. Click Next.

  4. Complete the following tasks:

Filtering SAP Metadata

You can filter objects to import by business domain or by text strings. Select a filtering method and click Next.

Filtering SAP Metadata by Business Domain
  1. Select Business Domain and click Browse to display the SAP R/3 Business Domain Hierarchy dialog box.

    The Import Metadata wizard displays the Loading Progress dialog box while it is retrieving the business domains.

  2. The Business Domain Hierarchy dialog box lists the available SAP business domains.


    Note:

    It may take a few minutes to list the SAP business domains depending on factors such as the network location of the SAP application server, the type of LAN used, and the size of the SAP application database.

    Use the Business Domain Hierarchy dialog box to select the SAP business domains that contain the metadata tables you want to import.

  3. Select a folder and click Show Tables to view the tables available in a business domain.

    The Import Metadata Wizard displays a list of tables in the selected business domain in the Folder dialog box.

  4. Review this dialog box to ensure that you are selecting the required tables.

    Some business domains can contain more than 1000 tables. Importing such a large amount of metadata can take time, depending on the network connection speed and the processing power of the source and target systems.

  5. Click OK.

    The wizard displays the Filter Information page with the SAP business domain displayed in the Business Domain field.

Filtering SAP Metadata by Text String
  1. Select Text String, where object and use the Name matches or Description matches entry field to enter a string and obtain matching tables from the SAP data source.

    The Description matches field is case sensitive, the Name matches field is not.

    Create a filter for object selection by using the wildcard characters % for zero or more matching characters, and _ for a single matching character.

    For example, to search the business domain for tables whose descriptions contain the word CURRENCY, select Description matches and enter %CURRENCY%. You can also search for tables by their names.

  2. Specify the number of tables you want to import in the Maximum number of objects displayed field.

Selecting Objects for Metadata Import

The Object Selection page contains a description of the tables and enables you to select the tables you want to import into the SAP module.

To select the tables:

  1. Move the tables from the available list to the selected list.

    The Import Metadata Wizard also enables you to choose whether you want to import tables with foreign key relationships for each table that you choose to import. You can select one of the following:

    None: Import only the tables in the Selected list.

    One Level: Import the tables in the Selected list and any tables linked to them directly through a foreign key relationship.

    All Levels: Import the tables in the Selected list and all tables linked to them through foreign key relationships.

  2. Click Next.

    If you select One Level or All Levels, the Confirm Import Selection dialog box is displayed.

    Review this dialog box to ensure that you are selecting the required tables.

  3. Click OK.

    The selected tables appear in the Selected list of the Table Selection page.

  4. Click Next.

    The wizard displays the Summary and Import page.

Reviewing Import Summary

The wizard imports the definitions for the selected tables from the SAP application server, stores them in the SAP source module, and then displays the Summary and Import page.

You can edit the descriptions for each table by selecting the Description field and entering a new description.

Review the information about the Summary and Import page and click Finish.

The SAP Connector reads the table definitions from the SAP application server and creates the metadata objects in the workspace.

The time it takes to import the SAP metadata into the workspace depends on the size and number of tables and the connection between the SAP application server and the workspace. It is a best practice to import small batches of tables to allow better performance.

When the import completes, the Import Results dialog box displays. Click OK to finish importing metadata.

Reimporting SAP Tables

To reimport SAP tables, follow the importing procedure using the Import Metadata Wizard. Before starting the import, the wizard checks the source for tables with the same name as those you are importing. The tables that have been imported appear in bold in the Object Selection page. On the Summary and Import page, the Action column indicates that these tables are reimported. The wizard then activates the Advanced Synchronize Options button so that you can control the reimport options.


Note:

To undo the reimport, click Undo. This ensures that no changes are made to the existing metadata.

Analyzing Metadata Details

With SAP tables, you cannot view the data after you import the metadata from these tables. However, you can get good insight about the data that is stored in the tables by viewing the "Column Descriptions" and the "Constraints Details".

Column Descriptions

You can view the column description of each of the columns in a table. This is valuable because the column names in SAP can be nondescriptive, and difficult to interpret if you have not previously seen the data in the table.

To view the descriptions, double-click the table to open the data object editor for the table, and then click the Columns editor.

The description for the columns of the table are visible as shown in Figure 7-2.

Figure 7-2 The Columns Editor with the Description for the Columns of SAP Table

Description of Figure 7-2 follows
Description of "Figure 7-2 The Columns Editor with the Description for the Columns of SAP Table"

Constraints Details

The other benefit of the data object editor is that you can get information about the primary and foreign keys within the table. To view the key constraints, click the Constraints editor.


Note:

It is also a useful practice to display the business names of the SAP tables in the Projects Navigator. Business names provide a description of the tables and are therefore more intuitive than the physical names. To view the business names for tables in Oracle Warehouse Builder, from the main menu, click Tools, Preferences, OWB, Naming, and then select Business Names in the Naming Mode field.

Creating SAP Extraction Mappings

After importing metadata from SAP tables, you must define the extraction mapping to extract data from the SAP system.


Note:

For details of mappings in Oracle Warehouse Builder, see Oracle Warehouse Builder Data Modeling, ETL, and Data Quality Guide.

Defining the SAP Extraction Mapping

You can use the Mapping Editor to create a mapping containing SAP tables. Creating a mapping with SAP tables is similar to creating mappings with other database objects. However, there are restrictions on the operators that can be used in the mapping. You can only use table, filter, joiner, and mapping input parameter mapping operators in a mapping containing SAP tables.

A typical SAP extraction mapping consists of one or more SAP source tables (transparent, cluster, or pooled), one or more filter or joiner operators, and a non-SAP target table (typically an Oracle table) to store the imported data.

This is as shown in Figure 7-3.


Note:

The source table is always an SAP table. You cannot have both SAP and non-SAP (Oracle) source tables in a mapping, but the staging table is an Oracle table.

Figure 7-3 SAP Extraction Mapping

SAP Extraction Mapping
Description of "Figure 7-3 SAP Extraction Mapping"

In this mapping, the input parameter holds a date value, and the data from table BKPF is filtered based on this date. Because this is defined as an input parameter, you can enter a value for the date when the mapping is run. The joiner operator enables you to join data from multiple tables, and the combined data set is stored in a staging table.

This section contains the following topics:

Adding SAP Tables to the Mapping

To add an SAP table to a mapping:

On the mapping editor, drag and drop the required SAP table onto the Mapping Editor canvas.

The editor places a table operator on the mapping canvas to represent the SAP table.

Setting the Loading Type

Use the operator properties panel of the Mapping Editor to set the SQL*Loader properties for the tables in the mapping.

To set the loading type for the SAP Source Table:

  1. On the Mapping Editor, select the SAP source table. The Table Operator Properties panel displays the properties of the SAP table operator.

  2. Select a loading type from the Loading Type list. With ABAP code as the language for the mapping, the SQL*Loader code is generated as indicated in Table 7-4.

    Table 7-4 SQL*Loader Code Generated in ABAP

    Loading TypeResulting Load Type in SQL*Loader

    INSERT

    APPEND

    CHECK/INSERT

    INSERT

    TRUNCATE/INSERT

    TRUNCATE

    DELETE/INSERT

    REPLACE

    All other types

    APPEND


Setting Configuration Properties for the Mapping

  • Use the Configuration Properties dialog box to define the code generation language as described in "Setting the Language Parameter".

  • Set ABAP specific parameters, and the directory and initialization file settings in the Configuration Properties dialog box as described in "Setting Run-time Parameters".

Setting the Language Parameter

The language parameter enables you to choose the type of code you want to generate for a mapping. For mappings containing SAP source tables, Oracle Warehouse Builder enables you to select either PL/SQL or ABAP.

If the SAP system uses a non-Oracle database to store data, then you must select ABAP to generate code. If the SAP data is stored on an Oracle database, then you can specify PL/SQL. However, with PL/SQL, you cannot extract pool or cluster tables. Therefore, in all instances it is desirable to set the language to ABAP.

Setting Run-time Parameters

With the language set to ABAP, you can expand the Runtime Parameters node in the Configuration Properties dialog box to display settings specific to ABAP code generation.

Some of these settings come with preset properties that optimize code generation. It is recommended that these settings be retained, because altering them may slow down the code generation process.

The following run-time parameters are available for SAP mappings:

  • ABAP Report Name: Specifies the name of the ABAP report generated by the mapping. This is required only when you run a custom function module to execute the ABAP report.

  • Background Job: Select this option to run the ABAP report as a background job in the SAP system. Enable this option for the longer running jobs. Foreground batch jobs that run for a long duration are considered to be hanging in SAP after a certain time. Therefore it is ideal to have a background job running for such extracts.

  • Control File Name: By default, the control file name equals the data file name specified in the Data File Name field. This implies that the ABAP code generates a single control file that contains both, the SQL*Loader control information and the data (since the log files are the same). You can assign different file names for the control file and the data file, in which case different files are generated for the control information and data, and both the files are transferred by FTP.

  • Data File Name: Specifies the name of the data file that is generated when the ABAP report is executed in the SAP system.

  • File Delimiter for Staging File: Specifies the column separator in a SQL data file.

  • Include FTP: If this is set to true, then the data file is moved to the Oracle Warehouse Builder system using FTP. If this is set to false, then the file is not transferred.

  • INSTALL ONLY: When you set this to true and run the mapping, the ABAP report gets installed on the SAP system, but does not get executed. To execute the ABAP report, you must run the mapping again and use the execution function module. Setting this option to true enables you to generate the mapping, install the ABAP report on the SAP system, and subsequently make modifications to the ABAP report and then execute it. You can use this option when you want the ABAP report to be stored on the SAP system. If this option is set to false, then the ABAP report is loaded and executed on the SAP system. However, the ABAP report is not stored on the SAP system after it is executed.

  • SAP Location: Specifies the location of the SAP instance from where the data can be extracted.

  • SAP System Version: Specifies the SAP system version number to which you want to deploy the ABAP report. The characteristics of the generated ABAP report depends on the version number. For MySAP ERP and all other versions, select SAP R/3 4.7. Different ABAP report is generated for versions before 4.7.

  • SQL Join Collapsing: If this is set to true, then it specifies the following hint, if possible, to generate ABAP report.

    SELECT < > INTO < > FROM (T1 as T1 inner join T2 as T2) ON <condition > 
    
  • Staging File Directory: Specifies the location of the directory in the SAP system where the data file generated by ABAP report resides.

  • Timeout: This specifies the duration, in seconds, for which Oracle Warehouse Builder waits for the SAP system to execute the ABAP report and return a data file. If the SAP system completes the execution within this duration, then Oracle Warehouse Builder automatically retrieves the resultant data file from the SAP system. If the execution takes longer than the specified duration, then you must manually retrieve the data file.

Setting the Join Rank

You must set this parameter only if the mapping contains the joiner operator, and you want to explicitly specify the driving table. Unlike SQL, ABAP code generation is rule-based. Therefore, you must design the mapping in such a way that the tables are loaded in the right order. Or, you can explicitly specify the order in which the tables are to be joined. From the Configuration Properties dialog box, expand Table Operators, and then for each table, specify the Join Rank. The driving table must have the Join Rank value set to 1, with increasing values for the subsequent tables.

You can also let Oracle Warehouse Builder decide the driving table, and the order of joining the other tables. In such cases, do not enter values for Join Rank.

Deploying and Executing SAP ABAP Mappings

After designing the extraction mapping, you must validate, generate, and deploy the mapping, as you do with all mappings in Oracle Warehouse Builder.

To generate the script for the SAP mapping:

  1. Right-click the SAP mapping and select Generate.

    The Generation Results window is displayed.

  2. On the Script tab, select the script name and select View Code.

    The generated code is displayed in the code viewer.

    You can edit, print, or save the file using the code editor. Close the code viewer to return to the Generation Results window.

  3. To save the file, click Save as File and save the ABAP program to the hard drive.

After you generate the SAP mapping, you must deploy the mapping to create the logical objects in the target location.

To deploy an SAP mapping, right-click the mapping and select Deploy. You can also deploy the mapping from Control Center Manager.

For detailed information about deployment, see Oracle Warehouse Builder Data Modeling, ETL, and Data Quality Guide.

When an SAP mapping is deployed, an ABAP mapping is created and stored in the Oracle Warehouse Builder run time schema. Oracle Warehouse Builder also saves the ABAP file under OWB_HOME\owb\deployed_files, where OWB_HOME is the location of the Oracle home directory of your Oracle Warehouse Builder installation.

If you are using the Oracle Warehouse Builder installation that comes with Oracle Database, then this equals the database home.

Depending on whether data retrieval from the SAP system is fully automated, semi-automated, or manual, you must perform the subsequent tasks described in the following sections:

Automated System

In a completely automated system, as an Oracle Warehouse Builder user you have access to the predefined function module in the SAP system. It enables you to execute any ABAP report and extract data directly from the SAP system without being dependent on the SAP administrator, as shown in Figure 7-4.

Figure 7-4 Automated Data Retrieval

Description of Figure 7-4 follows
Description of "Figure 7-4 Automated Data Retrieval"

You can automate the process of transferring the ABAP report to the SAP system and generating the data file on the SAP system. After the data file is generated, Oracle Warehouse Builder uses FTP to transfer the data file to the Oracle Warehouse Builder system. The data file is then loaded into the target file by using SQL*Loader.

An automated system works as follows:

  1. You design the extraction mapping and generate the ABAP report for this mapping.

  2. Before deploying the mapping, you must ensure that the following configuration properties are set for the mapping:

    • ABAP Report Name: The file that stores the ABAP code generated for the mapping.

    • SAP Location: The location on the SAP system from where data is extracted.

    • Data File Name: The name of the data file to store the data generated by the execution of ABAP report.

    Also ensure that you have provided the following additional connection details for the SAP location:

    • Execution Function Module: Provide the name of the predefined SAP function module. When executed, this function module takes the ABAP report name as the parameter, and executes the ABAP code.

    • FTP Directory: A directory on the SAP system. The data file generated upon the execution of the function module is saved to this directory. Oracle Warehouse Builder uses FTP to transfer the file from this directory to the Oracle Warehouse Builder system. This requires an FTP server to be located in the SAP system.

    • Also provide a user name with Write permissions on the FTP directory.

  3. You then start the mapping, after which the following tasks are automatically performed:

    • Oracle Warehouse Builder deploys the ABAP report and the function module RFC_ABAP_INSTALL_AND_RUN is used to load and execute the ABAP report in the SAP system.

      The ABAP report is sent to the SAP system using a "Remote Function Call (RFC)".

  4. In the SAP system, the ABAP report extracts data from the source tables and creates a data file.

    This data file is stored in the location specified by the Staging File Directory. See "Setting Run-time Parameters" for details of the staging file directory.

  5. Oracle Warehouse Builder uses FTP to transfer this data file back to the Oracle Warehouse Builder system.

    The file is stored in the location specified in the FTP Directory field.

  6. Using SQL*Loader, Oracle Warehouse Builder loads the target table specified in the mapping with the data from the data file.

The advantage of this system is that you can create a fully automated end-to-end solution to extract SAP data. As a user, you create the extraction mapping, and run it from Oracle Warehouse Builder, which then creates the ABAP report, sends it to the SAP system, extracts the resultant data file, and loads the target table with the extracted data.

<Vdiv class="sect2">

Semi-Automated System

In a semi-automated system, as a Oracle Warehouse Builder user, you do not have access to the predefined function module RFC_ABAP_INSTALL_AND_RUN, and therefore cannot use this function module to execute ABAP report. Instead, you must create an extraction mapping, deploy it, and then send the ABAP report to the SAP administrator who verifies the code before allowing you to run it in the SAP system, as shown in Figure 7-5.

Figure 7-5 Semi-Automated Implementation

Description of Figure 7-5 follows
Description of "Figure 7-5 Semi-Automated Implementation"

A semi-automated system works as follows:

  1. You design the extraction mapping and generate the ABAP report for this mapping.

    You can then test this report in the development environment.

  2. You then send the ABAP report to the SAP administrator, who tests the report, and loads it to the SAP repository in the production environment.

  3. The SAP administrator can create a new report or use the same report that you send.

  4. If the SAP administrator creates a new report, then obtain the name of the new report and use it in your mapping to extract data from the production environment.

  5. Before you run the mapping in the production environment, ensure that you have set the following configuration properties for the mapping:

    • ABAP Report Name: The SAP administrator provides the name of the ABAP report after verifying the code. You must then use this report name to extract data.

    • SAP Location: The location on the SAP system from where data is extracted.

    • Data File Name: Name of the data file to store the data generated during execution of ABAP report.

    Also ensure that you have provided the following additional connection details for the SAP location:

    • Execution Function Module: Provide the name of the custom function module created by the SAP administrator. On execution, this function module takes the ABAP report name as the parameter, and executes the ABAP code. You must obtain the function module name from the SAP administrator.

    • FTP Directory: A directory on the SAP system. The data file generated by the execution of the ABAP report is saved to this directory. Oracle Warehouse Builder imports the data file using FTP. The FTP server resides on the SAP system.

    • Also provide a user name with Read permissions on the FTP directory.

  6. In the production environment, when you run the mapping, Oracle Warehouse Builder sends the ABAP report name and the custom function module to the SAP system using a "Remote Function Call (RFC)".

  7. In the SAP system, the ABAP report gets executed and a data file is generated. The ABAP report gets executed only if the ABAP report name and the function module are available.

    This data file is stored in the location specified by the Staging File Directory.

  8. Oracle Warehouse Builder imports the data file using FTP. An FTP server must be available on the SAP server.

  9. Oracle Warehouse Builder uses SQL*Loader to load the target table with data from the data file.

Manual System

In a manual system, your role as an Oracle Warehouse Builder user is restricted to generating the ABAP report for the mapping, and sending the ABAP report to the SAP administrator. The tasks involved in this system are:

  1. You create an extraction mapping, and generate the ABAP report for the mapping.

  2. While designing the mapping, ensure that you specify the Data File Name to store the data file.

  3. You send the ABAP report to the SAP administrator.

  4. The SAP administrator executes the ABAP report in the SAP system.

  5. On execution of the code, a data file is generated.

You can then create a process flow to import the data file. The process flow may typically consist of the activities shown in Figure 7-6. For more details on implementing process flows, see Oracle Warehouse Builder Data Modeling, ETL, and Data Quality Guide.

Figure 7-6 Process Flow to Import SAP Data

Process Flow to retrieve SAP data
Description of "Figure 7-6 Process Flow to Import SAP Data"

  1. A File Exists activity checks for the availability of the data file.

  2. If the file exists, then an FTP activity transfers the file to the Oracle Warehouse Builder system.

  3. If the file does not exist, then it must wait till the file is made available, and then perform an FTP.

  4. Using SQL*Loader, the target table is loaded with data from the data file.

In most production environments, the SAP administrator may not allow any other user to access the SAP system. In such cases, implementing the manual system may be the only viable option.

Using SQL*Loader in the Process Flow

To use SQL*Loader in the process flow, insert a SQL*Plus activity as shown in Figure 7-6. To use the SQL*Loader, use the HOST command. Once you insert the SQL*Plus activity, insert the following value for SCRIPT:

HOST sqlldr ${Target.User}/${Target.Password} CONTROL=${Working.RootPath}\C.CTL
quit

Insert the relevant value for the control (.ctl) file name.

Then configure the path settings for the SQL*Plus activity. Right-click the process flow and select Configure.

Under SQL*Plus Activities, expand the SQLPLUS node and provide the required values under Path Settings as shown in Figure 7-7.

Deployed Location refers to the location of the target table. Working location refers to the location of the control file.

Figure 7-7 Path Setting for the Process Flow

The path settings for the SQL PLUS activity.
PKNcPK;,AOEBPS/cover.htmO Cover

Oracle Corporation

PK[pTOPK;,AOEBPS/defining_flatfiles.htm Using Flat Files as Sources or Targets

3 Using Flat Files as Sources or Targets

You can use flat files as either source files or target files within mappings in Oracle Warehouse Builder.

This chapter describes the use of flat files as sources and targets in Oracle Warehouse Builder. It contains the following topics:

About Flat Files

When using flat files as sources:

When using flat files as targets:


Note:

The same flat file can act as a source and a target file.

About Metadata for Flat Files

File metadata describes the structure of data records in the file, including column names and data types. Before you use a flat file as source, it is desirable to define the metadata of that flat file.

You can import flat file metadata from several sources:

  • For character files with displayable data, you can use the Flat File Sample Wizard to view and analyze the flat file contents and deduce metadata from them.

  • For COBOL copybooks, you can import metadata definitions directly from the copybook file.

  • For binary files, files that are too complex for the Flat File Sample Wizard, and for target files for which no sample is available yet, you can explicitly define metadata for your flat file using the Create Flat File Wizard.

About Flat File Modules and Locations

You can create flat file modules in your project that store metadata for source and target files. Each flat file module must be associated with a metadata and data location. When you specify a location for a module, both metadata location and data location point to the same location. You can specify different locations for the metadata and the data by editing the module.

Working with Flat Files as Sources or Targets

The usual cycle, when working with a flat file as a source or target, is to:

  1. Ensure that the location where the flat file stored is accessible from the host on which the mappings accessing the flat file is deployed.

  2. Create a flat file module and associate it with the flat file module location. See "Creating Flat File Modules".

  3. Define the flat file and specify its structure, based on whether its a character file, binary file, or a COBOL copybook. See "Using the Flat File Sample Wizard" for details of Flat File wizard. See "Using the Create Flat File Wizard" for details of creating a flat file for a binary file. See "Importing Metadata Definitions from COBOL Copybooks" for details of importing metadata from COBOL copybooks.

  4. Select the type of mapping to use to extract data from the file. Consider whether you want to use flat file operators or external tables. See "Choosing Between External Table and Flat File Operators". If using a PL/SQL mapping, create external tables to represent the file contents as database tables.

  5. Design your PL/SQL or SQL*Loader ETL mapping using the flat files as a source or target. See Oracle Warehouse Builder Data Modeling, ETL, and Data Quality Guide for details of creating mappings.

Flat Files as Sources

To use a flat file as a source, first define the metadata structure of the flat file and then import metadata into it.

Defining Character Data Files

You can import metadata from various types of files including character data set files and COBOL copybooks.

To define flat file metadata, complete the following steps:

  1. Create a flat file module.

    Create a module for each unique directory or path in your file system from which you want to import file metadata. See "Creating Flat File Modules".

  2. Define the structure of the file.

    The Flat File Sample Wizard enables you to view a sample of the flat file and to define record organization and file properties. The wizard enables you to sample and define common flat file formats such as string and ASCII. See "Using the Flat File Sample Wizard".

    For files with complex record structures, the Flat File Sample Wizard may not be suitable for sampling the data. In such cases, you must create a flat file and define its structure accordingly. See "Using the Create Flat File Wizard" for creating and defining the structure of a flat file.

    For COBOL copybooks, use the COBOL import dialog box to import metadata from copybooks. You can also set the import options depending on the copybook. See "Importing Metadata Definitions from COBOL Copybooks" for more details.

About External Tables

An external table is a read-only table that is associated with a single record type in a flat file. External tables represent data from a non-relational source in a relational table format. When you use an external table in a mapping, column properties are based on the SQL properties defined when importing the flat file. For more information about SQL properties for flat files, see "SQL Properties".

When you use an external table as a source table in a mapping, you can use it as a regular source table. Oracle Warehouse Builder generates PL/SQL code to select rows from the external table. You can also get parallel access to the file through the table. You also have access to additional relational function operators.


Note:

You can use external tables only for source tables.

You can either import an existing external table from another database as described in"Importing an External Table" or define a new external table as described in "Creating a New External Table Definition".

Choosing Between External Table and Flat File Operators

You can introduce source data from a flat file into a mapping either through an external table or a flat file operator. In general, external tables are the preferred method of loading large volumes of data from flat files.

Note the following details when comparing external tables and flat files:

  • External table operators and PL/SQL mappings provide for maximum performance, including exploitation of database parallelism during load. The full range of transformation operators is available, because the mappings are PL/SQL mappings. Over time, ETL mappings built with external tables takes advantage of further performance improvements at the database level.

  • Flat file operators and SQL*Loader mappings are a fully supported method of loading flat files. Oracle Warehouse Builder generates native SQL*Loader code for a SQL*Loader mapping. A more limited range of operators is supported in SQL*Loader mappings. You must stage data in an intermediate table and then use a PL/SQL mapping to transform it further before loading into a final target.

For more information about differences between external tables and SQL*Loader (flat file operators), see Oracle Database Utilities.

For more information about different types of mappings, see Oracle Warehouse Builder Data Modeling, ETL, and Data Quality Guide.

Flat Files as Targets

When you use a flat file as a target, it is desirable to define the metadata but is not necessary. For example, while using unbound flat file operators in mappings, the metadata for the flat file might not be defined before using it in the mapping. However, in practice, it might be more convenient to define the metadata definitions of a target file rather than to use an existing file as a target.

Creating a New Flat File as a Target

Create a flat file and define its structure before loading data into it.

To design a new flat file, complete the following steps:

  1. Create a module for the flat file. See "Creating Flat File Modules".

  2. Use the Create Flat File Wizard to design the metadata structure of the flat file. See "Using the Create Flat File Wizard".

  3. Use the newly created flat file as a target.


Note:

You can also create a target flat file in a mapping. Add an unbound flat file operator to a mapping, then map from the source table or operator to the flat file. Finally, do a Create and Bind for the flat file operator. For more information about mappings, see Oracle Warehouse Builder Data Modeling, ETL, and Data Quality Guide.

Creating Flat File Modules

Flat files are stored within modules that enable you to group multiple flat files.

To create a flat file module:

  1. Right-click the Files node in the Projects Navigator and select New Flat File Module.

    Oracle Warehouse Builder displays the Welcome page for the Create Module Wizard.

  2. Define the module in the following steps:

    1. "Describing the Flat File Module"

    2. "Defining Locations for Flat File Modules"

  3. The Finish page summarizes the information you provided on each of the wizard pages. When you click Finish, the wizard creates the flat file module and inserts it under Files in the Projects Navigator.

    After creating a flat file module, you can either define a new flat file, as described in "Using the Create Flat File Wizard", import existing flat files into this module as described in "Using the Flat File Sample Wizard", or import a COBOL file as described in "Importing a Copybook".

Describing the Flat File Module

Enter a name and an optional description for the flat file module on the Name and Description page.

Defining Locations for Flat File Modules

Locations for flat file modules identify the paths in the file system from which you sample existing files or to which you create new files. You can define a new location or select an existing location on the Connection Information page.

Flat file modules have metadata and data locations. When you specify a location for a module, both metadata location and data location point to the same location. You can specify different locations for the metadata and the data by editing the module.

To import metadata from flat files located in different directories or paths in the system then for ease of use, create separate Oracle Warehouse Builder modules for each path. For example, suppose the files are located at the following paths, c:\folder1 and c:\folder1\subfolder. You can create two file modules C_FOLDER1 and C_FOLDER1_SUBFOLDER and associate them with the corresponding paths. However, associating a module with a path does not restrict you from importing metadata definitions of files residing in a different path. You can define a path as the default, and later import files from a different path.

A data location identifies only a folder in the file system and does not include subfolders.

Connection Information Page

The Connection page is displayed with a default location name that is based on the module name that you entered in the Name and Description page. If you do not want to create a location, then select from the list of existing locations.

On the Connection Information page, click Edit to open the "Edit File System Location Dialog Box" and specify the location details. This location becomes the metadata and data location.

Edit File System Location Dialog Box

On the Edit File System Location dialog box, enter the fully qualified directory, including the drive letter.

Figure 3-1 shows the Edit Location dialog box.

Figure 3-1 Edit File System Location Dialog Box

Description of Figure 3-1 follows
Description of "Figure 3-1 Edit File System Location Dialog Box"

Using the Create Flat File Wizard

Use the Create Flat File Wizard to design the structure of a new flat file in Oracle Warehouse Builder. This could be the case when you must define binary files and using the Flat File Sample wizard is not a viable solution. You can also use this wizard to create a flat file for use as a target in a mapping.

To use the Create Flat File wizard, right-click the flat file module and select New Flat File.

The Create Flat File Wizard guides you in completing the following steps:

Describing a Flat File

Use the Name and Description page to provide a name for the flat file and to specify general properties associated with it.

  • Name: This name uniquely identifies the file within the module. Enter a name that does not include a space or any punctuation. You can include an underscore. You can use uppercase and lowercase letters. Do not start the name with a digit. Do not start a name with the reserved prefix OWB$.

  • Default Physical File Name: A physical file name may be specified. This name can be altered at any time using configuration properties. If you are creating a new file, you can leave this name blank. If you are defining an existing binary file, enter the name of the file. Do not include the file path.

  • Character set: Select a character set or accept the default character set defined for the system on which Oracle Warehouse Builder resides. For complete information about NLS character sets, see Oracle Database Globalization Support Guide.

  • Description: You can enter an optional description for the file.

Defining File Properties for a Flat File

Use the File Properties page to specify Record Organization, Logical Record Definition, Number of Rows to Skip, and the Field Format for the flat file as shown in Figure 3-2.

Use the file properties page to specify Record Organization, Logical Record Definition, Number of Rows to Skip, and the Field Format for the flat file.

Record Organization

Indicate how to organize the records in the file. Select between the two options to indicate how the length of each record in the file is determined:

  • Records delimited by: Select this option to designate the end of each record by a delimiter. Then specify that record delimiter. You can accept the default record delimiter, new line (\n), or you can enter a new value. You can provide multiple characters and hexadecimal characters as a record delimiter. The hexadecimal character format is x'<hexadecimal string>' or X'<hexadecimal string>'. Using hexadecimal characters is useful if the delimiter character is not a new line character (\n) or carriage return<CR>. For example, to specify the pipe symbol (|) as the delimiter, use its hexadecimal value x'7C'.

  • Record length (in characters): Select this option to create a file with all records having the same length. Then specify the number of characters in each record. For files with multibyte characters, count a multibyte character as one character.

Logical Record Definition

By default, the wizard creates a file in which each physical record corresponds to one logical record. You can override the default to create a file composed of logical records that correspond to multiple physical records.

  • Number of physical records for each logical record: The data file contains a fixed number of physical records for each logical record.

    PHYSICAL_RECORD1
    PHYSICAL_RECORD2
    PHYSICAL_RECORD3
    PHYSICAL_RECORD4
    

    In the preceding example, if the number of physical records for each logical record is 2, then PHYSICAL_RECORD1 and PHYSICAL_RECORD2 form one logical record and PHYSICAL_RECORD3 and PHYSICAL_RECORD4 form the second logical record.

  • End character of the current physical record: The data file contains a variable number of physical records with a continuation character at the end that signifies that the record is continued in the next physical record.

    In the following example, the continuation character is a percentage sign (%) after the record.

    PHYSICAL_RECORD1%
    PHYSICAL_RECORD2       end log rec 1
    PHYSICAL_RECORD3%
    PHYSICAL_RECORD4       end log rec 2
    
  • Start character of the next physical record: The data file contains a variable number of physical records with a continuation character at the beginning of each physical record that signifies that the record continues from the previous physical record.

    The following example shows two logical records with a continuation character at beginning of the record.

    PHYSICAL_RECORD1
    %PHYSICAL_RECORD2      end log rec 1
    PHYSICAL_RECORD3
    %PHYSICAL_RECORD4      end log rec 2
    

    More than two records can be joined with this technique. The following example shows four physical records for each logical record using continuation at beginning.

    PHYSICAL_RECORD1
    %PHYSICAL_RECORD2
    %PHYSICAL_RECORD25
    %PHYSICAL_RECORD26   end log record 1
    PHYSICAL_RECORD3
    %PHYSICAL_RECORD4
    %PHYSICAL_RECORD45
    %PHYSICAL_RECORD46 end log record 2
    

Number of Rows to Skip

When defining an existing file, indicate the number of records to skip at execution time in Skip rows. This is useful for skipping over header and field name records.

When creating a new target file, you can leave this value blank.

Field Format

Select between Fixed Length and Delimited formats for the file.

To create a delimited file, specify the following properties:

  • Field delimiter: Field delimiters designate where one field ends and another begins. You can enter a field delimiter or select one from the list. The list displays common field delimiters. However, you may enter any character as a delimiter except the ones used for enclosures. The default is the comma (,). You can provide multiple characters and hexadecimal characters as a delimiter. The hexadecimal character format is x'<hexadecimal string>' or X'<hexadecimal string>'. For example, to specify the pipe symbol (|) as the delimiter, use its hexadecimal value x'7C'.

  • Enclosures (Left and Right): Some delimited files contain enclosures that denote text strings within a field. If the file contains enclosures, enter an enclosure character in the text box or select one from the list. The list displays common enclosures. However, you may enter any character. The default for both the left and right enclosure is the double quotation mark ("). You can specify multiple characters and hexadecimal characters as field enclosures.

Figure 3-2 File Properties Page

Description of Figure 3-2 follows
Description of "Figure 3-2 File Properties Page"

Defining the Record Type for a Flat File

Indicate whether the file you create is to contain a single record type or multiple record types. The default is set to Single Record.

If the file contains multiple record types, select Multi Record. For each record type you want to create, specify values under Record Type Location and then its type value and record name.

Valid entries for Record Type Location depend on the field format you selected on the File Properties page, fixed length or delimited fields.

For example, if you specify the fields as delimited, then indicate the field position as shown in Figure 3-3.

For fixed-length files, the page displays two fields, Start Position and Length, under Record Type Location. Indicate the start position and the length of the field.

Figure 3-3 Record Type Properties Page

Description of Figure 3-3 follows
Description of "Figure 3-3 Record Type Properties Page"

Defining Field Properties for a Flat File

Use the Field Properties page to define properties for each field.

Since you can use a flat file in a mapping either directly as a source or a target, or indirectly through an external table, the Field Properties page shows both "SQL*Loader Properties" and "SQL Properties". Use the scroll bar to scroll to the right and view all the properties.

SQL*Loader Properties

The first set of properties the wizard displays are for the SQL*Loader utility. When you use the flat file directly as a source in a mapping, SQL*Loader and the properties you set here are used. SQL*Loader properties include details of how the following are mapped to a relational table: "Type", "Length", "Precision", "Scale", "Mask", "NULLIF", and "DEFAULTIF". See Oracle Database Concepts for more details.

Type

Describes the data type of the field for SQL*Loader. You can use the wizard to import many data types such as CHAR, DATE, DECIMAL EXTERNAL, FLOAT EXTERNAL, INTEGER EXTERNAL, ZONED, and ZONED EXTERNAL. For complete information about SQL*Loader field and data types, see Oracle Database Utilities.

Length

For delimited files, specifies the maximum field length to be used by SQL* Loader.

Precision

Specifies the number of digits for certain data types such as Zoned and Float. See Oracle Database Utilities for more details.

Scale

Specifies the number of decimal digits for certain data types such as Zoned and Float. See Oracle Database Utilities for more details.

Mask

SQL*Loader uses DD-Mon-YY as its default date mask. You can override this default by entering a valid date mask when you describe the file. For example, if the input data has the format DD-Mon-YYYY rather than SQL*Loader default, you can enter the true format as a mask.

NULLIF

You can override the default action of SQL*Loader by placing a NULLIF condition on a field. For example, when a character field contains all blanks, you can direct SQL*Loader to mark the field as null rather than storing the blanks. Valid syntax for this field includes =BLANKS, ='quoted string', =X'ff' to indicate hexadecimal values, and != for 'not equal to' logic.

DEFAULTIF

You can override the default action of SQL*Loader by placing a DEFAULTIF condition on a field. For example, when a numeric or DATE field contains all blanks, SQL*Loader rejects the entire record. To override this action, type =BLANKS in the DEFAULTIF property. When SQL*Loader evaluates this condition, it sets the numeric field to zeros and loads the record. Valid syntax for this field includes =BLANKS, ='quoted string', =X'ff' to indicate hexadecimal values, and != for 'not equal to' logic.

SQL Properties

These properties specify how the fields in a flat file translate to the columns in a relational table. They are used to define the characteristics of an external table. They are also used to automatically generate fields for mapping to relational operators. Similarly, if the flat file is used as a target, then these properties are used to generate the PL/SQL code.

The SQL properties you set here have the following implications for mapping design, validation, and generation:

  • External table: If you create an external table based on a single flat file record type, the columns properties are based on the SQL properties you defined for the flat file. For more information about external tables, see "Using External Tables".

  • Populating an Empty Mapping Object: In a mapping, if you populate an empty relational object with the metadata, then the object inherits the SQL properties you defined for the flat file source.

  • Flat file target: If you use the flat file as a target in a mapping, the target does not inherit the SQL properties. Instead, all fields inherit the default SQL*Loader data type.

SQL Type

Oracle Warehouse Builder supports many SQL data types such as CHAR, DATE, FLOAT, and BLOB.

The wizard assigns a default value for the SQL type based on SQL*Loader properties you set. If you accept the default SQL type, the type is updated if you later change SQL*Loader properties. However, if you override the SQL type by selecting a new SQL type from the list, it then becomes independent of the flat file SQL*Loader data type.

SQL Length

This property defines the length for the SQL column, if appropriate.

SQL Precision

This property defines the precision for the SQL column, if appropriate. For example, when defining NUMBER and FLOAT fields, the precision may be set.

SQL Scale

This property defines the scale for the SQL column, if appropriate. For example, when defining NUMBER and FLOAT fields, the scale may be set.

Select Automatically update start and end positions for all fields if you want all the field positions to be automatically recalculated based on changes made to any field.

Once you define the metadata of the new flat file, you can use it as a source or target file, or create an external table using a record from the file.

Importing Definitions from Flat Files Using Sampling

If you have existing flat files to use as sources, then you can import and sample the metadata from these flat files. Use the File Import dialog box to import metadata from flat files. This metadata must be imported into an existing file module.

To use the Flat File Sampling Wizard:

  1. Establish connectivity to the files you want to import.

    Because the Flat File Sample Wizard runs on the host running the Design Center client, ensure that the files to be sampled are accessible from that host. You can either mount a remote file system across your network using a method such as network file system (NFS) or Windows file sharing, or copy the files, or a representative section of the files, to a file system on or accessible from the Design Center client host.

  2. Create a flat file module that contains the imported flat file definitions. See "Creating Flat File Modules" for details.

    Either create a module for each folder in the file system from which you want to import files or use the same module to import file definitions from multiple folders.

    When you create a flat file module, the location corresponding to this module is a path in the file system which acts as the metadata and data location. Use the Connection Information Page of the Create Module Wizard to specify this path.

    A flat file location does not include subfolders of the specified folder.

  3. Right-click the flat file module and select Import, Flat File. Alternatively, select the flat file module, and then from the main menu, select File, Import, Flat File.

    The File Import dialog box is displayed.

  4. Click Add Sample File, and select the files to import.

    You can add single or multiple files into a module. All the files you add are listed under Sample File. If you specify a file in the Same As field, then the definition of the sampled file is based on the definition of the file specified in the Same As field.

  5. Click Import. The Flat File Sample wizard is started. The files are sampled in the order they were listed under Sample File.

  6. The Flat File Sample wizard enables you to view a sample of the flat file while you are defining it. Each step of the wizard enables you to design the definition and verify that the definition is correct. See "Using the Flat File Sample Wizard" for more information.

    For binary files, you may prefer using the Create Flat File wizard. See "Using the Create Flat File Wizard".

    The wizard creates definitions for the files, stores the definitions in the flat file module, and inserts the file names under the flat file module in the Projects Navigator.

Using the Flat File Sample Wizard

Use the Flat File Sample Wizard as an aid in defining metadata for flat files.

This wizard samples delimited and fixed format files. It does not sample multibyte character file with a fixed record format. For these and other files containing non-displayable data, such as binary files, see "Using the Create Flat File Wizard".

After you complete the Flat File Sample Wizard, the metadata is defined in the workspace and you can use the flat files as source or target operators in a mapping. For more information about mappings, see the Oracle Warehouse Builder Data Modeling, ETL, and Data Quality Guide.

Flat File Wizard for Simple Flat Files

For simple flat files that are delimited and contain a single record type, the Flat File wizard guides you through the following tasks:

Describing the Flat File

Use the Name page to describe the flat file you are sampling.

  • Name: This name uniquely identifies the file in the module. By default, the wizard creates a name based on the name of the source file by replacing invalid characters with an underscore. For example, if the file name is myfile.dat, the wizard assign the workspace name myfile_dat.

    If you rename the file, do not include a space or any punctuation in the name. You can include an underscore. You can use uppercase and lowercase letters. Do not start the name with a digit. Do not start a name with the reserved prefix OWB$.

  • Description: You can enter an optional description for the file.

  • Character set: Character sets determine what languages can be represented in database objects and files. The default Globalization Support character set matches the character set defined for the computer hosting Oracle Warehouse Builder. If the character set differs from that of the source file, the data sample might appear unintelligible. You can display the data sample in the character set native to the source by selecting it from the list. For complete information about NLS character sets, see Oracle Database Globalization Support Guide.

  • Number of characters to sample: This value specifies the number of characters that is read and displayed. The number of characters that is read cannot be canceled, so ensure that you pick a reasonable number of characters. If you are sampling a multi-record file, then ensure that the sample is large enough to include at least one of each type. By default, the wizard samples the first 10000 characters. To determine an optimum value for this field, see "Example: Flat File with Multiple Record Types".

  • Advanced: Do not click the Advanced button for simple flat files. The advanced option is required only for complex flat files as described in "Flat File Wizard For Complex Flat Files".

Click Next to continue with "Specifying the Record Organization". At all steps, the wizard updates the sample displayed at the bottom of the wizard page. You can use the scroll bars to see the sample data.

Specifying the Record Organization

Specify the following properties:

  • Records delimited by: Select this option if the end of each record is designated by a delimiter. Then specify that record delimiter. You can accept the default record delimiter, carriage return (<CR>), or you can enter a new value. For symbols other than \n and <CR>, specify the hexadecimal value of the character used as the delimiter.

  • Record length (in characters): Select this option if each record in the file is the same length. Then specify the number of characters in each record. For files with multibyte characters, count a multibyte character as one character.

  • Field delimiter: Field delimiters designate where one field ends and another begins. You can enter a field delimiter or select one from the list. The list displays common field delimiters. However, you may enter any character as a delimiter except the ones used for enclosures. The default is the comma (,). You can also specify multiple characters and hexadecimal characters as a field delimiter.

  • Enclosures (Left and Right): Some delimited files contain enclosures that denote text strings within a field. If the file contains enclosures, enter an enclosure character in the text box or select one from the list. The list displays common enclosures. However, you may enter any character. The default for both the left and right enclosure is the double quotation mark ("). Multiple characters and hexadecimal characters can be specified as field enclosures.

Specifying Field Properties

Use the Field Properties page in the Flat File Sample Wizard to define properties for each field. The wizard assigns a name to each field. It assigns 'C1'to the first field, 'C2' to the second, and so on. To rename fields, click a field and enter a new name.

For single record file types, you can instruct the wizard to use the first record to name the fields. Indicate this by selecting the Use the first record as the field names box.

The Field Properties page shows both "SQL*Loader Properties" and "SQL Properties". Use the scroll bar to scroll to the right and view all the properties.

The wizard deactivates properties that do not apply to a given data type. For example, you can edit the length for a CHAR, but precision and scale are not available. Deactivated properties are grayed out.

SQL*Loader Properties

The first set of properties the wizard displays are for the SQL*Loader utility. When you use the flat file directly as a source in a mapping, SQL*Loader and the properties you set here are used. SQL*Loader properties include details of how the following are mapped to a relational table: "Type", "Length", "Precision", "Scale", "Mask", "NULLIF", and "DEFAULTIF". See Oracle Database Concepts for more details.

SQL Properties

The second set of properties are the SQL properties that include mapping details for "SQL Type", "SQL Length", "SQL Precision", and "SQL Scale". These properties specify how the fields in a flat file translate to the columns in a relational table. See "SQL Properties" for more details.

Flat File Wizard For Complex Flat Files

For complex files, the Flat File wizard guides you through the following tasks. The advanced mode enables you to define files with fixed length fields (in addition to delimited), files that contain multiple record types, or files that use logical records (multiple physical records per logical record).

Describing the Flat File

Use the Name page to describe the flat file you are sampling.

  • Name: This name uniquely identifies the file in the workspace. By default, the wizard creates a name based on the name of the source file by replacing invalid characters with an underscore. For example, if the file name is myfile.dat, the wizard assign the workspace name myfile_dat.

    If you rename the file, do not include a space or any punctuation in the name. You can include an underscore. You can use uppercase and lowercase letters. Do not start the name with a digit. Do not start a name with the reserved prefix OWB$.

  • Description: You can enter an optional description for the file.

  • Character set: Character sets determine what languages can be represented in database objects and files. The default Globalization Support character set matches the character set defined for the computer hosting Oracle Warehouse Builder. If the character set differs from that of the source file, the data sample might appear unintelligible. You can display the data sample in the character set native to the source by selecting it from the list. For complete information about NLS character sets, see Oracle Database Globalization Support Guide.

  • Number of characters to sample: You can indicate the number of characters for the wizard to sample from the data file. By default, the wizard samples the first 10000 characters. To determine an optimum value for this field, see "Example: Flat File with Multiple Record Types".

Click Advanced to continue with "Selecting the Record Organization". At all steps, the wizard updates the sample displayed at the bottom of the wizard page. You can use the scroll bars to see the sample data.

Selecting the Record Organization

Use the Record Organization page to indicate how records are organized in the file you are sampling. Select between the two options to indicate how the length of each record in the file is determined:

  • Records delimited by: If the end of each record is designated by a delimiter, then specify that record delimiter. You can accept the default record delimiter, carriage return (<CR>), or enter a new value. You can specify multiple characters and hexadecimal characters as a record delimiter. If the delimiter is a symbol other than \n or <CR>, then specify the hexadecimal character of the symbol. The hexadecimal character format is x'<hexadecimal string>' or X'<hexadecimal string>'.

  • Record length (in characters): Select this option if each record in the file is the same length. Then specify the number of characters in each record. For files with multibyte characters, count a multibyte character as one character.

Specifying Logical Records

The Flat File Sample Wizard enables you to sample files composed of logical records that correspond to multiple physical records. If the file contains logical records, select File contains logical records. Then select one of the options to describe the file.

The wizard updates the display of the logical record in the lower panel to reflect your selection. The default selection is one physical record for each logical record.

  • Number of physical records for each logical record: The data file contains a fixed number of physical records for each logical record.

    PHYSICAL_RECORD1
    PHYSICAL_RECORD2
    PHYSICAL_RECORD3
    PHYSICAL_RECORD4
    

    In the preceding example, if the number of physical records for each logical record is 2, then PHYSICAL_RECORD1 and PHYSICAL_RECORD2 form one logical record and PHYSICAL_RECORD3 and PHYSICAL_RECORD4 form a second logical record.

  • End character of the current physical record: The data file contains a variable number of physical records with a continuation character at the end that signifies that the record is continued in the next physical record.

    In the following example, the continuation character is a percentage sign (%) after the record.

    PHYSICAL_RECORD1%
    PHYSICAL_RECORD2       end log rec 1
    PHYSICAL_RECORD3%
    PHYSICAL_RECORD4       end log rec 2
    
  • Start character of the next physical record: The data file contains a variable number of physical records with a continuation character at the beginning of each physical record that signifies that the record is a continuation of the previous physical record.

    The following example shows two logical records with a continuation character at beginning of the record.

    PHYSICAL_RECORD1
    %PHYSICAL_RECORD2      end log rec1
    PHYSICAL_RECORD3
    %PHYSICAL_RECORD4      end log rec 2
    

    More than two records can be joined with this technique. The following example shows four physical records for each logical record using continuation at beginning.

    PHYSICAL_RECORD1
    %PHYSICAL_RECORD2
    %PHYSICAL_RECORD25
    %PHYSICAL_RECORD26   (end log record 1)
    PHYSICAL_RECORD3
    %PHYSICAL_RECORD4
    %PHYSICAL_RECORD45
    %PHYSICAL_RECORD46 (end log record 2)
    

    After you complete the logical record information, click Next to continue with the wizard.

Selecting the File Format

Use the File Format page to select between Fixed Length and Delimited formats for the fields in the file. The Flat File Sample Wizard does not sample multibyte character files with a fixed record format. For such files, use the Create Flat File wizard. For more details, see "Using the Create Flat File Wizard".

When you select a file format, the wizard updates the sample displayed at the bottom of the wizard page. You can use the scroll bars to navigate the sample data.

Fields in a file can either be of fixed length or delimited.

For fixed length fields, select Fixed Length. If you select this option then you must define the field lengths in the Field Lengths page. See "Specifying Field Lengths (Fixed-Length Files Only)".

When the fields are delimited, specify the following properties:

  • Field delimiter: Field delimiters designate where one field ends and another begins. You can enter a field delimiter or select one from the list. The list displays common field delimiters. However, you may enter any character as a delimiter except the ones used for enclosures. The default is the comma (,). You can also specify multiple characters and hexadecimal characters as a field delimiter. The hexadecimal character format is x'<hexadecimal string>' or X'<hexadecimal string>'.

  • Enclosures (Left and Right): Some delimited files contain enclosures that denote text strings within a field. If the file contains enclosures, enter an enclosure character in the text box or select one from the list. The list displays common enclosures. However, you may enter any character. The default for both the left and right enclosure is the double quotation mark ("). Multiple characters and hexadecimal characters can be specified as field enclosures.

Click Next to continue with the wizard.

Selecting the File Layout

Use the File Layout page to specify the number of rows to skip and to select between a single record type versus multiple record types.

Indicate the number of records to skip in Skip rows. This is useful for skipping over unwanted header information. If one of the records includes field names, skip the preceding header records so that the record containing field names is displayed as the first record in the file. Later in the wizard, on the Field Properties page, you can instruct the wizard to use that record for field names if you are defining a single record file type.

Indicate whether the file contains a single record type or multiple record types. Later in the wizard you can instruct the wizard to scan the file for the record types. For more information about multiple record types, see "Selecting Record Types (Multiple Record Type Files Only)".

Selecting Record Types (Multiple Record Type Files Only)

Use the Record Types wizard page to scan the flat file for record types, add or delete record types, and assign type values to the record types.


Note:

This step in not used for files with a single record type. If the data file has a single record type and fixed length file format, proceed to "Specifying Field Lengths (Fixed-Length Files Only)" . If the data file has a single record type and delimited file format, proceed to "Specifying Field Properties".

Example: Flat File with Multiple Record Types

In files with multiple record types, one of the fields distinguishes one record type from the next. When you use the Flat File Sample Wizard, you instruct the wizard to scan a specified field of every record for the record type values.

Figure 3-4 shows an example of a comma delimited file with two record types, "m" and "f". In this case, instruct the wizard to scan the third field. The wizard returns "m" and "f" as the type values.

Figure 3-4 Example of a File with Multiple Record Types

This illustration is described in the surrounding text.

When you use the wizard to sample flat files with multiple record types, ensure that the sample size you specified on the Name page is large enough to include each record type at least once. The default is 10000 characters.

If you do not see all of the required record types in the display area, you must specify a larger sample size on the Name page. Ensure that the sample size is large enough to include all record types. If all record types do not appear within a reasonable number of characters, you can mock up a sample file with rows selected from different parts of the master file to provide a representative set of data. If you know the record layout well, you can scan a representative sample and then manually add new record types.

Defining Multiple Record Organization in a Delimited File

When a delimited flat file contains several different types of records, you can use the scanning feature within the Flat File Sample Wizard to search and label record types.

To complete the Records Type page for a delimited file:

  1. Select the one field that identifies the record types in the file.

    The wizard displays all the fields in a sample in the lower panel of the page. In the Field position, you can enter the position as it appears in the sample. Unless you specify otherwise, the wizard defaults to the first field in the file.

    If you click Scan, then the wizard scans the file for the field and displays the type values. The wizard assigns default record names (RECORD1, RECORD2...) to each type value.

  2. You can edit the record names and the type value.

    Click a record name to rename it or select a different record name from the list. You cannot associate a record name with multiple record type values.

  3. Click Next to continue with the wizard.

Defining Multiple Record Organization in a Fixed-Length File

When a fixed-length flat file contains several different types of records, you can use the scanning feature within the Flat File Sample Wizard to search for record types and assign a type value to each record type.

To complete the Records Type page for a fixed-length file:

  1. Specify the one field that identifies the record types in the file. Use the ruler or enter values for the Start position and End position. To scan for records based on the first field, enter 0 for Start Position.

    The wizard indicates the selected field with a red check mark in the ruler in the file sample in the lower panel of the page.

  2. Click Scan.

    The wizard scans the file field and displays the type values. The wizard assigns default record names (RECORD1, RECORD2...) to each type value.

  3. You can edit the record names and type value.

    Click a record name to rename it or select a different record name from the list. You cannot associate a record name with multiple record type values.

  4. Click Next to continue with the wizard.

Specifying Field Lengths (Fixed-Length Files Only)

When you use the Flat File Sample Wizard to define a fixed-length flat file, you must define the length of each field in the file.


Note:

This step is not necessary for delimited files. Proceed to "Specifying Field Properties".

You can define field lengths by entering in the field lengths or by using the ruler.

If you know the length of each field, enter the field length in Field Lengths. Separate each length by commas. The wizard displays the changes to the sample at the bottom of the wizard page.

To use the ruler, click any number or hash mark on the ruler. The wizard displays a red check mark on top of the ruler and marks the boundary with a red line. If you make a mistake, double-click the marker to delete it or move the marker to another position. Use the ruler to create markers for each field in the file.

Specifying Field Lengths for Multiple Record Files

You can select the record type by name from Record Name. Or, you can select Next Record Type from the lower right corner of the wizard page. The number of records with unspecified field lengths is indicated on the lower left corner of the wizard page.

If the flat file contains multiple record types, the wizard prompts you to specify field lengths for each record type before continuing.

Specifying Field Properties

Use the Field Properties page in the Flat File Sample Wizard to define properties for each field. The wizard assigns a name to each field. It assigns 'C1'to the first field, 'C2' to the second, and so on. To rename fields, click a field and enter a new name.

For single record file types, you can instruct the wizard to use the first record in the file to name the fields. Indicate this by selecting the Use the first record as the field names box.

The Field Properties page shows both "SQL*Loader Properties" and "SQL Properties". Use the scroll bar to scroll to the right and view all the properties.

The wizard deactivates properties that do not apply to a given data type. For example, you can edit the length for a CHAR, but precision and scale are not available. Deactivated properties are grayed out.

SQL*Loader Properties

The first set of properties the wizard displays are for the SQL*Loader utility. When you use the flat file directly as a source in a mapping, SQL*Loader and the properties you set here are used. SQL*Loader properties include "Type", "Length", "Precision", "Scale", "Mask", "NULLIF", and "DEFAULTIF". See "SQL*Loader Properties" for more details.

SQL Properties

The second set of properties are the SQL properties that include "SQL Type", "SQL Length", "SQL Precision", and "SQL Scale". These properties specify how the fields in a flat file translate to the columns in a relational table. See "SQL Properties" for more details.

Importing Metadata Definitions from COBOL Copybooks

COBOL programmers create files by defining the physical files and the logical records that is used to build those files. The records may be defined within the COBOL program itself, but are usually defined in separate files, called copybooks. These copybooks specify the layout and format of the user data, but do not specify the physical characteristics of the file itself. The physical characteristics of the file identify how the file is organized and accessed. For example, whether records are terminated with CR or CR/LF, is not part of the user data definition and is therefore not included in the record definition.

With Oracle Warehouse Builder, you can import metadata from COBOL copybooks. Oracle Warehouse Builder automatically manages the following operations:

Understanding Data Hierarchy in COBOL Applications

COBOL records are defined as a set of data elements and groups. A data element is an atomic data item. A group is a container for data elements. Each item defined in a COBOL record is called a field whether it is a group or an elementary item. Each field definition contains a level number which reflects the hierarchy of the data within the record. Groups can contain other groups or elementary items. Items contained in a group are called subordinate elements. Field definitions for elementary items contain complete metadata for the item primarily specified in picture and usage clauses. A group inherits characteristics from its subordinate elements and does not generally contain metadata specification details. An example of a simple copybook is given in Example 3-1.

Example 3-1 COBOL Copybook

01 EMPLOYEE-RECORD.
   05 EMP-ID PIC 9(6).
   05 EMP-REGION PIC 9.
   05 EMP-DEPT PIC 999.
   05 EMP-HIRE-DATE.
      10 EMP-HIRE-DATE-MM PIC 99.
      10 EMP-HIRE-DATE-DD PIC 99.
      10 EMP-HIRE-DATE-YYYY PIC 9999.
   05 EMP-SALARY PIC 9(9).
   05 EMP-NAME PIC X(15).

The above example shows the definition of EMPLOYEE-RECORD. It contains 6 fields defined at the 05 Level. All of the fields except EMP-HIRE-DATE are elementary items. The elementary items contain picture clauses that define their data-characteristics. EMP-HIRE-DATE is a group field with subordinate elements at the 10 level. Each 10 level field is an elementary item that contains a picture clause defining its data characteristics. The date can be referenced as a whole by using the EMP-HIRE-DATE group field. This field includes the month, day, and year elements. Each subordinate field can also be referenced individually, allowing access to just the year for example.

COBOL Data Types

The USAGE and PICTURE clauses are used to define the format and characteristics of data elements. If a USAGE clause is not specified, the data is in DISPLAY format, either external numeric or external character. When considered, the picture and usage identify the data type. Detailed information concerning COBOL data types and how they are mapped to relational data types is described inTable 3-1.

Arrays Defined on Fields

COBOL provides support for both arrays and varying arrays. These complex structures are identified by the use of an OCCURS clause. Varying arrays are defined with the additional specification of a DEPENDING ON clause. For arrays, the OCCURS clause indicates the number of elements in the array. For varying arrays, the occurs specification includes a range of elements from x TO y and the DEPENDING ON clause identifies a field that contains the actual number of elements in the array. An array or a varying array can be defined on an elementary field or a group. Example 3-2 provides an example of an array defined on elementary fields.

Example 3-2 Arrays Defined on Elementary Fields

01 EMPLOYEE-RECORD.
   05 EMP-ID PIC 9(6).
   05 EMP-REGION PIC 9.
   05 EMP-DEPT PIC 999.
   05 EMP-HIRE-DATE.
      10 EMP-HIRE-DATE-MM PIC 99.
      10 EMP-HIRE-DATE-DD PIC 99.
      10 EMP-HIRE-DATE-YYYY PIC 9999.
   05 EMP-SALARY PIC 9(9).
   05 EMP-NAME PIC X(15).
   05 EMP-SKILL-LEVEL PIC 99 OCCURS 4 TIMES.
   05 EMP-SKILL-ID PIC 9(4) OCCURS 4 TIMES.

Two independent arrays are defined, one on EMP-SKILL_LEVEL and one on EMP-SKILL_ID. In this example, the record contains four occurrences of EMP-SKILL-LEVEL, followed by four occurrences of EMP-SKILL-ID. In the file, each record is constructed as: EMP_SKILL_LEVEL, EMP_SKILL_LEVEL, EMP_SKILL_LEVEL, EMP_SKILL_LEVEL, EMP_SKILL_ID, EMP_SKILL_ID, EMP_SKILL_ID, EMP_SKILL_ID.

Example 3-3 provides an example of a varying array defined on elementary fields.

Example 3-3 Varying Array Defined on Elementary Fields

01 EMPLOYEE-RECORD.
   05 EMP-ID PIC 9(6).
   05 EMP-REGION PIC 9.
   05 EMP-DEPT PIC 999.
   05 EMP-HIRE-DATE.
      10 EMP-HIRE-DATE-MM PIC 99.
      10 EMP-HIRE-DATE-DD PIC 99.
      10 EMP-HIRE-DATE-YYYY PIC 9999.
   05 EMP-SALARY PIC 9(9).
   05 EMP-NAME PIC X(15).
   05 EMP-SKILL-COUNT PIC 99.
   05 EMP-SKILL-LEVEL PIC 99 OCCURS 1 TO 4 TIMES.
      DEPENDING ON EMP-SKILL-COUNT.
   05 EMP-SKILL-ID PIC 9(4) OCCURS 1 TO 4 TIMES.
      DEPENDING ON EMP-SKILL-COUNT.

Two independent arrays are defined, one on EMP-SKILL_LEVEL and one on EMP-SKILL_ID. In this example, the value in EMP-SKILL-COUNT determines the number of occurrences in both arrays. In the file, a record with EMP_SKILL_COUNT equal to one is constructed as: EMP_SKILL_LEVEL, EMP_SKILL_ID. If the value of EMP-SKILL-COUNT is two, then two occurrences of EMP-SKILL-LEVEL are followed by two occurrences of EMP-SKILL-ID. In the file, a record with EMP_SKILL_COUNT equal to two is constructed as: EMP_SKILL_LEVEL, EMP_SKILL_LEVEL, EMP_SKILL_ID, EMP_SKILL_ID.

Example 3-4 provides an example of an array defined on a group field.

Example 3-4 Array Defined on a Group Field

01 EMPLOYEE-RECORD.
   05 EMP-ID PIC 9(6).
   05 EMP-REGION PIC 9.
   05 EMP-DEPT PIC 999.
   05 EMP-HIRE-DATE.
      10 EMP-HIRE-DATE-MM PIC 99.
      10 EMP-HIRE-DATE-DD PIC 99.
      10 EMP-HIRE-DATE-YYYY PIC 9999.
   05 EMP-SALARY PIC 9(9).
   05 EMP-NAME PIC X(15).
   05 EMP-SKILLS OCCURS 4 TIMES.
      10 EMP-SKILL-LEVEL PIC 99.
      10 EMP-SKILL-ID PIC 9(4).

In this example an array is defined with four elements. Each element contains one occurrence of each field: EMP_SKILL_LEVEL and EMP_SKILL_ID. In the file, each record is constructed as: EMP_SKILL_LEVEL, EMP_SKILL_ID, EMP_SKILL_LEVEL, EMP_SKILL_ID, EMP_SKILL_LEVEL, EMP_SKILL_ID, EMP_SKILL_LEVEL, EMP_SKILL_ID.

Example 3-5 provides an example of a varying array defined on a group field.

Example 3-5 Varying Array Defined on a Group Field

01 EMPLOYEE-RECORD.
   05 EMP-ID PIC 9(6).
   05 EMP-REGION PIC 9.
   05 EMP-DEPT PIC 999.
   05 EMP-HIRE-DATE.
      10 EMP-HIRE-DATE-MM PIC 99.
      10 EMP-HIRE-DATE-DD PIC 99.
      10 EMP-HIRE-DATE-YYYY PIC 9999.
   05 EMP-SALARY PIC 9(9).
   05 EMP-NAME PIC X(15).
   05 EMP-SKILL-COUNT PIC 99.
   05 EMP-SKILLS OCCURS 4 TIMES DEPENDING ON EMP-SKILL-COUNT.
     10 EMP-SKILL-LEVEL PIC 99.
     10 EMP-SKILL-ID PIC 9(4).

In this example, one array is defined with up to four elements. The value in EMP-SKILL-COUNT defines the number of occurrences of the array. Therefore, if the value of EMP-SKILL-COUNT is set as one, then there is one occurrence of EMP_SKILLS. In the file, a record with EMP_SKILL_COUNT equal to one is constructed as: EMP_SKILL_LEVEL, EMP_SKILL_ID.

If the value of EMP-SKILL-COUNT is two, then there are two occurrences of EMP-SKILLS. In the file, a record with EMP_SKILL_COUNT equal to two is constructed as: EMP_SKILL_LEVEL, EMP_SKILL_ID, EMP_SKILL_LEVEL, EMP_SKILL_ID.

Multiple Definitions

In COBOL, data in a record may have multiple definitions. You can use any one of these definitions to access the data. There are three methods for getting multiple definitions:

Defining Multiple Records

COBOL generated files can contain multiple record types. Whenever there is multiple level 01 item in a file definition, each level 01 provides a separate definition of the data record area. Only one record is kept in the data record area at a time, so only one level 01 definition is used at a time. For example, a file may contain two types of records, department records and employee records. Level 01 items are defined for both department and employee records. The hierarchy for each record immediately follows the level 01 item for that record and provides the definitions for the entire record. Each record contains a field that identifies the record type. This record type is at the same position for all record definitions.

In the following example, the record type is in the first position:

Example 3-6 Copybook With Multiple Records

01   DEPARTMENT-RECORD. 
      05 DEPT-RECORD-TYPE PIC X. 
      05 DEPT-ID PIC 999. 
      05 DEPT-NAME PIC X(30). 
      05 DEPT-DESCRIPTION PIC X(160). 
01   EMPLOYEE-RECORD.
      05 EMP-RECORD-TYPE PIC X. 
      05 EMP-ID PIC 9(6). 
      05 EMP-NAME PIC X(30). 
      05 EMP-REGION PIC 9. 
      05 EMP-DEPT PIC 999.  

Defining Group Fields

As seen in the section on Data Hierarchy, fields can be organized in groups. These groups actually provide an additional definition of the fields and are used to access the data.

Redefining Fields and Groups

COBOL provides the ability to redefine a field or a group. Redefinition does not define data at a new location, but instead provides an additional definition of data characters that have been previously defined.

Example 3-7 Redefining a Field

01  EMPLOYEE-RECORD. 
   05 EMP-ID PIC 9(6). 
   05 EMP-ID-R REDEFINES EMP-ID. 
      10 EMP-ID-GROUP PIC 99. 
      10 EMP-ID-NUM PIC 9999. 
   05 EMP-REGION PIC 9. 
   05 EMP-DEPT PIC 999.

In the above example, the EMP-ID field is defined as a 6 digit numeric field. A redefinition is provided dividing the field into two fields: EMP-ID-GROUP is defined as the first two digits of the EMP-ID field. EMP-ID-NUM is defined as the last four digits of the EMP-ID field. EMP-ID-NUM and EMP-ID-GROUP both begin at position 1 in the record.

Example 3-8 Redefining a Group

01 EMPLOYEE-RECORD.
05 EMP-ID PIC 9(6).
05 EMP-ID-R REDEFINES EMP-ID.
10 EMP-ID-GROUP PIC 99.
10 EMP-ID-NUM PIC 9999.
05 EMP-REGION PIC 9.
05 EMP-DEPT PIC 999.
05 EMP-HIRE-DATE.
10 EMP-HIRE-DATE-MM PIC 99.
10 EMP-HIRE-DATE-DD PIC 99.
10 EMP-HIRE-DATE-YYYY PIC 9999.
05 EMP-SALARY PIC 9(9).
05 EMP-NAME PIC X(15).
05 EMP-SKILLS OCCURS 4 TIMES.
10 EMP-SKILL-LEVEL PIC 99.
10 EMP-SKILL-ID PIC 9(4).
05 EMP-SKILLS-R REDEFINES EMP-SKILLS.
10 EMP-SKILL-LEVEL1 PIC 99.
10 EMP-SKILL-ID1 PIC 9(4).
10 EMP-SKILL-LEVEL2 PIC 99.
10 EMP-SKILL-ID2 PIC 9(4).
10 EMP-SKILL-LEVEL3 PIC 99.
10 EMP-SKILL-ID3 PIC 9(4).

In the above example, the EMP-SKILL array has been redefined so that each element is expanded providing a field for each element. As in the previous example, the definitions for EMP-SKILLS-R is defining the same data area as EMP-SKILLS. The first occurrence of EMP-SKILL-LEVEL is at the same position in the record as EMP-SKILL-LEVEL1.

COBOL File Formats

COBOL programs can create files of different organization. These include the following:

  • Line Sequential: Line sequential files are generally known as text files because the primary use of this file type is for display data. The records in these files can only be accessed in the order they were written. Line sequential files contain variable length records. A record delimiter separates each record in the file. The record delimiter that is used is operating system dependent and is inserted after the last character in each record.

  • Record Sequential: Record sequential files are also accessed in the order they were written. This file organization is more flexible than line sequential. Records can be of fixed or variable length. The record sequential organization is used for sequential files that contain binary or packed data, or any data that may have other non-printable characters. In fixed length files, every record that is written to the file is the same length. If necessary, the record is padded with blanks to ensure uniform length. With variable length records, each record is written based on the actual size of the record. A Record Descriptor Word (RDW) is inserted at the beginning of each record. The RDW contains the actual length of the record. It is not considered part of the record and is not included in the data definition. In general, variable length records are used when there are many small records and few large records. Variable length records must be converted before they can be imported.

  • Relative Files: Relative files can be accessed randomly in the order they are written. Records can be declared as variable, but they are written as fixed. The random access is not by key, but is instead by relative record number. Relative files must be converted to sequential before they can be imported.

  • Indexed Files: Indexed files can be accessed by key field(s) in the order they are written. Records in indexed files can be fixed or variable. Indexed files consist of two physical files, one containing the data and the other containing the index. Indexed files are converted to sequential before they are imported.

The file format used for data storage is determined by the COBOL application. This information is not defined in the copybook.

Reinterpreting COBOL Data Structures Into Relational Data Structures

As you consider importing COBOL files into a relational database, you must plan how the data should be mapped into the relational database.

Records

At the highest level, each record type, level 01 structure, is considered mapping to a table. Records in files are often designed to be independent sources of information. This is a large difference between files and tables. Tables are generally designed to hold information that is closely related. When you consider the records in your file, you should consider if it would be better to define multiple tables for the information. Groups that are used to organize related information are often good candidates for independent tables. For example, you may have a group that is defined for address information, which might naturally fit into a name and address table. Similarly, arrays, whether varying or not, are also often good candidates for independent tables.

Arrays

In order to define arrays, Oracle Warehouse Builder normalizes the array by specifying each element in the array independently. This technique is also used for defining varying arrays. Not all varying arrays can be loaded using SQL*Loader. When the varying array is after the record, SQL*Loader may be able to load it. Records with embedded varying arrays are not necessarily physically stored as variable, therefore you may be able to use this technique for loading these records also. See "Example: Extracting Data from a Single Record Type Varying Array COBOL File".

Mapping COBOL Data Types to SQL Data Types

The USAGE and PICTURE clauses are used to define the format and characteristics of data elements. Together the picture and usage identify the scalar data type, length, precision and scale. Table 3-1 shows data element definitions that apply to COBOL files. It describes the representation of each data type and identifies how that data type is mapped to SQL*Loader data type definitions. The PICTURE represents a mask that describes the data. The values identified within the parentheses are multiplication factors for the preceding picture element. So when n = 5, X(n) indicates that there are 5 characters of type X (alphanumeric data).

Table 3-1 COBOL Data Types and the Equivalent SQL *Loader Data Types

COBOL Data TypeSQL Loader Data TypeDescription

X(n)

  • CHAR(n)

  • DATE(n) 'mask' when data contains valid date

  • TIME

  • TIMESTAMP

  • INTERVAL

Alphanumeric data. Each X identifies one allowable character from the specified character set.

A(n)

CHAR(n)

Alphabetic data. Each A identifies any letter of the alphabet or space.

9(n)

  • INTEGER EXTERNAL(n)

  • DECIMAL EXTERNAL(n)

  • ZONED EXTERNAL(n)

  • DATE(n) 'mask' when data contains valid date

Numeric data. Each 9 identifies one digit.

+- mantissa +- exponent

FLOAT EXTERNAL (length)

External floating point data.

S9(n)v9(m) SIGN TRAILING

ZONED(precision, scale) where precision = n+m and scale = m

Numeric data. Each 9 identifies one digit. The v indicates the implied decimal position. The sign is carried in the last byte.

9(n)v9(m)

ZONED(precision, scale) where precision = n+m and scale = m

Numeric data. Each 9 identifies one digit. The v indicates the implied decimal position.

9(n)v9(m)

S9(n)v9(m)

SMALLINT

INTEGER(length 2,4,or 8)

May use SIGNED|

UNSIGNED

May require BYTEORDER clause

Scale handled with an expression

Internal format data with a radix of 2.

The size of the field varies with the value m.

n+m = 1-4, length = 2

n+m = 5-9, length = 4

n+m = 10-18, length =8

Not allowed

FLOAT

May require BYTEORDER clause.

Single-precision floating point number, 4 bytes long

Not allowed

DOUBLE

May require BYTEORDER clause.

Double-precision floating point number, 8 bytes long

9(n)v9(m)

S9(n)v9(m)

DECIMAL (precision, scale) where precision = n+m and scale = m

Internal format numeric data with a radix of 10. The clause indicates that each digit must use the minimum storage possible. Generally, each byte contains two digits with the last half-byte containing the sign.

X(n)

9(n)v9(m)

S9(n)v9(m)

Not commonly used

The internal format of the data is not defined. It is often stored the same as BINARY, however the radix may be reversed.

G(n)

GRAPHIC(n)

Graphic data that does not contain Shift In and Shift Out characters

05 V

49 V-LN PIC S9(4)

COMP

05 V-DATA PIC X(n)

VARCHAR(max length), can only be loaded correctly between systems where SMALLINT is the same size

Variable length character field

05 V

49 V-LN PIC S9(4)

COMP

05 V-DATA PIC G(n)

VARGRAPHIC(max length), can only be loaded correctly between systems where SMALLINT is the same size.

Variable length Graphic data that does not contain Shift In and Shift Out characters


Importing Metadata

To import metadata from COBOL, you must create a flat file module and then import the metadata definitions from a Cobol copybook.

Importing a Copybook

To import metadata from a COBOL copybook:

  1. Create a flat file module as described in "Creating Flat File Modules". Provide the location details of the COBOL copybook.

  2. Right-click the newly created module and select Import, Cobol.

    The Cobol Import dialog box is displayed.

    An alternative way to open the Cobol Import dialog box is to select the newly created module and then select File, Import, Cobol.

  3. Click Add Copybook to browse for the copybook you must import.

    You can add multiple copybooks simultaneously. When you add a copybook, the Copybook field of the Import Copybooks spread table displays the directory path of the copybook. Use the File field to edit the name of the imported copybook. Use the Description field to add an optional description for the imported copybook.

  4. Click View Copybook to view the metadata structure of the copybook being imported.

  5. Click Session Options to open the Import Cobol Session Options dialog box. For details of values to be specified in this dialog box, see "Import Cobol Session Options".

  6. Click OK and on the Cobol Import window, click Import.

Import Cobol Session Options

You can use this dialog box to specify a template file and other properties. Based on the copybook you are importing, determine if the default physical file properties are acceptable. Or else, select a template file from which the physical characteristics are imported. You can edit some physical properties of the file after the import as well.

To specify a template file, select a file from the Copy Flat File Properties From list.

If you retain the Default Properties option from the Copy Flat File Properties From list, the file is defined as fixed format (not delimited) with the following properties:

  • Skip 0 records

  • Use first row as column name set to false

  • Record delimiter set to \n

  • One physical record for each logical record

If you import a multi-record copybook, then it is set to multi record.

If you select a file from the Copy Flat File Properties From list, then the physical characteristics of this file are used for the newly imported copybook.

Do Not Import Groups: To suppress the definition of group items. This ensures that only the subordinate items get imported. For example, if you have the following fields:

05  EMP-HIRE-DATE.
    10 EMP-HIRE-MONTH PIC 99.
    10 EMP-HIRE-DAY PIC 99.
    10 EMP-HIRE-YEAR PIC 9999.

When you select the Do Not Import Groups option, only three fields are created, EMP-HIRE-MONTH, EMP-HIRE-DAY, and EMP-HIRE-YEAR. When the option is not selected, then four fields, EMP-HIRE-DATE, EMP-HIRE-MONTH, EMP-HIRE-DAY, EMP-HIRE-YEAR are created at the time of import.

Do Not Import Redefines: To avoid import of redundant redefined fields. For example, if you have the following copybook definition:

05 HIRE_DATE.
10 HIRE_MONTH PIC 99.
10 HIRE_DAY PIC 99.
10 HIRE_YEAR PIC 9999.
05 HIRE_DATE_ALPHA REDEFINES HIRE_DATE.
10 HIRE_MONTH PIC XX.
10 HIRE_DAY PIC XX.
10 HIRE_YEAR PIC XXXX.

To import all the fields, clear the Do Not Import Redefinitions option. When the option is selected, only the first four fields, HIRE_DATE, HIRE_MONTH, HIRE_DAY, HIRE_YEAR are imported.

At the time of importing the metadata, it is recommended that you inspect the copybook for unnecessary metadata including grouped fields and redefined fields. You can also edit the file later to remove unnecessary definitions.

Example: Extracting Data from a Single Record Type Varying Array COBOL File

To extract data from a COBOL data file, you must first import the corresponding copybook. Consider the following copybook for import:

01  EMPLOYEE-RECORD. 
    05  EMP-RECORD-LENGTH PIC 9(4). 
    05  EMP-ID PIC 9(6). 
    05  EMP-REGION PIC 9.
    05  EMP-DEPT PIC 999. 
    05  EMP-HIRE-DATE. 
        10 EMP-HIRE-MM PIC 99.
        10 EMP-HIRE-DD PIC 99.
        10 EMP-HIRE-YEAR PIC 9999.
    05  EMP-SALARY PIC 9(9). 
    05  EMP-NAME PIC X(15). 
    05  EMP-SKILLS OCCURS 4 TIMES.
        10 EMP-SKILL-LEVEL PIC 99. 
        10 EMP-SKILL-ID PIC 9999. 

Importing The COBOL Copybook

Import the copybook as described in "Importing a Copybook".

To set the file properties of the imported copybook, right-click the file on the Projects Navigator and click Open. On the Edit Flat File dialog box, define the file properties as given in "Defining the File Properties".

Defining the File Properties

Use the Name, General, and Structure tabs to specify the file properties.

Name Tab

Use the Name tab to specify the character set. This is an EBCDIC file, so the character must be set to WE8EBCDIC500.

General Tab

Use the General tab to set the following file properties.

  • Record Delimiter: The record delimiter for this file must be set to the binary value X'0D0A'.

  • Logical Record Definition: In this example, there is one logical record per physical record.

  • Field Format: Each field in this record is at a constant position. Therefore, the Fixed Length Fields option is selected by default.

  • Record Type: This copybook contains a single type of record. Therefore, the Single Record option is selected by default.

The field properties are as shown in Figure 3-5.

Figure 3-5 The Field Properties of the Imported Cobol File

Description of Figure 3-5 follows
Description of "Figure 3-5 The Field Properties of the Imported Cobol File"

Structure Tab

Use the Structure tab to review the field properties and make changes if required.

The structure of the imported file is as shown in Figure 3-6.

Figure 3-6 Structure of the Imported Cobol File

Description of Figure 3-6 follows
Description of "Figure 3-6 Structure of the Imported Cobol File"

Creating a Mapping to Load Data

Create a mapping with the imported COBOL file as the source. Insert an unbound table operator in the mapping and map the desired fields from the COBOL file to the table operator.

Figure 3-7 Mapping a Flat File to a Table

Mapping a Flat File to a Table
Description of "Figure 3-7 Mapping a Flat File to a Table"

Configuring The Mapping

Right-click the mapping and click Configure to open the Configuration Properties dialog box. Select SQL*LOADER as the language for code generation. Tune any of the other SQL*Loader settings.

Figure 3-8 Configuration Properties Dialog Box

configuration properties dialog box
Description of "Figure 3-8 Configuration Properties Dialog Box"

Specifying the Data File

Click Sql Loader Data Files and then click the ellipsis as shown in Figure 3-9 to open the SQL Loader Data Files dialog box.

Figure 3-9 Configuration Properties for the Mapping

SQL*Loader settings
Description of "Figure 3-9 Configuration Properties for the Mapping"

On the SQL Loader Data Files dialog box, right-click SQL Loader Data Files and select Create. A new data file node is added under Sql Loader Data Files.

Provide the data file name and select the data file location from where data is to be loaded. Specify a bad file to store those records that are not loaded into the target table due to error in the data. Specify a discard file to store those records that are not loaded due to SQL*Loader loading checks.

Figure 3-10 SQL Loader Data Files Dialog Box

Description of Figure 3-10 follows
Description of "Figure 3-10 SQL Loader Data Files Dialog Box"

Executing the Mapping

After you have defined the configuration properties for the mapping, you can deploy the table and the mapping and then start the mapping to load the COBOL data into the target table.

To deploy the mapping, right-click the mapping and select Deploy. After deploying the mapping, start the mapping. Right-click the mapping and select Start. When you run the mapping, the data is read from the data file you provided while configuring the mapping, and loaded into the target table.

To view the data in the target table, right-click the table, and select Data. Figure 3-11 shows the data in the table.

Figure 3-11 Data in the Target Table

Description of Figure 3-11 follows
Description of "Figure 3-11 Data in the Target Table"

Viewing and Editing a File Definition

You can view and edit the definition of a file by using the Edit Flat File dialog box.

To update a file definition:

  1. Select the file definition in the Projects Navigator.

  2. Right-click the file and select Open.

    Oracle Warehouse Builder displays the Edit Flat File dialog box with the following tabs:

    Name Tab: Use this tab to edit the name and descriptive for the file.

    General Tab: Use this tab to change the general file properties, such as the physical record size, the number of physical records for each logical record, and the delimiter and enclosure characters.

    Record Tab: This tab is available only for flat files with multiple record types. Use this tab to change the record type position or add, delete, or edit record types.

    Structure Tab: Use this tab to edit field level attributes, SQL Loader and SQL Properties.

Name Tab

Use this tab to edit the name, default physical file name, description, and character set for the file. See "Describing a Flat File" for more details.

General Tab

Use this tab to change the general properties, such as the physical record size, the number of physical records for each logical record, the delimiter and enclosure characters, the number of rows to skip, and the field format. See "Defining File Properties for a Flat File" for more details about the general properties.

Record Tab

If the file contains multiple record types, then specify the field position that determines the record type in Record Type Location.

Field Position: This field displays the column that contains the record type indicator. You can change this value. For example, if you have a flat file with two record types that are distinguished from each other by the content of the third column as shown in the following list, then the value in this field is 3.

  • Record Type 1: 2002 0115 E 4564564

  • Record Type 2: 2003 1231 D 659871 Q HKLIH

Record type values: This table displays each record type, the value that distinguishes it from the other record types, and the name you have given to the record type. Table 3-2 shows an example of what the record type values for the two sample records earlier might be:

Table 3-2 Example of Record Type Values

Type ValueRecord Name

E

Employee

D

Department


  • To add new record types, click New and enter a Type Value and a Record Name describing the record type.

  • To delete record types, select the field to the left of each record type you want to remove and click Delete.

For fixed length files containing multiple record types, Record Type Location consists of two fields to determine the record type indicator:

Start Position: The starting position of the field that specifies the record type.

Length: The length of the field.

Structure Tab

Use the Structure tab to edit a field name, data type, mask, "SQL*Loader Properties" and "SQL Properties". You can add or delete a field. You can also add a field mask, NULLIF condition, or DEFAULTIF condition.

If the file contains multiple record types, you can select each record type from the Record Name field. Oracle Warehouse Builder displays the field properties for the selected record. See "Defining Field Properties for a Flat File" for more details.

Using External Tables

External tables are database objects available in Oracle Database9i, and higher.

External tables are tables that represent data from flat files in a relational format. They are read-only tables that act like regular source tables. When you create and define an external table, the metadata for the external table is saved in the workspace. You can load data from flat files to external tables, transform the data using mappings, and load the transformed data to target tables.

The following sections provide information about external tables:

Creating a New External Table Definition

Before you begin

Each external table you create corresponds to a single record type in an existing flat file. Before you begin, first define the file within the workspace as described in "Defining Character Data Files".

To create a new external table definition:

  1. From the Projects Navigator, expand the Databases node and then the Oracle node.

  2. Expand the module where you want to create the external table.

  3. Right-click External Tables and select New External Table.

    Oracle Warehouse Builder displays the Welcome page of the Create External Table Wizard. Use the wizard to complete the following pages:

Name Page

Use the Name page to define a name and an optional description for the external table. Enter the name in the Name field. In the physical naming mode, you must enter a name between 1 and 200 valid characters. Spaces are not allowed in physical mode. In the logical mode, you can enter a unique name up to 4000 characters in length. The external table name must be unique within the module. Spaces are allowed in the logical naming mode.

Use the Description field to enter an optional description for the external table.

File Selection Page

The wizard displays the File Selection page. The wizard lists all the flat files available in the workspace. Select a file on which to base the external table. To search through long lists of files, type the first few letters of the file name and click Go.

If you select a file that contains multiple record types, you must also select the record type name at the bottom of the File Selection page. An external table can represent only one record type.

You have the option of not specifying the file at this stage. If you do not specify a file in the wizard, you can later specify information such as record type, access parameters, and data files on the external table properties sheet.

Locations Page

You can select a location from the list of flat file locations. Alternatively, you can leave the location unspecified. If you do not specify a location in the wizard, you can later specify a location on the external table properties sheet.


Note:

The location associated with an external table must be deployed before the external table itself can be deployed.

Importing an External Table

You can create an external table from a flat file, or import an existing external table into Oracle Warehouse Builder.

To import an external table:

  1. On the Projects Navigator, right-click External Tables, and select Import.

  2. Specify to import a database object or an Oracle Warehouse Builder metadata file.

Editing External Table Definitions

Use the External Table editor to edit an external table definition. To open the editor, right-click the name of the external table from the Projects Navigator and select Open Editor. The Edit External Table dialog box is displayed. The tabs and properties that you can edit depend on how you defined the external table in the workspace.

The External Table Properties window displays with the following tabs:

Name Tab

Use the Name tab to rename the external table. The same rules for renaming tables apply to external tables. For more information, see Oracle Warehouse Builder Data Modeling, ETL, and Data Quality Guide.

Columns Tab

Use the Columns tab to add or edit columns. The same rules for adding columns to tables apply to external tables. For more information, see Oracle Warehouse Builder Data Modeling, ETL, and Data Quality Guide.

File Tab

Use the File tab to view the name of the flat file that provides the metadata for the external table. If the source flat file has multiple record types, the File tab also displays the record name associated with the external table. You can update this relationship or change it to a different file and record by reconciling the external table. For more information, see "Synchronizing an External Table Definition with a Record in a File".

The File tab displays under the following conditions:

  • You used the New External Table Wizard to create the external table and you specified a file name.

  • You did not specify a file name in the New External Table Wizard, but you reconciled the external table definition with a file and record.

Locations Tab

Use the Location tab to view or change the flat file location. The Location list displays the available locations. Select a location from this list.

Data Rules Tab

Use the Data Rules tab to define data rules for the external table. For more information about using data rules, see Oracle Warehouse Builder Data Modeling, ETL, and Data Quality Guide.

Access Parameters Tab

Access parameters define how to read from the flat file when a file has not been specified for the external table. In some cases, the External Table editor displays the Access Parameters tab instead of the File tab.

The tab for the access parameters displays under the following conditions:

  • You imported an external table from another workspace. In this case, you can view and edit the access parameters.

  • You created an external table in an Oracle Database and imported its definition. In this case, you can view and edit the access parameters.

  • You use the Create External Table Wizard to create an external table and do not specify a reference file. The access parameters are empty. Before generating the external table, you must reconcile the external table definition with a flat file record or manually enter your own access specifications.

The access parameters describe how fields in the source data file are represented in the external table as columns. For example, if the data file contained a field emp_id with a data type of INTEGER(2), the access parameters could indicate that the field be converted to a character string column in the external table.

Although you can make changes to the access parameters that affect how the external table is generated and deployed, it is not recommended. Oracle Warehouse Builder does not validate the changes. For more information about external tables and the access parameters, see Oracle Database Utilities.


Note:

When an external table is imported into Oracle Warehouse Builder, the access parameter definition of the table is truncated to 4000 characters. This can potentially cause DDL generation errors.

Synchronizing an External Table Definition with a Record in a File

Oracle Warehouse Builder enables you to update the external table definition with the metadata changes made to the file associated with the external table. You do this by synchronizing the external table with the source file.

To synchronize an external table definition with a record in a file:

  1. In the Projects Navigator, right-click the external table to synchronize and select Synchronize.

    Oracle Warehouse Builder displays the Synchronize dialog box.

  2. Use the Select the Object to synchronize list to specify the flat file with which the external table is to be synchronized.

    By default, the flat file that was used to create the external table is displayed in this list. Expand the list to see a list of flat file modules and the flat files they contain.

  3. Use the Matching Strategy list to specify how the search is performed for matches and the external table with the information from the flat file is updated. The options for match strategy are:

    Match By Object ID: This strategy compares the field IDs of that the external table columns references with the field IDs in the flat file.

    Match By Object Name: This strategy compares the physical names in the external table with the physical names in the flat file.

    Match By Object Position: This strategy matches by position, regardless of physical names and IDs. The first external table attribute is reconciled with the first record in the file, the second with the second, and so on. Use this strategy when you want to reconcile the external table with a new record.

  4. Use the Synchronize Strategy list to indicate how differences in metadata between the existing external table definition and the record you specified are handled:

    Merge: The metadata from the existing external table definition and the record you specified is combined.

    Replace: Existing record metadata is deleted from the external table definition and the new file record metadata is added to the external table.

  5. Click View Synchronization Plan to open the Synchronization Plan dialog box.

    You can view the actions performed during synchronization.

  6. Select a new strategy and then click Refresh Plan.

    On the spread table, expand the Source node to view the action performed on each column.

  7. Click OK to complete synchronizing the external table definition.

Configuring External Tables

Configure the following properties for an external table:

To configure the physical properties for an external table:

  1. Select an external table from the Projects Navigator.

  2. From the Edit menu, select Configure. You can also click the Configure icon from the toolbar.

    The Configuration Property window is displayed.

  3. To configure a property, click the white space and make a selection from the list.

Access Specification

Under Access Specification, you can indicate the following file names and locations that Oracle Warehouse Builder uses to load the external table through SQL*Loader.

  • Bad File: If you specify a name and location for a bad file, Oracle Database is directed to write to that file all records that were not loaded due to errors. For example, records written to the bad file include those not loaded due to a data type error in converting a field into a column in the external table. If you specify a bad file that exists, the existing file is overwrittgen.

  • Discard File: If you specify a name and location for a discard file, Oracle Database is directed to write to that file all records that were not loaded based on a SQL*Loader load condition placed on the file. If you specify a discard file that exists, the existing file is overwritten.

  • Log File: If you specify a name and location for a log file, then Oracle Database is directed to log messages related to the external table to that file. If you specify a log file that exists, new messages are appended.

For each of these files, you can either specify a file name and location, select Do not use, or select Use default location.

Reject

Under Reject, you can indicate how many rejected rows to allow. By default, the number of rejected rows allowed is unlimited. If you set Rejects are unlimited to false, enter a number in Number of rejects allowed.

Parallel

Parallel: Enables parallel processing. If you are using a single system, set the value to NONPARALLEL to improve performance. If you are using multiple systems, accept the default PARALLEL.The access driver attempts to divide data files into chunks that can be processed separately. The following file, record, and data characteristics make it impossible for a file to be processed in parallel:

  • Sequential data sources (such as a tape drive or pipe).

  • Data in any multibyte character set whose character boundaries cannot be determined starting at an arbitrary byte in the middle of a string. This restriction does not apply to any data file with a fixed number of bytes for each record.

  • Records with the VAR format

Data Characteristics

If you imported the external table into the workspace or created the external table without specifying a source file, do not configure these properties. Data characteristics properties are overruled by settings on the Access Parameters tab in the External Table Properties window.

Under Data Characteristics you can set the following properties:

  • Endian: The default for the Endian property is Platform. This indicates that it is assumed that the endian of the flat file matches the endian of the platform on which it resides. If the file resides on a Windows platform, the data is handled as little-endian data. If the file resides on Sun Solaris or IBM MVS, the data is handled as big-endian. If you know the endian value for the flat file, you can select big or little-endian. If the file is UTF16 and contains a mark at the beginning of the file indicating the endian, then that endian is used.

  • String Sizes in: This property indicates how data with multibyte character sets, such as UTF16, is handled. By default, the lengths for character strings in the data file are assumed to be in bytes. You can change the selection to indicate that strings sizes are specified in characters.

Field Editing

If you imported the external table into the workspace or created the external table without specifying a source file, do not configure these properties. Field editing properties are overruled by settings on the Access Parameters tab in the External Table Properties window.

Under Field Editing, you can indicate the type of whitespace trimming to be performed on character fields in the data file. The default setting is to perform no trim. All other trim options can reduce performance. You can also set the trim option to trim blanks to the left, right, or both sides of a character field.

Another option is to set the trim to perform according to SQL*Loader trim function. If you select SQL*Loader trim, fixed-length files are right trimmed and delimited files specified to have enclosures are left trimmed only when a field is missing an enclosure.

You can indicate how to handle missing fields in a record. If you set the option Trim Missing Values Null to true, fields with missing values are set to NULL. If you set the property to false, fields with missing values are rejected and written into the specified bad file.

Data Files

If a file is associated with an external table, and it has a file name specified, that name is used. The user can configure if a different file must be specified or if multiple files must be specified.

To add a data file:

  1. Right-click the Data Files node and select Create.

    Enter a name for the data file such as DATAFILE1. Your entry displays as a new node in the right panel of the Configuration Properties dialog box.

  2. Enter the following values for each data file you define:

    Data File Location: Location for the flat file.

    Data File Name: The name of the flat file including its extension. For example, enter myflatfile.dat.

PKRgPK;,AOEBPS/imp_thirdparty_design.htm= Importing Design Definitions from Oracle Designer

10 Importing Design Definitions from Oracle Designer

Oracle Designer is shipped with Oracle Developer Suite. Designer incorporates support for business process modeling, systems analysis, software design and system generation.

Oracle Designer provides a multiuser repository based on Oracle SCM, and is closely integrated with Oracle Forms Developer, Oracle's declarative database application development tool. In this way, Designer allows organizations to design and rapidly deliver scalable, client/server systems that can adapt to changing business needs.This chapter shows you how to import design definitions from Oracle Designer.

This chapter contains the following:

Using Oracle Designer Sources

You can create a source module that connects to an Oracle Designer repository. When the definitions for an application are stored and managed in an Oracle Designer repository, the time required to connect to the application is reduced.

Designer repositories use workareas to control versions of an object. By selecting a workarea, you can specify a version of a repository object. With Oracle Designer, you can also group objects into container elements within workareas. Container Elements contain definitions for namespace and ownership of objects, and enable you to view objects even if they are owned by a different user. Because Designer container elements are controlled by workareas, they are version controlled. See the Oracle Designer documentation for more information about workareas and container elements.

All visible objects of a workarea or a container element in Designer are available for use as data sources. To select Designer objects as a source, you must:

The list of repository objects available for import is determined by the following criteria:

To import definitions from a Designer source, you must create an Oracle database module.

Using Oracle Designer as a Metadata Source

To create a Designer source module:

  1. Create a database source module that points to a database containing a Designer object.

    Follow the steps outlined in "Importing Metadata Definitions from Oracle Database" to create the module.

  2. From the Projects Navigator, double-click the name of the newly created module to open the Edit Module dialog box.

  3. In the Metadata Location tab, select the source type as Oracle Designer Repository. Also select the database location containing the Designer object.

    When you select the source type as Oracle Designer Repository, two new lists, Workarea and Container Element, are visible in the Metadata Location tab.

    Figure 10-1 displays the Metadata Locations tab of the Edit Module dialog box.

  4. Select the Designer object from the workarea and select the specific container element.

    Figure 10-1 The Metadata Location Tab

    Description of Figure 10-1 follows
    Description of "Figure 10-1 The Metadata Location Tab "


    Note:

    The database you specify as source must contain a Designer object. If not, then the Workarea and Element Container lists do not display any values.

  5. Click OK.

For related information, see the following sections:

PKNPK;,AOEBPS/title.htm~ Oracle Warehouse Builder Sources and Targets Guide, 11g Release 2 (11.2)

Oracle® Warehouse Builder

Sources and Targets Guide

11g Release 2 (11.2)

E10582-05

September 2011


Oracle Warehouse Builder Sources and Targets Guide, 11g Release 2 (11.2)

E10582-05

Copyright © 2000, 2011, Oracle and/or its affiliates. All rights reserved.

Primary Author: Richa Agarwala

Contributors: Antonio Romero, Michelle Bird, Joyce Scapicchio, David Allan, Linda Bittarelli, Ron Gonzalez, Shawn Wu, Veenavani Revanuru, Ramesh Uppala, Alex Wu, Jean-Pierre Dijcks, Brian Maher, Gary Tripp, Xuelin Lu, Bojana Simova, Lyudmila Mogilevich, Ting Liao, Frank Yang, Justin Ho, Robert Paul, Adrian Scott, Robert Velisar, Alex Zhang, Winnie Wan, John Leigh, Thomas Lau, Geoff Watters, Padmaja Potineni, Cathy Shea, Roza Leyderman

This software and related documentation are provided under a license agreement containing restrictions on use and disclosure and are protected by intellectual property laws. Except as expressly permitted in your license agreement or allowed by law, you may not use, copy, reproduce, translate, broadcast, modify, license, transmit, distribute, exhibit, perform, publish, or display any part, in any form, or by any means. Reverse engineering, disassembly, or decompilation of this software, unless required by law for interoperability, is prohibited.

The information contained herein is subject to change without notice and is not warranted to be error-free. If you find any errors, please report them to us in writing.

If this is software or related documentation that is delivered to the U.S. Government or anyone licensing it on behalf of the U.S. Government, the following notice is applicable:

U.S. GOVERNMENT RIGHTS Programs, software, databases, and related documentation and technical data delivered to U.S. Government customers are "commercial computer software" or "commercial technical data" pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations. As such, the use, duplication, disclosure, modification, and adaptation shall be subject to the restrictions and license terms set forth in the applicable Government contract, and, to the extent applicable by the terms of the Government contract, the additional rights set forth in FAR 52.227-19, Commercial Computer Software License (December 2007). Oracle America, Inc., 500 Oracle Parkway, Redwood City, CA 94065.

This software or hardware is developed for general use in a variety of information management applications. It is not developed or intended for use in any inherently dangerous applications, including applications that may create a risk of personal injury. If you use this software or hardware in dangerous applications, then you shall be responsible to take all appropriate fail-safe, backup, redundancy, and other measures to ensure its safe use. Oracle Corporation and its affiliates disclaim any liability for any damages caused by use of this software or hardware in dangerous applications.

Oracle and Java are registered trademarks of Oracle and/or its affiliates. Other names may be trademarks of their respective owners.

Intel and Intel Xeon are trademarks or registered trademarks of Intel Corporation. All SPARC trademarks are used under license and are trademarks or registered trademarks of SPARC International, Inc. AMD, Opteron, the AMD logo, and the AMD Opteron logo are trademarks or registered trademarks of Advanced Micro Devices. UNIX is a registered trademark of The Open Group.

This software or hardware and documentation may provide access to or information on content, products, and services from third parties. Oracle Corporation and its affiliates are not responsible for and expressly disclaim all warranties of any kind with respect to third-party content, products, and services. Oracle Corporation and its affiliates will not be responsible for any loss, costs, or damages incurred due to your access to or use of third-party content, products, or services.

PKd4PK;,AOEBPS/intro_sources_targets.htm[K Connecting to Sources and Targets in Oracle Warehouse Builder

1 Connecting to Sources and Targets in Oracle Warehouse Builder

For different types of data sources and targets, Oracle Warehouse Builder provides different connection methods.

This chapter introduces the data sources and targets and specific connectivity technologies supported by Oracle Warehouse Builder. It includes the following topics:

Supported Sources and Targets

Table 1-1 lists the data storage systems and applications that Oracle Warehouse Builder 11g Release 2 (11.2) can access. The table lists the supported sources and targets for each type of application.

Table 1-1 Sources and Targets Supported in Oracle Warehouse Builder 11g Release 2 (11.2)

Application TypeSupported SourcesSupported Targets

Oracle Database


Oracle Database releases 9.2, 10.1, 10.2, 11.1,11.2

Oracle Database releases 9.2, 10.1, 10.2, 11.1, 11.2

Note: Connectivity among database versions over database links may depend upon the version of the database where an ETL mapping is deployed and executing. Refer to the documentation for your database version for details about any limitations on database links between database versions.

Non-Oracle Databases

Files

Delimited and fixed-format flat files.

See "Importing Definitions from Flat Files Using Sampling".

Delimited, fixed-format, and XML format flat files.

Business Applications

None

Process Flows and Schedules/Oracle Workflow

None

Oracle Workflow releases 2.6.2, 2.6.3, 2.6.4, 11i

Process Flows and Schedules/Concurrent Manager

None

Any Oracle Database location, release 10g or later.

To deploy a schedule in Concurrent Manager, Release 11i or 12i is required. However, for both releases, you must select 11i as the version when you create a location in Oracle Warehouse Builder.

Business Intelligence/Discoverer

None

Oracle BI Discoverer Release 10.1, Oracle Business Intelligence Suite Enterprise Edition

Oracle Designer

Oracle Designer 6i, 9i, 10g

None


Connecting to an Oracle Database

You can directly connect to an Oracle database and import metadata from the available database objects or deploy target objects to the database. To connect to a database on a remote host, you must provide the network credentials to connect to the host. See "Importing Metadata Definitions from Oracle Database" for more information about connecting to an Oracle database.

Oracle Database Heterogeneous Services

Oracle Warehouse Builder communicates with non-Oracle systems using Oracle Database Heterogeneous Services and a complementary agent. Heterogeneous Services make a non-Oracle system appear as if it were a remote Oracle Database server. The agent can be an Oracle Database Gateway or the generic Open Database Connectivity (ODBC) agent included with Oracle Database.

Figure 1-1 describes how Oracle Database uses Heterogeneous services to access a remote non-Oracle source.

Figure 1-1 Heterogeneous Services Architecture

Description of Figure 1-1 follows
Description of "Figure 1-1 Heterogeneous Services Architecture"

The Heterogeneous Services component in the database communicates with the Heterogeneous Services agent process. The agent process, in turn, communicates with the remote database.

The agent process consists of agent-generic code and a system-specific driver. All agents contain the same agent-generic code. But each agent has a different driver depending on the type of data being sourced.

Connecting Through Oracle Database Gateways

Oracle Database gateways provide transparent connections to non-Oracle databases. When using a gateway, you can access these non-Oracle databases just as you would an Oracle database, including importing object metadata and accessing data as source and target. See Chapter 4, "Connecting to Non-Oracle Data Sources Through Gateways" for details of connecting to different databases through gateways.

Connecting Through JDBC

To connect to data sources that support Java Database Connectivity (JDBC), you must use the appropriate JDBC driver for that data source. The JDBC driver for a non-Oracle database or other data source may be installed with the product, or may require a separate download or purchase. For detailed information about connecting to various data sources using JDBC, see Chapter 6, "Connecting to Data Sources Through JDBC".

Choosing JDBC or Gateways Connectivity

To connect through JDBC, you must install the appropriate JDBC drivers for the database. Most of these drivers are shipped with the database. They are also developed by third-party vendors and are usually available as free downloads. The database objects, such as tables, that you import through a JDBC connection can be used only in Code Template mappings. These database objects cannot be used with other mappings, such as PL/SQL mappings, that you create in Oracle Warehouse Builder.

To connect through a gateway, you must install Oracle Gateway for the specific database. A gateway enables you to access data from non-Oracle databases in the same way that you access data from Oracle Database. The database objects that you import through a gateway connection can therefore be used in any of the mappings that you create in Oracle Warehouse Builder.

Connecting Through ODBC

Oracle Warehouse Builder can leverage support for ODBC provided by the Oracle Database to integrate with any data source that supports ODBC connectivity. ODBC provides a generic connectivity that is intended for low-end data integration solutions and the transfer of data is subject to the rules of specific ODBC or object linking and embedding (OLE) database drivers installed on the client computer. You need not install database-specific agents to connect to different data sources. Instead, you can use the generic connectivity agent included with Oracle Database. You must still create and customize an initialization file for your generic connectivity agent. For detailed information about connecting to data sources using ODBC connectivity, see "Connecting to an ODBC Data Source".

Connecting To Enterprise Applications

Using Oracle Warehouse Builder, you can also connect to ERP and CRM applications, such as SAP, Oracle E-Business Suite, Peoplesoft, and Siebel.

You can also connect to Oracle's Customer Data Hub (CDH), Universal Customer Master (UCM), and Product Information Management (PIM).

The application adapters for Oracle applications provide additional metadata to simplify ETL design from such sources, but connecting to these sources depends upon underlying database connectivity. For example, metadata extraction from E-Business Suite, which is hosted on Oracle database, is done using database links, while metadata extraction from a Peoplesoft application hosted on a DB2 database depends on having the DB2 gateway installed on your target database. You can also connect to Peoplesoft using an alternative ODBC driver.Connecting to an SAP system and extracting data is accomplished using native SAP R/3 ABAP code and data extraction techniques fully supported by SAP.When using the application connectors, the details of the underlying connection technologies for different sources are generally hidden from the user, which simplifies managing the connectivity.

For more information about connecting to Oracle E-Business Suite, Peoplesoft, and Siebel, see Chapter 8, "Integrating with Oracle ERP Applications".

For information about extracting data from SAP systems, see Chapter 7, "Extracting Data from SAP Applications".

JDBC and Code Template-based Connectivity

In some cases, the data movement provided by Oracle-to-Oracle database links, gateways, and ODBC may not be sufficient. Oracle Warehouse Builder 11g Release 2 (11.2) also supports a framework that adds more flexible data movement options based on code templates.

When designing an ETL mapping, you can now choose between Oracle-based mappings and code template-based mappings for more flexible connectivity and data movement. Both mappings offer a rich set of data transformation operators.

When using code template-based mappings, you can select code templates to assign alternative data movement methods for individual mappings or specific parts of mappings. Oracle Warehouse Builder generates executable code based on the templates you select, and then deploys that code to a Control Center Agent, where it executes.

The JDBC connectivity for data movement depends on using code template-based mappings, and the data movement code actually executes in the control center agent. You can choose alternative templates for other data movement techniques such as bulk data extraction and loading that fit your use case better. You can also construct new templates that implement data movement methods not supported by Oracle Warehouse Builder out of the box.

For more information about using code templates, see Chapter 12, "Using Code Templates to Load and Transfer Data". Also see Oracle Warehouse Builder Data Modeling, ETL, and Data Quality Guide for more details on code templates-based ETL mappings.

Choosing a Connection Technology

Choosing among the different connection technologies available depends upon your specific data source type and other specifics of your use case:

PK$ t`K[KPK;,AOEBPS/jdbc_connection.htm5w Connecting to Data Sources Through JDBC

6 Connecting to Data Sources Through JDBC

You can connect to a wide variety of non-Oracle databases and import metadata and data from these sources using JDBC connectivity.

This chapter provides connection details for a non-Oracle data sources that can be accessed through JDBC, and generic connection information. It contains the following topics:

JDBC connectivity is used with code templates-based mappings. See Oracle Warehouse Builder Data Modeling, ETL, and Data Quality Guide for more details about these mappings.

Generic Connection Using JDBC

You can connect to any data source that supports JDBC connectivity. To connect to the data source, you require the JDBC driver for that data source and the URL format to set up the connection. For any database, download the required JDBC driver into OWB_HOME/owb/lib/ext.

Connecting to DB2 Database

You can connect to a DB2 database using a JDBC connection. Ensure that the following prerequisites are met before connecting to a DB2 database.

JDBC Connection Drivers for DB2

You must download the following jar files into OWB_HOME/owb/lib/ext on your client system:


See Also:

Oracle Warehouse Builder Data Modeling, ETL, and Data Quality Guide for more information about using code template mappings.

Creating a DB2 Module

Before you can import metadata from a DB2 database, you must create a DB2 module to store the metadata.

To create a DB2 module:

  1. Right-click DB2 under the Databases node in the Projects Navigator and select New DB2 Module.

    The Create Module Wizard is displayed.

  2. Click Next to open the Name and Description page.

    Provide a name, description (optional), and the access method. Select the access method Native Database Connection, which implies using a JDBC driver to make the connection.

  3. Click Next to open the Connection Information page.

    You can select from an existing location or provide new location details.

  4. To provide a new location, click Edit on the Connection Information page to open the Edit DB2 Location dialog box.

    Provide the following details in the Edit DB2 Location dialog box:

    • User Name: The user name to connect to the host system.

    • Password: The password for the user name.

    • Host: The host system where the database resides.

    • Port: The port number is usually 50000 for the DB2 connection.

    • Database: The database name.

    • Schema: The schema from which objects are to be imported.

    • Version: The database version.

  5. Click Test Connection to ensure that the connection is valid.

  6. Click OK to return to the Connection Information page.

  7. Click Next, and then click Finish in the Summary page after verifying the specified details.

The newly created module is available under the DB2 node in the Projects Navigator. A DB2 module supports the following data objects:

  • Transformations

  • Tables

  • Views

  • Sequences


Note:

Temporary tables can be created in the work schema when code template mappings run. To change the work schema, edit the location and use the Advanced tab.

Importing Metadata into a DB2 Module

To import metadata into a module:

  1. Right-click the DB2 module and select Import, then Database Object.

    The Import Metadata Wizard is displayed.

  2. In the Filter Information page, select the object types to be imported.

  3. In the Object Selection page, select the objects to be imported. Also, specify whether dependent objects should be selected.

  4. In the Summary page, verify the objects you selected.

  5. Click Finish to begin the import.

  6. In the Import Results dialog box, click OK to confirm the import action. Click Undo to cancel the import.

Connecting to SQL Server Database

You can connect to a SQL Server database using a JDBC connection.

JDBC Connection Driver for SQL Server

To connect using JDBC, you must place the jar file sqljdbc.jar into OWB_HOME/owb/lib/ext on your client system.

This jar file is available for download at the Microsoft download center.

Creating a SQL Server Module

Before you can import metadata from a SQL Server database, you must create a SQL Server module to store the metadata.

To create a SQL Server Module:

  1. Right-click SQL Server under the Databases node in the Projects Navigator and select New SQL Server Module.

    The Create Module Wizard is displayed.

  2. Click Next to open the Name and Description page.

    Provide a name, description (optional), and the access method. Select the access method Native Database Connection, which implies using a JDBC driver to make the connection.

  3. Click Next to open the Connection Information page.

    You can select from an existing location or provide new location details.

  4. To provide a new location, click Edit on the Connection Information page to open the Edit SQL Server Location dialog box.

    Provide the following details in the Edit SQL Server Location dialog box:

    • User Name: The user name to connect to the host system.

    • Password: The password for the user name.

    • Host: The host system where the database resides.

    • Port: The port number is usually 1433 for the SQL Server connection.

    • Database: The database name.

    • Schema: The schema from which objects are to be imported.

    • Version: The database version.

  5. Click Test Connection to ensure that the connection is set.

  6. Click OK to return to the Connection Information page.

  7. Click Next, and then click Finish in the Summary page after verifying the specified details.

The newly created module is available under the SQL Server node in the Projects Navigator. A SQL Server module supports the following data objects:

  • Transformations

  • Tables

  • Views

  • Sequences

Importing Metadata into a SQL Server Module

To import metadata into a module:

  1. Right-click the SQL Server module and select Import, then Database Object.

    The Import Metadata Wizard is displayed.

  2. In the Filter Information page, select the object types to be imported.

  3. In the Object Selection page, select the objects to be imported. Also specify whether dependent objects should be selected.

  4. In the Summary page, verify the objects you selected.

  5. Click Finish to begin the import.

  6. In the Import Results dialog box, click OK to confirm the import action. Click Undo to cancel the import.

After you create a JDBC connection and import metadata from data objects, you can extract data from these objects and load it to target data sources by performing extraction, transformation, and loading (ETL) operations. However, to perform ETL operations on JDBC connected-data objects, you can use only code template mappings. A limited set of operators are supported for code template mappings. All operators are supported for Oracle target in code template mappings. For more information about code templates, see Chapter 12, "Using Code Templates to Load and Transfer Data". For more information about ETL operations and different types of mappings including PL/SQL mappings and code template mappings, see the Oracle Warehouse Builder Data Modeling, ETL, and Data Quality Guide.

Importing Metadata from Other Databases Using JDBC

To import metadata definitions from other databases using JDBC drivers, you must create a new platform in Oracle Warehouse Builder. A platform refers to a data source. See Chapter 11, "Creating New Platforms" for more information about platforms.

PKe 55PK;,AOEBPS/preface.htm|" Preface

Preface

This preface includes the following topics:

Audience

This guide is written for Oracle Database administrators and others who create warehouses using Oracle Warehouse Builder.

Documentation Accessibility

For information about Oracle's commitment to accessibility, visit the Oracle Accessibility Program website at http://www.oracle.com/pls/topic/lookup?ctx=acc&id=docacc.

Access to Oracle Support

Oracle customers have access to electronic support through My Oracle Support. For information, visit http://www.oracle.com/pls/topic/lookup?ctx=acc&id=info or visit http://www.oracle.com/pls/topic/lookup?ctx=acc&id=trs if you are hearing impaired.

Conventions

In this guide, Windows refers to the Windows NT, Windows 2000, and Windows XP operating systems. The SQL*Plus interface to Oracle Database may be referred to as SQL.

In the examples, an implied carriage return occurs after each line, unless otherwise noted. You must press the Return key after a line of input.

The following table lists the conventions used in this guide:

ConventionMeaning
. . .Vertical ellipsis points in an example mean that information not directly related to the example has been omitted.
...Horizontal ellipsis points in statements or commands mean that parts of the statement or command not directly related to the example have been omitted.
boldface textBoldface type in text refers to interface buttons and links. Boldface type also serves as emphasis to set apart main ideas.
italicized textItalicized text applies to new terms introduced for the first time. Italicized text also serves as an emphasis on key concepts.
unicode textUnicode text denotes exact code, file directories and names, and literal commands.
italicized unicode textItalicized unicode text refers to parameters whose value is specified by the user.
[]Brackets enclose optional clauses from which you can choose one or none.

Getting Help

Help is readily available throughout Oracle Warehouse Builder:

Related Publications

In addition to the Sources and Targets Guide, the Oracle Warehouse Builder documentation set includes the following:

In addition to the Oracle Warehouse Builder documentation set, you can also reference Oracle Database Data Warehousing Guide.

PKfu{"|"PK;,AOEBPS/importing_metadata.htm Connecting to Data Sources and Importing Metadata

2 Connecting to Data Sources and Importing Metadata

In Oracle Warehouse Builder, you can access data from a variety of sources. You can interpret and extract metadata from custom, and also packaged applications and databases. As a precursor to extracting any data set, you first import its metadata.

This chapter contains the following topics:

About Source Data and Metadata

Metadata is data that describes the contents of objects in a data set. For example, the metadata for a table includes such information as the name of the table and the names and data types of columns, relationships between this table and other objects, and so on. When working with objects in data sources not created within Oracle Warehouse Builder, you must first import metadata from those sources.

Oracle Warehouse Builder groups metadata for objects in different data sources in modules, which are visible in the Projects Navigator. The type of module you create depends on the source from which you are importing metadata. For example, to import metadata definitions from an Oracle database, create an Oracle module. To import metadata definitions from flat files, create a flat file module.

General Steps for Importing Metadata from Sources

Whether you want to import metadata from a table, file, or application, the general process is the same.

To import metadata from a source:

  1. Review the list of supported sources and targets in Table 1-1, "Sources and Targets Supported in Oracle Warehouse Builder 11g Release 2 (11.2)" to determine if the source from which you want to extract data is supported in Oracle Warehouse Builder.

  2. Select an existing location or create a location as described in "Creating Locations".

  3. Create a module for the source metadata as described in "Creating Modules".

  4. Right-click the module and select Import.

    You can import metadata from database objects, flat files, COBOL copybook files, and Oracle Warehouse Builder metadata.

  5. Follow the prompts in the Import Metadata Wizard.

    The wizard prompts you for information based on the type of source you selected. For more information, see "Using the Import Metadata Wizard".

Subsequent Steps

For most data sources, after importing the metadata of the data objects, you can view the data stored in these objects.

To move the data using Oracle Warehouse Builder, you can design ETL logic that extracts the data from the source, transforms the data, and loads it into a target schema.

Over a period, the source metadata may change. If this occurs, you can use Oracle Warehouse Builder to identify the ETL logic that would be impacted and potentially made invalid due to a change in metadata.


See Also:


To introduce the changed metadata into Oracle Warehouse Builder, right-click the desired module and select Import. As described in "Reimporting Definitions", Oracle Warehouse Builder recognizes when you are reimporting metadata.

About Locations

Locations enable you to store the connection information to the various files, databases, and applications that Oracle Warehouse Builder accesses for extracting and loading data. Similarly, locations also store connection information to ETL management tools and Business Intelligence tools. For a detailed listing, see Table 1-1.

Oracle Database locations and file locations can be sources, targets, or both. For example, you can use a location as a target for storing data temporarily or as a staging table. Later, you can reuse that location as a source to populate the final target.

In some cases, such as with flat file data, the data and metadata for a given source are stored separately. In that case, create one location for the connection information for the data and another for the connection information for the metadata.

Automatically Created Locations

During installation, Oracle Warehouse Builder creates an Oracle location named OWB_REPOSITORY_LOCATION. This location provides the connection details to the Oracle Warehouse Builder workspace.

Types of Locations

You can deploy to several different types of locations. These locations are available on the Locations Navigator of the UI. Each location type has a different use:

  • Databases: Targets for either relational or dimensional systems, including objects such as tables and views, or dimensions and cubes. See, Oracle Warehouse Builder Data Modeling, ETL, and Data Quality Guide for more details about these objects.

  • Files: Targets for storing data in delimited, fixed, or XML format.

  • Applications: Targets for Oracle E-Business Suite, PeopleSoft, Siebel, and SAP systems.

  • Process Flows and Schedules: Indicates an Oracle Workflow location.

  • Business Intelligence: Targets for deploying metadata derived from databases or Oracle modules. This is then used by business intelligence tools.

  • URI Locations: URI locations are used internally as part of the definition of other locations. You must not create any instances of it.

  • Agents: Specifies the location of a control center agent or an application server.

  • Transportable Modules: For defining transportable module sources and targets.

Creating Locations

You can create your own locations to use as sources or targets.

To create a location:

  1. In the Locations Navigator, expand the Locations node and then expand the node that represents the type of location you want to create.

    For example, to create an Oracle database location, expand the Locations node, the Databases node, and then the Oracle node.

  2. Right-click the type of location and select New <Object> Location.

    The Create <Object> Location dialog box is displayed.

    Or, right-click Locations and select New. This opens the New Gallery dialog box. Select a location type from the list of items and click OK.

    The Create <Object> Location dialog box is displayed.

  3. Complete the dialog box. Click the Help button for additional details.

    Provide the required connection details in the Details tab.

Using SQL*Net to Create Locations

When you create Oracle locations of type SQL*Net, you must set up a transparent network substrate (TNS) name entry for these locations. The TNS name must be accessible from the Oracle Warehouse Builder client home. Run the Net Configuration Assistant from the Oracle Warehouse Builder client home. See Oracle Database Enterprise User Security Administrator's Guide for information about using the Net Configuration Assistant.

After setting up the TNS name entry, restart the control center service so that it can pick up the changes. Furthermore, if the Warehouse Builder control center home is distinct from the Oracle Database home, then the same TNS name entry must be defined in the Oracle Database home as well. Run the Net Configuration Assistant from the Oracle Database home and specify the same TNS name there as well.


Note:

If the TNS names in the Control Center home and the Oracle Database home are different, then connection errors may occur during deployment and execution.

About Locations, Passwords, and Security

Because all Oracle Warehouse Builder users can view connection information in a location, passwords are always encrypted. Furthermore, Oracle Warehouse Builder administrators can determine whether to allow locations to be shared and persistent across design sessions. By default, locations are not shared or persisted.


See Also:

Oracle Warehouse Builder Installation and Administration Guide for more information about "Managing Passwords".

Granting Privileges to a Target Location

Some deployments require the owner of the target location to have more powerful privileges than are granted when creating a new user:

  • Upgrade action

  • End User Layer (EUL) deployment

A privileged database user can grant the additional privileges.

For ETL, the owner of the target location must have sufficient privileges to read data from the source location. If the source location is a database table, for example, the owner of the target must have SELECT privileges on the table. Similarly, for locations pertaining to Transportable Modules sources and targets, users require additional privileges as described in Oracle Warehouse Builder Data Modeling, ETL, and Data Quality Guide.

Upgrade Action 

The GRANT_UPGRADE_PRIVILEGES PL/SQL script grants the target user the necessary roles and privileges for the upgrade action. Use this syntax:

@%OWB_HOME%/owb/rtp/sql/grant_upgrade_privileges username

OWB_HOME is the home directory for Oracle Warehouse Builder on the target system.

username is the owner of the target location.

For example, the following command grants privileges on a Windows system to the SALES_TARGET user.

@%OWB_HOME%\owb\rtp\sql\grant_upgrade_privileges sales_target

EUL Deployment 

Oracle BI Discoverer locations require the EUL user to have the CREATE DATABASE LINK privilege.

Registering and Unregistering Locations

Locations must be created during the design process. All modules, including their source and target objects, must have locations associated with them before they can be deployed. You cannot view source data or deploy target objects unless there is a location defined for the associated module.

Registering a location in a control center establishes a link between the workspace and the locations of source data and deployed objects. You can register a location in multiple control centers. See Oracle Warehouse Builder Concepts for more information about control centers.

You can change the definition of a location before it is registered. However, after the location is registered, you can change only the password. To edit other details of a location or one of its connectors, you must first unregister the location from all the control centers where it is registered. Unregistering a location deletes the deployment history of the location.

Locations are registered automatically by deployment. Alternatively, you can explicitly register a location in the Control Center.

To register a location:

  1. Select the required project.

  2. Select Tools, Control Center Manager to open the Control Center Manager.

  3. Right-click the location and click Register.

    The Location dialog box is displayed.

  4. Check the location details carefully.

    Click Help for additional information.

  5. Click Test Connection to verify the connection details.

  6. Click OK.

To unregister a location:

  1. Select Tools, Control Center Manager to open the Control Center Manager.

  2. Right-click the location and click Unregister.

  3. Click OK to confirm the action.

Deleting Locations

To delete a location:

  1. Right-click the location in Locations Navigator and select Delete.

    If the Delete option is not available here, this indicates that the location has been registered in a control center and is likely being used. See "Locations Registered in Multiple Control Centers" for more information.

  2. Verify that the location is not in use, unregister the location in the Control Center Manager, and then delete the location from Locations Navigator.

Locations Registered in Multiple Control Centers

After you register a location in a control center, the connection details of the location are locked. You can edit the connection details or delete the location only after unregistering it from the control center.

It is also likely that as part of your project requirements, a location is registered in multiple control centers. In such a scenario, you cannot edit the connection details of the location or delete the location unless you unregister the location from all the control centers where it is registered.

To see the details of all the control centers where a location is registered:

  1. On the Locations Navigator, right-click the location and click Open.

    The Edit Location dialog box is displayed.

  2. Click Registration to view the list of control centers where the location is registered.

About DB Connectors and Directories

A DB connector or Directory is a logical link between a source location and a target location. The connector between schemas in two different Oracle Databases is implemented as a database link, and the connector between a schema and an operating system directory is implemented as a database directory.

To create a database directory, a user requires the CREATE DIRECTORY and DROP DIRECTORY privileges. When you create an Oracle Warehouse Builder user, these privileges are not automatically granted to the user. Therefore, the database administrator must explicitly grant these privileges to the Oracle Warehouse Builder user. For example:

GRANT CREATE ANY DIRECTORY TO OWB_USER;
GRANT DROP ANY DIRECTORY TO OWB_USER;

where OWB_USER is an Oracle Warehouse Builder user performing the deployment.

Or else, a user with these privileges must create the link connectors and grant you access to use them. You can then create the connectors manually and select the database link or directory from a list.


Note:

To create a Database Link, a user requires the CREATE DATABASE LINK privilege. This privilege is granted automatically when an Oracle Warehouse Builder user is created.


See Also:


To manually create a database connector:

  1. In the Locations Navigator, expand the Locations folder and then expand the subfolder for the target location.

  2. Right-click DB Connectors and select New DB Connector.

    Follow the steps in the Create Connector Wizard.

To manually create a directory connector:

  1. In the Locations Navigator, expand the Locations folder and then expand the subfolder for the target location.

  2. Right-click Directories and select New Directory.

    The Create Connector Wizard opens.

  3. Follow the steps and create a directory connector.

About Modules

Modules are grouping mechanisms in the Projects Navigator that correspond to locations in the Locations Navigator. A single location can correspond to one or more modules. However, a given module can correspond to only one metadata location and data location at a time.

The association of a module to a location enables you to perform certain actions more easily in Oracle Warehouse Builder. For example, group actions such as creating snapshots, copying, validating, generating, deploying, and so on, can be performed on all the objects in a module by choosing an action on the context menu when the module is selected.

Creating Modules

You can create a module from the Projects Navigator.

To create a module:

  1. Expand the Projects Navigator until you find the node for the appropriate metadata type.

    For example, if the source data is stored in Oracle Database, then expand the Databases node to view the Oracle node. If the source data is in an SAP R/3 system, expand the Applications node to view the SAP node.

  2. Right-click the desired node and select New<Module Type>.

    The Create Module Wizard opens.

    You can also right-click the desired node and select New. This opens the New Gallery dialog box. You can now select the item you want to create (module) and click OK.

    The Create Module Wizard opens.

  3. On the Name and Description page, provide a name and an optional description for the module. For non-Oracle sources and applications, you must not select the access method. Select from Native Database Connection and Oracle Gateway.

  4. Click Next.

    The Connection Information page is displayed.

  5. Provide details about the location that is associated with this module.

    The contents of the Connection Information page depend on the type of module you create. For more information about providing information about this page, click Help.

  6. Click Next to display the Summary page.

    Review the information you provided and click Back to modify entered values.

  7. Click Finish.

While using Oracle Warehouse Builder, you must not associate a module with a new location. For example, assuming your production environment uses different locations than those used by your development environment, then you must change the module associations when moving code from the production to the development environment.

To change the location associated with a module, you must edit the configuration properties of the module. Configuration properties define the physical information pertaining to the metadata.

To change the location associated with a module:

  1. In the Projects Navigator, right-click the module and select Configure.

    The Configuration Properties editor is displayed.

  2. In the Identification node, select a new value for the Locations property. If the desired location is not in the list, then edit the module and add the location.

See Oracle Warehouse Builder Data Modeling, ETL, and Data Quality Guide for more information about "Configuring Data Objects".

Creating User Folders

After you create a module for a particular object such as an Oracle database, you can view all the associated objects under the database such as Mappings, Transformation, Tables, and so on.

You can also create your own folder, called User Folder, under a module. You can then define the required objects within the folder. For example, related tables and views that must be generated or deployed can be placed under a common folder. User Folders provide more flexibility in organizing objects within a module.

To create a User Folder:

  1. Right-click a module, and click New.

    The New Gallery dialog box is displayed.

  2. Select User Folder from the list of items and click OK.

    The Create User Folder dialog box is displayed.

  3. Provide a name and description (optional), and click OK.

The newly created user folder is now available under the module. The folder is empty with no nodes under it. All the objects that can be added under a module can also be added under the newly created user folder. For example,

To add a table:

  1. Right-click the folder, and click New.

    The New Gallery dialog box is displayed.

  2. Select Table from the list of items and click OK.

    The Create Table dialog box is displayed.

  3. Provide a name and description (optional) and click OK.

The newly created table is now available under the Tables node within the folder.

Within a user folder, you can also:

  • Create other user folders.

  • Copy valid objects from other user folders.

  • Copy valid objects from other compatible module types.

Using the Import Metadata Wizard

Use the Import Metadata Wizard to import metadata definitions into modules.

The Import Metadata Wizard supports importing of tables, views, materialized views, dimensions, cubes, external tables, sequences, user-defined types, and PL/SQL transformations directly or through object lookups using synonyms.

Importing a table includes importing its columns, primary keys, unique keys, and foreign keys, which enable the import of secondary tables. When you import an external table, Oracle Warehouse Builder also imports the associated location and directory information for the associated flat file.

You can import metadata definitions either from the Oracle Database catalog or Designer/2000 (Oracle Designer).

Importing Metadata Definitions from Oracle Database

Create an Oracle module to store the imported metadata.

To create an Oracle module:

  1. From the Projects Navigator, right-click Oracle under the Databases node and select New Oracle Module.

    The Create Module Wizard is displayed.

  2. On the Name and Description page, provide a name and an optional description for the module. Click Next to open the Connection Information page.

  3. Use the Connection Information page to select a database location for the module. To define a new location, click Edit. The Edit Oracle Database Location dialog box is displayed. See "Edit Oracle Database Location Dialog Box" for the connection parameters to be entered in this dialog box.

    Click OK to open the Summary page.

  4. Verify the specified details on the Summary page and click Finish.

    The newly created Oracle module is now available under the Oracle node in the Projects Navigator.

Edit Oracle Database Location Dialog Box

Use this dialog box to specify the location details of an Oracle location.

Name

A name for the location.

Description

An optional description.

Connection Type

Lists the connections available for access to a database location. You cannot change the type after creating the location. There are four connection types available: HOST:PORT:SERVICE, Database Link, SQL*NET Connection, and OCI.


Note:

When the source and target locations are on the same host, be su-aҞre to identify them in the same way. Otherwise, the product treats them as separate locations and creates a database link between them. The database link may slow down the loading of data.

Common mistakes of this type include the following:

  • Specifying localhost for one location and the actual computer name (such as mycomputer-pc) for another location.

  • Specifying the domain inconsistently, for example, mycomputer-pc for one location and mycomputer-pc.us.oracle.com for another.


  • HOST:PORT:SERVICE: Makes a connection using the Easy Connect Naming method, which requires no prior setup:

    • User Name: The database user credential that has permission to access the schema location.

      When connecting to a database that does not have user names, enter any text as a mock user name.

    • Password: The password associated with user name.

      When connecting to a database that does not have passwords, enter any text as a mock password.

    • Host: The name of the system where the database is installed.

      If Oracle Warehouse Builder is installed on the same system as the Oracle database, you can enter localhost instead of the computer name. If the database resides on a remote system, then provide the internet protocol (IP) address of the remote system.

    • Port: The SQL port number for the database.

    • Service Name: The service name of the database.

    • Use Global Name: The unique name of the database, which is composed of the database name and the domain in the form database_name.database_domain. For example, orcl.us.example.com identifies the orcl database in the us.example.com domain. Select this option when connecting to a database on a different network.

  • Database Link: Makes a connection to another database using an existing database link. Select this method only when you do not have privileges that enable you to make a direct connection. You cannot deploy to a location that uses a database link. Not available for Oracle Business Intelligence or Discoverer locations.

    A database link is a schema object that contains information for connecting to a remote database. Database links are used in distributed database environments and enable a client to access two physical databases as one logical database.

    • From Location: An existing location where the database link is defined.

    • Database Link: The object name of the database link.

  • SQL*NET Connection: Makes a connection using a net service name previously defined using a tool such as Oracle Net Configuration Assistant. The net service name provides a convenient alias for the connection information. This method of connecting is the best for Oracle RAC installations.

    • User Name: The database user credential that has permission to access the schema location.

      When connecting to a database that does not have user names, enter any text as a mock user name.

    • Password: The password associated with user name.

      When connecting to a database that does not have passwords, enter any text as a mock password.

    • Net Service Name: The name of the predefined connection.

    • Use Global Name: The unique name of the database, which is composed of the database name and the domain in the form database_name.database_domain. For example, orcl.us.example.com identifies the orcl database in the us.example.com domain. Select this option when connecting to a database in a different network.

  • OCI: Makes a connection using Oracle Call Interface (OCI) to interact with an Oracle database. This connection type uses the JDBC OCI driver that is specific to your version of Oracle database and your platform. Use this method when you need a high degree of compatibility with an earlier release of Oracle. The JDBC OCI drivers enable you to call the OCI directly from Java.

    • User Name: The database user credential that has permission to access the schema location.

      When connecting to a database that does not have user names, enter any text as a mock user name.

    • Password: The password associated with user name.

      When connecting to a database that does not have passwords, enter any text as a mock password.

    • Net Service Name: The name of the predefined OCI connection.

    • Use Global Name: The unique name of the database, which is composed of the database name and the domain in the form database_name.database_domain. For example, orcl.us.example.com identifies the orcl database in the us.example.com domain. Select this option when connecting to a database in a different network.

Schema

The schema where the source data is stored or the target objects are deployed. The schema must be registered. By default, it is the user name schema.

When connecting to a type of database that does not have schemas, do not enter any value in this field.

Version

The version number of Oracle Database. Not available for non-Oracle database locations.

Test Connection

Attempts to make a connection using the values provided on this page.

Test Results

A message that reports whether a test connection succeeded or failed.

Figure 2-1 Edit Oracle Location Dialog Box

Edit Oracle Location dialog box

Importing Metadata Definitions

Use the Import Metadata Wizard to import metadata from an Oracle database into the module.

To import metadata definitions from an Oracle database:

  1. Right-click the newly created Oracle module and select Import, then Database Objects.

    The Welcome page of the Import Metadata Wizard is displayed. This page lists the steps to import object metadata. Click Next to proceed with the import.

  2. Complete the following:

Filter Information Page

Use the Filter Information page to limit the search using one of the following methods:

Selecting the Object Types The Object Type section displays the types of database objects that you can import. These objects include tables, dimensions, external tables, sequences, materialized views, cubes, views, PL/SQL transformations, and user-defined types. Select the types of objects you want to import. For example, to import tables and views, select Tables and Views.

Search Based on the Object Name Use the Only select objects that match the pattern option to specify a search pattern. Oracle Warehouse Builder searches for objects whose names match the pattern specified. Use the percent sign (%) as a wildcard match for multiple characters and an underscore (_) as a wildcard match for a single character. For example, you can enter a warehouse project name followed by a percent sign (%) to import objects that begin with that project name.

Click Next to retrieve names that meet the filter conditions from the data dictionary. Oracle Warehouse Builder then displays the Object Selection page.

Object Selection Page

Select items to import from the Available list and click the right arrow to move them to the Selected list. If you are reimporting definitions, previously imported objects appear in bold.

To search for specific items by name, click the Find Objects icon that looks like a flashlight.

To move all items to the Selected Objects list, click Move All.

Importing Dependent Objects The Import Metadata Wizard enables you to import the dependent objects of the object being imported.

Select one of the following options to specify if dependent objects should be included in the import:

  • None: Moves only the selected object to the Selected list. No dependencies are imported when you select this option.

  • One Level: Moves the selected object and the objects it references to the Selected list. This is the default selection.

  • All Levels: Moves the selected object and all its references, direct or indirect, to the Selected list.

Click Next to display the Summary and Import page.

Importing Dimensions When you import a dimension that uses a relational implementation, the implementation table that stores the dimension data is not imported. You must explicitly import this table by moving the table from the Available list to the Selected list on the Object Selection page. Also, after importing the table, you must bind the dimension to its implementation table. For more information about how to perform binding, refer to Oracle Warehouse Builder Data Modeling, ETL, and Data Quality Guide.

Summary and Import Page

This page summarizes your selections in a spreadsheet that lists the name, type of object, and whether the object are reimported or created. Verify the contents of this page and add descriptions, if required, for each of the objects.

You can specify additional properties for objects that have been imported into the module. Click Advanced Import Options to specify these properties. The Advanced Import Options dialog box is displayed. For more information about the contents of this dialog box, see "Advanced Import Options". For more information about reimporting definitions, see "Reimporting Definitions".

Click Finish to import the selected objects. The Importing Progress dialog box shows the progress of the import activity. After the import completes, the Import Results page is displayed.

Import Results Page

This page summarizes the import result, and lists the objects and details about whether the object was created or synchronized.

Click OK to accept the results. To save a metadata loader (MDL) file associated with this import, click Save. Oracle Warehouse Builder stores the definitions in the database module from which you performed the import.

Reimporting Definitions

Reimporting your source database definitions enables you to import changes made to your source metadata after your previous import. You do not have to remove the original definitions from the workspace. Oracle Warehouse Builder provides you with options that also enable you to preserve any changes you may have made to the definitions since the previous import activity. This includes any new objects, foreign keys, relationships, and descriptions you may have created in Oracle Warehouse Builder.

To reimport definitions:

  1. Right-click a data source module name and select Import.

    The Welcome page for the Import Metadata Wizard is displayed.

  2. Click Next.

    The Filter Information page is displayed.

  3. Complete the "Filter Information Page" and "Object Selection Page", selecting the same settings used in the original import to ensure that the same objects are reimported.

  4. The Summary and Import page is displayed.

    If the source contains new objects related to the object you are reimporting, the wizard requires that you import the new objects at the same time.

  5. Click Advanced Import Options and make selections. (Optional)

  6. Click Finish.

    Oracle Warehouse Builder reconciles and creates objects. When this is complete, the Import Results dialog box displays.

    The report lists the actions performed by Oracle Warehouse Builder for each object. For objects that have been reimported, the Actions column displays Synchronized. You can also expand an object to see which elements have changed. For example, you can see which columns of a table have changed since the last import.

    Click Save to save the report. You should use a naming convention that is specific to the reimport.

  7. Click OK to proceed or click Undo to undo all changes to your workspace.

Advanced Import Options

The Advanced Import Options dialog box displays the options that you can configure while importing objects. This dialog box enables you to preserve any edits and additions made to the object definitions in the Oracle Warehouse Builder workspace.

By default, all options on this dialog box are selected. Deselect these options to have these objects replaced and not preserved.

For example, after importing tables or views for the first time, you manually add descriptions to the table or view definitions. To ensure that these descriptions are not overwritten while reimporting the table or view definitions, you must select the Preserve Existing Definitions option.

The contents of this dialog box depend on the type of objects being imported. For more information about the advanced import options for each type of objects, see the following sections:

Advanced Import Options for Views and External Tables

Select these options to reconcile views or external tables:

  • Import descriptions: The descriptions of the view or external table are imported. Existing descriptions are not preserved.

  • Preserve workspace added columns: The columns you added to the object in the workspace are preserved.


    See Also:

    Oracle Warehouse Builder Concepts for more information about "Workspaces".

Advanced Import Options for Tables

Select these options to reconcile tables:

  • Preserve workspace added columns: To retain any columns added to the table in the workspace.

  • Preserve workspace added constraints: To preserve the constraints you added to the table in Oracle Warehouse Builder.

  • Import indexes: To specify additional details about how indexes should be imported. Importing indexes consists of the following options:

    • Preserve workspace added indexes: To retain any indexes added to the workspace table.

    • Import physical properties of indexes: To indicate how indexes should be imported. Select the Preserve workspace added physical properties of indexes option below this option to specify that any physical properties added to the indexes should be preserved.

    • Import index partitioning: To indicate how index partitions should be imported. Select the Preserve repository added index partitioning option to specify that any index partitions added to the workspace table must be preserved.

  • Import partitioning: To specify additional details about how partitions should be imported. Importing partitions contains the following options:

    • Preserve workspace added partitioning: To retain all partitions added to the workspace table.

    • Import physical properties of partitioning: Use this option to indicate how the physical properties of partitions should be imported. Select Preserve workspace added physical properties of partitioning to indicate that all physical properties of the partitions in the workspace table should be retained.

  • Import physical properties: To indicate how the physical properties of the table should be imported. Select the Preserve workspace added physical properties option to specify that all physical properties added to the workspace table must be preserved.

  • Import descriptions: To import the descriptions of the table.

Advanced Import Options for Object Types

Select these options to reconcile object types:

  • Import descriptions: To import the descriptions of the object type.

  • Preserve workspace added attributes: To retain the attributes added to the object type in the workspace.

Updating Source Module Definitions

The Edit Module dialog box enables you to edit the name, metadata location, and the data locations for a source module.

To update the database definitions of an Oracle module:

  1. Right-click the module, and select Open.

    The Edit Module dialog box displays.

  2. To edit the metadata location, click the Metadata Location tab and specify the following:

    • Source Type: Identifies the location of the metadata. It can be either Oracle Data Dictionary or Oracle Designer Repository. Select Oracle Data Dictionary if the metadata is stored in the default workspace of the Oracle Database. Select Oracle Designer Repository if the metadata is stored in an Oracle Designer repository.

    • Location: Identifies the metadata location for the module. You can select a location from the list.

  3. To edit the data location, click the Data Locations tab. By default, the location name specified while creating the module is selected. To change the location, you can either select from other existing locations or create a new location. To create a new location, click New. The Edit Oracle Database Location dialog box displays. Specify the details of the data location in the dialog box.

This chapter provides a generic description of importing metadata, which is identical for Oracle databases and other data source types. Follow these procedures when working with Oracle databases.

For information about importing metadata definitions from non-Oracle databases and other applications, see:

PK5!7-PK;,AOEBPS/business_intelligence.htm Importing Oracle Warehouse Builder Data into Business Intelligence Applications

9 Importing Oracle Warehouse Builder Data into Business Intelligence Applications

Oracle Warehouse Builder provides an end-to-end business intelligence (BI) solution by enabling you to import, design, and deploy metadata from different sources into a data warehouse, and by making that data available to business analytical tools for decision making and business reporting. It fully integrates relational, dimensional, and business metadata and provides access to business analytical tools for decision making and business reporting.

Oracle Warehouse Builder contains BI objects that enable you to integrate seamlessly with BI applications to perform data analysis. You can define BI objects that enable you to store definitions of business metadata. You can then deploy these definitions to Oracle's BI tools, such as Oracle Business Intelligence Suite Enterprise Edition (Oracle BI Suite EE) and Oracle BI Discoverer, thereby extending the functionality of your data warehouse.

This section contains the following topics:

Creating Business Definitions for Oracle BI Discoverer

Business definitions are the equivalent of Discoverer End User Layer (EUL) objects. They are BI objects that enable you to integrate Oracle Warehouse Builder data with Oracle BI Discoverer. Business definitions facilitate data analysis of the data stored in a data warehouse. You can define and then deploy business definitions to Oracle BI Discoverer. You can either create new business definitions or derive them from existing schemas. For information about creating business definitions, see "Creating Oracle Discoverer Module". For information about deriving business definitions, see "Deriving BI Objects".

This section contains the following topics:

Creating Oracle Discoverer Module

Before you derive business definitions to deploy to Discoverer, you must create an Oracle Discoverer module to store your business definitions.

To create an Oracle Discoverer module:

  1. From the Projects Navigator, click to expand the Project node.

  2. Expand the Business Intelligence node.

  3. Right-click Oracle Discoverer and select New Oracle Discoverer.

    Oracle Warehouse Builder opens the Create Module Wizard.

  4. Follow the wizard steps by clicking Next.

Naming the Oracle Discoverer Module

In the Name and Description page, enter a name and an optional description for the Oracle Discoverer module. Also, indicate the type of module you are creating.

For more information about naming conventions, see Oracle Warehouse Builder Data Modeling, ETL, and Data Quality Guide.

Setting the Connection Information

On the Connection Information page, define the location to deploy the Oracle Discoverer module. For example, this may be the system where you are currently running Oracle BI Discoverer.

To use a deployment location you previously created, you can select it from the Location list. The connection information for this location displays on the wizard page.

You can also choose to create this location later and skip to the next page. You cannot deploy the Oracle Discoverer module unless you provide the connection information for the target location.

The wizard initially creates a default target location for the module you are creating. For example, if your module is named DISCOVERER_OBJECTS, then the location is called DISCOVERER_OBJECTS_LOCATION1. You can choose to provide the connection information for this location by clicking Edit. The Edit Oracle Discoverer Location dialog box is displayed. Provide the required information to connect with your target system and click OK. For more information about the Edit Oracle Discoverer Location dialog box, see "Defining Discoverer Locations".

Defining Discoverer Locations

A Discoverer location provides connection details of the system where you deploy the Oracle Discoverer modules. Oracle BI Discoverer EUL Release 10.1.2 or later should be installed on this system.

To define a Discoverer location, enter the following details on the Edit Oracle Discoverer Location dialog box:

  • Name: The name of the Discoverer location. Oracle Warehouse Builder assigns a default name for the location. You can edit this name.

  • Description: An optional description for the Discoverer location.

  • User Name: The name of the EUL owner to which you want to deploy your business definitions. You can also specify a user who has administrator privileges.

  • Password: The password for the user.

    User password is required only for direct integration.

  • Connection Type: The type of connection used to connect to the Discoverer EUL. The options you can select are Host:Port:Service or SQL*Net Connection.

    When you select SQL*Net Connection, specify the net service name in the Net Service Name field. When you select Host:Port:Service, specify the following additional details.

    Host: The host name of the system on which the EUL exists.

    Port: The default port number is 1521.

    Service Name: The service name of the Oracle Database installation.

  • Integration Type: Direct or Indirect depending on the connection. Direct indicates that the deployment is made directly to the schema. Indirect provides file transfer options through file, FTP, HTTP, or HTTPS.

    Depending on the mode of file transfer, you must provide the following details:

    FILE

    • Root Path: Directory of the .eex file.

    • File Name: The name of the .eex file.

    FTP

    • Host Name: The system credentials where the Oracle Discoverer server resides.

    • Host Login Port: Login port number, which is initially set to 0. You must change this according to your local configuration.

    • Transfer Format: Select from ASCII and IMAGE.

    • Host Login User: User name to run FTP.

    • Host Login Password: User password to run the FTP command.

    • File Name: The name of the .eex file along with the complete path.

    HTTP and HTTPS

    • Host Name: The system credentials where the Oracle Discoverer server resides.

    • Host Login Port: Login port number, which is initially set to 0. You must change this according to your local configuration.

    • Host Login User: User name for the HTTP/HTTPS command.

    • Host Login Password: User password for the HTTP/HTTPS command.

    • File Name: The name of the .eex file along with the complete path.

  • Version: Represents the version of Discoverer to which the business definitions should be deployed. The list contains only one value, 10.1. Use this option to deploy to Oracle BI Discoverer 10g Release 2. This includes all Oracle BI Discoverer 10.1.x versions.

After you specify these details, click Test Connection to verify the connection.

Reviewing the Summary Information

In the Summary page, review the name and location information for the Oracle Discoverer module. Click Back to make any changes or click Finish to finish creating the Oracle Discoverer module.

After the Oracle Discoverer module is created, you can locate it under the Oracle Discoverer node on the Projects Navigator. Expand the module to see that Oracle Warehouse Builder provides a representation for the different objects types that comprise the Discoverer EUL. You can define the following types of Discoverer EUL objects:

  • Item Folders

  • Business Areas

  • Drill Paths

  • Lists of Values

  • Alternative Sort Orders

  • Drills to Detail

  • Registered Functions

About Item Folders

Item Folders are equivalent to Folder objects in Oracle BI Discoverer that map to database tables, external tables, or views. They represent a result set of data, similar to a database view. Item Folders store information just like tables. For example, they are used to store details of employees or customers of an organization. An Item Folder contains entities called Items that correspond to columns in a table. Each item has a name and contains a specific type of information. For example, the Item Folder that contains details about employees may include items such as employee name, start date, and department.

There are two types of Item Folders: Simple and Complex. Simple Item Folders contain items that reference a single table in an Oracle module. Complex Item Folders, like database views, provide a method to group items from multiple Item Folders within the same Oracle Discoverer module. Item Folders also contain joins, calculated items, and conditions.


Note:

Oracle Warehouse Builder does not support the Discoverer custom folders.

Oracle Warehouse Builder creates Item Folders when you derive business definitions from warehouse design objects in your Oracle module, as described in "Deriving BI Objects". You can also manually create a customized Item Folder using the Create Item Folder Wizard or the Graphical Navigator. The Graphical Navigator can also be used to edit Item Folders.

The following sections contain more information related to Item Folders:

Editing an Item Folder

After you derive your design object definitions, an Item Folder is created as part of the derived business definitions.

Oracle Warehouse Builder provides the document editors that enable you to edit the name and description of an Item Folder, view its source design objects, edit the items it contains, and specify or edit any joins or conditions.

To edit an Item Folder:

  1. From the Projects Navigator, expand the Oracle Discoverer module node, then expand the Item Folders node.

  2. Right-click the Item Folder name and select Open. Or double-click the Item Folder name. This displays the Item Folder editors.

  3. Click each of the editors to edit the Item Folder using the guidelines described in the subsequent sections.

Name Editor

The Name editor enables you to edit the name and description for the Item Folder.

Source Items Editor

The Source Items editor displays the available source items for your Item Folder.

When you are editing an existing item folder, the Selected column displays the source items that were selected at the time of creating the Item Folder. To select different items as the source, use the left arrow to return the items from the Selected column to the Available column. Then use the right arrow to move the new source item from the Available column to the Selected column.

Your selected objects can contain related items from multiple Item Folders.

To change the selected items, then use the left arrow to return the previously selected items. Now select an initial folder item from any of the available Item Folders within the same Oracle Discoverer module. You can then select additional folder items that have a relationship with the previously selected item. You cannot select items from unrelated Item Folders. The relationship between Item Folders are defined by the joins between them. To create a join between Item Folders, use the Joins editor to specify the relationships between the two Items Folders.

Deleting Items

You can also delete items using the Source Items editor. To delete an item using the Source Items editor, select and move the item from the Selected section to the Available section.

Items Editor

The Items editor displays the details and properties of all items in an Item Folder. You can view, create, and edit the following for an item:

Item Details
  • Name: Represents the name of an item. To change the current item, double-click the name and retype the new name.

  • Description: Optionally enter a description for this item.

If you select an item name, the property inspector displays the following properties for that item:

  • Alignment: The default alignment used for this item in a Discoverer report.

  • Business Name: Business name of item.

  • Case Storage: Select the case storage method.

  • Content Type: Describes the content of multimedia data in this item when used in drilling. If the column contains file names, set this property to FILE. Else set it to the file extension (avi,wav,jpg) to define the application that should process the data.

  • Created By: Created by.

  • Creation Time: Time of creation.

  • Database Column: Specifies the schema, table, and column based on which the item was created or derived.

  • Datatype: Select the data type for the item. All the data types are supported by Discoverer.

  • Default Aggregate: Indicate if the item defaults to an aggregate in the Discoverer report.

  • Default Position: Select the position of this Item on a Discoverer report.

  • Default Width: The default width of the item when it is displayed in a Discoverer report. The width is in characters.

  • Display Case: Select in what case the item information is displayed in a Discoverer report.

  • Format Mask: The format mask for this item when it is used in a work sheet.

  • Formula: You can provide a formula for any calculated items you want to specify. Click the Ellipsis button in this field to open the Formula dialog box. This dialog box contains a subset of the options in the Expression Builder. Use the Formula dialog box to create your calculation. This field is populated after you close the Formula dialog box. For more information about the Expression Builder, see Oracle Warehouse Builder Data Modeling, ETL, and Data Quality Guide.

  • Heading: The title for the item in a Discoverer report.

  • Item Class: Assign an Item Class that enables you to define properties for the item. The Item Class list contains Lists of Values, Alternative Sort Orders, and Drills to Detail. You can also remove a reference to an Item Class.

  • Last Update Time: Last updated time.

  • Max Char Fetched: The maximum amount of data that is fetched from LONG, LONG RAW, and BLOB data types.

  • Replace NULL With: The value to use instead of the Item value if the value is NULL.

  • Updated By: Updated by.

  • Visible: Specifies whether the item is visible to a Discoverer user.

  • Word wrap: The default word wrap setting used for this item in a Discoverer report.

Adding Items by Using the Items Editor

To add an item by using the Items editor:

  1. Double-click the Item Folder in the Projects Navigator. The item folder editor is displayed. Click Items to open the Item Details section.

  2. In the Item Details, add items by entering the names of the items.

  3. Click Composition to open the composition editor.

    The editor displays the item folder and the source object for the item folder. The editor associates an item with a column or another item.

  4. For all the items that you added, map the appropriate element from the source object to the item on the item folder.

Joins Editor

Joins enable you to associate data between two Item Folders. During data analysis, you may require information that resides in multiple folders. Joins enable users to perform business analysis and run reports across multiple Item Folders. After you create joins between Item Folders and deploy them to your Discoverer EUL, they are available for analysis in Discoverer Plus and Discoverer Viewer.

The Joins editor displays the relationships or joins between two Item Folders. You can define new joins by clicking on a new row and providing the required information. You can delete a join by right-clicking the box at the left of each join row that specifies the join's number and selecting Delete.

Figure 9-1 shows the contents of the Joins editor.

Figure 9-1 Creating and Editing Joins

Description of Figure 9-1 follows
Description of "Figure 9-1 Creating and Editing Joins"

On the Joins page, click a row in the Join Name field. Provide the following information:

  • Join Name: Enter a name for the join you are creating.

  • Master Item Folder: Select the Item Folder that is the Master. In the above example, DEPARTMENTS is the local item folder and COUNTRIES is the master item folder. A join is created between these two item folders.

  • Detail always has Master: Select this to indicate if your detail Item Folder always have this master.

  • One to one: Select this to indicate a one-to-one relationship between the two Item Folders.

  • Outer join: Indicate from the list if there is an outer join in this relationship and its type.

  • Description: Optionally describe the join.

For each join, you can specify the Join Components by clicking in the field below and providing the following information:

  • Local Item: This list is populated with the items contained in the current Item Folder. Select an item from this list.

  • Operator: Select the relationship between the Local Item you selected and the Remote Item you select from the Master Item Folder.

  • Remote Item: Select an Item from your Master Item folder to join with the Local Item from your current Item Folder.

If you select a Join name, the property inspector displays the following values for the join:

  • Business Name: Business name of the Join.

  • Description: Description of the Join.

  • External Foreign Key: Specifies the external foreign key for the join.

  • Physical Name: Provide a physical name that is different from the default.

Also see "Adding Joins Using the Graphical Navigator" for an alternate way to add joins.

Conditions Editor

The Conditions editor enables you to define or edit a condition that restricts selection on the chosen Item Folder. Use this editor to provide or edit a condition. This editor contains the following:

  • Condition Name: The name of the condition.

  • Condition: Click the Ellipsis button in this field to display the Expression Builder. Use this to create or edit a condition. For more information about the Expression Builder, see Oracle Warehouse Builder Data Modeling, ETL, and Data Quality Guide.

  • Description: Optionally describe the condition.

  • Mandatory: Select this to specify if the condition is mandatory. A mandatory condition is always applied to filter data that is being retrieved for this item folder. Non-mandatory conditions can be switched on and off by the user.

  • Case Sensitive: Specifies whether the case should match for character data types.

Composition Editor

The Composition editor enables you to view the components of an Item Folder. It displays the objects that contribute to the composition of this item folder. These are database objects for Simple Item Folders and contributing Item Folders for Complex Item Folders.

Adding Items Through the Composition Editor

To add an item through the Composition editor:

  1. Double-click the Item Folder in the Projects Navigator. The item folder editor is displayed. Click Composition.

    The editor canvas displays the item folder and the source object from which the item folder was created. If no source object was selected while creating the item folder, then the canvas displays only the item folder.

  2. Right-click anywhere on the canvas, and select Add, and then select the type of object (for example, Table, View, or External Table).

  3. The Add a New or Existing Object dialog box is displayed. Select the object you want to reference and click OK.

    The selected object is now visible on the canvas.

  4. Drag the referenced element to an item in the item folder to create the composition for that item. For each column, an item is added in the item folder.

Deleting Items

To delete an item using the Composition editor, right-click the item and select Delete.

General Properties of an Item Folder

Whenever an Item Folder is selected, the property inspector displays a list of properties for that Item Folder. These properties include Business Name, Description, External Object (Read Only), Folder Type (Read Only), and Visible.

Creating an Item Folder

When you derive intelligence objects, Item Folders are created as part of the derived business definitions. However, to define a customized Item Folder, you can create an Item Folder using the Create Item Folder Wizard.

Item Folders are Discoverer objects and may be Simple or Complex. Each Item Folder contains items that you can delete or edit, as described in "Editing an Item Folder".

Using the Create Item Folder Wizard

To create an Item Folder using the Create Item Folder Wizard:

  1. Expand the Oracle Discoverer module in which you want to create an Item Folder.

  2. Right-click Item Folders and select New Item Folder.

    Oracle Warehouse Builder opens the Create Item Folder Wizard.

  3. Follow the wizard steps by clicking Next.

Naming and Describing the Item Folder

In the Name and Description page, enter a name and optional description for the Item Folder.

Oracle Warehouse Builder distinguishes Simple Item Folders from Complex Item Folders in the same way as Discoverer. A Simple Item Folder is directly based on columns from a single table in an Oracle module and calculated items based on constants or items from that Item Folder. A Complex Item Folder can contain items from multiple Item Folders within the same Oracle Discoverer module, and calculated items.

Selecting Source Items

Select items for your Item Folder.

For a Simple Item Folder, you can select exactly one table, view, or external table from any module or user folder in the Oracle module, to be referenced by the Item Folder. Expand the selected object and proceed to select columns within the selected object, to your selected items. You can multi-select these referenced items by pressing the Ctrl key and using the right arrow to move them to the list of selected Items.

A Complex Item Folder can contain items from multiple Item Folders within the same Oracle Discoverer module. You can select the initial folder items from Item Folder A within an Oracle Discoverer module. You can then select additional folder items from another Item Folder B within the same module. However, the two Item Folders A and B must be related. You cannot select items from unrelated Item Folders. Thus, complex Item Folders combine multiple Item Folders that must be joined. You can define the joins using the Graphical Editor for an Item Folder. For more information about creating joins, see "Joins Editor".

Selecting the Join

For a Complex Item Folder, if there are multiple join paths between the item folders selected as the item sources, then the Join Selection page is displayed. The list on this page displays all the joins between the item folders. Select the join to be used for the Complex Item Folder being created.

Reviewing the Summary

In the Summary page, review the name and type of your Item Folder and items to be included in your Item Folder. Click Back to make any changes or click Finish to create the Item Folder.

You can locate the Item Folder on the Projects Navigator under the Item Folders node in the Oracle Discoverer module. This Item Folder contains all the selected items. You can edit the Item Folder properties, create joins and conditions, and edit item properties using the Graphical Editor, as described in "Editing an Item Folder".

After creating the Item Folder, you can use the following editors from the graphical editor:

For more information about how you specify the details on each editor, refer to the description of these editors in the "Editing an Item Folder" section.

Using the Graphical Navigator to Create Item Folders

An alternate way of creating item folders is to use the Graphical Navigator. You can use the editor menu or the editor canvas of the Graphical Navigator to create an item folder.

Using the Menu

To create an item folder using the menu, click anywhere on the Graphical Navigator. The main menu on the toolbar changes dynamically. From the main menu, select Graph, Add, Oracle Discoverer, Item Folder. The Add a New or Existing Item Folder dialog box is displayed. Follow the steps listed in "Steps to Create an Item Folder".

Using the Canvas

To create an Item Folder using the canvas, drag and drop an Item Folder icon from the Component Palette onto the canvas. Or right-click a blank area on the canvas and from the shortcut menu, select Add, Oracle Discoverer, Item Folder. The Add a New or Existing Item Folder dialog box is displayed. Follow the steps listed in "Steps to Create an Item Folder".

Steps to Create an Item Folder

Use the following steps to create an Item Folder:

  1. Select the Create a New Item Folder option.

  2. In the New Item Folder Name field, specify a name for the Item Folder.

  3. In the Oracle Module list, select the name of the Oracle Discoverer module to which the Item Folder should belong.

  4. Click OK.

The Item Folder is added to the editor canvas. Double-click the item folder to open the editors for the item folder. For more information about the contents of these editors, see "Editing an Item Folder" .

Adding Items to an Item Folder

After you add an Item Folder to the Graphical Navigator, you can add individual items to the Item Folder. On the Graphical Navigator, right-click Items and select Add a Folder Item. On the Add Folder Item dialog box provide a name for the new item.

Adding Joins Using the Graphical Navigator

An alternate way to create a Join is to use the Graphical Navigator.

To add a Join:

  1. Ensure that the item folder is available on the Graphical Navigator.

  2. Right-click Joins, and select Add a Join.

    The Add Join dialog box is displayed.

  3. Specify a name for the join, and click OK.

  4. The Joins editor completes the definition of the Join or use the graphical navigator for this.

Similarly, you can also drag an Item from the Items node to the Joins node to create a local item. You can also drag an Item to the Joins node of another Item folder to create a remote item.

Synchronizing Item Folders

Simple Item Folders are defined based on existing tables, views, or external tables. When the definition of the underlying object changes, you can update the Item Folder definition by synchronizing it with the object on which it is based.

To synchronize an Item Folder:

  1. Expand the Item Folders node in the Projects Navigator.

  2. Right-click the Item Folder and select Open.

    The editors for the Item Folder are displayed.

  3. Click the Composition editor to view the Item Folder.

  4. On the canvas, right-click the Item Folder and select Synchronize.

    The Synchronize Item Folder dialog box is displayed.

  5. Review the details displayed on this dialog box and click OK.

    Oracle Warehouse Builder synchronizes the item folder with the data object on which the item is based.

Synchronize Item Folder Dialog Box

The Synchronize Item Folder dialog box enables you to update the Item Folder with any changes made to the data types used in the database object on which the Item Folder is based. This dialog box displays the details of the changes to be made to the Item Folder.

The Synchronize Item Folder dialog box contains three columns: Object, Reason, and Action. The Object column lists the component in the underlying database object that has changed. The Reason column displays a brief description of the reason for the synchronization. The Action column displays the action that is taken to synchronize the Item Folder. The available actions are Update and None. If you select None for a component, no synchronization is performed for that object. Only definitions that have an Action set to Update are synchronized.

For example, the Item Folder DEPT_ITMF is derived from the DEPT table. After the Item Folder is created, you modify the DEPT table and change the data type of the column LOCATION from VARCHAR2 to NUMBER. When you synchronize the Item Folder DEPT_ITMF, the Synchronize Item Folder dialog box displays LOCATION in the Object column. The Reason column displays "Datatype mismatch". The Action column displays Update.

Click OK to perform the actions listed on the Synchronize Item Folder dialog box and update the Item Folder definition. If you do not want to perform the actions listed on this dialog box, click Cancel.

Creating a Business Area

Oracle Warehouse Builder enables you to create a Business Area to deploy to a Discoverer EUL. Business Areas contain references to Item Folders stored in your Oracle Discoverer module and are used to group information about a common subject, for example, Sales Analysis, Human Resources, or Stock Control. The Discoverer users use these Business Areas as their starting point for building a query.

Business Areas only contain references to Item Folders and not the actual Item Folder definitions. Thus, a Business Area can contain a collection of unrelated Item Folders and the same Item Folder can appear in multiple Business Areas. It enables you to set up multiple Business Areas with different levels of detail, for example, Sales Analysis area containing one Item Folder, Sales Details area containing six Item Folders, and a Sales Transaction area with 30 Item Folders. When you delete an Item Folder, the reference to it from the Business Area is also deleted.

When you deploy a Business Area using the Control Center, the dependencies of the Business Area are not automatically deployed. For example, if a Business Area BUSN_AREA contains two Item Folders, IF1 and IF2, then when you deploy BUSN_AREA using the Control Center, IF1 and IF2 are not deployed.

You can create a Business Area using the Create Business Area Wizard or from the Graphical Navigator. You also use the editor to edit a business area.

Using the Create Business Area Wizard

To create a Business Area using the Create Business Area Wizard:

  1. Expand an Oracle Discoverer module.

  2. Right-click Business Areas and select New Business Area.

    Oracle Warehouse Builder opens the Create Business Area Wizard.

  3. Follow the wizard steps by clicking Next.

Naming the Business Area

In the Name and Description page, enter a name and optional description for the Business Area.

Selecting the Item Folders

In the Source page, all the Item Folders available within the Oracle Discoverer module are displayed. You can multi-select the Item Folders by pressing the Ctrl key and using the right arrow to move them to the list of Selected Item Folders.

Reviewing the Summary

In the summary page, review the Item Folders you selected. Click Back to make any changes or click Finish to finish creating the Business Area.

After the Business Area is created, you can locate it on the Projects Navigator under the Business Areas node with references to the selected Item Folders stored in it.

To make changes to your Business Area definitions after you create them, use the Edit Business Area dialog box. For details, see "Editing a Business Area".

Using the Graphical Navigator

Alternatively, from the Graphical Navigator you can use the main menu or the canvas to create a business area.

Using the Menu

To create a business area using the menu, click anywhere on the Graphical Navigator. The main menu on the toolbar changes dynamically. From the main menu, select Graph, Add, Oracle Discoverer, Business Area. The Add a New or Existing Business Area dialog box is displayed. Select Create a new Business Area and specify the name of the business area and the module to which it belongs. Click OK. The newly created business area is available on the Project Navigator. Double-click the business area to open the editors for the business area. See "Editing a Business Area" for details of the editors.

Using the Canvas

To create a business area from the Graphical Navigator, right-click a blank area on the editor canvas and select Add, Oracle Discoverer, Business Area. The Add a New or Existing Business Area dialog box is displayed. Select Create a new Business Area and specify the name of the business area and the module to which it belongs. Click OK. The newly created business area is now available on the Project Navigator. Double-click the business area to open the editors for the business area. Using the Source editor, move item folders from the Available list to the Selected list. On the Contents editor, you can view existing item folders and add new ones to the business area. See "Editing a Business Area" for details of the editors.

Editing a Business Area

Oracle Warehouse Builder enables you to edit the definitions for a Business Area using the Edit Business Area dialog box.

To edit a Business Area:

  1. From the Projects Navigator, expand the Business Area node.

  2. Right-click a Business Area name and select Open.

    Oracle Warehouse Builder opens the Edit Business Area dialog box containing the following editors: Name, Source, and Contents:

Name Editor

The Name editor enables you to edit the name and description of a Business Area.

Source Editor

The source editor displays the source of those Item Folders that have been included in the Business Area. You can add new item folders to the Business Area or remove existing ones using this editor.

Contents Editor

The contents editor enables you to add item folders to a Business Area. Right-click anywhere on the editor and select Add, Item Folder. The Add a New or Existing Item Folder dialog box is displayed. Follow the steps listed in "Steps to Create an Item Folder". You can also add an item folder by dragging and dropping the item folder from the Projects Navigator into the Contents editor. This creates a shortcut to the item folder. You can double-click the item folder to access it directly from the Contents editor.

Creating a Drill Path

Oracle Warehouse Builder enables you to create a Drill Path to deploy to a Discoverer EUL. Drill Paths define a hierarchy relationship between the items in your Oracle Discoverer module. For example, Region, Sub-region, Country, and State. Oracle Warehouse Builder creates these drill paths for derived dimensions. You can also create your own customized drill path definitions if you are familiar with your data.

To create a Drill Path:

  1. Expand the Oracle Discoverer module.

  2. Right-click Drill Paths and select New Drill Path.

    Oracle Warehouse Builder opens the Create Drill Path Wizard.

  3. Follow the wizard steps by clicking Next.

Naming the Drill Path

In the Name and Description page, enter a name and optional description for the Drill Path.

Specifying Drill Levels

Use the Drill Levels page to define a drill level and specify the Item Folder it references. Optionally, you can provide a description for the Drill Levels. To define drill levels, click a row and provide the following information:

  • Drill Level: Enter a name for the drill level.

  • Item Folder: From the field, select the Item Folder it references.

  • Description: Provide an optional description for the drill level.

When you select a referencing Item Folder for the Drill Level, the wizard lists the available Items within that Item Folder under the Drill Level Items field at the bottom.

In this field, you can specify one or more items to act as drill items. Select the Use as Drill Item option for each Item you want to include as a drill item in the level.

Figure 9-2 displays the Drill Levels page of the Create Drill Path Wizard.

Figure 9-2 Creating Drill Levels

Description of Figure 9-2 follows
Description of "Figure 9-2 Creating Drill Levels"

Specifying the Join

If there are multiple join paths between the Item Folders referenced by the drill levels, then the Join Selection page is displayed. The list displays the existing joins between the selected Item Folder. Select the join to use for the drill path.

Reviewing the Summary

In the summary page, review the drill levels you are creating. Click Back to make any changes or click Finish to create the drill path.

You can locate the drill path on the Projects Navigator under your Oracle Discoverer module. Oracle Warehouse Builder enables you to edit a drill path using the Edit Drill Path dialog box.

Editing a Drill Path

Oracle Warehouse Builder enables you to edit drill paths using the Edit Drill Path dialog box.

To edit a drill path:

  1. From the Projects Navigator, expand the Drill Paths node.

  2. Right-click the Drill Path and select Open.

    Oracle Warehouse Builder displays the Name and Levels editors.

Editing the Drill Path Name

The Name editor enables you to edit the name and the description of the drill path.

Reviewing the Drill Levels in the Drill Path

Use the Levels editor to edit the drill levels that you defined. The Drill Levels section lists the drill levels along with the item folders that they reference. The Item Folder column displays the item folder that a drill path references. You can modify this by selecting the new item folder from the list.

The Drill Level Items section displays the items that act as drill items. You can modify this list by selecting more items that act as drill items.

You use the Structure panel to manipulate hierarchies. For example drill levels can be moved up in the same subtree, moved out of the current tree, or moved to the root level. However, multiple roots for Discoverer modules are not enabled and subsequently fail validation. You can also remove a level. In this case, sub levels of deleted levels move up to the root level.

Creating Lists of Values

In Discoverer, Lists of Values (LOVs) represents a set of valid values for an item. These are the values in the database column on which the item is based. LOVs enable end users to easily set conditions and parameter values for reports. An example of an LOV can be names of different countries that a user can pick from a list to view a report on the quantities of a product sold in four specific countries.

You can create lists of values for Item Folders using the Create List of Values Wizard as described below.

To create a List of Values:

  1. Expand the Oracle Discoverer module.

  2. Right-click Lists of Values and select New List of Values.

    Oracle Warehouse Builder opens the Create List of Values Wizard.

  3. Follow the wizard steps by clicking Next.

Naming the List of Values

In the Name and Description page, enter a name and optional description for this list of values. Select the Set as Drill to Detail box if you also want to set this as a Drill to Detail. When you deploy these definitions to Discoverer, an Item Class that you can use both as a List of Values and as a Drill to Detail is created.

Defining Items in a List of Values

The Defining Items page enables you to select the item that generates your LOV in Discoverer. This page displays all the Items available in your Discoverer module. Expand the nodes to select an item and click Next.

Referencing Items in a List of Values

The Referencing Item page enables you to associate your LOV with different items. The Available Items column displays all the Items available in your Discoverer module. Expand the nodes to select the items that references your list of values. Use the right arrow to move your selections to the Selected Items column and click Next.

Reviewing the Summary

In the summary page, review the defining and referencing items selected for the LOV. Click Back to make any changes or click Finish to finish creating the LOV.

You can locate the LOV on the Projects Navigator in the Oracle Discoverer module under the Lists of Values node. Oracle Warehouse Builder enables you to edit the name, description, and defining and referencing items associated with an LOV using the Edit List of Values dialog box.

Editing Lists of Values

Oracle Warehouse Builder enables you to edit a list of values using the Edit List of Values dialog box.

To edit a list of values:

  1. From the Projects Navigator, expand the List of Values node.

  2. Right-click the List of Values and select Open.

    Oracle Warehouse Builder displays the Edit List of Values dialog box, where you can edit the following: Name, Defining Item, Referencing Items, and Options.

Editing the Name

Use the Name editor to edit the name and description of the list of values.

Editing the Defining Items

Use the Defining Item editor to edit the item that generates the list of values in Discoverer. The item that is the defining item is highlighted. To edit this and specify that another item is necessary to generate the LOV, select the new item.

Editing the Referencing Items

Use the Referencing Items editor to edit the items that reference the list of values. The Selected column lists the items that the list of values references. To add more items to which the list of values references, select the item in the Available column and use the right arrow to move it to the Selected column. To remove items that the list of values currently references, select the item from the Selected column and use the left arrow to move it to the Available column.

Editing the Options

Use the Advanced editor to specify advanced options for the list of values. The advanced options are as follows:

  • Retrieve Values in groups of: Use this option to specify the number of values that are retrieved in group. The default value is 100 which means that the values are retrieved in groups of 100.

  • Sort the values and remove duplicates: Select this option to remove duplicate values from the list of values and to order the values. This ensures that the LOV always shows unique, ordered values.

  • Show values in "Select Items" page of Worksheet Wizard: Select this option to enable users to expand the List of Values when selecting items to include in a query.

  • Require user to always search for values: Select this option to display the Search dialog box every time the List of Values is expanded.

  • Cache List of Values during each connection: Select this option to store the list of values when the List of Values is expanded for the first time. This improves performance because otherwise, every time the List of Values is expanded, the values are fetched from the database.

Creating Alternative Sort Orders

In Discoverer, alternate sorts enable end users to display values in a nonstandard sequence.For example, by default the values of the Description item are sorted alphabetically. To sort the description according to the values of the Product Key item, you must define an alternate sort item and link the two items. One item defines the sort order and the other defines the item to be sorted.

Define how you want to order the information in your Discoverer EUL using the Create Alternative Sort Order Wizard.

To create an Alternative Sort:

  1. Expand the Oracle Discoverer module.

  2. Right-click Alternative Sort Orders and select New Alternative Sort Order.

    Oracle Warehouse Builder opens the Create Alternative Sort Order Wizard.

  3. Follow the wizard steps by clicking Next.

Naming the Alternative Sort Order

In the Name and Description page, enter a name and optional description for the alternative sort order.

Select the Set as Drill to Detail box if you also want to set this as a Drill to Detail. When you deploy these definitions to Discoverer, an Item Class that can be used both as an Alternative Sort Order and as a Drill to Detail is created.

Defining Item for the Alternative Sort Order

The Defining Item page enables you to select the Item that contains the values to be sorted. Expand the nodes to select an item and click Next.

Defining Order Item for the Alternative Sort Order

Use the Defining Order Item page to select an Item, in the same Item Folder, that defines the order in which the values of the Item you selected on the Defining Item page are displayed. Expand the nodes to select the item and click Next.

Referencing Items for the Alternative Sort Order

The Referencing Items page enables you to associate your Alternative Sort Order with different items. The Available column lists all the Items in the Discoverer module. Expand the nodes to select the items that references your Alternative Sort Order. Use the right arrow to move your selections to the Selected column and click Next.

Referencing Selection Panel for the Alternative Sort Order

This panel enables you to shuttle across an item that references an item class. You can either change the reference or decide not to shuttle the item across.

Reviewing the Summary

In the summary page, review the alternative sort order definition. Click Back if to make any changes or click Finish to finish creating the alternative sort order.

You can locate the alternative sort order on the Projects Navigator in the Oracle Discoverer module under the Alternative Sort Order node. Oracle Warehouse Builder enables you to edit the name, description, and the defining and referencing items associated with an alternative sort order using the Edit dialog box.

Editing Alternative Sort Orders

The Edit Alternative Sort Order dialog box enables you to edit an alternative sort order.

To edit an alternative sort order:

  1. Expand the Alternative Sort Order node in the Projects Navigator.

  2. Right-click the Alternative Sort Order and select Open.

    The Edit Alternative Sort Order dialog box containing the following tabs is displayed: Name, Defining Item, Defining Order Item, Referencing Items, and Options.

Editing the Alternative Sort Order Name

Use the Name tab to edit the name and description of the alternative sort order.

Editing the Defining Item

Use the Defining Item tab to edit the item that contains the values to be sorted. This editor displays the Item that currently defines the alternative sort order highlighted. To change this selection, click the item that you now want to use to define the alterative sort order.

Editing the Defining Order Item

The Defining Order Item tab displays the Item Folder with the item that currently defines the order in which the values of the Item selected on the Defining Item editor are displayed. You can change this selection by clicking a new item from the tree.

Editing the Referencing Items

The Referencing Items tab lists the items that references your Alternative Sort Order in the Selected column. To add more items to this list, select the item in the Available column and use the right arrow to move the item to the Selected column. To remove an item that is selected, move the item from the Selected column to the Available column using the left arrow.

Editing the Options

Use the Options tab to specify advanced options for the alternative sort order. The options you can set are as follows:

  • Retrieve values in groups of: Use this option to specify the number of values that are retrieved in group. The default value is 100 which means that the values are retrieved in groups of 100.

  • Sort the values and remove duplicates: Select this option to remove duplicate values from the alternative sort order and to order the values. This ensures that the alternative sort order always shows unique, ordered values.

  • Show values in "Select Items" page of the Worksheet Wizard: Select this option to enable users to expand the alternative sort order when selecting items to include in a query.

  • Require user to always search for values: Select this option to display the Search dialog box every time the Alternative Sort Order is expanded.

  • Cache list of values during each connection: Select this option to store the Alternative Sort Order when it is expanded for the first time. This improves performance because otherwise, every time the Alternative Sort Order is expanded, the values are fetched from the database.

Creating Drills to Detail

In Discoverer, drills to detail enable you to analyze your data thoroughly by navigating through your data and performing drill down operations to obtain detailed information. When you define drills to detail, you define relationships between items. These drills enable you to interactively drill up or down through your data to see a different level of detail. For example, you can move from actuals to budgets for the same department, then look at the department employee details, then drill down to their salary and training histories, then drill to their job grades structure, and so on.

You can define a drill to detail using the Create Drill to Detail dialog box.

To create a Drill to Detail:

  1. Expand the Oracle Discoverer module.

  2. Right-click Drills to Detail and select New Drill to Detail.

    Oracle Warehouse Builder opens the Create Drill to Detail dialog box.

Create Drill to Detail Dialog Box

Name: Enter a name for the drill to detail definition.

Description: Provide an optional description for the drill to detail.

The Available column at the bottom of the dialog box lists the Item Folders in the Oracle Discoverer module. Select a referencing item from this set and use the right arrow to move it to the Selected column.

Editing Drills to Detail

Use the Edit Drill to Detail dialog box to edit a Drills to Detail.

To edit a Drills to Detail:

  1. Expand the Drills to Detail node in the Projects Navigator.

  2. Right-click the name of the Drill to Detail and select Open.

    The Edit Drill to Detail dialog box is displayed. The contents of this dialog box are the same as the Create Drill to Detail dialog box. In addition to modifying the name and description of the drill to detail, you can edit the referencing items. for more details on the contents of the Drill to Detail dialog box, see "Create Drill to Detail Dialog Box".

Creating Registered Functions

In Discoverer, you can use custom PL/SQL functions to perform operations or calculations on values in an Item. To access these functions in Discoverer, the user-defined functions are registered in the EUL. To use any of those registered user-defined functions in Discoverer, you must include that information in your object definitions.

You can define a registered function using the Create Registered Function Wizard as described below.

To create a Registered Function:

  1. Expand the Oracle Discoverer module.

  2. Right-click Registered Function and select New Registered Function.

    Oracle Warehouse Builder opens the Create Registered Function Wizard.

  3. Follow the wizard steps using the guidelines below.

Naming the Registered Function

In the Name and Description page, enter a name and optional description for the registered function.

From the Select the return type of the function list, select a return type for the function. Select Available to User to indicate if a Discoverer end-user can use this registered function in calculations.

Specifying the Function Parameters

Specify the function parameters by clicking on a row and entering a name for the parameter. From the Data Type list, select the data type for the parameter. Use the Description field to enter an optional description.

Reviewing the Summary

In the Summary page, review the registered function definition. Click Back to make any changes or click Finish to finish creating the registered function.

You can locate the registered function on the Projects Navigator in the Oracle Discoverer module under the Registered Functions node. Oracle Warehouse Builder enables you to edit the name, description, and parameters of the registered function using the Edit dialog box.

Editing Registered Functions

Use the Edit Registered Function dialog box to edit a registered function.

To edit a registered function:

  1. Expand the Registered Functions node in the Projects Navigator.

  2. Right-click the registered function and select Open.

    The Edit Registered Function dialog box containing the following tabs is displayed: Name and Parameters.

Renaming a Registered Function

Use the Name tab to edit the name and the description of the registered function.

Modifying the Parameters of a Registered Function

Use the Parameters tab to edit the parameters of the registered function. You can edit the name, type, and description of a parameter. Add new parameters by clicking on an empty row and specifying the name of the parameter and its data type. You can move the parameters using the arrow keys.To delete a parameter, right-click the gray cell (which displays the number) to the left of the parameter name and select Delete.

Configuring Discoverer Objects

During the design phase, you create definitions for the BI objects. After you design objects, you can assign physical properties to these design objects by setting configuration parameters.

To configure a BI object, right-click the object in the Projects Navigator and select Configure. The Configuration Properties dialog box is displayed. Click the object name on the left side of this dialog box to display the configuration parameters on the right.

All BI objects have a configuration parameter called Deployable. Select Deployable to generate scripts and deploy the business object. Oracle Warehouse Builder only generates scripts for objects marked deployable.

The following sections describe additional configuration parameters for different types of BI objects.

Configuration Parameters for Oracle Discoverer modules

You can set the following configuration parameters for an Oracle Discoverer module.

Object Matching: Indicates how object matching during deployment to Discoverer should be performed. When you deploy business definitions, an .eex file is first created and then this file is imported into the Discoverer EUL.

The options you can select for Object Matching are By Identifier or By Name. Oracle Warehouse Builder uses this setting to check if an object similar to one that is being deployed exists in the EUL. If a similar object is found, in Create mode the objects are not deployed and in Upgrade mode the objects are refreshed.

MLS Deployment Language: Represents the language used for deployment to Discoverer.

Location: Represents the Discoverer location to which the Oracle Discoverer module is deployed.

Configuration Parameters for Item Folders

You can set the following configuration parameters for item folders.

Optimizer Hint: Represents the optimizer hint to be added when the item folder is used in a query. Click the Ellipsis button on this field to specify the optimizer hint.

Location: Represents the location of the database object that the item folder references.

Configuration Parameters for Registered Functions

For registered functions, you can set the following configuration parameters.

Package: Represents the name of the package that contains the registered function.

Location: Represents the location of the database object that the registered function references.

Deploying Business Definitions to Oracle BI Discoverer

After you create your business definitions, you can deploy them to Oracle BI Discoverer. The method used to deploy business definitions depends on the version of Oracle BI Discoverer to which the business definitions are being deployed and the licensing option used.


Note:

The method of deploying business definitions depends on the Oracle Warehouse Builder licensing option and the version of Oracle BI Discoverer to which you want to deploy business definitions.

You can create a direct or indirect connection to the Oracle BI Discoverer EUL. With a direct connection, you must specify the location of the Oracle BI Discoverer and the business definitions are directly deployed to that location. With an indirect connection, you must specify an .eex file to store the business definition. You must also specify the mode of transferring the .eex to the Discoverer EUL. See "Defining Discoverer Locations" for information about providing these connection details.

Table 9-1 summarizes the combinations possible when you deploy business definitions to Oracle BI Discoverer using the different licensing options.

Table 9-1 Different Methods of Deploying Business Definitions

Discoverer VersionOracle Warehouse Builder Core FunctionalityOracle Warehouse Builder Enterprise ETL Option

Versions Lower than Oracle BI Discoverer 10g Release 2

Use Indirect mode of connection. Deploy an .eex file, and import the file into Oracle Discoverer.

See "Indirectly Deploying Business Definitions to Oracle BI Discoverer".

Use Indirect mode of connection. Deploy an .eex file and import the file into Oracle BI Discoverer.

See "Deploying Business Definitions to Earlier Versions of Oracle BI Discoverer".

Oracle BI Discoverer 10g Release 2 and later

Use Indirect mode of connection. Deploy the .eex file and import it into Oracle BI Discoverer.

See "Indirectly Deploying Business Definitions to Oracle BI Discoverer".

Use the Direct mode of connection. Use the Control Center to directly deploy to Oracle BI Discoverer.

Note however that you can make a direct deployment to Oracle BI Discoverer only if you installed a standalone version of Oracle Warehouse Builder 11g Release 2 (11.2).

If you are using Oracle Warehouse Builder directly from Oracle Database 11g, then you can use only the indirect mode of connection.

See Oracle Warehouse Builder Installation and Administration Guide for more information about the different installation options.

See "Directly Deploying Business Definitions to Oracle BI Discoverer".


Directly Deploying Business Definitions to Oracle BI Discoverer

You can directly deploy business definitions to Oracle BI Discoverer, just like you deploy other data objects, using the Control Center or Projects Navigator. See Table 9-1 for information about the scenarios when you can directly deploy to Oracle BI Discoverer.

The business definitions are deployed to the Discoverer location associated with the Business Definition module that contains these business definitions. Before you deploy business definitions, ensure that a valid Discoverer location is associated with the Business Definition module. For information about how to associate a Discoverer location with a Business Definition module, see "Setting the Connection Information".

When you deploy business definitions directly to Oracle BI Discoverer 10g Release 2 and later, the following steps are performed:

  1. An .eex file that contains the definitions of the business definitions is created.

  2. A connection is established to the EUL specified in the Discoverer location.


    Note:

    If the EUL is in a different database from your object definitions, then a database link is created.

  3. The .eex file is imported into Oracle BI Discoverer.

    During the import, new business definitions are appended on top of the existing definitions. You must validate the EUL and remove redundant definitions. For example, if you deployed an item folder with four items. Subsequently, you deleted one item from the item folder. When you redeploy the item folder, it still contains four items. This is because while new definitions are appended, old definitions are not removed.

Deploying Business Definitions to Earlier Versions of Oracle BI Discoverer

You cannot directly deploy business definitions to versions of Oracle BI Discoverer earlier than 10g Release 2. However, you can use the indirect mode of connection to deploy business definitions. See Table 9-1 for more information about the different scenarios when you can make an indirect deployment to Oracle BI Discoverer.

While creating the location of the business definition module, use the Indirect mode, and specify an .eex file to store the details of the business definition. When you deploy the business definition, the relevant details are captured in the .eex file. You can connect to the EUL using Oracle BI Discoverer and import this .eex file.

Indirectly Deploying Business Definitions to Oracle BI Discoverer

When you use the core functionality of Oracle Warehouse Builder, you cannot directly deploy business definitions to Oracle BI Discoverer. Instead you must use the indirect method of deployment to deploy the .eex file and then manually import it from Oracle BI Discoverer. You can specify the indirect method of deployment by selecting this option in the connection information page while creating a Discoverer location.


Note:

Indirect deployment takes place through the run time service running under a user in the database. This database user must have privileges to write to the destination.

Accessing BI Objects Using Oracle BI Discoverer

Once you successfully deploy the BI objects that you create, these objects are available in Oracle BI Discoverer. You can use these objects to perform analysis on your warehouse data.

Using Business Definitions in Oracle BI Discoverer

After you deploy the business definitions that you create, these objects are available in the EUL to which they were deployed. Log in to Oracle BI Discoverer Administrator using the user name that you used to deploy the business definitions.

Figure 9-3 displays the Discoverer Administrator interface with the business definitions that you deployed.

Figure 9-3 Discoverer Administrator Showing BI Objects

Description of Figure 9-3 follows
Description of "Figure 9-3 Discoverer Administrator Showing BI Objects"

You can now use Oracle BI Discoverer to create reports based on the BI objects that you deployed.

Creating Business Definitions for OBIEE

You can create business definitions from various database objects and integrate these business definitions with OBIEE. The various database objects that can be derived include tables, dimensions, cubes, views, and MVs. These objects can be derived from Oracle and other non-Oracle databases. The data exported as business definitions into OBIEE facilitates data analysis and report generation, which is then used in decision making by businesses.

Creating an Oracle Business Intelligence Module

You must create an Oracle Business Intelligence (OBI) module to store business definitions before you can deploy them to OBIEE.

To create an Oracle Business Intelligence module:

  1. In the Projects Navigator, under Business Intelligence, right-click Oracle Business Intelligence and select New Oracle Business Intelligence.

    The Create Module wizard is displayed.

  2. In the Name and Description page, provide a name and description (optional) for the module. Also specify the type of module.

  3. In the Connection Information page, select a location from the Location list. To edit the connection information for the location, click Edit. The Edit Oracle BI location dialog box is displayed. See "Defining Oracle Business Intelligence Location" for details of connection information to be provided.

Once you complete the steps in the wizard, the new Oracle Business Intelligence module is available under the Business Intelligence node. The module consists of the following objects:

  • Logical Tables

  • Catalog Folders

  • Dimension Drill Paths

Defining Oracle Business Intelligence Location

The OBI module location refers to a UDML file on the OBIEE server. At the time of specifying the location, specify a UDML file in the OBIEE server as the location. You must also specify the mode of file transfer from the local system to the OBIEE server. Provide the following details in the Edit Oracle BI Location dialog box:

  • Name: Provide a location name.

  • Description: Provide an optional description.

  • Transport Type: Select from FILE, FTP, HTTP, and HTTPS.

  • Version: Select the OBIEE version.

Depending on the mode of file transfer, you must provide the following details:

FILE

  • Root Path: Directory of the UDML file.

  • File Name: The name of the UDML file.

FTP

  • Host Name: The system credentials where the OBIEE server resides.

  • Host Login Port: Login port number, which is initially set to 0. You must change this according to your local configuration.

  • Transfer Format: Select from ASCII and IMAGE.

  • Host Login User: User name to run FTP.

  • Host Login Password: User password to run the FTP command.

  • File Name: The name of the UDML file along with the complete path.

HTTP and HTTPS

  • Host Name: The system credentials where the OBIEE server resides.

  • Host Login Port: Login port number, which is initially set to 0. You must change this according to your local configuration.

  • Host Login User: User name for the HTTP/HTTPS command.

  • Host Login Password: User password for the HTTP/HTTPS command.

  • File Name: The name of the UDML file along with the complete path.

About Logical Tables

Logical Tables are equivalent to objects in OBIEE that map to database tables, external tables, or views. They represent a result set of data, similar to a database view. Logical Tables also store information just like tables. A logical table contains items that map to columns in a table. Each item has a name and contains specific type of information. For example, the logical table containing details about employees may include items such as employee name, start date, and department.

Oracle Warehouse Builder creates Logical Tables when you derive business definitions from warehouse design objects in the database modules, as described in "Deriving BI Objects". You can also manually create a customized Logical Table using the Create Logical Table Wizard or the Graphical Navigator. The Graphical Editor is used to edit Logical Tables.

The following sections contain more information related to Logical Tables:

Editing a Logical Table

After you derive your design object definitions, a Logical Table is created as part of the derived business definitions.

Oracle Warehouse Builder provides the document editors that enable you to edit the name and description of a Logical Table, view its source design objects, edit the Items it contains, and specify or edit any joins or conditions.

To edit a Logical Table:

  1. From the Projects Navigator, expand the OBI module node, then expand the Logical Tables node.

  2. Right-click the Logical Table and select Open. Or double-click the Logical Table. This displays the Logical Table editors.

  3. Click each of the editors to edit the Logical Table using the guidelines below.

Name Editor

The Name editor enables you to edit the name and description for the Logical Table.

Source Items Editor

The Source Items editor displays the available source items for the Logical Table.

The Available column displays database tables in the current project and logical tables in the OBI module.

When you are editing an existing logical table, the Selected column displays the source items that were selected at the time of creating the logical table. To select different items as the source, use the left arrow to return the items from the Selected column to the Available column. Then use the right arrow to move the new source item from the Available column to the Selected column.

Your selected objects can contain items from multiple Logical Tables.

To change the selected items, then use the left arrow to return the previously selected items. Now select an initial folder item from any of the available Logical Tables within the same OBI module. You can then select additional folder items with the previously selected item.

Adding Items Through the Source Item

To add an item through the Source Items editor:

  1. Double-click the Logical Table in the Projects Navigator. The logical table editor is displayed. Click Source Items.

    The Selected section displays the items that are currently included in the logical table. If you drill down the Available section, it displays the items that can be added.

  2. Select and move the required items from the Available to the Selected section.

Deleting Items

To delete an item using the Source Items editor, select and move the item from the Selected section to the Available section.

Items Editor

Items Editor displays the details and properties of all Items in a Logical Table. You can view, create, and edit the following for an Item:

Item Details
  • Name: Represents the name of an Item. To change the current Item, double-click the name and retype the new name.

  • Description: Optionally enter a description for this Item.

If you select an item name, the property inspector displays the following properties for that item:

  • Business Name: The business name of the item.

  • Created By: Created by.

  • Creation Time: Time of creation.

  • Database Column: The database column that the item maps to.

  • Datatype: The data type of the item.

  • Default Aggregate: The aggregation function for the items.

  • Description: Description of the item.

  • Formula: This is the expression for a calculated item.

  • Last Update Time: Last updated time.

  • Physical Name: Physical name of the item.

  • Updated By: Updated by.

  • Visible: Select this option if the item is to be made visible to OBIEE Report Builder.

Adding Items Through Items Editor

To add an item through Items Editor:

  1. Double-click the Logical Table in the Projects Navigator. The logical table editor is displayed. Click Items to open the Item Details section.

  2. In the Item Details, add items by entering the names of the items.

  3. Click Composition to open the composition editor.

    Use the composition editor to define the referencing items or use the formula property to enter the expression for this item.

Joins Editor

Joins enable you to associate data between two logical tables. During data analysis, you must retrieve information that resides in multiple logical tables. Joins enable end users to perform business analysis and run reports across multiple logical tables. After you create joins between logical tables and deploy them to your OBIEE Repository, they are available for analysis in OBIEE Answers or Dashboards.

The Joins editor displays the relationships or joins between two logical tables. You can define new joins by clicking on a new row and providing the required information. You can delete a join by right-clicking the box on the left of each join row and selecting Delete.

Figure 9-4 shows the contents of the Joins editor for the logical table EMP.

Figure 9-4 Creating and Editing Joins

Description of Figure 9-4 follows
Description of "Figure 9-4 Creating and Editing Joins"

On the Joins page, click a row in the Joins field. Provide the following information:

  • Join Name: Enter a name for the join you are creating.

  • Master Logical Table: Select the Logical Table that is the Master. In the above example, you select the logical table DEPARTMENTS as your master. This implies that you select an item from the DEPARTMENT Logical Table to join with the two items you selected from the Logical Table EMP.

  • Detail always has Master: Select this box to indicate if your detail Logical Table always have this master.

  • One to one: Select this box to indicate a one-to-one relationship between the two Logical Tables.

  • Outer join: Indicate from the list whether there is an outer join in this relationship and its type.

  • Description: Optionally describe the join.

For each join, you can specify the Join Components by clicking in the field below and providing the following information:

  • Local Item: This list is populated with the Items contained in the current Item Folder. Select an Item from this list.

  • Operator: Select the relationship between the Local Item you selected and the Remote Item you select from the Master Logical Table.

  • Remote Item: Select an Item from your Master Logical Table to join with the Local Item from your local Logical Table.

Also see "Adding Joins Using the Graphical Navigator" for an alternate method to add joins.

Properties of a Join

Double-click a Join name to view the following properties of the join:

  • Business Name: The business name of the item.

  • Created By: Created by.

  • Creation Time: Time of creation.

  • Description: Description provided at the time of creation.

  • External Foreign Key: If the join was derived from a foreign key, then that foreign key is listed here.

  • Last Update Time: Last updated time.

  • Physical Name: Physical name of the join.

  • Updated By: Updated by.

Composition Editor

The Composition editor enables you to view the components of a Logical Table. It displays the Logical Table and the objects from which it is referencing.

Adding Items Through the Composition Editor

To add an item through the Composition editor:

  1. Double-click the Logical Table in the Projects Navigator. The logical table editor is displayed. Click Composition.

    The editor canvas displays the logical table and the source objects from which the logical table was created. If no source object was selected while creating the logical table, then the canvas displays only the logical table.

  2. Right-click anywhere on the canvas, and select Add, and then select the type of object (Table, View, Materialized View, Logical Table).

  3. The Add a New or Existing Object dialog box is displayed. Select the object from which you want to add the items and click OK.

    The selected object is now visible on the canvas.

  4. Map the required columns or items from the object to the logical table.

Deleting Items

To delete an item using the Composition editor, right-click the item and select Delete.

Creating a Logical Table

When you derive intelligence objects, Logical Tables are created as part of the derived business definitions. However, to define a customized Logical Table, you can create a Logical Table using the Create Logical Table Wizard.

Each logical table contains items that you can delete or edit, as described in "Editing a Logical Table".

Using the Create Logical Table Wizard

To create a Logical Table using the Create Logical Table Wizard:

  1. Expand the OBI module in which you want to create a logical table.

  2. Right-click Logical Tables and select New Logical Table.

    Oracle Warehouse Builder opens the Create Logical Table Wizard.

  3. Follow the wizard steps by clicking Next.

Naming and Describing the Logical Table

In the Name and Description page, enter a name and optional description for the Logical Table.

Selecting Source Items

You can select from tables, views, or materialized views from any of the database modules, to be referenced by the Logical Table. If you select multiple tables, then these must be joined by a foreign key. Expand the selected object and proceed to select columns within the selected object, to your selected items. You can multi-select these referenced items by pressing the Ctrl key and using the right arrow to move them to the list of selected Items.

You can also select from other Logical tables within the same OBI module. You can select the initial items from Logical Table A within an OBI module. You can then select additional folder items from another Item Folder B within the same module.

Selecting the Foreign Key

If there are multiple foreign keys between the tables selected as the item sources, the Foreign Key Selection page is displayed. The list on this page displays all the joins between the tables. Select the join to be used for the table being created.

Reviewing the Summary

In the Summary page, review the details you have provided for the Logical Table including the items to be included in the table. Click Back to make any changes or click Finish to create the Logical Table.

You can locate the Logical Table on the Projects Navigator under the Logical Tables node in your OBI module. This Logical Table contains all the selected items. You can edit the Logical Table properties, create joins, and edit item properties. The Graphical Navigator can also be used to edit a Logical Table.

After creating the Logical Table, you can use the following editors:

For more information about how you specify the details on each editor, refer to the description of these editors in the "Editing a Logical Table".

Using the Graphical Navigator to Create Logical Tables

An alternate way of creating logical tables is to use the Graphical Navigator. You can use the editor menu or the editor canvas of the Graphical Navigator to create a logical table.

Using the Menu

To create a logical table using the menu, click anywhere on the Graphical Navigator. The main menu on the toolbar changes dynamically. From the main menu, select Graph, Add, Oracle Business Intelligence, Logical Table. The Add a New or Existing Logical Table dialog box is displayed. Follow the steps listed in "Steps to Create a Logical Table".

Using the Canvas

To create a Logical Table using the canvas, drag and drop a Logical Table icon from the Component Palette onto the canvas.

Or right-click a blank area on the canvas and select Add, Oracle Business Intelligence, Logical Table. The Add a New or Existing Logical Table dialog box is displayed. Follow the steps listed in "Steps to Create a Logical Table".

Steps to Create a Logical Table

Use the following steps to create a Logical Table:

  1. Select the Create a New Logical Table option.

  2. In the New Logical Table Name field, specify a name for the Logical Table.

  3. In the OBI Module list, select the name of the OBI module to which the Logical Table should belong.

  4. Click OK.

The Logical Table is added to the editor canvas. Double-click the logical table to open the editors for the logical table. For more information about the contents of these editors, see "Editing a Logical Table".

Adding Items to a Logical Table

After you add a Logical Table to the Graphical Navigator, you can add individual items to it. On the Graphical Navigator, right-click Items and select Add an Item. On the Add Item dialog box provide a name for the new item.

Properties of a Logical Table

At all times, for any Logical Table, the property inspector displays a list of properties for that Logical Table. You can configure the following:

  • Bridge Table: Select this option to create a bridge table. A bridge table is an intermediate table between a fact table and a dimension table, and is used to resolve a many-to-many association.

  • Distinct Values: Select this option if you want only distinct values to be selected from the source physical table.

  • Visible: Select this option to make the logical visible to OBIEE users.

Adding Joins Using the Graphical Navigator

An alternate way to create a Join is to use the Graphical Navigator. To add a Join:

  1. Ensure that the logical table is available on the Graphical Navigator.

  2. Right-click Joins, and select Add a Join.

    The Add Join dialog box is displayed.

  3. Specify a name for the join, and click OK.

  4. Open the Joins editor for the logical table and specify the conditions for the join. See "Joins Editor" for more details.

Using the Graphical Navigator, you can also create a join between items in two Logical Tables. Ensure that the Logical Tables are visible on the Graphical Navigator. To create a join between two Items, drag an Item from one Logical Table to the required Item in the other Logical Table. Similarly, you can also drag an Item from the Items node to the Joins node to create a local item. You can also drag an Item to the Joins node of another Item folder to create a remote item.

Synchronizing Logical Tables

Logical Tables are defined based on existing tables, views, or materialized views. When the definition of the underlying object changes, you can update the Logical Table definition by synchronizing it with the object on which it is based.

To synchronize a Logical Table:

  1. Expand the Logical Tables node in the Projects Navigator.

  2. Right-click the Logical Table and select Open.

    The editors for the Logical Table are displayed.

  3. Click the Composition editor to view the Logical Table.

  4. On the canvas, right-click the Logical Table and select Synchronize.

    The Synchronize Item Folder dialog box is displayed.

  5. Review the details displayed on this dialog box and click OK.

    Oracle Warehouse Builder synchronizes the Logical Table with the data object on which the item is based.

Using the Synchronize Logical Table Dialog Box

The Synchronize Logical Table dialog box enables you to update the Logical Table with any changes made to the data types used in the database object on which the Logical Table is based. This dialog box displays the details of the changes to be made to the Logical Table.

The Synchronize Logical Table dialog box contains three columns: Object, Reason, and Action. The Object column lists the component in the underlying database object that has changed. The Reason column displays a brief description of the reason for the synchronization. The Action column displays the action that is taken to synchronize the Logical Table. The available actions are Update and None. If you select None for a component, no synchronization is performed for that object. Only definitions that have an Action set to Update are synchronized.

For example, the Logical Table DEPT_ITMF is derived from the DEPT table. After the Logical Table is created, you modify the DEPT table and change the data type of the column LOCATION from VARCHAR2 to NUMBER. When you synchronize the Logical Table DEPT_ITMF, the Synchronize Logical Table dialog box displays LOCATION in the Object column. The Reason column displays "Datatype mismatch". The Action column displays Update.

Click OK to perform the actions listed on the Synchronize Logical Table dialog box and update the Logical Table definition. If you do not want to perform the actions listed on this dialog box, click Cancel.

Creating a Dimension Drill Path

Oracle Warehouse Builder enables you to create a Dimension Drill Path to deploy to an OBIEE repository. Dimension Drill Paths define a hierarchy relationship between the items in your OBI module. For example, Region, Sub-region, Country, State, and so on. Oracle Warehouse Builder creates these dimension drill paths for derived dimensions. You can also create your own customized dimension drill path definitions if you are familiar with your data.

To create a Dimension Drill Path:

  1. Expand the Oracle Business Intelligence module.

  2. Right-click Dimension Drill Paths and select New Dimension Drill Path.

    Oracle Warehouse Builder opens the Create Dimension Drill Path Wizard.

  3. Follow the wizard steps by clicking Next.

Naming the Dimension Drill Path

In the Name and Description page, enter a name and optional description for the Dimension Drill Path.

Specifying Drill Levels

Use the Drill Levels page to define a drill level and specify the Logical Table it references. Optionally, you can provide a description for the Drill Levels. To define drill levels, click a row and provide the following information:

  • Drill Level: Enter a name for the drill level.

  • Logical Table: From the field, select the Logical Table it references.

  • Description: Provide an optional description for the drill level.

When you select a referencing Logical Table for the Drill Level, the wizard lists the available Items within that Logical Table under the Drill Level Items field at the bottom.

In this field, you can specify one or more items to act as drill items. Select the Use as Drill Item option for each Item you want to include as a drill item in the level. An Item can be a drill item in a single level only.

Figure 9-2 displays the Drill Levels page of the Create Dimension Drill Path Wizard.

Figure 9-5 Creating Drill Levels

Description of Figure 9-5 follows
Description of "Figure 9-5 Creating Drill Levels"

Specifying the Drill Level Key

In the Drill Level Keys section, select a Drill Level and specify a name for Drill Level Key and optionally provide a description for the key. In the Drill Level Key Items, select the Item that must used as the key.

Reviewing the Summary

In the summary page, review the drill levels you are creating. Click Back to make any changes or click Finish to create the dimension drill path.

You can locate the dimension drill path on the Projects Navigator under your OBI module. Oracle Warehouse Builder enables you to edit a dimension drill path using the Edit Dimension Drill Path dialog box.

Properties of a Dimensional Drill Path

For dimension drill paths, you can configure the following property from the Property Inspector:

Time Dimension: Select this option if it represents a time dimension.

Editing a Dimension Drill Path

Oracle Warehouse Builder enables you to edit dimension drill paths using the Edit Dimension Drill Path dialog box.

To edit a dimension drill path:

  1. From the Projects Navigator, expand the Dimension Drill Paths node.

  2. Right-click the Dimension Drill Path and select Open.

    Oracle Warehouse Builder displays the Edit Dimension Drill Path dialog box containing the following editors: Name, Levels, and Level Keys.

Editing the Dimension Drill Path Name

The Name editor enables you to edit the name and the description of the dimension drill path.

Reviewing the Drill Levels in the Dimension Drill Path

Use the Drill Levels editor to edit the drill levels that you defined. The Drill Levels section lists the drill levels along with the logical tables that they reference. The Logical Table column displays the logical table that a dimension drill path references. You can modify this by selecting the new logical table from the list.

The Drill Level Items section displays the items that act as drill items. You can modify this list by selecting more items that act as drill items. You can also move a level up in same subtree, move a level out of the current tree, move a level to the root level, copy a level out of the current tree, remove a level, remove a level cascade, and remove a level instance, for example when there are multiple instances of the level in the network.

Use the Level Keys editor to select the Drill Level, and edit the Drill Level Keys and Drill Level Key Items.

Creating a Catalog Folder

Oracle Warehouse Builder enables you to create a Catalog Folder to deploy to an OBIEE repository. Catalog folders contain references to Logical Tables and Dimension Drill Paths stored in your OBI module and are used to group information about a common subject, for example, Sales Analysis, Human Resources, or Stock Control. The OBIEE end users use these Catalog Folders as the starting point for building a query.

Catalog folders only contain references to an object and not the actual object definition. Thus, a Catalog Folder can contain a collection of unrelated Logical Tables and the same Logical Table can appear in multiple Catalog Folders. It enables you to set up multiple Catalog Folders with different levels of detail: Sales Analysis area containing one Logical Table, Sales Details area containing six Logical Tables, and a Sales Transaction area with 30 Logical Tables. When] you delete a Logical Table, the reference to it from the Catalog Folder is also deleted.

You can create a Catalog Folder using the Create Catalog Folder Wizard or from the Graphical Navigator. You can also use the editor to edit a catalog folder.

Using the Create Catalog Folder Wizard

To create a Catalog Folder using the Create Catalog Folder Wizard:

  1. Expand an OBI module.

  2. Right-click Catalog Folders and select New Catalog Folder.

    Oracle Warehouse Builder opens the Create Catalog Folder Wizard.

  3. Follow the wizard steps by clicking Next.

Naming the Catalog Folder

In the Name and Description page, enter a name and optional description for the Catalog Folder.

Selecting the Source

In the Source page, all the Logical Tables and Dimension Drill Paths available within the OBI module are displayed. You can multi-select the objects by pressing the Ctrl key and using the right arrow to move them to the list of Selected objects.

Reviewing the Summary

In the summary page, review the Logical Tables or the Dimension Drill Paths that you selected. Click Back to make any changes or click Finish to finish creating the Catalog Folder.

After the Catalog Folder is created, you can locate it on the Projects Navigator under the Catalog Folders node with references to the selected Logical Tables stored in it.

To make changes to your Catalog Folder definitions after you create them, use the Edit Catalog Folder dialog box. For details, see "Editing a Catalog Folder".

Using the Graphical Navigator

Alternatively, you can use the main menu or the canvas to create a catalog folder.

Using the Menu

To create a catalog folder using the menu:

  1. Click anywhere on the Graphical Navigator. The main menu on the toolbar changes dynamically.

  2. From the main menu, select Graph, Add, Oracle Business Intelligence, Catalog Folder.

    The Add a New or Existing Catalog Folder dialog box is displayed.

  3. Select Create a new Catalog Folder and specify the name of the catalog folder and the module to which it belongs. Click OK.

The newly created catalog folder is available on the Project Navigator. Double-click the catalog folder to open the editors for the catalog folder. See "Editing a Catalog Folder" for details of the editors.

Using the Canvas

To create a catalog folder

  1. From the Graphical Navigator, right-click a blank area on the editor canvas and select Add, Oracle Business Intelligence, Catalog Folder.

    The Add a New or Existing Catalog Folder dialog box is displayed.

  2. Select Create a new Catalog Folder and specify the name of the catalog folder and the module to which it belongs. Click OK.

The newly created catalog folder is now available on the Project Navigator. Double-click the catalog folder to open the editors for the catalog folder. See "Editing a Catalog Folder" for details of the editors.

Editing a Catalog Folder

Oracle Warehouse Builder enables you to edit the definitions for a Catalog Folder using the Edit Catalog Folder dialog box.

To edit a Catalog Folder:

  1. From the Projects Navigator, expand the Catalog Folder node.

  2. Right-click a Catalog Folder name and select Open.

    Oracle Warehouse Builder opens the Edit Catalog Folder dialog box, which contains the following editors: "Name Editor", "Source Editor", and "Contents Editor".

Name Editor

Name Editor enables you to edit the name and description of a Catalog Folder.

Source Editor

Source Editor displays the source of those Logical Tables and Dimension Drill Paths that have been included in the Catalog Folder. You can add new Logical Tables and Dimension Drill Paths to the Catalog Folder or remove existing ones using this editor.

Contents Editor

Contents Editor displays the contents of the Catalog Folder. You can add Logical Tables and Dimension Drill Paths using the Content editor. For example, to add a Logical Table, right-click anywhere on the editor and select Add, Logical Table. The Add a New or Existing Logical Table dialog box is displayed. Follow the steps listed in "Steps to Create a Logical Table". You can also add a Logical Table or a Dimension Drill Path by dragging and dropping it from the Projects Navigator into the Contents editor. This creates a shortcut to the object. You can double-click the object to access it directly from the Contents editor.

Configuring Oracle Business Intelligence Objects

During the design phase, you create definitions for the OBIEE objects. After you design objects, you can assign physical properties to these design objects by setting configuration parameters.

To configure a BI object, right-click the object in the Projects Navigator and select Configure. The Configuration Properties dialog box is displayed. Click the object name on the left side of this dialog box to display the configuration parameters on the right.

All BI objects have a configuration parameter called Deployable. Select Deployable to generate scripts and deploy the business object. Oracle Warehouse Builder only generates scripts for objects marked deployable.

The following sections describe additional configuration parameters for different types of BI objects.

Configuration Parameters for Oracle Business Intelligence Modules

You can set the following configuration parameters for an Oracle Business Intelligence module:

Location: Represents the location to which the module is deployed.

MLS Deployment Language: Represents the language used for deployment to OBIEE.

Accessing BI Objects Using OBIEE

Once you deploy objects within Oracle Business Intelligence modules, OBIEE can then use this data to generate reports. OBIEE repositories are represented in the repository data (RPD) format. Oracle Warehouse Builder cannot directly store files in the RPD format. Instead, the file is stored in the UDML format, which is later converted to the RPD format. These are the steps involved in moving data from Oracle Warehouse Builder to OBIEE:

  1. Create an OBI module and derive Oracle Warehouse Builder objects into this module.

  2. Define the location of the OBI module such that it points to a UDML file on the OBIEE server.

    When the object is deployed, the UDML file is transferred to the OBIEE server using ftp or any other method of transfer, as specified while defining the location.

  3. At the OBIEE server side, convert the UDML file to an RPD file. Navigate to the following path: OBIEE_HOME\server\Bin and run the command:

    nQUDMLExec -I x.udml -O x.rpd
    

    where x.udml is the file name specified while defining the location of the OBI module, and x.rpd is the target RPD file.

  4. The RPD file can now be accessed by the OBIEE server.

Merging Updated RPD Files

After you transfer an RPD file to the OBIEE server, there might be changes made to the OBIEE module within Oracle Warehouse Builder. Similarly changes could also be made to the RPD file at the OBIEE server side. In such scenarios, you can merge the changes made to the files and create a single updated RPD file. OBIEE provides a merge mechanism to merge an existing RPD file with a newly modified file. Let us look at the following scenarios and the possible solutions:

Example Scenario

You create an OBIEE module, for example sales, within Oracle Warehouse Builder and associate it with a location that points to the UDML file sales.udml. You then derive the warehouse definitions from a cube into this module and deploy it. On the OBIEE server, you create an RPD file from the UDML file using the following command:

nQUDMLExec –I  sales.udml –O  sales_original.rpd

The sales_original.rpd can now be used by Answers/Dashboard to generate the required reports.

Suppose you now rename the cube in Oracle Warehouse Builder. To update this change at the OBIEE server side, you must rederive the cube and redeploy the OBIEE module sales. Ensure that you select the create action for all objects. After you deploy this object, create a new repository file in OBIEE server:

nQUDMLExec –I  sales.udml –O  sales_modified.rpd

If the original file sales_original.rpd has not yet been used to generate reports, then you can overwrite this file with the newly created file sales_modified.rpd. If however, the file has been used to generate reports, then the repositories have to be merged. OBIEE provides a three-way repository merge of the following repository files:

  • Original repository (sales_original.rpd in this case)

  • The current repository (the original RPD file with modifications, if any, made at the OBIEE server side)

  • The modified repository (sales_modified.rpd in this case)

You can use the OBIEE admin tool to merge the three files into a single updated file. If no changes have been made to the original file, then the current repository equals the original repository. In such a scenario, create a copy of the original file, sales_original.rpd, and name it as sales_current.rpd. Now from the admin tool, perform the following steps:

  1. Open the current repository file sales_current.rpd.

  2. Click File/Merge.

    The Merge repositories dialog box is displayed.

  3. Select the original repository file sales_original.rpd. Also select a file to save the merged repositories.

  4. Click Merge to merge the current and original files.

  5. Now select the modified repository file sales_modified.rpd. Also select a file to save the merged repositories.

  6. Click Merge to merge the modified file.

This creates a new RPD file which contains the merges from all the three files.

Deriving BI Objects

Oracle Warehouse Builder enables you to directly derive BI objects from your data warehouse design definitions. You can derive these objects into an Oracle Discoverer module or an OBI module. When you run the Perform Derivation Wizard on a warehouse module, it generates objects for business intelligence tools such as item folders from tables and drill paths from dimension hierarchies enabling you to quickly build reports from an integrated metadata platform. For example, the Perform Derivation Wizard organizes the metadata into Item Folders and Drill Paths ready to be integrated with a Discoverer EUL.

A Discoverer module can hold only those objects that are derived from an Oracle data source. However, OBI modules can also hold objects derived from non-Oracle data sources as well.

To derive BI objects:

  1. From the Projects Navigator, select a module to derive. This indicates that you are deriving all the objects contained in that module. Alternatively, you can also choose to derive one object definition at a time. For example, you can select an individual table or dimension to derive.

  2. Right-click the name of the warehouse module or object and select Derive.

    Oracle Warehouse Builder opens the Perform Derivation Wizard.

  3. Follow the wizard steps using the guidelines below.

You can also start the Perform Derivation Wizard from the Graphical Navigator using the following steps:

  1. Drop the source object into the navigator.

  2. Right-click the source object and select Derive.

  3. Follow the wizard steps using the guidelines below.

Selecting Source Objects

The Source Objects page enables you to select additional objects for derivation. The Available column displays all the derivable objects available in your project for deployment. These objects can belong to different warehouse modules. You can also select a collection for derivation. The Oracle module or object you selected before starting the wizard displays in the Selected Objects column.

Expand the nodes in the Available column and use the right arrow to select the objects you want to derive. Select the Automatically add the Dimensions option to derive the dimension objects that are associated with the selected cube objects.

Selecting a Target for the Derived Objects

In the Target page, indicate the Oracle Discoverer module or the OBI module in which you want to store the definitions for the derived objects. For example, if you created an Oracle Discoverer module called DISCOVERER_OBJECTS, then the name of that module displays on this page. Select DISCOVERER_OBJECTS and click Next.

For Discoverer modules, you can also select a Business Area as the target. In this case, shortcuts are created to the item folders in the business areas. It is recommended that you deploy to a business area. Otherwise, when you deploy objects, the objects do not belong to any Business Area and thus is not shown to end-users of BI tools. Similarly, for OBI modules, it is recommended that you deploy to a Catalog Folder.

When you select a collection for derivation, if the target is a business area, the individual objects contained in the collection are derived. Shortcuts are created to these item folders from the business area. If the target is an Oracle Discoverer module, Oracle Warehouse Builder creates a business area with the same name as the collection, stores the objects in the collection as item folders in the Oracle Discoverer module, and creates shortcuts to these item folders from the business area. This is applicable to Catalog Folders as well, when the target is an OBI module.

Specifying Derivation Rules

In the Rules page, specify the derivation rules and parameters. Oracle Warehouse Builder loads, configures, and executes these rules to derive the BI definitions from the selected design object definitions. You can set parameters for different rule types by selecting the type of objects from the Rules list. For example, you can set global rules, rules for relational objects, rules for dimension objects, or rules for cube objects. The rules and parameters that you can set are displayed on the page.

Select Show advanced parameters to display certain advanced rules for an object. You can also set parameters for multiple rule types.

Setting Global Rules

You can specify the following parameters:

  • Preserve user changes: Select to preserve any manual changes to the display properties name and description.

  • Log level: Specify the level of detail you want to see in the message log by selecting one of the options from the list. You can choose to record only errors, warnings, information, or trace debug information.

  • Validate before derive: Select the box to validate the selected objects before deriving them.

  • Abort on error: Select the box to stop the derivation if it encounters an error.

  • Capitalize: To capitalize the names of the derived objects, select from the list based on your requirements.

  • Replace underscores with spaces: Select the box to replace the underscores in the names with spaces after derivation.

You can specify the following rule for Relational objects:

  • Bound Table Suffix: Specify a suffix for the bound tables you want to derive.

  • Default Aggregate (Oracle Discoverer only): Specify the default aggregate function to be applied to numeric measures.

  • Remove Column name prefixes: Select the option to remove the text immediately before an underscore in the column name. The prefix is removed provided the same prefix is used for all columns.

  • Sort items by name: Select this option to sort the items alphabetically.

You can specify the following rules for Dimensions:

  • Always build Item Folders/Logical Tables for the dimension: Select this option to force the Perform Derivation Wizard to create Item Folders for the derived dimension definitions.

  • Build Item Folders/Logical Tables for the levels: Select this option to force the Perform Derivation Wizard to create Item Folders for the derived dimension levels.

  • Drill Paths on Item Folders/Logical Tables for the levels: Select this option if you want the Perform Derivation Wizard to create Drill Paths on Item Folders being created for each dimension level. This option applies only if item folders are created for each level.

  • Prefix Items with Level Name: Select this option to prefix the item names with the dimension level names.

  • Prefix separator: If you choose to prefix the item names with the dimension level names, then indicate a prefix separator. The default is an underscore.

  • Sort Items by name: Select this option to sort the items alphabetically.

  • Derive Dimension Roles: Select this option to Perform Derivation Wizard to derive additional item folders for each role.

You can specify the following rules for Cubes:

  • Sort items by name: Select this option to sort the items alphabetically.

Reviewing the Pre Derivation Rules

The Pre Derivation page displays the objects to be derived and the target or Oracle Discoverer module for storing the derived definitions.

Review this information and click Next to perform the derivation.

Reviewing Derivation Progress

The Derivation page displays a progress bar indicating the status of the derivation. When the progress bar displays 100%, the Message Log field displays any errors or warnings. At the end, the log indicates if the derivation was completed successfully.

Click Next to view the list of derived objects.

Finishing the Derivation

The Finish page displays the list of derived objects. Click Finish to accept the derivation. If you are not satisfied and you want to perform the derivation again, click Back to repeat the process.

Oracle Warehouse Builder displays the derived definitions in the appropriate BI module (Oracle Discoverer or Oracle Business Intelligence). You can edit the definitions of the derived objects or create additional definitions for deployment to Discoverer or OBIEE.

PK'~^]PK;,AOEBPS/index.htmoV Index

Index

A  B  C  D  E  F  G  H  I  J  L  M  N  O  P  R  S  T  U  W 

A

alternative sort orders
creating, 9.1.11
editing, 9.1.12

B

business areas
creating, 9.1.5, 9.5.7
editing, 9.1.6, 9.5.8
business definitions
deploying, 9.3
Business Domain, 8.1.1.4, 8.2.1.3
business domains
SAP, 7.3.2
Business Intelligence objects
defining, 9
deriving, 9.8
business intelligence objects
deploying, 9.3

C

CMI, 11.2.6, 11.4
COBOL, 2.5.2
code templates
about, 12.1
coding conventions, Preface
configuring
runtime parameters, SAP files, 7.8.1.3
SAP, loading type parameter, 7.8.1.2
connectivity
ODBC, 1.3.4
OLE DB drivers for heterogeneous data sources, 1.3.4
connectivity agent, 1.3
Connectors
about, 2.2.2
connectors
creating, database connector, 2.2.2
creating, directory connector, 2.2.2
containers
Oracle Designer Repository, 10.1
SAP application, 7.6.3
control center agent
start, 12.2.5.2.1
conventions
coding, Preface
example, Preface
Create External Table Wizard, 3.6.1
Create Flat File Wizard, 3.2
creating
alternative sort orders, 9.1.11
business areas, 9.1.5, 9.5.7
drill paths, 9.1.7, 9.5.5
drills to detail, 9.1.13
item folders, 9.1.4, 9.5.4
list of values, 9.1.9
locations, 2.2.1.1
Oracle Designer 10g source modules, 10.1.1
Oracle Discoverer module, 9.1.1
registered functions, 9.1.15
Custom Metadata Import, 11.4
Custom Metadata Interface, 11.2.6

D

data definitions, importing, 10
data sources, 10
See also sources
defining SAP objects, 7.6.3
E-Business Suite, 8.1
flat files, 3.3
Oracle Designer, 10.1
PeopleSoft, 8.2
Siebel, 8.3
Database Link, 2.4.1
databases
importing definitions from, 2.4
DB Connectors
about, 2.2.2
DB2, 4, 8.4
connecting to, 6.2
JDBC connection, 6.2
defining
Business Intelligence objects, 9
ETL process for SAP objects, 7.8
flat files, 3
updating source definitions, 2.5.2
definitions
importing definitions from a database, 2.4
deploying
business definitions, 9.3
deriving
business intelligence objects, 9.8
Designer, 10.1, 10.1
drill paths
creating, 9.1.7, 9.5.5
editing, 9.1.8, 9.5.6
drills to detail
creating, 9.1.13
editing, 9.1.14
driver
JDBC driver for SQL, 6.3

E

E-Business Suite
importing metadata, 8.1
editing
alternative sort orders, 9.1.12
business areas, 9.1.6, 9.5.8
drill paths, 9.1.8, 9.5.6
drills to detail, 9.1.14
item folders, 9.1.3, 9.5.3
list of values, 9.1.10
registered functions, 9.1.16
example conventions, Preface
Excel files
loading data from, 5
Execution Units, 12.2.5.5
External Table editor, 3.6.3
external tables
configuring, 3.6.5
creating a new definition, 3.6.1
defined, 3.1.4.2, 3.6
editor, 3.6.3
synchronizing definition, 3.6.4
wizard for creating, 3.6.1
See also flat files

F

files, defining, 3
flat file modules, creating, 3.1.6
flat files
creating new, 3.2
defining, 3
describing, 3.2.1
as sources, 3.1.4
as targets, 3.1.5
See also external tables

G

Gateway, 1.3
Gateways, 1.3
Connecting Through, 1.3.1
DRDA, 4
Informix, 4
SQL Server, 4
Sybase, 4
Teradata, 4

H

HOST
PORT
SERVICE, 2.4.1

I

importing
data definitions, 10
definitions, database systems, 2.4
flat files, 3.3
from E-Business Suite, 8.1
from flat files, 3.3
from PeopleSoft, 8.2
from SAP R/3, 7.6
from Siebel, 8.3
Import Metadata Wizard, 2.4
Oracle database metadata, 2.4
Informix, 8.4
informix, 11.5
item folders
about, 9.1.2
creating, 9.1.4, 9.5.4
editing, 9.1.3, 9.5.3
synchronizing, 9.1.4.8, 9.5.4.8

J

JDBC, 1.3.2
connection, 6.2
driver for DB2, 6.2
driver for SQL, 6.3
jdbc connection
informix, 11.5
mySQL, 11.5
sybase, 11.5
teradata, 11.5
JDBC connectivity, 2.5.2

L

language, SAP, 7.8.1.3
list of values
creating, 9.1.9
editing, 9.1.10
loading
data from Excel files, 5
flat files, 3.2.4.1
loading types
for SAP, 7.8.1.2
locations
creating, 2.2.1.1
deleting, 2.2.1.4
registering, 2.2.1.3
unregistering, 2.2.1.3

M

metadata
Import Metadata Wizard, 2.4
importing from databases, 2.4
importing from flat files, 3.3
Microsoft Excel
loading data from, 5
modules
defining SAP objects, 7.6.3
SAP application, 7.6.3
mySQL, 11.5

N

non-Oracle database systems
as data sources, 1.3

O

OBIEE, 9
OCI, 2.4.1, 2.4.1
ODBC, 1.3.4
ODBC for heterogeneous data sources, 1.3.4
OLE DB drivers for heterogeneous data sources, 1.3.4
Oracle Business Intelligence Enterprise Edition, 9
Oracle Call Interface, 2.4.1
Oracle Designer, 10, 10.1
Application Systems, 10.1
source module, 10.1
workareas, 10.1
Oracle Discoverer, 9
Oracle Discoverer module, 9.1.1
Oracle E-Business Suite, 2.5.2
Oracle Gateways, 1.3, 2.5.2

P

PeopleSoft, 2.5.2, 8.4
importing metadata, 8.2
pooled tables, 7.3.1

R

registered functions
creating, 9.1.15
editing, 9.1.16
remote function call, 7.6.3
remote function call (RFC)
RFC connection, 7.6.3.1
SAP RFC connection, 7.6.3.1
RFC, 7.6.3
runtime, SAP, 7.8.1.3

S

SAP
Business Domain, 8.1.1.4, 8.2.1.3
defining ETL process for SAP objects, 7.8
defining SAP objects, 7.6.3
remote function call, 7.6.3
SAP application source module, 7.6.3
SAP business domains, 7.3.2
SAP Connector
creating definitions, 7.6.3
SAP file physical properties
Data File Name, 7.8.1.3
File Delimiter for Staging File, 7.8.1.3
SAP System Version, 7.8.1.3
SQL Join Collapsing, 7.8.1.3
Staging File Directory, 7.8.1.3
SAP parameters
language, 7.8.1.3
loading type, 7.8.1.2
runtime, 7.8.1.3
SAP R/3
importing metadata, 7.6
SAP table types
cluster, 7.3.1
importing, 7.3.1
pooled, 7.3.1
transparent, 7.3.1
SAPRFC.INI, 7.6.3
SAPRFC.INI file, 7.6.3.1, 7.6.3.1
Setting the Language Parameter, 7.8.1.3
Setting the Runtime Parameter, 7.8.1.3
Siebel, 2.5.2, 8.4
importing metadata, 8.3
SOAP, 13.1
source modules, 10
importing definitions, 2.4
Oracle Designer 10g, 10.1.1
Oracle Designer Repository, 10.1
SAP application, 7.6.3
sources
data sources, 10
flat files, 3.1.4
updating source definitions, 2.5.2
SQL Server, 8.4
connecting to, 6.3
SQL*Loader properties, 3.2.4.1
SQL*NET Connection, 2.4.1
Sybase, 8.4
sybase, 11.5
synchronizing
item folders, 9.1.4.8, 9.5.4.8

T

tables
See also external tables
targets
flat files, 3.1.5
teradata, 11.5
Text String Matching, 8.1.1.4, 8.2.1.3
transparent tables, 7.3.1

U

updating
source definitions, 2.5.2

W

web services
WSDL, 13.1
wizards
Create External Table Wizard, 3.6.1
Create Flat File Wizard, 3.2
Import Metadata Wizard, 2.4
workareas, Designer 10g, 10.1
PK'&ooPK;,AOEBPS/web_services.htmlT Importing and Publishing Web Services

13 Importing and Publishing Web Services

In Oracle Warehouse Builder, you can publish core functions such as mappings as a Web service. The Web service can then be imported by other applications. Similarly, you can import Web services published by other applications into Oracle Warehouse Builder. Publishing Oracle Warehouse Builder functions as Web services enhances their visibility and makes them accessible to a larger number of applications because these Web services are created using widely accepted open standards based on XML.

This chapter contains the following topics:

Defining Web Services

Web services are application components that use XML-based open standards to define how data in an application can be accessed by different clients. These clients may be working on different platforms and residing on different networks. When seen as a Client-Server model, a Web service resides on a server and clients use transport protocols to retrieve the Web service from the server.

Web service data is packaged as messages whose format is defined by the Simple Object Access Protocol (SOAP) framework. SOAP is a transport protocol for transmitting XML-based messages over a network. It generally uses HTTP for transmission. Any client that can read and interpret SOAP- based messages can thus access data from a Web service. Oracle Warehouse Builder supports SOAP versions 1.1 and 1.2.

A Web service is built using Web Services Description Language (WSDL). A WSDL file is an XML file that describes a Web service and provides details of how to communicate using the Web service. It provides details of the transport protocols and the message format that the Web service uses. The file also contains details of the port, which is a metatag in the WSDL file, that defines the operations or functions of a Web service. Oracle Warehouse Builder supports WSDL version 1.1.

An example of a WSDL file that defines a Web service is as shown:

<definitions
     name="PfWebServiceImplService"
     targetNamespace="http://oracle.wh.jrt.sdk.packaging.dbWebService/"
     ............................
    >
    <types>
    </types>
    <message name="runInput"/>
    <message name="runOutput">
        <part name="return" type="xsd:int"/>
    </message>
    .........................
    <portType name="PfWebServiceImpl">
        <operation name="run">
            <input message="tns:runInput" xmlns:ns1="http://www.w3.org/2006/05/addressing/wsdl"
                 ns1:Action=""/>
            <output message="tns:runOutput" xmlns:ns1="http://www.w3.org/2006/05/addressing/wsdl"
                 ns1:Action=""/>
        </operation>
        ................................
    </portType>
    <binding name="PfWebServiceImplSoapHttp" type="tns:PfWebServiceImpl">
        <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
        <operation name="run">
            <soap:operation soapAction=""/>
            <input>
                <soap:body use="literal" namespace="http://oracle.wh.jrt.sdk.packaging.dbWebService/"/>
            </input>
            <output>
                <soap:body use="literal" namespace="http://oracle.wh.jrt.sdk.packaging.dbWebService/"
                     parts="return"/>
            </output>
        </operation>
        .............................
    </binding>
    <service name="PfWebServiceImplService">
        <port name="HttpSoap11" binding="tns:PfWebServiceImplSoapHttp">
            <soap:address location="REPLACE_WITH_ACTUAL_URL"/>
        </port>
    </service>
</definitions> 

The WSDL file is automatically generated by Oracle Warehouse Builder when you publish a Web service. The function of the Web service is defined within the portType metatag. The soap:address location metatag defines the location where the Web service is deployed.

Publishing Functions as Web Services

Publishing Oracle Warehouse Builder functions as Web services ensures that these functionalities are widely available to clients that use the same XML-based open standards. The following functionalities can be published as Web service:


Note:

You can publish only those tables and modules that are imported through native database connection. The modules must have a Change Data Capture code template associated with them. The tables must be identified as being tracked for CDC.

Operations and Parameters Generated in a Web Service

There are three types of parameters that can be passed on to a Web service when it is executed.

  • Custom parameters (custom_params): These are input parameters that you might have to enter while executing Web services that are based on PL/SQL mappings, process flows, and data auditors. For example, if you create a Web service based on a mapping that requires you to enter input parameters, then you must provide the input through custom parameters while executing the Web service.

  • System parameters (system_params): These are parameters that you can configure for an object in Oracle Warehouse Builder. For example, for a mapping, you can configure its runtime parameters, such as Bulk Size, Audit Level, and so on. These values are then passed on as system parameters while executing a Web service based on the mapping. System parameters are applicable to Web services based on PLS/SQL mappings, process flows, and data auditors.

  • OWB parameters (owb_params): These parameters are used in Web services that are based on code template mappings and CDC objects, as these objects are executed in a control center agent.

See Oracle Warehouse Builder Data Modeling, ETL, and Data Quality Guide for more information about the different parameters.

For each of the objects that can be published as a Web service, the following operations and parameters are generated in a Web service.

  • Non Code Template Mappings, Process Flows, and Data Auditors: You can use the following operations.

    • run(): Run the Web service without any parameters.

    • runWithSystemParam(string system_params): Run the Web service with system parameters.

    • runWithCustomParam(string custom_params): Run the Web service with custom parameters.

    • runWithParams(string system_params, string custom_params, boolean isAsync): Run the Web service with system and custom parameters. If the Async value is set to true, then the process is run in the background.

  • Code Template Mappings: You can use the following operations.

    • runWithoutParams(): Run the Web service without any parameters.

    • runWithOwbParams(string owb_params): Run the Web service with Oracle Warehouse Builder parameters.

    The format to specify a parameter is PARAM=x. Multiple parameters are separated by comma. For example, the system parameters for a mapping can be specified as:

    OPERATING_MODE=SET_BASED,AUDIT_LEVEL=NONE
    

    Note:

    When you publish a code template-based mapping as a Web service, the code for the mapping is embedded within the Web service. Therefore, when you make changes to such mappings, you must redeploy the Web service.

    However, when you publish non code template-based mappings, such as PL/SQL mappings, as a Web service, the code for the mapping is not embedded within the Web service. Instead, the Web service contains only a reference to the code. Therefore, when you make changes to the mapping, you must redeploy only the mapping. You do not have to redeploy the Web service.


  • Transformations: For Web services based on transformation operators, the operations are the same as those for the function, which means that they share the same function name and parameters.

  • Modules and Tables (CDC based): Consistent set CDC uses the following module commands:

    • start_cdc(): Set up the CDC infrastructure.

    • drop_cdc(): Remove the CDC infrastructure.

    • subscribe(string subscriber_name): Add a subscriber to this CDC.

    • unsubscribe(string subscriber_name): Remove a subscriber from the CDC.

    • extend_window(): The Consistency Window is a range of available changes in all the tables of the consistency set for which insert, update, delete are possible without violating referential integrity. The extend window operation computes this window to consider new changes captured since the latest Extend Window operation.

    • lock_subscriber(string subscriber_names): Although the extend window is applied to the entire consistency set, subscribers consume the changes separately. This operation performs a subscriber(s) specific snapshot of the changes in the consistency window. This snapshot includes all the changes within the consistency window that have not been consumed yet by the subscriber(s).

    • unlock_subscriber(string subscriber_names): This operation commits the use of the changes that were locked during the lock subscriber operations for the subscribers. It should be processed only after all the changes for the subscribers have been processed.

    • purge_cdc(): After all subscribers have consumed the changes they have subscribed to, extra entries may still remain in the Capture tables and must be deleted. This is performed by the Purge Journal operation.

For non-consistent set CDC, Start, Drop, Subscribe, and Unsubscribe commands are available for both tables and modules. Lock Subscriber and Unlock Subscriber are available but not used.

Creating a Web Service

Web services are stored in Application Server modules. Creating a Web service involves the following tasks:

Creating an Application Server Module

Web services are created under Application Server modules. To create an Application Server Module:

  1. In the Projects Navigator, right-click Application Servers and click New Application Server.

    The Create Module Wizard is displayed.

  2. Click Next to proceed to the Name and Description page. Provide a name, and description (optional).

  3. Click Next to proceed to the Connection Information page. Provide the location details, as described in "Providing an Application Server Location" .

  4. Click Next, and on the Summary page, click Finish after verifying the details.

The newly created module is now available under the Application Servers node. It consists of two sub-nodes: Web Services and Web Service Packages.

Application Server Modules can also be created under Public Application Servers from the Globals Navigator.

Providing an Application Server Location

You can provide the location information while creating an Application Server module or while deploying a Web service.

A Web service can be deployed to the following locations:

  • OC4J Standalone

  • Oracle Application Server

Before providing the location information, ensure that the control center agent (CCA) is running. See "Starting and Stopping the Control Center Agent" for more information about starting and stopping a control center agent on Windows and UNIX systems.

To create a location:

  1. On the Connection Information page, click Edit to open the Edit Agent Location dialog box and provide the following details:

    • Username: The oc4jadmin user or application server user with sufficient privileges.

    • Password: Password set for oc4jadmin user while running ccastart file.

    • Host: The host where OC4J or the application server resides.

    • Port: The port number to access the server. The default value is 23791.

    • Port Type: RMI Port for OC4J Standalone, OPMN for Oracle Application Server.

    • Instance: OC4J instance name. To be provided only for Oracle Application Server.

    • Application Name: The default value is set to jrt.

    • HTTP Port: This port is used if the Web service is accessed through a browser. The default value is set to 8888.

  2. Click Test Connection to verify the connection details.

You cannot deploy a Web service without providing a valid deployment location. If you try to deploy a Web service without providing the deployment location, Oracle Warehouse Builder displays the Edit Agent Location dialog box. Provide the connection details before attempting to deploy the Web service.

Creating the Web Service

Within the Application Server module, you can create a standalone Web service or create a Web service under a Web Service Package.

To create a Web Service Package:

  1. Right-click Web Services Packages and click New Web Service Package.

    The Create Web Service Package dialog box is displayed.

  2. Provide a name and a description (optional), and click OK.

    The newly created Web service package is now available under the Web Services Package node.

    If you selected the Proceed to Web Service Wizard option, the Create Web Service Wizard is displayed and you can create individual Web services.

To create a Web service:

  1. Right-click Web Services and click New Web Service.

    The Create Web Service Wizard is displayed.

  2. Click Next to proceed to the Name and Description page. Provide a name and description (optional).

  3. Click Next to proceed to the Define Implementation page. Select the object is to be published as a Web service.

  4. Click Next to proceed to the Review Specification page.

    Click View Source to view the WSDL file that is generated for the Web service.

  5. Click Finish to create the Web service.

The newly created Web service is now available under the Web Services node.

Importing External Web Services

You can import Web services using the Public Application Servers node, which is available in the Globals Navigator.

To import a Web service, you must first create an application server module and then import the Web service into this module.

To create an Application Server module:

  1. On the Globals Navigator, right-click Public Application Servers and select New Application Server.

    The Create Module dialog box is displayed.

  2. Provide a name for the module.

The newly created module is now available under the Public Application Servers node.

To import a Web service:

  1. Right-click the Application Server node and select New Web Service.

    The Create Web Service wizard is displayed.

  2. On the Name and Description page, provide the location details of the Web service.

    You can import a Web service that is deployed to a local system. You can provide the location details using the URL format or browse for the location.

After importing a Web service, you can execute it to run its function. See Oracle Warehouse Builder Data Modeling, ETL, and Data Quality Guide for more information about executing Web services.

See Oracle Warehouse Builder Data Modeling, ETL, and Data Quality Guide for more information about creating, publishing, and executing Web services.

PK qTlTPK;,AOEBPS/img/sap_location.gif:GIF87aDέsmc異RRR}Δ֌֌΄΄Z΄甮΄ޔ֌猪甚! !}{}{{y{{u{0s1I4JeBqRR{J{cJqތ{1asZƥޔJ]cyZ}cR然Ucack,DH*\ȰÇ#JHŋ3jȱǏ CJ$ɓ(S\ɲ˗0cʜI͛8sɳϟ@ J($XʴӧPJJիXjʵׯ`ÊKٳhӪŊpʝKݻx˷߿ LÈ+^̸{UZ˘3k̹ϠCMӨS^ͺװc˞Mͻ N3㞼;УKNu3 X^O|x n˟^p^fbhB}5F(y( e"Ȇv($XxY( !32YJdt#f8m<#@ Z1y;+QC&\vwȜ{hBy6npftF)ku%rƹw޸gR)'sj|z裲Qh rM e"vb6y碥IJ*i+ &LJiآ>4+BJiQj嶳: (飭X9roK:֪ګj@\W,XYmZm{s|12`,p j1́*r亚Ͱ":l;4ڻ,bebҲ8wtPeCE'=z6Or?ol7Հb"\=m< NN6ۑvʉMJ-(xz{5d*5:oW+- :c_;6]ګG/Ⱅ 1܄z0ʯ*w촡(G]/!퀰]GPpA}̠?-pL_]Q!]Xv¡HHL":P b*Z񊡙"d.z` H2taQpH:x̣8G IBL"98򑐌$'IJZ̤&7IIx (GIRL'V򄏰,gIK>2̥.wHN 0}bL%+]̛Ќ4jZ0nz 8ie62:iNt% @)ςTLBφ:DQ2ЊZͨFyЎzt H?щN(M;7Җ"0)>GJӆԤTNw GPɚ57):yT.%TzԪ3JmfSjQzUS GJVcb5ZնTpUhY Q5Ukͫ:w`IyֻQf_kM:,( kآ$dfu Sler]gWKLFV ig-&]ZƖ .oK\B`a[=-tUtens_ ]N ]n}w+^w=oNҫ}oY+_g7/~_Rp&I]2)4m;`F0L4³m+ cؼ,ᰱPb*^p=FXĩ%qnM| x  /NKx<6Ox%U>򕗺d6Ori:-#X?β.'˛ gLfcFr=Ld4ϘFqeY9w#-Le 9ϐ1pXB3ЏEH3,F'E~t[IJ[vCϋNpld@y=5SU? sk׾a>6\11۲**iS[vLm{b6-n>7n:ywS yӻ 7o*~:=8PNԅ6#.qR|*3>s-8UCL&O)ʣ򘲼#9Lb.󙳴6Yss>9*bGh7t7]D/:Kթg*sW_BŎukk'f(dy:w]w/gߞ=/x^_'2I"dz<$қO=|ֻ}((_8s=O_? Џ_?EXϾ{O~ROOϿ~7} g Ȁ㄀X8R@xǴD"L8&8t(؂.82x#XA8h4h=8BCJJGa7Px'oA2hXŧ/`x'dfnx{jxmt{jy6uwx(nzȇ(z~lW_xs؈MX~؉\HeIDU5-momJ(xxTparapЋFA6F)s`||0(A=x/A5e'q e`gg`e q`/qȏ.q,xx.4Ŏ&r`b0b`a01I 成&i n{_`^ВُЏ:=Irid"hl``-h0ƔFdFe,'))R yzZ\ZzAip qvrE*akTLh\)+-VpX0XpV7ٖs>yYuEƒ{izI|~bA&PYY)ɛi]R_apQ S@S Qpo9@I! I#YLɚٚi|J fOXV홞Y)'QvNNvHuYnv9w0WƘ )c9 P_ tPKPt>9i XXٜP{ {~J+++LL+˵{Kn蹷˥IKI +y;̫`kfJ@JOd*;z`2 \wǿK+P襂@?*"(xS(;Jښ)#<8×,OC7H cÌ?,.0;J8.57>N;ND.AC^JoxxJIxPGsHIh֍hG]H@jaxWk^H,$lN|bdqh7^w÷^$P%0|ߌ~jW n>p~JfPrFHbINBd+>t뽞Ti0 p鿗LPMnd0&Į>In콾tiX|~+nJgF|Y&0In0N{T흢'ajlWl7_GG.IoNIn,>$o ~\āL6á4L©^`9.@Z-:E|.7 p= 2Ojn6.`eoJ}bmtNvM~nQ,`on谯/?)$_/o_NP ?6\aj3H^ho~n, o"B ,` >QD-^ĘQƉ: @ rDRJ-%LM8YS'F$|*PPEETRB DNUR$IW~[qCME3,Jڮh t'śoڳzX`~)(PP …ǐ#K>Y3Oe7QMFZj֭]m .<Z7䬕.fF初?]tխ_\ڷO%~^=Ng_c~-w/@@ AdA0B '00ËMC-"CG$8,CTE_Q%@k1GMG!$4/H$dɫt28%J+7<lJ.I(ÌK2D1L6ߜB9N;﬐5M>D %PCE4QEeQG4A}hO@uRMASO?5TP))HݔLSe!AE5VYgmULUVՕWi6Xa;!K{MWd5uXgb 8vY:6[[oEZm/Rv\zK#t5QpqMk+wuS: 'v=}7^WS7&[-u+bsUa,AwGy`c-طz[UZ7/~l-#_E㠃>K蓏5e-ܗbNbӺ:g#h:lǎT郟ezazykhQs]%(q~;l.o{e·|s5a+㮋h/̷kgwUOziHyGl wq/{yy臔ze~m|/>}i?zO秿~;oHq_-D &Ё%Z@ z(,`5( .,z:ЄFU~/a ?|-٩p\,axtp|@ qHDq{HLbݘ8E'Qt*:XTx.ZfҵfyMrUF Uy̏}$)a1{g^@HAmqt8Qon$$ I8(JfDD3N\T7VrD ID.SX ǸPg&IV̑Yxd"0XSgrs\6{I)A31NjyMR>ΛE yB2@g}3C ĂF @%P\\XУi2ōrԤayRf$MhKeJ03LjÛԧ2J:^_*F6v=LbpmBhJa[umlkP۾jvTq[$}Yf7}uw;n zcrQxu?{#Vp ^F;7_5xC&T v`G|9II^rz M4\9ds hqy!;Kfs|o|LܛR']7s䜩:0\7 P6"ĘŤcH*5rrdm{Ic'C8ϦntO! `D(_<{KGdM7Póeq_Dfynywky*'ֻ4MRQS<݄%{W+Ԡϟ;qk??8 ]UBar77:3s "c9 KK\S ![C:c@>[ D D, T:,c?kS96 lT*<D§QB2a&d' (BB0+,<xB B.0Ԗ124CkAC+QC8"̟#5 L@4;CL)A9:<@ALB"DTDTctIt = &sK@l:D(D:E M O.C4D&#-0ä]V?4=åСEx1ѺGC׃E0Fk<1c;=3=S^DAuCdyF Gr,F;D?ozrk<h*y%#z0IQHdHRES==,F2[8U VHWf]8% 5,e2'F@*+}$X.U/%-05-S&_B PTB%P 8=k B9ԣxH@eTҬ(T3ԠhP RMM9-: Ht4ݐ (DMh FGHe҈PRJo\4`i$KTVh@MVAQVLp5qrݠw"e׎핀 %X{VDL˄m7Zm1tX1X׉RqVrX,*ˑ%ْ]|k6B2֎X'Xiٚ}팘 EJYW٣~D|M EDٗqڧ |E,TF%ڧ RXUٲǚXӮ%۲=ڳ]'L<33Fi;k۪ZM-EIK% <<%щܰX\MJ=U-R& ?_FڕE`__tJ^5e8Cذߍ5#2& `ᎅ] Va>at~ah0a ! 6!FbT`*):a][ ֵVޜd*`H=12WnZ5>+6^X,n`b8+>}"<(9^Z7V%Bi, ^TndT6dV\䌸GH=sZ h[3Ae ^L Թ]*Q[\&=`4SSΚab&^lV]2^)efg~]tF.5cf1^?If0q&rFRbKuRֽ`vg͝?*3`z&{N:jW*T߉FB脆^fhXRhd)L:}(6 i/gNc8Pf*ꡞ!^n)bv 㤦>vj1yrf6# jͪG[k d>jjW9WXk k+LߌMk4MhWĪZkkĞ$rX~7nkŶ*PN_xk}O,NΆlz+ mmO O6hcimm6VAIp#L \!mm9 ^dG}P RnnNm~)P?:mj[N! o"= #= ^.dmR\E Mo8TcRiN%\](EdjDS+]d~6R OI.}gWpLs 67uqIpf=hhqYq)S@ TԟVr+GèE Qm|67h3-r&G x0 XU6v nk+O9t+Q.iv^BUD H nU p Cs\$OG hL+{5>{Եz;K* 3<ɛ<2;?*ѳ<[o2j=݃=)S|0>c:?)??{0R "P] |h:*\ A90ʠ6hBȍ0N%\Z^( k88:L"D1!1Zb\AKR⬪X+b1aF[/ bTd3>[#EF%1r#hGMHz#?rcx! )A")!G,$%a2f$:I1rL, /QJD+[W(-Id[L%/S72&i̜]\9gB~5Yk+7 o/9W)3Y'N3b y:d=9z^,`ނCttb?'ZBvD^[9iQJ"iJZtY*ݎE[b'2 Mқ񣇳'Cy@vlBUNcӣV%Y*SFԑ5rjUYau7PRTf=X'n}+\*׹ҵv+^׽~+`+qX*ac#kJlb/٭jvQg tiR-kc+ɵ҂-mj[6AF{5 2}rW ݁ 7Z=.vr.x+P ҫ^ޠ}/|+~{bot+q_S0L?O0_ &>1G܂. $\ 7Nhc,cww,h0 @a<>2c ygp+!q%;1vc f1kٹ>ְ1Ǡn~W49{O.. 䞹WF=ytƱ1 JP4omdn4Ka3 MMGX>LNK̨fxc-YӺֳt @ {-a>qk^;Y5:8,m+{׭N4J~miCzA'qv'pty~w㝁`Ʒ=oD(~imX/| /,л}6qpwn On<P|8KN"c6c v#".b2!1BM#.Z9գ=#> c>]-0@Tc#B&B.$C6C:?_@\c6Cfd=F$@n8#rF$DZJKKNKLΤM"2X$ $K~M Q%R&R.%RddOaP2Uޤ=peK^%XFcV$Od=d%[[%\Z"@4@T"MZ\_%``f\e%^ @l$_&deVp%ZڣZF&d&beYe:&i&a@'NZx'yy'zN'vvvd|Ƨ|j}֧}'~~'tgs$xgzzj'weB W[J-FN(VF@ޥ<8([B腎((hfhlh (֨(樎hJ&]b]()Aok=NoE) bBi~iGJAM))Ʃ)֩)橞))**&iF >*FN*V^*fn*v~****JFĪ*֪*檮**++&.+6>+L+V^+fk;PK-9;:PK;,AOEBPS/img/flatfile_location.gif,GIF87asmc筪異99DŽ{{ssB޶s˄s˄τ{όӌӌ{߭ۥץs{}kQkgWGAū4_0"~ hֻU1j8Lu6[ 'v2UvH8BVqPHMYz _qIl\IOOƉ(P(S0D*XLv15Ǜ%`j))9AA#2IjHa5nzS:جoL'vӝㄔ:Iz̧>k :XN %AAІ:D'JъZ(g锎zT%/HGJҒ(MJWҖ0%i fJӚ8ͩNwӞ@ PmHMRԦ:PTJգXͪVծz` X V~LZֶ*\J׺<^׾M%`KEb:u+^'KZ֮ͬf7پ h `Śv(MjW˺}mggKvͭnZ' p mJuЍ.h{愸ͮvz׹ oxK򎕺M/MֻkKּoVѫĽdKվNg`׿'La7a6}p[XNkت qnEr;ųqnkW"q%5żrl|/v̟=ꉢzP~Ԯ=+ }s(#-|J?o~>S'4 }=sRO߹y>y~3,ҿ8qehj!~Xhexfe]5рX[6U8Xed[ 11GVJv(3,{.c0d2c4XrJ::փ=BDxcFxHbJ8ZL؄+'+6TXuX8Zhb\b^b`68 (ELcG JٔR9 TZZVX`cun8b_)hYEe agplٖqyT9t^v~z՗y٘@[90IH %11hjh0I yə/l"l i[kPd~*0U)É[S/`+`/99)9ٞ 8`X9ؙ*gW$$W0h@).󩌔hş/SSp:Ii9왢*ʢ.꠨7%U5:9rkGsuYgn@ǣ t qEvCjM=uLnEJj0q0n{n0q0[. *)ɦjG7ju9*N*rzڤIڧ11qVʧJUD pZnu?qXjXʡszlzs`(0ڢrpGvzU70j5ZӖʨ|3!zo{ȪJjZhtPvpxpvPt */ڪ:*XZjzo9t{NJ*y<:Fs Ѻ:j楡q q0癞 o:q*::j5ǫ 1ˬZ87{:˯1;2 *dp/oo/5Ѣ%pʮdŲz 7 jگ)C[EGbK[([j`UwZlf[o{*2;ʳs˶+}`I[7q-b˲ VjrQw?jK;H CQUc鵏H;Ȏ:QۛtJ@8ZGQ닶{|9!{7˿l0*1 Yەd58J "<$\»ډ(™c¬0|Ô(bEëh8Íaè@|‚EħhHv(`ĦP|"^ZV$b$P]j9Vgj#apc]ǻƈhȂ<Ȅ\Ȇ|Ȉȼ8XRUZ$_^0Z VxYɩfxj<ʀUY`[pTSl\Wy˹|˲LJX\ƼX^%S@U`VW˺l˵lڌU|˶LG\bHOLHae،ۼ-zz=M)VFpHJLpFP޼ܬUL 8a9Vf@B0DPeVLѴ\ѿ">m^E:<>0׼9}Ӹ<Ӿ\:岡ոce^$MEťxZ=Zgd]lMaݒcMVV;t]v}s; 6Z+~-*+Xֺm6-,\ua[ٺ`و[ؠ=ʎ}mzٜ_ڴM}dMK}}٬mٰm5۵]{ۥÒUzڮE}։+ŧ=VXضګM؆ Ս-AK{ deֽ}-V՟|>ڽߦ; ^ >m=Κ<"n]=,y>>!4޿%.d5e|\@΂/Uos\0K)(Afyp-Vɓ\ɗUNǖ܅)b޵uYZʭK} L8 9ve.\ L\pMNy犮kCU,}>ΈPQU L.LYu)-^ӪO)TcEFԺLRm،}^N'~)E\[.)XUn|nU{/ێ13> y ?=?NE$o%{8!.U{6X@BUDωFyHľRTox[Bf 2.c9g|mN"Ok?~LɖY|lbjʰL˖,?(?Ӽm8=O_R<Ϝ/ӕnOL@ ѫ,M.7(,]q_Q7?B_G8OT`v,rOa@@(@@@`PD-^ĘQF#QH%)"RJ-]SL5męSN=}TP5"T!DM>j(Q^%V]~VXe[NňtaÇh[U޽^}XpM*mWt2T`ʕ-_Ɯpa2ZtGǣM֜Zj֭]<اm.}[׽}gm ޝ|tn' ]t N\bu?^x\S5wX7 |K0@ AB Ukp%|0BBG$ DC=A,1FgĤ|1G[1/2Hl<.sȧBI'E$R tG*{2K-H+WLˬ$QLT53߄:4SlA6Ԉ8䳺.Q4"=D4B#Q T"ԠC-5ԡ0*A2MQWe(RL/Nc5VoWi=:^35Waf5aeXcoC6UeRg=-ZS[Dv9+Õ[oυ\rw]E7-uw1m;W^}^Y7}_A^ fD^Mb/8c7c?9dG&dOF9eWfeGfR!+ao9gaT{:h;yh$6:i֭hiZ4iklL4j߆[Hkع鶻^n'lXxqo!r'r/\Zp;Dq_v㵳mqwY?> |y1o'rׅ' ׾ђg/A|Z?>>~hV Q`B>` . P `_Ex-Z4 B*+bAO`KAЇ)ِ.F@$JKLAP8QHJP?i.^"o1*Ћa 7 ( ?#TX!JQUt HE>汏y,D=B+n2g4##)I4FpklɒQlu $t HA.#lDQ A(`d0c&-v(yPqz2G9Xot&3͉0yOzϼf2tȌiXs, FP񓟰g?)}z$F PgD[=%ЈGܦ;xQ(یgFQh ]#~`.եK[ St3`|463G Л6թOMsӞ4-g׆F免$J=h*լgEkZj6*zqfkjկl`;ؿr=0W Ӯ[+pV6Vlf5Yf֡ @Ɩ$EQvֵm/? \smGP[Ro[r;ܣPtp%nr[!Wύs\Vlҕuݮainx]W]yf^WhU{;ߜ7ip_׿o_̾F0WUdqk\$<ɵsف`c-5"QGac4,4Jlg׸wkܼW/Odl:Ștl`Ǵry2Wpҷ䛭8hONu"wgFs7:2G2 ("ӐsBeYtGqٜۃTm޹\, _R='}shNO)%k$;$_rvꮢbX:Vv(kgO|uGq##Ocҍ;&u1v:ѭ5L(hSv,ic$p] $eV{;fHY՞WV؜籝9E2#)8N̊X"+Kh}dξ7Mk:S=f:"(/WW&-Is}/:/~J8;B ЁeG uC"Dzγom;;e\4g/~PK^fW|X:,`!Ꭓ*< Ԩ?T[ե;N-"c5}gMc ֺ{m}k\3͕͛}Yd_χ~[4@P~&,)_?~K߰U,9}u^PKdLʶ5gkڒv W7_`-,Sdtl>x`K[7As/ 0a.,t|< "!T"4%@@d(d$t+*\+.-$.1 0 1$44 3/%T76T07:90:=<4=@$>?T@CtԒ@%TBEԋ8DeTXFTxT;RAJԔTTMTTKE}0ò~[3@L=XUZ[\]^_V[a%VTATcP=Qe]Uc%EljV9ر.opuq%r5sEtUuevuw-W0zU֟(k}mW|؁՜I{uoMքlű0paCXM؎28*5.oLY,뵋X)3AمUٗؔق(Y2bY٦=yn٢أMںZ-㌡6 36 ۶u۷]h3 *[7Xնݟ=[*2[\4*nU[.ĕ  U\e=ϕƝ\šm!rSPy\93Eq[{O\̝]\ #J5 ^ ]]4]^%\1\E#m]K_^]\!͠M޷%߶=\5p]ۂK?-ܾ^5o$ݟcs[\o3E2 7F3C` Ȁ6e aN8^UnWi]EG*8#a$&F'VnnFasWU%%n/.`Av-8* 9@:[!A+(K%c#\&*$@ H#4fcb&È7V35#">v'&rۥk2aGVC:n`dB$94Έwc)T*)cU>KVA&es2UEdc[dZcOPU:^cڛ{nWak#Ǜfp(qq6"gfQ( eZ[gou~;;<{"(t6gfjnkd3gœfh.vˋ:|v;Ɠ~hNV;6(gKh={Vghüni.KҀ ię:lNl++lžl8 m껾nhv׆m,VΩ؆ˢӮrmݎ>5cO n~Cm%Sfn hlJvnnod.soڿ€΀'o @ ne~ @oypp)ڢpd8@Ҿ, $< l PͭŁqqj%O7#@Wq!oK:$T drQO.-oq/r.?R-Hm3GDU5/6w@:;<=>?@A'B7CGDWEgFwGHIJKs!MNOPQ'R7SGTWUgVwWXYZ[\]^P_ a'b7cGdWegfwghijklmnopq'r_v@tWugvwwxy(z{|}~'7GW;PK,,PK;,AOEBPS/img/case_excel_odbc.gif% GIF87a   2RjUMJ>0tnd$&llL%t$& %&lNMlv$$v$$%MNt&LlNLL%&MM&tNN&tlNLL&lLvl$NLt®v$$NLքV,U,*VTՄ*ԬքԂ,*,,,քTV,V,,Vtv$((ĚL9#C>FZ[dkVDffr^  >G EMѴH0&2(;Ԏ.cNY!^^L*8 @F"1*,d1l!ul8BN,S1W6S%LC :Vb KhB%##d:s0}rM%`9Z(X\2.J,>ԚU\/ф\Ԯ}4zon\&DvH|dE´Udy٬f4Jԏ^4#,X40\JlOR>4V*ԠTW\N\rWȬ,"KR\>ԦĬ\4s,Nj7,X\B\z`Rd燨^owy쟌4^$4,%%A, "@.\pHŋ3jȱǏ CIɓ(S\/$XZL̂@%BS~=ǴӧPJJիXjʵׯ`ÊKgh&e tR(Ҥf˷߿ ˆ#>c/^ea˗!%ùϠCMӨS^ͺװCkM۸sͻd6{2rErR:l7qسkνOӫ_Ͼ#6\H> Ai7w-h& 6x`b8 V@!0Fv(;Xdq @bA Eӵ0(4h8<@)aCbK-Td%D uBc2;0s˗ "dfR!mCb4Wp(2Dwhߝx|矀*蠄j衈&~:@=COcTΥ$ %qO>̳%;r 3c$^qE0Eer>D.2+k90:H:ifd u3jꪷ :k*vʱ8+k/@=iNPֱ9N>v^)8ɹ ,0C[,$lr%˖%'=@@.{9KE(r,A4IL :E,u52wjMa*~}}nKx7Ƒc@=0Ɇl0 8L3"&"4 \L9/4Et5>Q!@,ߘ3L b.sק5f4N_BA.<<{w}Cb@S a8%Q.-Ox˘fH"CWѝ#4B֎YaihT/Z,\<Hbcs*4:a!K 0DozԣCuy;Z^;$(C}`w o1cB_&?+os ^_,2Tx:ZS|wL#)l/9rȱ_[/8!jqk{|z!G ь+6/.|tQkDH%Br/a8&FL*WV򕰌,gIZ%40$%Ub,[ I5NY%6qD$|xe;/a0M`Ј.b-Aj)GVl Ѝx33 j7PppDP_!8&‰_# BOn, p/&=9iJy^_9O$,jrzW@&b"&V~?t{ա16x8:ȶ>@B8`w3@B9DY< e%b ДNPR9TYVyXZ\ٕ^`b9dYfy^iLnpr9tYvyxYjl~9Y_}i٘K YyP)m99y0viYyPٙY0Yyșʹٜ9YRٝ9Oɛ)9Yyٟi繛i牛:ZzBN ڠdz(*,jj: ʞ$&ڢ:<ڣ>J/ * ڔ"j P0(J*M0Д09!:N[ã]?ZfzO9fiqUXp ruOyx:UZ$ RwڧZإ_J::hzjlJ::*Ph9!Z|*V:Sɪqy/Ф[j! >jڔ*u `* ШgFP)"a' wPuʪW,O X**(P*!UZ:Z5+KU*>Kz? K+{"+IWZEGzNyNY P:)@?[7p:zzT*WjJUEHD0 Z˵^0BJc*M]fkkJ#z*1J Oj0#z5k򚥋;Oi;8D;Oo3и ۳Jʫwk^$p!?;a:=%{N7˲T*[1;SkrڸRY@k˴ 90&+ڽYQۺx;!:@Ogp O#;6۔ڧz+'K NTۤA|0`; *[ +1Lr{iKY+=sïۻ[gJ*z{: 0ZM/StM*¦M٬zX {+Sग़ `Ep,DlĎHě۪x /47*Ȟ)ɢ 2F,ʡI̻8 ˺L} lʶ앝|" Ň;] <\|؜ڼ˜˟̚]|ҡjHJΣ9lļ<]rY ` љ]M  }*,.Yi ]|Ӟ,ӲI m8|]Ӹ H$m,=;>VDݼ \y ֔YW]֘՞ H*b9{dmr]hjMx*[Z,hlo.:/tq=אuwMYI;&$Pg 1DAk¥֎}ԑt‹n_XYjL+{IVkڍK؛ ]l\ƶݕ}xz+pڝKڀϝ.*|\mMt?`'t ڣK B܆ݱ괋Mm{Wʤ|-~mĝKz":Ƚ܍}ޮ.~ .}-Uόpip/伬_֡m<ޔ,N B~Q=ŭ*mX~Q9"l%,_~ڟMh~jLf\Ʀu N nD>d~ў>˝]^nmףЧ붾,Һnϩ~n0^^|c_֍YL3Ooҏ_*[=?/?uɩ:M_*ܺPO (p0QD-^ĘQF=~RHJta-YJ0BI24P!ē4}~TPEETRM>UT=!M9. Uؚ̞EVZmݾWnb+*Cyry+O; Xm:Ydʕ-_ƜY<AƥM[K鑀 z"ic9cν}fYgzj@ofሹp89Eo8Էݿ7`t-bמ 0T``)@^` 1V`£3<6J>1Ķn bJa T&0@(a?Ĭ7kt"Ʉ`IH$\ Ȑ`Ƞ*d0NC<0Gd(dNXi RG|,;"l%a'#!Ȑ"|%~tJˉCsLOӎ4ޤ@ԭ<ϙ蜵O? z22(0!‡cT`T"NE#DN̠6vQ \o1O[]Gx IwR^4Gu^{0_NZ\jh8k+Έm-W:

8MQj} 10Y."HA ZBFt1G;b&Gnr]<mǏt&dHIXdAm,Pp%G3D.#$ 0S EIV,+Pf?HZ`2u`)4>rSAp [ |fȲI,YT@KW_g3 Dl?4!k3bǼNvΙ5}9r`Ot9GM &\"R*bQD#z'=TMzđ]4?4N)$*f ;عAL%g:Qde(ɒ J?wS@m*Xo΁"&"!Lf:A +ivԅ'8ۑti7ލkӹ*g3hhj;&Q>ը:p[[_5kMM ͹ 4ARԩ#LzHJƓ#'[yEީ%\ ][#DG?  T Ĉ; #24ii{dIAv[Aiy@4A1l B+#B0#$̋%dB%sB(,)*B-̱. Z)ۢ i:C CM 2=7134YsC;;l € E\pD?"\.B@ DHDI3 9DDh!s;lWCYTWņZEZņEPHcDF:EACĽA`lDXdEhiVd1nLl\mGD$kaRT aTūQD oŇ kGkܘ}{ }tT`ǺyGTg[\C"pLjDoHDG8HLȅ\GhGyxHUHa<Ȁȏ,IYHGdŌI^\<Ɉ`$ZDhFJADJWFƚƑßʠʭJFʫHI[> x|D KħG ˾,ƴ 覒 T 0#J$T;ʷ, ;MǰL58lZ,&`)![C/޳tA7-Ҁ2x*NAJ4Mͤ .ۺQ+Z!NNPJCKx ηT@T|ӺϓB.N!4P+BP/jr=ےٯl% sPCˎXX,ݲ 47 eQEuLJ m4JeM#OtH"N&B$1(J,-./0M R2 +-4U5e6u 9UR)SԢ;S%=1?T@A5ԟ(CUT2 Eul (PKPMNOPQ%R5SETUUeVuWXYZ`^_`a%b5cEdUeefughijVhnopq%r5sEtUuevuwxyzx ;PK%%PK;,A$OEBPS/img/applications_locations.gifa!GIF87a1kkkkkk{!!)RZB1k9!ZZJscR)!!{9!cc1csk!1c{99R1)99)ΔRs!9BR1)c!1քR1Zs9Z)!9c9199{sR1ΜΜ1{֌R99c{!k1kJJ9猌){kJ!s1sZ9sJcc{9sJ9s)ZkkZR9{sZJ9{B1skkkBZRsֽRs)R9s)k)J{Jks111{sskcsRkssR!9cք!RkJ)11)JZJk1c{cZJcs9k1Z)B119RkJ)99!1RJ{s!B!ck!Rc9ZkcsRBJZRZss1{BJ99JRc{JRRkB{9k1RRsZRZ1!sΔB9ZB֭,H*\ȰÇ#JHŋ3jȱǏ CI(S\ɲ˗0cʜI͛8s䢳O1BѣH*]ʴAPJJϫXj]I΁`ÊKٳhӪ=0fַpΤݻx׺VtEX߭TƪGgYemĩKr^*4p|hMZ4(W&};J?˸s_b' IVjI'e_m&o=zٻW y,6NZi9KH2w6֍#N= ]|972~GX dJ@P<Ⅲ g8 RP&J0)P S(|&:PHŽA! M( @8HFꄇM|B%,q L\"H:xdO"bK $ ohBnN(Lah$HJVr'!&hNb (GA<“,*WV򕰌,gIV򖸬dj^2 0IbQH2f:Ќ4IjZ̦6Mdr 8Ir<:v|'2ͨF̄A(H92Ph%<@ xFgJzT~G%38s ZCJUj? b PQӦ:G*,™XTJ@Tt h#JֲvәTͩU}L;BoCQp; x`Yh8GY@B?ψNF;ѐ'g{{Fz;zn]C B# !Lw؟NSy @v݆t73s] ?~Р6.cg:5wOT7m\p ``yq{{/[u|#7 P @ p?zS=s??7: "F@}g?|~.yM @ {wwqޖz   0Gv  .(|$x6@`/:؃>m1h&Foft?ƃ GpFsJFqgsR؅Ƅr#woPxr^x8nVt'sƅVth8FVzDwsHwc{tjnTtyxuYu]u8gvv7vnwrGww~(oT8~tzx'ygy}{}{؋Gfݖ7z{W{H(px՗W|}׌{oXnxnW~~}}yxH明v؆/H{|g8wnp X^n&*Ȃyp4h8xY.9)oFxq39 Ɋ9)5o'q}9hnbHreJCz&SL {hs}hxo(UZu^gfו~Ƙmvq7wqi(;WgxxyWyx{Hptvv {G{8,'xo|}󇊒) W_i~~)))Gx8ؗ9^n29n¹o#+؂y붒7i ɓ=iqR0r>@ MYnEydrfH|hoaneIn䆠Xk9tXזٛVx{I}H  xiHw(~}: zCșpJu׀K蹣+z| 阏ɏُ㸥JOJngzW3Wz^yi{~sӹyn nYIqitْJvZٹq7YYUxn骯÷G韷J|qʞynZrV,wXYs z) * x&gnꆀD+ǖUnڊ&qaGު:!9vyɉ|iZ}p٧*zڣyC'Y g[ʤ:gʧiHv Jzie{؛8y؊Xraꍫ}z2ۀ !*zVJʎZI~)V dK f[XZnjș~9jxw˜y[֘+nZڝ; nz4[ 煵j1)XGư7Qiຌl(ǠjqEZ& ;쉈`!zH wish*> Șv:e y罘SʌKkj9){ڈ|I@[f 69k+\ w8Vljͻ 4LzˑK ޶M H nq>cXٗ Q|~@ M ݌\b)д- ;G{@6';)jAs.T' [4dm\[ΧY~.s^K~h]%iNm~Kߒq-unY~nz.~MR;yŎ~r q#NtI :=멍O(n-*Zyj]!CNԣȦ}L.uGlp=ɇI=U'΋J.;*>Y:h͐+|Vy^n _)Ov<؁M)nnp# ob.Ʃ@l=_2LD+Z-B N+ʫ-T|Ȥ~Q[w/Q~sx!,*4C-^ĘQF=QG#I4y2@J@ !ATęSΛ!y 0h RMȒԏT=Z8~#Te͞EV#يX9W܁%H%QB^9 kb^ c;.Qq% *{XěHRhJ2{F-s㒏]s$lQlSn7N}mċW[*Y۷!Dp F ~8QaIJͣ@@`rC7(]p%@Ohp v.: +B|[ Z`AоPkD+P"N Yl 숃<DPI#Eq( . H>&Jn6r8sr &hi9_QI:t3 nRM2RO76%u- #F-G#DkTZŵR^3bu pmի mMߖ{K! T:ӎ*Hi9FX7s>oλq1ķ\Մ7y3#֪OY:0KhMvtm ?esܱ5Mq-v>.%|2)\QBW=SL2DSMUf9iis@BJ)E\soR:l>SP/kV"1.,ԁU{m "T)mմƍmfֽN෦W/ʪtm\+ߍ KiMȢi\ Jr`]3)drpX3EPAP!ﻲw4g^_CE$D?}z}OmQG}H"kF|XutJ)MwyJ87%n1=SΔ& N1iwzqejǦ1J#Nx ^RYaXػ]um[ BMUhiH@@&4;ͭŀV*peb(7E=/ukbZ49-N:ֻP|av.~WlƛZD<~_w]%ǹъ_#fð=L{  Ώg$h>od"m=G,Y܈IwSe<'0L Kܕlke@y :-OT>X5hVѕ{eNJXMkrL2mDo2QZ7a97Dv.2eȩN J pJipn O"h}f`8I a?ɘMtIr6Vh&AqE eȮaNED# ȥ;a;]ZZ@tXiP<ֵ1l7yX,2$£bA"xFZCMIn$f]ηQeg^ο"8C a؊tU'iDV_5@g؂Z}BGhI\ghzP3nt&XTm*ֲ %;wDb;"5l WBș"`ln7Eȣ2-$jQbbۋjv笓ڧT+*Jѐ#w֤ހνunoyZjD0vH )Hͤ1n$ Y uҁݦ›X5u4B58TŦxqWj_ljX$_sL``< YxbE['8T-`*>9rEϘQܲ1VnKǒwu-6//^L/W`n**4^P{]ƫBrƩ\?0oL ~SAuR;a_ RJJZ|e3r`Znr/͘t_=Qd!:yxҢ5 y+ ]m+Dre?kʆIv-fq'7 v Cٶi,j8nVT#iqd2eזM)`+x'ElWڧJy/&t/ $73BN -f,G),E%#$:l#L%c67DRLKccc`^ZcZ#<ROZZcZBG c_ V=YY5\B}TezVwuFst_5}buttyebƳ̰kkkkk ck$gkk k"komy"Ayb釛Ȅibݕ껲ƻʽĸֲy,*wG 24h@… 2fȄ"Ċ;P2h؄ ІőlȀJ.G(Rc2bĠQʑiЈ(K255Fʖhc 4PYʦk!+ئCm<*ڣAVLcÅĥdH"L0FQ +Ȉk..aQW<%w1cɸpƅe҈Zf4H[G8 Nȓ+_μynX썬CJ#%fpCWj¬*`5+Ԩ1A;[E` 7tp$* ` Fa `J>h!>x` Xbzxb(Hc,X#+~X"o8=v$"!F9Af顖v \^i&bjl¹xZQǖEg8 F"H8Hp<0@U@6pSSfM'_jqjeT:)*iJ릦M^ lu7"knذ+j-Z~-]>kRjJkrfz6U쳞&kio,pp p/KZ.FeC tPƦVpAn gar@5@C v)&zm+묱z4F 655E*^wآ&/յ=lDodЅ+ٚVmIoy<7eZwSsiEez7|LAޕuPgkVy]蠓.z騟z講z꯯.{߮{켓 eqBf$D+[ e\&GɷC 4PA ~ ,  0 & /m:QcJUbA PYWͱ!2`Y JP2! Pfs Kr,[;Cj)|db$*JL򆨞`;#a >W3(DRTW0E`'y9 01\8-AGMz%9IvF1lS< IA<"E:|$#Hc&7IMҡ 8:I:h<60;!@XA 4`,3lЁ74@dL_Gh~fzFf%hz9N_NiDcN#椛gTP-~њgD8Dhӏ @q(kCK6Ŏa MH7%6>)X"c;~ZE/Q;te=JjFM*RԦ2N*T*ժRVc taqXJ8 w.ֲp0e&H UDZ) F F(@  r0",! QB|PQ4H 4Y-vZdHEGƴdHBEz ym1Y-^ZfQۅ,~mE\Tb(kY3斷nujwES@ōmk{+܅l`LiL7 ]ΎV]vEr 1_QծS:ؾ}p!, Sΰ5 { 氈?<[x (` K5:`լax@9 Ld(0R ALp  P aɦaH,]Z %D4(+Fbg\ԁfW ݎm3 l@UB0}@V@?lOkj_rճfS 4Xh(dZq\t9)W| mֳo}+%5HSlcFXZBvns7-rN7]j~@7СA?f\y=D2| (,4EB(BPh @ 8rE0+ D0ȉsf1 v@@ T/l1ovAv^y̞? ƠL7g0=tlskVM[ؿ:@qXj?, ~!(G:a |c&<YPM0%Y6 eH0py<@~{cUV*+@ 2` @bph>(n`G*Wf`Qc R=L)pwv(Uc0i+@<mf<g9@>03k e~p Jcg: ]h„s< rȃMd2@@pp+63s200~ >w@_z% +%Љ&:p<0&Ącphec8|s@2&2 o<0pmjtEYZ8Xx蘎긎؎i~:v5op~s  0?vo= D  7( (@ q@QE{4䰁t`3P{<39:r~[8 v0q{0sag> z:Wy07P%w)I4W0X8yDc `q0 Pa~J@(Ww2Edw|~  DPB䳅t@" ewP\9 pTYr?Е"@% Љj0{Q=xsYw%0ѐ@02sPAPXs%Vw`EVPfP۴N{O_y9 M{9Y) J* ʠ :Dco`c7p!)~t Jw`Iŀ  `1 Yh@eH0K] 2P 6I@c{0 P0 c p`=y`_0 p~o=!]zDЉhufpr3))06nz q~sPy`y`rPp}w(f 0D`xYP% @ E K8oJQH`8le p =qwpyP `Yp0t1hHʴ[= Pq`s=Ъ39@tEpZ_g,BiC{ ! K*++- /;([#+&7۳46˲BD%C x~w r"pcq`w~<wLspI6  y@1 YF@ W@ }=#ID F y@@kUivf)pwpc=0y ` |dp 0`wۼpvs ~PsԙD0$`  E@Va5mwp Up 0`10t J sPy @=0`t?0и+v`4v0֛bU4 ?5p0Pp`JqPWX0Pp@@ 7!*+#*`D+2d|1h\`B  KpJM{KЫYMl0 p`˰ z>p kE vP[:v`jO0r0 P,ۥ94[t0DP s`yp 0s E0 s0~ qEMDc6@up(07ppF<@p {{~V{@40`s >'`HMH՚ts9L P8`q%{s`-, z>0ƫ7؎ْؐ=ٔ]ٖ}٘ٚ-7fUpWȐe5p瀪~ЉPP 0IʹDs'dMpN`u@:~Pp;F0 {p"P?p@ߐyPת0wPu PѰ f`mP t?m`M0-v =Щ~ 0pP0`?}0W<0ӱ @mI`>0Y$[ p y>Zz] ѐD7 0<簹 s;Pck@JMx=?+|!:>ꦞ꨾>ꬱ~? ` %cȧpb wd/z=P 8Q{C0 #Y ~M`f P` @t@7~uMuy? @ĭJj=DХPCLV. N :L,t J7i*vvp Zp =g-/abj5pc @3mbF䛁 vp3wR:ypǔ . OMǺ[V.O*giX`hI3Ypp@4_7q|z88&^O8?q?fO?p :PVw7&Vup~op0pF֏X#AY@= ^U0@mh-|NL@Bi!Ced 2MQ6ӄz$0@1\m8̡w>Fh{b44ඥ(5mpd[yA&Ґ,d#HH:d$)yIfҒd'1IK` %|#a%de*bL d<9hBtG3!>A2e6m Z !~t&BLmj>549Az03aT<FRg2#8xj33 pLm`LPbLgZ,L-+9{Bԛiih3{&3E綠iRx&=ngĀ8=~ QD oG=~x=ԱnG>|@w> nԣ87n{:zȩ{`xz"6$Ԙ;A~5AvD᎑C2r{D<87}~ CΈ?<:g> l`F6 S)sln^c(=t޸<~1 0:Z<]G?>\P3d81yk<ߍ|'_g~|G_ӧ~q}lC?}xC 7qe܃P>}c<0s_=s{r 0Hc|(@BXfJ`NNN@d0NgZPKcKfPAZHNNADABNNd`CLN0"%$BCZ,nCANAJTdB46AJC@CPN`fCnNpBu>6%\XY0Xj@Yd0C@BT-FTD\T$,NHE+|ETt2xC<47B\CfH\1Ll˲@JPZN`N胶lNAdDH`=`~l`KYLd`[HHItECHduXTL}RNhdlXuiYYXYz=ЃJG{?`j{pJ!e xB 8I(%,,\]!@[ @#TVFV xc,!H!(R=!EB(!.@!P$8[KB|F(OXF\0#>ԕNh0@Eօn!(eAc#P:>M^RFcC YKc @#ANH=~BP!O8\dOp7f (YC(g-qmcTueljCfdjV0{?XZlx.HmmyV I(P@SA)Z])ЃI!7\`lz~.0B\}hfD}$Pfu0[g]Pf\0RT).C ȅNpFpv]OS)f=,#eWo-{7fU#[ =},xp#e!VOpㆀ>Ѓ,!=l0MDeh&hN_WW~N偞FjW=ŌTIhET@ELqFEhqqLqq /#q 'r%#_$ktAl8lo0ЪH08P#h&$P=c؅!`ys P؀ X?}@(:eȇd5 p(},hB6Ag8x0P`J,ypޤHAkR>#`%0zsU9ZڈWUf5Yiv6lٮom .]1GrD#2f1`ăj֬>I(h?e={ax/ֹ WP'A  j"E$ȐHĬS$&^Ӆy$A+ԇZ%#1!#FңO%O4$tRDy]nq!zpRKv-ԇ".a %cD"(qr]t}؅1 2 {\1pqI|L3w$SIOc!9Q(R|yrO{5BKH@gq_}Am$|9g -Ɉ' ٗiџv'h}HuR 3s0bL5sI5cIT.X#?tM5c6Hs&p"ADaATC<p0O$QI(Q<,,p-0 34 sv%('0O@| .(‰h`0. 5,U-'q>!ˈ_]PO ˅! sI'JYHx9BgSY{OS-oO yJ-yeуrynvV ޵[{5a=6e.8SM<հ<I5w5yǣC>蔇_ vQ]6C9:"Ik!(H-I=w$#5HNd3@9n[2 KѲw a%HH?P'LIN '. }3´%Il9c\')̐fq,$:va4$" d'9pⳟ?I\0C;1-}4ȠIqA G#q`?g|>(3Rƣ=V\ȝ<7 ë߆׏cF>xDu5NeE.X͇:2J^> ,zz\1WtXZV&86~[T*VwkSZU#++` ؚGg+[Ywp =1ղvi>X}Vq>bZ謹P*+&kq;wsMjb9+WZU=jiJ6W3SfLUlY+rE/e[rwE/{K_f׼/=+{G|RGKSC! x,.i<ا \`, Z^/x61K\c.X>x1\QwaZΈal/|!Jqd.$N^s\x}c ]g|f?kd_0񒹠"&n2sfyqLxàmd=|aáH{Н?L3Zeft-j!!2c]+Zְumk\Zɽ5SZ#߬0rP[(4LtdJ>nm g0pf8&"H-VQfv6hw ( g )ëng7["x] vC.7$RZ䃼 -;oU$yڍ ZHZxlS݉B3Q l|U\c֩AogP`ÎWyFuኵ/x6n~3]:q.]!w߫v-1nIs~h9.!>< zG>}Ikw}Yz/;3Ў-P͔u ?4C'Z%ja z.F즧>!g$LY5h@$R@ ~yғAdHdtL N` Ĉ %u_-iB&dDB*Ȃ3I'd&\qDQ4yĔM$ Ơ9>Ѡ@yYX.tA=`!v 'TLNj"1˃P1p,J㘃4<Ď]$D'K -PF8L .`I߿GO3H /A-X0#8"_ĈD+.ɴ[t̑_a*-D΅DG""!T!0NN4-%' '(/%%BD!ÿ/$+DI#$B2'"p Ѓ"#.Ԃ CлΑGGH.\"y(Ӽ!p.b&PXA>>>#?=S!vc@BĀ\,@~DB|\%rM :J ]PLL4H쇵(+B†B"%`CŔ&uBԂ$N+$ ,2D|DhF:!|p+0B\C ԂdCLʥHtLNxB!%SP,D!D'h5тTC+K!$Ә($B)%XEpBET._TcIRNCSG HAL%H0'% hCXj#q6QFLL4DI#qo)iـIHBB6$,DT~.DEJ"k ޢw"Y$'x>Ȏ+x6P'pCv28~MTB%䷬HUKt -wz+H!袞xGhg<Љd~p2B(B-0!Ԃ"3D#R)_Nɂ0(ÈX) 6\c 7dCk>.B4C|IOҪ"j)G2 zgdBA>TL~1 IhM$sH(,>i|},BF苼(zT%P|Ȩ}*ܧ1T0*,̂!=6ͷHA?lL/XI%Vzg'aV%Nj)>`ԭDPD B$XXA6._aFxDrB|z "B`7|J* ZG$hqB{&:xtp,X1lB#*<8$P@{0 #$(Ԩc܁A,PBMHC3BByM g_SR83EȂIwzDB $&P,x0V7P-} V23G\. Ġ':/z7:3,*c2/+L#:C,x}"xXA pA?leG333c5K%sz؇v*ԪR |/hpDxB Lv+ ()B#pIƌ!4B= /B†T)/(=AU\2#4e8a+aTCfuL~1TB:x+} (ɑB'x74C3,ÏA04|$lwB!28</\B/"5C*!2x)G"$A LL/B{7^C6`!p>*Mr)3>((G~CmV h[d@9WBxB\ctΉTf R X[C U(%c+Z~H| tꔩ~8IzJQ~g)ɲbuJED/^cTdQժ!1P=#ВJՌ]nૅ~8ˍ'wУS:'E`J.xHgXeJ+Xtg/ߪGI,:FATSHAD.(G>= \jQ 2DEAb Lj$p',:1ċ𰢚,$pFb$FW*N(Vd!\ $xy8~bR n8"A:F~H%N0D#=0Dj.уNpQd%Nppc?"ÏJɉ>ia&"`,aTXQ-n򪩯kx:9Ċ~,Y)Ѕ_NDlRՔ3W[1(By&M.(X`%_E>hACƋ0")ЃK(W ~.a"^%0^a)M *P@1VO<♱(JS p1A&J82u1ē T͋~ΙF!Q&8`,c@=:B#mgpE O0HN% ! L>X).hmchVjI!t؉ƒ"(-yHdIfY'zd-7n%{h9D(Nd7(ƈ_Z%Vq-`AFI%jYI~y^B#qL .E"Ja g8ppF'QR<31la0ta /VÌqLv sG$ÁkЃ 'CV?uC aJ3:NO9B; / *IJ:}* WXa#(AlYRvft m?B P/tя~DI#!GI0fTq9> JV _Ja/ apa+%lӃ<#upC%L+UPG *RT:P>A1< ﰢ)j?'VQbÅЋ^AHP,0 iB0DVh-G/B((FεE Vp?\L I2 b PB 'dd,E"~PIQoTҰOmC<l<9Oj Aq VP⡄Dd2@j]ԇ+v %1dUD-,@XST46p!31 -!ZLNh!C$ nco2MY- R2BP B8q~$dž3,ӂ% /#tdF$PN؀>! ` JP"D*8T$A,rrfF?O=9 ^!A? hIP-V v*P( n;P n 6W J};T>8|W`8Ld$jD"N()ԃᔕU*/RؔNx<)NDH3aZn)]zP (qX2$+iCKI qJfhN?K=, H76%@ _uX6t,#%" /-3R8@ CpѨC\GF!I"`Ezf G5xD‘UH'UH°/bg_[1ho$~W 8xQ \U+dR >&0pħR(Ah*p 79g" n‡%tiERct=xџ^ ns ҥ|^Lu-WWsLVd;!2!aXCuph1#0QFQ)\R ]Ef>LB(R01'nC%VPZUC08-Dk*~ܜ(7%8kSjGno͏aCF0;AB)"EnAd E&$ yG݁Y@< Ɠ EKD`z R` 2RTJD 2 qT2bLF*$l8~AFi h,!?|$게wbda<A:A@ ;ڨMAn JhA *gHXej8 򤍜hA!tH#@ B CՎAl l 8iXS k Qp ] &.KfW#M!#GJH!VaVAdA(O  1pQ%w`R`2F+: datAH TaȞ8L@, H.HAAlXrl9~"'r नF"r$(!@LƈT"H ¨h> OQO H ׆!rF? Vbx9职R,ɴX&9:p+-: !p r֐v 8Qj!:f#B7H؋(όC!!ڡQR"F:Va"! #7Z\!&aaPR!a!@hi@br%av~JN+YA:A#r r"ó!"#Jdd,R!,l:T);'u("S!((D< ÑpBJf PC8&:VÌ*^̨XMX"C ŝ>+2!KSUb^M!M,4.d2> AxZȭ3QJ\&8yAPab#!$# #@ZA&A !,@7=(8`H3<:N5!7cF-YrVh l'Q`P-Q;DV"5o\UJtaDODs$ 5Qv 9v)? '3S"-Ժ0ijETKƎ=ih`"v%1Y!CU;o %C8fH= ZnT0 i"xW*:FXAQM~O0D Y"t)8"Q-ӥZH4t"8!5!%  mHP"TG^H68AJLHrV;Õ9YwCyjWHF`0up?u5S=7v!ضf9$pomsCNJc3P9M!:T!-8WBmCu, f#7QX8pAx@_?UPIت';6yU<&zha h3{y셽]$K&abhd*)`ЬgO)*gU,(UShPe?ۺ:$x`!{ݻ[D[ߛya {}٧@ @4@r a{8A`R"#F[hX>"'^#)2!~;1/>AGӮDA=^M](49gk^uM~s>{[xU^^雞>uC҄!Ǜdnӭo{2E^۞[7N.^> `o>?_!_#%02k]z@;w\$lS9T>W[Qe?Y_m4{|?N?kjY?_?TB!a[ \ƃP['9 :|1ĉ+Z1ƍy1ȑ$KrdNI@ v(The-NU-Vp4Z(.KZj2ԩTQ2J5֭\2rekX=֠H\”AΓT 1ƍ=nq-^?o`~ul#CYl'(%{ZrhK 91ZjvIiK}t(􀎝riN-M.rAVqʐ 14CnvbTvbnQ؎A_Qg}? X_'w@ց1 Ba jaz! NJG$TJ*K*yBApR^'} 3p#DDO_?$b3_L9ؓ0O<|MSIrR`W%_iY%/RrnϓN3= I&ue?EӉ?%O<&F 3{bZ|6ȩ)Yvzꩠzjj9X+ź)Jj,첮>+iIK/)\ 5B 0r'u҉ sopY$eu$],7O$cp6]f?VWaIO$ܜ#."?3&A"Qq҇!$D3qb0 K}Rrl8^fF#3*t$ģ@ k{iUuRua_eh}5Yc w[sHVz=wf 6Xwwᵂm-("Ox%t"Az "G'䃌$ɉW.\^y;]d?rI_dR[r/'G +Y -8Rg1zD u KA8 QEV <- h3լEIԗM ko# @@ <`@ù²8XC%jp$%xP%'<ƭ(.[p-AZ (A0*rtM- ZЃ 'F_Nerc;a7x`nČ$X!3bgZdn#(h3)sZpi/.~iS3qNFKpa D\]Z9[v//aqGeH{E]R{T.'jō1c#@L<t3QJ < [#h\@<rA@ pH Ov]PGyR| 0EK#u`]Ԣz(0AYnģI3ZI,"% @<ٶtjŅ3 !ln VDOj;J<"=00 ¼_G:#N$ @,"B ԋҕēuyA ` bJ3Cx`+|F.tJ8@ %xvЇ!\BG$@ ?: k#/@pz. !HH;/# _n3$ tqk<=qd8)aD,܂-ǭƙ`j7| TZ<* Poe)LD? `pT?!!>{>KUf"о6j!\bȆqnaN׎<}8L,XC .zHc*aZ/s C%``>{XH[f',mRk|—e_ynXᮅThbE `,@$v Bb)#p~H% n(X*[0`FufNp`9g'$@bW' %&W` O^&vtNp`DF  @Yq D݄p^` u^wx Fېh\]`PF`.g]_K 303}ۥr* % 0%r:s P @ 0@pV/L##h ee 0@ -5'V`b VI@nl5#U `F#tePk F`sxcGDF p9P0Q%`ZPDieX O+35"XH8Iَ iY_ !NaGÑէr)-1R} W |w#4j9p P 7I.z [xHm]bX>0A^k  P TIw0H M b45E8D D6`G e mh (qȕ 0)t7ǐ P 4DcElyIYE iyi) 隤Vɚəi雼y#%cp%G}oq}5*aU!G H?XE9Ȁl  k @t˨@HTk4sIR )#yiyVưtǟ@ oY Jc GȀ< %DjX’ KC{i?pp  6GE.;Jw=ʣ?9*@JAڣAZIz:MKQ PU*RTEVʣ]P\ʤ^je:bMc)O?*-V- +N$AbE\{ p p Їg^P Yy I.#@I.#bڀ {yx)++ZeSCHOs?_i p P pT Mɗa@ :WW Zʭʭ*j욮z::튯J뚯 ۯ ۰[ K#گZ+{ ۱U)ȐRdgrj}]- ] C")~ a`IHcpOcU O O O]۵^]˵^[ N^T;IkQkuK`ҷഒN9J^[\˵ R0Ik۴9ƹ۹`[K;뺝붕n˹K Mm+[[k;[|{ ;{л{˼髶rF *11-. R^eR,,]`˿! $\",#-/1 3,)\*l ]5LA C,ELGlA='H O]V)"+ؗ%i e0(IPdC` Y{`hЉzVuLWP{z˵g촙r lOȎɗɟP{Ыɥ ʝʦr봣ɩ|ʪ ˗,˵|ʷʚɨ˽L˾ܻی۽˶9V\}I蕻>钎n~蜞頾>餾ꦮ륞겎n~^.H=8؇3-G6L0iX NsTЀ`epiΖ7.c=N.O~?{^n.n Y3m CoL`vm5Z`X' N0O+6tOQ/SOU?in ^Yow~հC&z9?s{=P `-uxkJVoX$/ɘcN @F =JZ@SӀ^u^kWK70$]s$P Zs_F0W+6] <Ⱥ^wVo-ӗ1p?kʬ W!D+AĈPF=~RH%MDRJ-]SLb'J':6yK8Ճ0?u ^H.򠧬 -C`Il.p!XS^}X`3˩''@q"O>Ο?ʓGҾy [Cx]Y½}\p̹ϠCEDFSa7ug־Q͂pd${1kqǟ_J:7n2ɤ}0g3#5꧟/b+"ğ!G6ˆAhH=L(1FgFK?+J2Q)$ 1;@bW"0pB#%80">JDLy8GmIĊlN;ӥclG砛l)M "Ɛ%[4W@(h.1boj(!ybj*qԫ<DHBQ}"d5W]wsOsF ԇ!I-У6DAS8H#УC.p" H0H#0`b+#@ "L GY^&`y5焥Ř3#0 H=@ BE!0B$B ##" ==ȇ cX7:jS'#[XnNȏ'lv, lGb í ,8Xf0fh[:!0P=7Ц{qsA6ȧFveՂ<$f_)jj^'B^Lww Be) ^H0\ڃ`%X`OZ{X"6BHYTa=ȣ/x_Hv!pL7D 5rhPb @<~DAOl q@ C*=Q0Êqzfc#!ոF6s܀DTP̃rzc33lfQ͐GȎ2/r+9LF.FJVҒA=a 3>T{tX  +TjW6p~MȚӘ.KҗHNx/X4ئÍC/=j#!X@)D! IB!x;\AgI`ӝk$J=2"Aؠ&gpmB0)LV|D]F)&vӢ`7y@yB|C#R =؃ }8LC1 BB  !(ܩFlt9^bԨG\7*u+،!= c@!W1(Px T!1hJ3.Hk^ &O?1u2ӑRI6IAB-5E(*Yl6 8A X!@@-WֶF5||F#?x@ Ҍ\1 Ǩ&p@D{i{!zZvwFJm;2J nG\Q70X yPA |Jlr&̻pqb‘M}jl zkrL bNTb*A3Ӄ M]4r}S|2-2md6({Vo1UZscyCT646XلYhEiW].^\| *Qjp! QD1]aHn:L7lWڜ@[ qI7s#21g "7ƃ C jC%]f5|ϒ?s "IC= hьʎ㕯ƖuMGP^pr% yHm{LmBC.0O-ƞJ`A"Y0$Xo o/A0+#~[ s>3ch#3VDx|J.P.,'JqH-?.P1k.?f40b% #&m0B98J؇J=>۸,EkSܚ %+yHP2 ר ;I(9vz7^ɥ}J5ҸB.NBj(H:̈́"TɤM+Oҵ4N0)JJ#H.- %Ї!` %ī(3I7p#K4$PJ, \2i2ٳ%X(Hk2/ c؊"$]i>$8ABLeYpf0M+=~Xn(x 0E'r =PQ /:ZJ̈́3$ge@Ц(@Âs"0<Ђ}`PrRͮKIq.dB!"Eɂ}Ok8-з,Ӂ9.M4(=b҈Kx' #&x?EU-JPLOue<ؓ $Z"gFjx~XZ֤/+>!YxªdRǞOeZTi6$:ZUL%P BX!/⌃X1 'lڷՋUa1Ih̝l %"ڢ*=Ȇ Ä;y0]L\0 [ؤL}S<<؃܎A,}F,`o1%|Ʃ6Gȵݓ`ĕm/P2Je쀄Bf)&91l6h)&pTI^㛽Om}N0H0Eߎ8ϗL<k0q/n,!T#Nqa!HJ#c vL qU*+TfhPP P/ mf*(+m~Ї}e+F*ǝIt虾h :>F6 *xH}ЅYHy yl{|@aiUO"km%H($X9Q950eݷ{j~ZWPּ+ (Ц, xfG٨jkCGlXj툊!dE`;(:U3s>LeLfa%M-DѼNxx4+EC ]Dqbih,kD,2Q@*H$.J,bܪ>$YK #/˔KjqOaVd&pX T󇉝&?:S{R ϑwqL/li&&a=p?:"Q+dtNűa|F<<{G=2)X,k4wKs7]JC<$(SRhȉ!-:z{pzM]s͆*c~XW8Pz O_I;7L˳DnY,^xbA <8һ J+/ȋ9L\y0?loZa/w/ ^Sd${bnuJ@"AG?=cڿ,X(eJڰ`x0ʌ._Œ)s&͚6o̩s'Ϟ> *t(ѢF" `#8A(V: бQhǩfgp1q?)^B4jTSoݾ%`bƌVB;d%A*Q%K5= Z2)ҦONz5֮{ `jTNRZcEi !Ƀ$(zXm6MTU]%n\)H'GY6!hEXRaxp-ftkFtcsܥȽhf BHCu⥩' Gܫfdvf=6Ņ46^?'EN,R\`nܦIXcjM+Kn?}$E>H?tVb/*3\%nݎiLi qrxÐ>eM$F$ Ւj+%).cM8k0]}!ļtEf$qjW=PK>E:Pr?$)7r[S^ui`v>)L6)RQ1ddR-ld]Ѓ҇/"B(80~tG"@@s",(AFe@LJ"3ʼI](Cבc.xY+G!p` G?iCzP!xJ@F02e6A$RE&3lb!!0^t i byأ G<`2 =8 =3:m3GS+`hjTBF$AKM^#˖5˻%73 m2\ I% c~dpd҇R։$P˔jMؚRm޾CVRU!Cd,/6|jQLgM UJCU$G. ^ ʔ_"7"3#EUՋ2*r(A׳D62 \M y`·J3-N2l\{~L! 8kleV c@mYŎ0xH#S@ ]h@| z]ba@0=L$c J\ Pܐ@ Q02#أ8J`S0ch;(a*vq1.a;A! ˈ,1DLa euD Jbdf#& C5)p !Ddy5{cT}F@Z#DF@ PVCsE I3g=xFDZ;\.7`D*A1 9!m_C: Jxၑaa; \Z;H>:$]U AGFd>8JB3B-@x!R(NߠeM)  A<! Le !9ÃC'$@b6*4}X.G  ,[(t 0U|p8,,ApCl>icCN՗Tax1?$B"*A0]N܃(d T0b=-C li I֞ C$hAo?t= 2Ci(FQ58?}P%pc_Xl}A0\!ҨI#)$B#0CLd :xUՌ hei D|Rc>??}2XIʬG&%H _qLQA E >>07|حd]ʿ'r[!?Ж|> x=Clފ `>\%0 H r1z:覠fy*B==È),B?DGäTmmff_>^rbb%t%a:t$)m!` 6ׁ^Qb)')'! Ru%8BBH*"ihD=ގM{eǽy-҉fi"HfEP}jRZ<܃53hh%)(hꚎ) @ Cg5DBCH_D\J.!DjF2Ldrؔp:R[(lHB@"ׇG`ALDEP.5R{hĈ꺖F_h|^Մ!D3|H<,A.($(?G,ͽTYEC$AC-F@DdL+ #k yi.u%eW|hH_`T)?hǓ/ҔE\TBU14lF`=0b%`lPl:{FɱDFvA-($"O %d2@1X1BDtH\G5(tXAa 41 xZV_5tA6,Mp@yxL?@% 6D~<@e@maz ԠM$N֨+N7n-:D\B?d,]EF6dVwlX d?gz u L(*-x`Ff=ЃAdGZф=.P oEldh(m-\7 ௬A<r@O Mcaz0 1j=Z\YdŠ`CFDAi ʠl 'q'pjNd ⤗>pǖ-^<&3 p奾0sW /p,P\x?()$_$e@0~_{5 `Elr %|:p" &UBLI]H)ۚ@ @!@5ؔ6Nu 1t<<2`%C:|\B.Drau`v6dh%VE$/E&(@"$ $|@Dˊ9zp(9c):2}W)?(eD<\umIŨ qpgݩ<$ xF7ɾkƃV=^=,IS/↠LpL\_rx41ңȸ2p$РML_^^qKD6h(EēúCappfx29Z3|DF9FD=l421L:R'X>@uc40^z 밶`@  *I9YIXJ%zbF@ b! ^aԉ2 C]B'X'(% âKy؄0?@8`A&TaC!F8AƉ'FI@ vD>N0pW} 4~(sfӊOF:jUWfպk׊ecȑ"x|'Z^B!]Ҕ珩?xmjkaÇ'Vqc /fTDZmY$ӢTԨ&0e6=y͓o=~Bm{si~wo߿>0FA^Fv3-cXՓߞE-ݏ?Iu:|yѧ<-5N.A/ڥ5ᇞM?l! 02b2;+z+.Gxh'4ǟxh $Qiƪ,C̘㬥bZP!!4 LHR)k= >>NtrH*,3+B,I-h Ь;Gv\NIE:,CJTn:1?1K1HM>|>c$4QI-EsD֪94UYi=sF5dP_2, 9u> `mYE+L5>-[uA{}VmU b{s%IsѵjS\e-^MWy[vlYXMc|.:/NXan]SUXmI_~8?0ۋA{X_rY ]v?i6dIbN9)ix|mIPNZH+w驩N>=~ψ]:N0q&z׭Վ[nn}{[)=XT /xs]"!hQtwa$1 c'6IFNΐi)bc%לҕS8ڒ9[h^ XILeN,LeRb5a9;4Te#wn1pg/>Ě/KMwlylt'*Y?"AmːmЄ6T4G'DTI)mrRYK[jҘ5MizS攧/ݩO{:SUE)Qjԟ*5IuRTNUUE*UjUf[jTjyd,Cˆ0CXVW{k_;׿ 6w%a X"v]hC Fe4d5-hG u`IOhc0jk^;:)6AjSZ/ml+4moa;-na[2M!n,ms޶w}+RWE{e^ٲ׼5.vu.~_׷ovL[׿=p~zljHv-YnA?v00΋874qm,3汎{c!?.򐍜d$/Jn2} e!?Q򔭜e,o9]|e/Ycvr|f.Yf^?p}8NEzx?"c>h}Ѝ>=hDCшދH+ъN41MM9юtGzҞn]}jIwҠK kSWѪ^4W:ӼNMla[ؤf57mF/Ԫ5}-VZבv`#ڱ66? ljwζngݫVvc7!,լQRH qO1qoAr%7Qr-gy!ؙ# 6B;Q02KtƸDяnt/]LOӑtU7ԗnu_}T׵u]`'{ا~v]h]Uw{w۝{ݹw}'<팧qjXXB> t D#N/tB̰D$PBg_H~}m{}|Ŀ}+7~|Og}o~~w_O?~go Npa𛏄2F A! `>`P 0#'%'705/pEpI0=);]G_PcM 0Ca0{pqP9kP0Pp0 epwp I 0  }PI@A"A2 8 8!(&!S  Qq#)q107qqO3AKA1Q1*CQWiOE1g{UQ;mG1y1qqwQQY]c1QQQQϑq":@-X #j: r%8h"!R"-"/6R#="#"1R#I$;#-2$/#I#3$G#!r"i#Ur%X"w$e%5&K's>^''U(k2$QR$(7(y2&$+q2*w*a2"R+),#O*R$$o(($r&Kr,'2%r*+-r+Ͳ+.&.S. S)pp"lFL!܂ -h 9BJ#2L35!494_S5cs6[s6a6m2X4q4yS7e6q7Q38{366s8]S99is7S6S:::S89;;]s;s8;3=S<=S6#!,28-2 %G ,AX!X#$tB)#:!B1TC+253CI +TB?DiBOTE=T?\tBKtCi4EMCOEcTDe2nF}F/DQtGcDH_4IWG4DBYHITG$J[4DKkHTJtILFtFtGKӴ8GLMN]TLMsNK#jP(r 3xaA98a q!"URER+R3S+5'R?S/11US75TMTET;UGU]5T=uUKS_UmUVUUUeT}VWcW{WwXsXUSuXaVVO5UWSZu[YU[uP+((3j  8!4,_'4_9!:_u_+` V_5aVB`aUa`b Vaa`#a6a-vb1B5c+Vb?bMb 6cQ6d;vcAveeIeMggbfe=fKVdef6gvg6eGaqguVeyh6fW_gvhd="l;"d`@ApxAjoAppoowpppp+rp'qqAp7o=Wr?t5s37t9qS7tYZt1veu;7r]wtct77ugp=t/uMxgxmuwrwwUvyro7vWwKwU{wzwxWxqywy){ueR}~~~!pٷrՁW~57!7:tnbaA!IMxSxQTciUmog؅Youxe؇xxq8K؈[Xs88؇x88xo!AAE@X⁐!T"9 yAX!ax%YAD9!?8$0X""=a9B>5&2=2%3SR/g'*yuR$Yg%9+y%9G>19#Y'9$Y%Y٘y9yZ9!2P#@"SAR..!UO"#M5A.< @!lԊP::z:zź:zպ:z庮Z#8J ` ` { ;   ۲#[ ۰ [!Rz9:a$@" ʶAbC);{;{;{;{9A8--JAw[Y8A\ !䰽9Sق؂3ٛUIa!P^ &kaA 6С;6c3"| ci~mqu>y~}>~荾>~Y^!!=a ѫ< =R>_ƹ!"S`!Agh!2˕@I^#"?R!|5=?9A;MQ_S_CI_aO?)eko7s{#X-V PP#࢟R|!!:^`'\P! R Li"L`B Fl8"ć%bqGA~t8bH"S\iE-ad93&M2qMR1ZkI-8ꔊZ8YJ+IS%EV-Yuӧҳ2u^Tx1ɛ ) @1bD)E'"T)!ouzPM߰3 5Lrhf,ȇVZ'h.묲6>+Nkmn뭶v.~+kn뮺/+k+%pr&Z2!'O!R 0Ĕl -XFL ē,0R?[S@_h9 6H)6HCXD'mH/tP-5S?]uTgmXou`_-6c]vdmhvp-7s]7$rHK$^%tIgI҉G~8-\b -ds\?~ωBZ3\D:HPl<9N:3<;N3|+|<߼;?__=g=֓~ڋ菟>ǯ~?߯ ֏4 ?*d !ZԠD!jPvsTh?+ψ>4 m(I/Ѝ64!=jԢ]F?ӗB %MmjRA}P Q=*ѤtiPijUNUmiO ԑrE*UYOU3-iWӚS0-k\U8h(`Ԅ򳡈gpQ`*h Ġ le׹Ϋ^' F 9m keͭnw pKMr:5lZ۾;PK!PK;,AOEBPS/img/sap_mapping.gifGIF87ad42d̜.߿/o7 H:'R̠7Rς GH < WK! gH!w!H"@&:5"H*ZR./^ HF)hL<0p#(:4#>vP~ @@Ld F:c$$'IJ>O̤&7;Lr򓠤'CIRrL*Uhl%,gIK-ʲϨ^r0 `$1fbpΜ^IjR3\4`8o (g8ʼn$6͜jTQ* Y[:SSE]ASծīP:Nj+`)؛vn]jY# ׿.v^ieWCMBVEeI̦-,S:WвV5fO4~Umkۍ֥j wMqe[ ?nt_Y\6rë.^6׼DC-JiD0~g߇aY; ~9 [ {%>8-~x5=Ft7}z'wENcCwI.r|d*#N^⋥|.W),!Oa6s,@G2,)o&f)΂0l=Ѐ棠.ѐ6#MNzv/Lkv?PD4G(c5_j Wy֮2ú<Γ5GX z', *{nhK[Ԯ-mN`? pp6 D7@yCƟM|/vw {+p)| oK<5o]s<x(.㐋z$/O.x,dc<\3s\6c@HH.(q(CIcK8H8S\2Hx~%&H[J?DՄX]u44/VD\d8Df{h]`WlX<'&Ԅ5^)x{\tZCy8kGڷ}PD`(`nGEEihw'?ixq`L …'&0T+&=Zrx|]]z5"Dhfgf8cHUͨAhq(AȌ@Xf֌x?@D%~7X<8@ygG{֐YȓtgȨx@9 ɐ|yAy8ovx 8A#w鑦Hs-b+Yt5r u9 t;?մa=iu7>H)Z%9s00eO}?ChEi>RISdG'|G|g| NI=_>aYU;dxtPj }l?]iq=GuieyGzIN÷O~9}6\7uU#FRFW8N&Wr/n賎P=d) psy= pԇO]ljD9H> oYs9QE1U_Tֹ>~yDK9'מSIN*cXUٟCs)CɎ¹Pȟ}gs": bD1B TId#:x JY SȢM, Y+ږ? CT4U[>SՆݹ>YQڏ~5fDuYBZ@Tj]yS[wTelz٤o}*j@)uH^cjڨ!d9d֔빩A;Gn=;ꪯ**+dzXpآ=\jcºm izmhښ2Vvfڪi yvԊ:2mpZӦ%e?(Qm^٨H|ʩPT \}gVXmELՔlѽlI+at *~C-N,M؅x\ε[cUj˖Vo=[j|qq{ v m}NMT)=ٷlشwt;I-MHj)KIͽK]m޻Jݞ-y݄͜XʭmgЦ(ߓJߚ.㝕=t-=.lޖOɍfS{1, n>tl .m A%aۀ-nff㛆EDFCm<5a;PhH~=^;$J#pHI 0`l>Z=\NYn>@A  0 D@BPEwE`0}+ ѳ ^!!0>?t S.`闞10 =3@)`: UӃ(鹃39'~n;.PN>پ53w.@!PrIp~5|c ;n3#SP1 O Cϣ/4$5_:oFa^4E< C+,}Oo)PWkU  "`Mh_AjP @ Bu> ?omN~~hO0|O\)5tޱ_ )|Ho.Ha5Xʄ@G~ !"b^Xp-r2hxg["1c&٘Psˉb:d 9RNw[i%R fmK P\~b 2V^r|gzi͜ h&h> iNJ))jB@niT j\*4Z/DjJB&H4k&E&2 l*lƎ.K > -!FKVfmv ߆Kn㖋. /K/:Sq +sOD3TZoYݛ?KTP0T]1M}p+&Qr L:Oc,2& 2)3|3E_38G3; R@#NJ4O 6bCy=qj״ժ |6eTFJk]Ҽ|mܼNg~g'8f7cGN95Wg]w[;PK!DPK;,A'OEBPS/img/logical_table_ps_join_tab.gif'cGIF87ak̤4j쌮424̔윾ܬ촲܄ܼܤ<<<Ƅ||ttDܶtʄʄ΄ΌҌ|Ҍ|䜾ެڤ֤|Lt\bd|,k""'(pqmarm(Ǝ'oоףmnɂk HP }*\ȰÇ#JHs2jȱǏ CIɓ(S\ɲ˗0cʜI͛8sܩF@ JѣH*]ʴ JOXjʵׯ`n:ٳ( ۷pʝKnHhѪek߿ \Zˆ+^̸c"K<ǘ3k̹31X"X>칵װco-4Ӫ/ͻYiV!v|+_μW~;7k4kνËOӫ_Ͼ˟O_^Y\F4{IXWw嫟Qy,WO&۞N=Օz҈:0˙b0'd(_&c 䵻T~7BQ "qȻKhB*1 `BP\ aR*.hF#$)#wE%lDbq(G5Qm4hGqxLd H:1H6(E0#H5Brs?:2~%"EIJO2\'(K"ҍA9$*GY]rnt,EK '_JbЋMQC4wL[N%H&;Kn ]6UK\Ӆ&cL FxjSa2i.z3~'4sMjd5b>AQbт.&>J]HK(FtpD =D(Eq5fK:JU4G=Q#)Ɂv|DXTS@u8)Ք6tZ}0=Nr3gőUU[٘T9m\9ՏDA5 T*qtj@ҿӪj^ؔX}*aԒ+R+:gVf0+;2v3eA=nTm@նST2Mu'IXkմb}Kpjt4,MxW, Wq+i:F5(۱כK-Nט/bY@ݢoXԼ GZ:uD kR]wR˖G݉P!wӵ-)a._ ľ#܈F3K1IU7d,E Xzsڱ]Q9IINJt(h׳bhNά6y xs,ѹf3ٻCֺJ[:g67izz>-괕W ֘/麴Q԰[gMY:N5]+׾6 'eP_fC-ӵ#lg ms[gΈ#MfeoNwР=v[vxy{- gGowE^]7: *Jµ3Kw_u*8TdǸ/!9 z}h Joت xx7+|CxuftK #zճuW=U)Ȼ^g=z4桞ѩQ=f{ÍqÑp 8åN4}8ɹrgi7u.z޷V'~|wVUzp_:y3h翮uS>gwח/'}ܮpk~G<-l>Ą;~UzS=.͝Gqw|v}cq|r'} (g}|4{I7~~8ÁOS~{Wv~~6'G~eb2~@xGf|y}[׃'yWkzI's[}4h~藃{:3*h+҂c+Vp{36H1Y8Wywy 8>y'=Avt'NgSXsㅒ:7hpQ7|WȆ'XwVoyrhzhDŽQMÇ@HwwzvXnxnEpW DŽx hru(׉'v*Wyiǀ3P8wk84"xgȌtQ@WjXqTHkݸ388'wo'k؏8_55/wk8f9CkƑ IYh񧐏HZ&A&Ff'Ȉ'Ē<@I8~8X:i#lte㴒>l.TF7WycJQwUY vsrÖjg#f`gc9{fn×mls2$v{٘9BbK49+*D[DpzFLH{۴R;ZTZ Vۭú`ڵb{h+dC_n'նp[vr۔t{|۷9Z'/᷆{ʯ۸n+[޺{j5;{+5kۺ4;4K;ۻC «ś{;Kd@.۹;B۽; ۼ䛾|kIn˾P[b+W+Y^kEe|G (FKl \+۱c0 6|$̲ *Q*<',0\ ;)8-ܾÛ>;]]|LL]N<ձ\VX}ܱ`:`mbM?g i]nc !WMjԆav~Հ=ֆш̊גO=Ғ ̔Mՙ م}82ڤRRڪڝ,P5ڲ=ۍڰڴۺۻ]-ǽ:Mj}؍Ս۝4,_|"ޓQߐު}m߇h>^~ N }֭r$$(X',+N%*>d'(!;)):+l㬒&4avj)2N'T&?nRJ Y㨒r*jnk^~$SNASby%>]=zgqEh*.m蔎!^獎蛂莾^n!B^穎+>+x갾+g>n긎ܗ~n^Y!>n^^2־L$N^"e㫿쁶NhjX. Rg^8w C:լ[MٮcӾ[tɼ{T} ܈̛;=ԫ[=ܻ{><˛\o, /i*뛂o?`gÀh`.Ƞ~ 6aNHa^t%^e&PQA8M&),2Hc6߆y}Şf!J8IdD2h&dN> :Zaq>&ƉQnY!\Iffߔa{ h &u9&z'jOW2&}ҹ衎> )}(hc!&Fjfhzz&J*g a#J %e k*yj &">Q*&_*klΞ+{)'mG2%j n6Fkmd+@zn9HOk>.\K#O$/\/0 +yoqe{Lq3f\&̲IpԮJ-9[|s  3|#t@/e55Z]0Z;toZd[/rXr3iGxuxzfnyxx/g׀(sONy_yo.鸛"ƃC䦟z4 Xِ&y>(<8EE|O||E;N}G44P}K~O~柏~~?HOC_uCy=*|%*(*p lJP`$~s< WX@XTa+ _P0DA!FXڽ#` +$*qLl(JqT :|}Fm" 1D0!UPbB7V0p#g7Ȩ/7qcxA `=BA E2{xpŠPp CrAIGT1w4e+UbE6"%Y!KbR 'J9te2_gB\b4Z²z^j"'0='L4_WN3c=9lNӏijR7)>SB =gIhS Tb81,ld Y:jI5ƬI"` SCIИR ݩY^T鰮Ԑ#r d*eKT$tlN1 \pU\u_-+Y`VUa Z*ַUq[Z׻޵|_jPo >AK%Mj49D'8l]R`Y^vЬg9rf/{Z˖VemjY ֲ @J`!c; Ŝ]*miړ˝nggVwwk{v"o^ =(4.._`}w .5@~"ʗm|;!m/ kx?anx$.q!CP`CC쁍ocx< yD.<(AB; ( H1npubuˁ 0yd.ό4ylv8C s,G4S 鰎"]R Nȓ+_μyޗ;Nسkߞ&gNӫ_{@C}7`Ͽ{}gNxu9 6`'Vh@(f Έ$8b,| - (";JYJéI!i99ْA%yJWߎ m`%qex޹'hz'xIZ}6hif6Y礒N(r\hFGf6qXi^ iA(j+f~ k[kjav*^cm`^XJIeDZɤj~;i;,}ˮz/v/{RnSgf%m5hJ+', 3L/%{Œ2*˻*3گ8'9209r'|'B j3Iq1#n2LtEʲ&|kF'Fs +^=4E|\u1kHٞ8'hYSZJ0 rwZγKXs^}Su[M|P996`rMv˧|z]`ݦo. n=.߀C[qJ ux79͓摦~J˞[+2GZӞ/ck_3U@|omSgI,:|* 9`r7#a !HD0-/#oqEH**ozIp8bP"(2IXDbU#>gH*/ZG*.y IHd @L"F򑐌@JZ$$7NR(j(GIJ2L*WV򕰌,gI)̥.w˙ 0IbL2f:Ќ4LX̦6nz g7Ar 5v<)z̧ș~@JЂԧBPqDЊZ4юr HGK(M)A=Җ$LIҚ8EKwmt@ j@sJԢ5=MjO*Ԧ:UGT OZL}Vz`UU[rhIXְ jZJWx5*\zOͫ`R6~bJ:8ͺͬ<%l&ֲ fGKڍv jiZֺ6E-eWK[Ѿfl; kwrIK\rFQ]Zծx>NĽoJ;WZWW&o|[wMWWYe{L`x3fbGU0)ap)n1Ka8$1QMV?0e˘A&q&הdd*y00;,/N3J2}ęV:wl== yU7KЄ.7=D+տ2i,3.r3iN^YMk5O[^gbȎwkcg:n]lg9؆YZmk/9.涹Mlo{;=ms8^wG;.{; 7p8t /4 ?.ó;⬞8+Oc669>KnТ<*[;/9Clܡ:}{}B8omtPԧNXXϺַuf?`hOmp{q.xG8mǦ OO;񐏼'O[ϼ7{G_OWuޚggO~璘wX^Tی}Ow +QOrѾO⃿//?ݯM;iaXZ'g Fǀ'xF؁ߥD"8$X&x(*,؂.zhO/x8:0(>Xu h<8DXFH?RtNPJ8 HMQZ e ^bh  eTg!n8؅dhhMcXs(jdžB'4wxTt8f|ȁL(NH؉؉uȈ88XM艇HhN[H(((NP(xxM8ט،X(Xh(hŨ(M8<(XH8hxhHȀMxq8 ibM-^ My)8I\M%"y| y#Ցt(0V,M. 1yW5TO0@B9DYFyHJLٔNPR9TYVyXM9 ē0dYfyhjlٖnpr9tYvyxz|ٗoy]Y)DIX XnO^iY 6ɕ)XiQY}o)o9nOyR|9nmmy}9ɛI}9mϹl9myOʩPY|ݩkkӹlYO׉⸜M`MiyMPtOMiŞRI𹞏IiѨٜMJJU1J5ٟWb95؊ ʜy2Zj,4z8Pǡ7):5 I5AJ9i93QBRZ4Vt+ OJTjzlʣYڔ:tj-ivtZ|nM\k^N`8 Ťfz}{ڣp*hڧGwMJMJ r*TvʝIJBڞjt:M?MjFꤤ* J j)P꫏:qڭsz* NʭZJjOz Ť 6jJ ڬksG1jޤƪt :zNڰ:uXڟ:*+KZ([,˲[ʦ%dޤ K@{ɟ֕UjWhC[Ǵ]ZWwv$UWO][{ickkb`Kfb|jeکz|Kٷ{+Jjsu 闐;[{Pkk˱ *P[{ۺ 0XX;W' |׆Kh?小{țʻۼЛ吻iu׻ fZ;[;֋˽qk{ыۿ˾ \Z^8 [̼h~g.^\j\_*f[W'|V}ګg{OL l5L;|>öR=mN^NKM }P#%"'N -+-2qG֊$4FJLnm5$.m,1$D!DXN2L> )*>@2KL(/kn[>/AGFAaܴj}%.vnw~sr>|.a T-N>N~렎~tNJ.DC>$얞~^N؎оNerM -n.מPN|lOo^uӀ nK.䚮P~.nM^ ,2-?)_*%鼞Ӱ N:s-//O @ XZ/5=PO9?_. Em[;$'_/?W|X. />9/@vosxK-NdzM8 )jΩf.:nY- UJ(K7yP[B:;s#=tgюk\Rn^9ʬZҪ%|q%wI~q͔6n1u/~[ѯ>{.͋QZowzeyo$J2aDI~ga$o^79̀@6!X )u3jG5q# 0~_Rƿa#)d sI Cb#K*ȷ|FA%,]w(fVBm)C/؍͌ )Ѝoi vKJ'Pƒ#@4PA j؈qm}D lJC%ɐ%c(E09-0Aa^ 1eP[bF0A0C&(Wrc]0i˒C ύҚTU)O3&m0$H-1w$#րTd/^Fz I3ޱc\7MTn'M6tKȲJsK+ c+YCg%K3yB-Bh&cJ=ҨJ2OqhP"d5Dj8Q1$ZH#XJ02ZZ"軩>B?P:WqKޛc`܊-A72ևQo[(EU-B )'KMSbY1XIl^E մՍ] E\jǎx VpLЇeOF\Qq-17IJS#REI ] j݌Uc.W(=řa0@#LAdGLYѸ3)Sa#5^&68}vY] Wx!]U) lGK|A-LQ%__)wH&_! #N-`J80FraZY.G}0ul^ξR}ca, ! bQx$+1cio.r) Ŕ Ơd>Sè!1zle.  %6R ś5L=1T!m,33Yj90`ˆYk7!f_(Xb_E%'Y",M(tf bM[!lld07R=V{ )pbHc~wak+ rooV/~neul~|,.T L))oQg()Fa){pߴ)?Jʥ e^F20tW{>QnW ^BhE1hך8`cqFAcv皾o(Nxx(OL2%G><. ^ h4~ \IYxþr Z^Գ^P6{cp?,fQs=K*:]촣0TIlK>aaʻJ?#I1:c\9I=JIA885'p:`೬Z3lm1C$t ą_h&tB_EfΫ5{==A؃{CA1|䢻4Td:aE2t J]^h,9GxPHVϊe֋?X5֖0N$־,'5<qEWX>LTKAAi|8zջ&N Y]Ue Mӌga\ЂK(dڍe֍ۊE0CXC1HR MSS<0ET)U<ٸ }=Ze5؂f؃2@`*d[-{5x\U Cdx ^}2äUڀm\.7p70o^>Ih\Oem_nV8V@.`p=$K8%rMY0P eS \3-./0Z'3*a5=֯f(ƅą ؀%J eaNV?Qg({!m%ZB]Nص$NbKuYN LLa,16SFTVU & A-5dX:\aaͼ]^ЅXUfe>CO!'`XE=R@MYu$Knbq%+Q+&U.Vxyg v3ނ58EX؂]+`AX`Z%QI0FhF^a%[88$*E30RNT8RY(7\?]؅\(WME=Y A %Yz&6F꯸e}^\VWe@X5Zʀ[ѫDJf^f@^Mق/]F.3xdp5O*<2\70]:`PT8N LXP{)vdžn|F+؂-W-;MaAWح%,Q]ӰIed3{QfdX@MI*k.۝BYTU JYbnX Yނ%aU8SE@`}x- m5\}B^mmN毥{k-^X(׸T>n⮃6=؄UN]-5ՠ. tFc-p\FLWmfnc&_ʓaMfܞUTL.7n̅AHnN]Q${*+l` +8+h.=@LVfq>%;cfa;V܆=8}ٻ%"WpυET>g+E/v,KU2&-@.H؃5g6Cf_ꬅ3YN?MOB/Gr.WWW  eࠦLiv tX Yl1W PEpL[Nu6VuJ.EG&SBnC?ȅUUIՠ4Ijx+r/_;h^-W(wEsWu=cjj~8WTDPI53pb7rc'x5gBU]vߍk_ Du7`XA-/wLP8Hwlwwښ50G^K]&bGq%UF_>L-0wLJxzW8 s|LP3X{LXq炴r0{g`꣖JL}I-݄#E/GY@Z(gQw~zP354(WP#+$X7r7FnI{XI}]pGCG3ΚjUAX@% +R Ph"ƌ7r#Ȑ"G,i$ʔ*WlK`]+c܌e(J=r -\RhKR.IB"U f/aZm8BRJf`ZeԦRN%O<27 } A2X*4&ТG.m4ԪMˤiNvid+p "M.GQ{WʧecugJ~B"r*e8J,҄IgEz>`vN-V[V({nE+Z8u>V5W"B\+ /E .W){mIzT mi߮^**n{ lmϐ38G1k;4{lEʮED AסF-5 XU4CNJY.p5& ucwy)Jxʨ2(\rϼ9̭?n>?ц |uTfw' N1L(G d< pX*bJ)he>L š1Afd9 ";%25[BR{ u")+@PV]Bu8 9p yZ]BO0+^P!baRȘdU(IINr5 xlM$(Cy]#qüa0\#t k0`%`]IF7 T8D\#c Ko d7=?@DjZ3I\S;χɛq%>v=1IL`[ ;!0``Km0Lb LHمe"Bw':QM[lKuI3(W:.q}>)HHI:A$v@)fq|0JaSl03afXz7KQ fN5N~ŧPD'? WRE!PAg QΨG8юz4 V00PSJxJYH=A&@c)Y}u=a \x#G\`T8PaBT $t#@ TSs]7BU~5a C`՗Z~fKsBK*! JW{=.`>%؎(F\>mTK`-f)-&[.V aVn/pJL(;Fvk\P` غؠrA]T/C, /5]JBrQ\|\`M:G>4n$M uF^FY=ur]aa$EQ+eŠk8Ǚ~ĝ:x"/@_-a.lH(Q QYSX)J[ڜGGm2T(B^8Wu- El fw< ^?քK?838#.S83s(YJdѶlM5Pq[igtHs~WvW[kBVG@c/Ӿs=/|~?@=yK5PОrT.IU/os@Z{N0 ΐWVkD+!] &.-i4݉PQ|=YU% lLxHQV1 hQ ADџ[ێ^ސDJ`K4aDa5u -؀S.$#D6$E|@RVG@RZSFcLFfS*gg~h.h%.F.oEoФ/S v#N ƔmV/"8W p/-*d 4| D0x80#0zor>Цi c` oH4B89Zr'AS$!L0mK#! @.;!Lrx&A7to+z2))c읲*/y~0F6r$"h׆u8PhoA1k& t06q$K!o|ǭv'kpܵ;3<dz<ϳֹG&pM*yerq8U$ECQe8i~ #C7\23qg:23:`=L4MC`MN4Ot9^D#dm@Y2(JRJ\CGzA^ Z,]A~AfA7l @J]2n16O_#N5N`aPNhzF}.|rThw,10 _P^Blw쪹X @j]F5"25IApp]Caqa^+7s77,w>uWw1U7vRϕ.it54{Fn!Dޢ+Q Զm `H€p7sx_']M8/xO'G46[Aum|^B1sh u/vgv8 8|X6l͎A#}lAo[K"qTސޑ 9 m3]%2)"}O%4[9˴Ft{x'*YS<ԚeQgSAyu#A /y4C)!AxǖO%:x.9^g7w{Oz`MkyuLyuHH8yu3Mr mx#)Ay"{$'b%@)a77+%"zG+y:;y# ۞t; ,o{,0rBuDA|v-K|#Gs4w u"ޖF 7Kj$( 'c*[zo;<;{ }'bw{%8nћ{iS#K3`A3[[iZZ4o=>;0O#}߁#|| #!>@8`A0 P8B :8q!D/RԘQćr8dI'Q*H"&h9sJ7qԹL?(@@hF?\9cW (YX^tuJ[5oR'M+V„_ ō/h#h;v(f:>|@*^|PC6PaUYq6H3fm#ڹ{iSǗ%eH\ysϡ;T(QHd:}ӨS.cŃZkE` AsQuM]y ޗjZkSIda){̇;J+L?h9@"_ 6ڈff @@`:e䌣Gv7EQN>UoS8 m!FV#w&{p2|fhg2"/ll sH\V4G' ]o_8 [eXlFA!f7&ƋG ȋ7%!pm\8zf74hBf]7k4\ qja`!Ɇj*e!y{Y Aq"г2,#7+]8A^̑u8Gz吏$ >Pv[Ea aa{&(a YD*Rߢ`,'Yl8?*mό07!A:hFӠOr41c摙t3MiNմ5M< (!$ Ĩ dĠE/CnGPt=j{hqWWUøT*a٥Zn?E ߐ =$,awꂇҩ+5+}.Q6:7OfM{ޤZ]RdCd?; b,db>-do P+ `AȲ`0K1hɡ8˄o`j0dj"/ m 6Mޜn//O'7E 6tgO,|+|nHx*(Of6pn`NJCJ[[  Ok&Oϯ/ӎFN-7B% BHl'8Q DK.Nx' $0 (p 5M屌E 2(MP`c  6, @ xgq.xcD*'L1K`FQ!@#Bq8HLQlb6+ l , hd eX ǂp@> .6ì1qnjprKjqVM"걆r~DP,@F $nֆ=dڂf/ k%Q 3GfR{ls.Y8ieR҈3ҧBQAt$T5B/`; *أK`  ?|*$EqZ 8-3 `plT^I@Fn3 @Gf&H; jI97QM'JS#:#iK/Ji+~3uJ M= qHm5e `D  䲹H 1N UwL'%S Aj()S/&**ʄ¢LzO U εU_VoHy@F3bFf OêQXPgpHH) `Yvaaa!ZkxB/Z5u@l((r ̤\e5]]M8>gaf^ X{SXy8X ܚCY'ITibc'f(cOCksT1s,p'*kk5fmeV]iVH g1f@` .>Hg H@/ʘVj#jq &ZbJD#*` T͔dlH2^mQm_nifng5:e h6WpuQk8rf9wXvB4,Jb PV uU7fWniungT' ` 8}]g  [5QcQx 61T$'t@¶vscs-b ʉt{]mWN]>3ٲ I%sh[R@aȀϱб$, 0~2'" bWnw t-{;8u98|vf[WnGnl~[FoWIӶ|0>ώp9 X0y/ MTLs{?EOw%كQ|s B wweu_m862#دگ鏇$9I xKXtk?\֋u?Q^V^^f7׍}kOQ8寖9ЖI rqwSz ~9/w@)i+WҾ؃W|+Y]fŸ Ŭ.av7xQqe9^I'q"y‰ҁcj{@\# Q59Ƿ%hv_X)]o{-XR4_YrDop9Tt9}6eeڧZhkZڹVf٩eYayDZH:roB ifUZհڰII6sOڽ%4h_ࢧ^rXZY-:4۬Bk[V"͵M_{K{Q9_>Q5XfGx[y/m-۝ n:̺KV[_3;1'4ǜIO^Q>i)~%yy) ay~">~{B/ܗܗ֩=W^s_=i^oM}, ~&|]_^}yI噞G^]s|}=ʞ p+/^[=?^E;SVm>5_z"%(g`cacy}?Y1^tb_o$ `$ y?a?ʦGݿKO???տwdb80….  pa19#ȑ$K<߾u?~刏MB\gh 6uٔ[lxgmyM_{m؟~_'~ya']g)ZZuw Gc87X }1ׅjhbÑF>idyf(aX1f>)CZe91j镔 Ȣu3e'bRgdg*DgyN*VG n)F%S$jB訮ne)iӧjG(+uҊk+>[tJ ien˭mZmԪ9nj^[%B-m[{jByoF;+gkFL0/++0LLq_qoq r"Lr&#p .q)Ls rϝBMp+gJ 4tE? u\K_=aӿIu^EAuٷij uYmv4v=c$w3]ނp7x2}+_$IK.7aazi0Njz뗑Nk&ﮮߎs83˛ˎ@N|W7q ?o;)<} $NԛNۏ|}_v:~g~_~oQWO;oiMX+]V@4!p B.iQ,>l 1 ƒS oX`capĚ鐇!Ą 2j-rbX8)]b;eE,US"84>NYxKtLT19ڮ|+4q cc@@Jl|HY @D.$, J@bd(O)QPD+Uzʓ{-uǛejZy`F%{̛wb/9˺%s\Ai7 ps,9y&]bәܦ1 xs=YNurmtg Ѐ t-A~mҟ>:C шJtҧBІRtG?*Oqz&HOҔtiZt4M RMb42O Ԡz3L$O"Ԥ*uLm)3v&MUZS\WUFd-Y R lm[Out]%׻u|k^ aؠ6mc=Jv hd+jVݬg? ZLBu-iOmk3v-mo[6[w ׫juq*wms Jwԭujww w-ywoM/{ ߯7Rk귦ݯx~  nKx݌0/aX谇? x$&2Tx,nO|x4~Nd\b[$8@QF$+yLn"XE>򓯌e,GE^eyd.όf3`RH89[<<_0@79!OleA+z6NHK/Lk! Mh@/Zэ<@zAN=T ]SX EzAlhHq5,pWŮulfcv[]`ۖvl\T6Lm`?)}ec#;#6lz~r}PF<`mq۴&rpu [ v8 ~g3gqۻ?Hm}G "p+'y_`'#`yZ oAppGyՆy d>s.N=u(GuhծKd90Oֳѭ;'dG_9'Go@U>wď}kw< Ol+N(M>y5wsT==o{3~ݙO9d/XyE''?uOΪ7Q>?ou?n>ȟ7|wo'}g~ȗwd'p}~~K=yxXIv~hyƇ~GyRgڇ~~-{h78y Ȁwx4hW*9(e5H, AO^h:!|\(]yoegih<8hr`8~(a*F膃dH爌xgtshcXoxh~mdqXo;AjՆNFȉw% 88 q(Ƹy}Hh*jH}$ vרbXq0~0ZgHXǎ zXq{툌6؈(8Hmii Pr(긎) xP5Ȓ19>!;蘎 qa=Y2I&̸h# [zftkɖmq28i%sq{ɗt)D}I9OQsuɕɘɖ gyHJǙqi癅~@yy{zpI*hq sz9qNY9&ǚ9Y֘٩۹* vɝ牞iA' 鹞 fٹizɟLQ * O ʞhwjj#Ji(ڍhtl~3P. %8YyAKʀO Q*SJNW!ڟNB:Y9"_D*FZqw Qd۹sJujwZ m֣ډJx|*eEʨꨏ *  YꩇڧBj j@AcJcZ*:\Ɗˊ[ʬZ jZU׊٪ʭ *Jj犮骮ʮ *JjZDʯ +Kk ˰  +Kk! !+#K%k')+˲-/ 1+3K5k79;˳=?+ CKEkGIK˴MO Q+SKUkWY[˵]_ a+X;PK~I`:DNVFfbb4j̴̼Լ,fd4fxlix|矀*蠄$Ffp(*餔Vj饘f馜vKG*ꨢPjjj͵*j뭸뮼+k&6F+Vk¾dĶv6gDkn;޶+k,l' 7mWlgw ,$(,0,4l8<@-DmH'L7PRKTWmXg\w`-\OMhlp-7/ dx|߀.n'7G.Wngwnx.褗n騧ꬷ밯zno'.<D/Wog=oo}ocD3@ 8~:'H VP7zGHȿ 0 2DwPo[! i"ڐ{D4XCP'ӚcTbs8ÙlV3<':IMrnqe+U׾ΪKKb֫iWWJ6ծvMUd]+\ASF `#JҚt5`KnL&p>veŭ9XErmSySWmdFpt+Γ#v]%B xg]mLπm=ЈNFSЎ'MJ[zҐ7N{W4GMRԨSVհcMZָs^ڮMbؽ6f;{~Mj9ζ-c oN6JNyvηl5LNOp5?N[ϸ#zIPGN(OW0K~w@yqNZ$g/;PЍNW#/@+x } MDc]Z.v+x̗t &O|߮+]9DE~x{qf|.:^v0}峞!l|%O{&$իK(%. 'OE/w}x[~kH ]I*1  "̢'z՛|'}wti@ `~Bz~׀he̷uV|'}~@}'{7{}ȁ~͑zw!{ .%_Wzzuׁ M 0 B Ђ0P5u7}׃>}P{ ~PNr8G#^Gg8z|^_X{`|pЅKt3S8gǁ}}{ @tP؊3c8wX@w$%X,8rXVc2Qrz_88xx(GH֘h؍ ׌蘎긎؎XX~Y{؏yH ِ8mw9qf<3^G73f$ 4'9o .x"98)>3858$7<9V*229e4i68ٓNp1)87WY8c7Y7[ٕjqACa7$ڤ,x q e|ۣٗwo9y٘9Y=V9iU@kənY9YY?aa\R nycșɉɛ 9ҹmIy!Yٝމ̙ٔyVyɝ鞋 9ٛ蹟ͦɞsijʠIiy柖Y?l$9 #﹠ *IZY-4JlZZy%ʣ:ʣ@+fYJk7J9*) >:>JBڝEQ3bzkM:O*?ڣ*ZY$i cZV=QJAڣS}pZijx:Xzʠ*kꠃڜ*ک֨ʘrꩨi::Iiڪ ǩ2#la2Iz&v|ipe]o0p`zƬ J֊hJilPl4*0z:VC*)(ïJaDíq[J{m34ͱZza犱Híe ( !7GS2۱akC#] BKg*49{4;5Nz4ڮʰA;XfE4G۴4`kN4{c3VkY۶^@ӵ{!_k5[g4{*4"K?{n;f?#w +!Aó>k Ke3L{+b͑y3S U l{f 3a۹H[$+͚Ѻ;;زkQ뷼ۭ%Kһbk<; 2';$VF$仾f{=˾4k7{ۿMsƷK4{H8s۹0k4 =<4 |365e9{>6k12|4|L(:3,\3.$4P۷Es3;54/\LSa#X[v. ~i nf ڝM]LۡK' }ڌmŒ=/1RO;N=4]A~f^}\exV,ㄜb w>.i3貺V閎Ni铆 *m0p֙*e>ʱ~H*.% -sN߻>닪p>bl>51̸X^C׎Ǯ3}Fz!tJ<.풝Z]z.j-zcw?_-_N4e̚_?_ȟʿ?_؟ڿB(ϻ?O޿Ga  Ba4\H`$pFF=~RH%MDRJ-]SL5eوS3<}TPEE# ` D"2HXce͞EVZmݾW\uśW^}+`6 Xbƍ?YLB:+Wf(FWa/ Zj֭][lڵmƝ[n޽}\pǨ>:yˋ?]tխ_ǾӨS9_S|_|g:.?$@m;̼3,8(! س=7C?1:/T181WdE T;; # up1K-$H#D2I%dI'2J)J+2K-K/r0/D3M5dM7߄33 <! ,B>"$PCE4QEe4-|tHtF/4SM790T q\TS(R=m W_5VYgV[o5W]wW_6Xa%XcE6bxYWZiZk6[m[Y?*\ \se#oe]w߅7^y畕Wu)^8`5FF8aa~8]b/8c7c?9dG&dOF9eWfe_9fgfo9gwX~:蠝 h fi:jj:kk;l&lF;mfm߆; Vn;ooygy矇>z s>{{?|'| }g}߇?~秿~?`8@ЀD`@6Ё`7= VЂ`5AvЃaE8BЄ'Da UIЅ/a e8CІ7auCLiB8D"шGDbD&6щOb8E*VъWbE.vы_c8F2ьgDc&эoc8G:юwcG>яd 9HBҐDd"HF6ґd$%9IJVrLYB&5INvғe(E9JRҔDe*UJVҕe,e9KZҖe.uK^җf0OIaӘDf2Lf6әτf49Mj2)Jf6MQm,7*q~S g9Y!p|lS8I!nSh@:PԠEhBP6ԡhD%:QVԢhF5QIiHM{SgIOLJI*Ӓ0J[Qԧ?jP:TըGEjRk*A#i= tVu25';߹|ӜXmgLzStF`-Ycӥխok\:Wծw](Sאկ~-`KְElaX2aW>vlb#BjcE QִEmjUZֵֶmle;[ֶmnu[ַnp;\׸ի_Zrvf[ZR׳]-v={Ҟ,x;F7Eozջ^׽o|;_׾M.kG˞wEs_:ּ ,Wp%wo~pGxp7Laa%>qWx_wyE>rώ%GyUr;e>s7yÂϹ't[#ѓ~O'+Q"Yn}zn±_PG{K(uo=3q{L|<x>O~7|/G%_8&wӽWE/wЏ>O_zշ>wa{ǼSOx󚯽{}ŧ|ۑ_/w+{ ?h@#>@td q;< < @@כcA?@s ?4CB2,A42\DTC,ADI4DSKT $D*ACBCB|D#B&,EKC(FTCQ$=U\D.d[W `143$R+Ŀf9C::j|F=LLdIEnF^D.|Eo@6dc? qɣmP]=R:Q MkR%Q(Q)%<`+"#U'R/eQ0R,Ӊ.MC >-@DRGS+IM:KMNOPQ%R5S%͡UeVuUWYZX\],^`a\%cEdU1eug^mhjV@kmVnpWq5sEה+Wavuwxyz{;UŝgudY\g^Nq~e16xb.儮>?cFB7CGDWEgF/tt'ZJtx Nw8P J_Q'S7SOH?6WGuTUuvtuO7ZT_'u`a7Y?nbuL]!gO huvUkvn3 mlXr/MiG s_6mgwqgvV3gd6}wOQjlS xg7SGuv^W!xwm?x w6/opgwyw?hx_yQwyGw矌o66'ٜy6Myci]}zWxfyyf#{q+{Og6uxWx_vLvGˏvr~W{yy_{OY }_67xɏzyη|Y_c-qɇ||O{7{}~/v)|}ҟG}Q}l3q'~ۇqo|}}_{_6WZWn{~ '꿶,h „  XC P(0ċ 7r#Ȑ"G.lhPl%̘,貀̜3k|3#Pؓ$ҤJE4zSNzlZ#Ur+ذbz@,ڮfӲm-ܸVCZɹY.jwQA-l0bzWd1d6[SSZ|51}!VF6.lcM6o{Hޢ $mpS3o|1J|Ḱ5n,`ǃ[5xǓ ڶO>~9F)y͙P=*`R5;MRejUh_~r#xb}Hw!qa08E瘅YGYD#(gV%"$~/*DQJ9e Wj%C6>أ<\י%nK*&eYcygJ7fdbRx МZכq妢wp)頕2'^矁Zj)4T۩:֨}Qʺc?Ziܪd*g+,y 0Z{-RkyʊƆ5{Xv;ںlѶD{/{/ <0|0 +0 ;0K<1[|1k1c ƭ[U[+)\2ɞedL5)а2Ѣ ֚i3tIHpZkupKW=uH5~\u*k/6 -9b^r}Fxj A/x~2+ZU X/nԺByvzBE%{F/؀]ܙy{7<=RW$맩wS16k{{kP ndGoyq~wQi:a%` 6ߠ U;w= t|HI0 O>**@ e"ANf4ng~i`G:N(BB?~0a$ ]pCAs?!WG <we.pb,t@yO$5Pqg|s>%qr`†a ,qi]g(5ЀՋc (I Vm #&'HArHĜWD=Y$$HE@6cJIZ[^w,f r,hC+ђ=-jSYV"qdux}*_-[V@ Po rueoIW:Žqק\7) oS}]lJ1myA]u  n֋v"kdXKT0D2^[wh~cs>3{4G,! cE4pn\L͗ yy*Ǵ;e9%YS8TI.bdE*biF. FN V^ f MaP֜=߹_ "} sy ڗI:P b!W ڠj% vѴ̞9,5!zЫ9иOk`P0Xݝ߻ϙ r _XֽYɑ&a}r_2uL  }Eba-"##z^~\,^0} M]\5ى"xթQL"Ѡb=5bbQU]- Q-B7buȜ!cɥ13FabB$#fNpp50 m[CG);:#3A#-=dUb?.b)2N&O׀1d8#}MRXa` PH1\0iYӭ֝'dQ#Ҙ4J]Q5 WQxL, #C!WbF #şSTJ$$cYSid|q$.^i # %e_hw6Gf _b`%;^ILh(baNf۽e&fEVii:2QfD0>f&Yݦnf&oh`ZF]q JfS&gYf\6'\Z5}ϙb)Ʃ)3f+](~%hk"2'Î ۰R#?)>nb "q*1]0qfm\jYYY%XYyj@ !W_.)^]/w"ꚱ1H lq,}-eZ9ZZMcn l2[[ \Zc"{0> lJimnO;1v~A!j+&oC'2QRs# ϭ2Fd*>vlepNiY#2+sz4 dÊF7Ý77$%c%/s2kCl/5[]eìYf_gCgdoic5-d1h'hi϶__y¶4piVN7uWu_7vgvo7hqu[svssm+8vuvV-pn{c4cmqc(n>vF.swpgwڬ5xxG2yG50xru*5A~p5GNmxr^i8G kB(Kqskx@ Z2ʮǞQiq7xS54ܶ2+yZxUyE7suu,051{H[qI3ͮn,@-%3^q-{yuqL?S3[yw*$KgNg2)_&e(=2M:>7  d(@v=saMs%Hwp-pvhsA{:kgmPwtL;w02\2e A:`P{S ;{t(g3j5xY3y7wj[Ϯ&ȷS4Fg6H 쀮:d|"{H$&#{k>;ymw8w[e9U^y1[0UW|zτL$z@_7PT,o9ϵ"7JJCšN;|ϧzU&{Ч/~yLzhW{O ˏc<'%|8i3+D W/|%N90%* us-{?5&@8`A&T8@aC>8bE! иcGA9@dI'QeK/aƔ9%IgO:T(4UQOFT&^ň])~;lYZcfE+[o]y3Υջo_AxqǑ'WysϡG>zQe}өK7-^1˚1Ϭ}{k|^{ޣ0@{,*cPףK <0Y@rBT4a\PB]BG05'>;p,$C+z,'r"%5-6<,DKG?J:BsH5\928S5sl-(c$+CLŘ #ݤS#=Y4ӓ44/C,5"UsW]VᄵTquPW; PQMa7cHkz}YU-P`(paV` L2yS3W3KmeOigeU[Uww(ڙ}_%V- YyLUUwە}Z%* \ (3_ES<ۍx݌iZx^|]n^88-Y0` 5`I^xeҦo}ii9VJ@ Jq"?s~Vcֵjz浆n/o&_A:-/dOc]n߹8L8Ad n!VDuV'x]qE1`*8pU\-mOJr3!o!-e6EUgϹ*uUg}x/vvho1#Xޥmx]8|&6\,PꍩTf3[XbbwSLLMZrhO%t7#MR* NI*ʫ_*WѬ )Zc&2+g۸ Z,rΎEӷ6)gMnH{30k`XhF(ÐxK_7e(GXMCՍR (c#@CWi`h'ͺ.xn4\zq>}u)'b0Hocnat Xsݬ8{ G'z4`8eJAMcbo]=f^37ȍkAܭͪj.W r6,*)eY\aϘ6nZ.W? ?C~0^hlAsJ?fJl<=#7]c3'_5&W[2 t7 5>Əb%(ċEs+Ֆ㜸]OrT_lY=.W1Q2W`*k'~RO“E}9&w_?)w5bzkPn?23{ _f}/L:OkTuշދ2Ӄ&Gݟ~}f_7o4?m\0p /rDϼfEدOF.ʯD6;,Ϻ&0~/<0xbԋ x/ϞoMS1${\LԬf`bʾD}Єj0V0b,Ɣ kVͲ􋝪 kل  P R*r$(۾pӆ< PPHnǔK嬎P iB# 4BB4Z\M)PliO5"p/2QKD'Z.4zp( 'Lj nHJM.̃3q,@DQH1$@z1X޴/J)"2!2!hԘlmyjIrP..p Vr 'h&&m,"lǹXf~,MF+$?q$$up ȦW&4*L)&t ,RRݜHmޖ*ls'N'(RZGӲ@QڲQ %V21ODŨ|b+s2D)++0l1r֐S$m$Qא*YQ44R4Obf"&I0gk?m0qJ$sJB).<:38O09K)p< q>; ? է9N?ς?Q@VO>!A@ NAB>#CB?3TC͓A;DO9s۸mvINV7p.GS/2.[+?k~,3m>7FtssX5 #a,(E]uu'CpGpUj1l'l˒7W|vhEm!JsxA7WYmᢶNVt g@-TnnU9ĜNb&(8j v1rq8K1vR5_{1SB}-Vs۷x;H?fBh"z7wSLQx*FWxxX]4eCa 5sSNoeӆDYˉ/Futwf+l}xN8PH:]r%;4[㦛Ĭz#^.[&.I];;t?+f]%%XZ#;|R%rC,w3  mlz˅x6a^3U)U"]w闳~2/A~k6]tl77G>坚վ޵%͛C;Õ{ۤGcε?X͞_P>,T޶S3;k}g)X72;UE~dܿ?Q /9^֝{c~A.MWc[:{'q{*_!-B 4XP6Tp`…+Z1ƍ;V0B!|1F'U8 ̙4kڼ3Κ1w9'СD=zKH&4TҨTj2+Ò# ,Ñ_F땫دVۺ}@7޽|@`n70Ō78rBȒ'#Q;{jSPRcլ[k]Ĵk,ذ^~ 9NW7 -pJmY-J[;n֝;^cUhG.yqμI2$s풙^mHG<']1ˮ>諱{q?\ǯ<˗Z>)|CyN'{7Ƶ/z  twC>Cp2ipB^OiD潂e#*(CPq>gA=nxg˭_tg,A @p09Ux(6xN]J Mf˃J\D!'>;B-qzo|a}g%Іyo/pdcYJkHt>[P;6Drd+ XHX!X2aYRy'i*eDN5i_.K-5,<Oю7jN3<$Xq"%q҇TY9uNYX;NxIa'=[`25$Nm(<1r9`V>[ύȟ&$Z,"eiDHܰ-Iat*hMwYlDԤ*uLmS ըJuTRmy?JFmZҜfsiƾ<凃k 1aJ g>#i|IjARbUjv琴7(h89yd8sBcꘌA.JDZb$Lyh_f]8F0q^z}]>>So∉HȖքXXUvzg KdhCi꧜87^f`6z,3ʁ:z>Ek}hj*=89UJ D~)hjƆKƇhPY¬_BTGڊr)48v={!˳kν7N˶ ˟OVH PQuܧ 68  ( ?H("Qa {!{]Hᄺ]!4Ζ߈YgtFUoNf@W@ 2梌fndyΙzv$g\ָJ 3(諰z ٩4r篳I)U ]f@1Vkfv+њ[Jk&(zJS咲m 1D=@ڸ' 7Ֆ;*+e+}ڃ>2@)hngl8*+~iCrLkW5ZRUL`F61%@e|J$N!5ؗd.!HGN+KLni0S\=1eNbW 6iMTS0d-m9pH}$^mTi9jV'&&FM8+(q:og vYO{gI]bQ giЁ.!C387uޚӞgr1fTR#*YYR6>%VM379m;Ce>yIj)TBլe꟪檽*kֺHhjk*KXMb:cXN 7zVa`ҚMi1׼HHlgK[5#buRS pKMr9tK@ҫvf ðMzsH.!bkK~_7+]o+N{;_7kOJUf3'$IGˇqGFG0I0 ?&9b,_8(Ym^&>CW7%ob cҨ#ޑaJ*7ʰ7.4LFqtB^&ԧgk:Ȼ92GZɀ ([A:4]ZY^``\@Z̆Y7]_Y/l~U gQEvMsgy#|7"h<#ntE׏浤%Mi0M.{94G.@KTjzΤa~#VjglL_3@h]>LbOig:g;0Hm[o$ʴyn,Gs8 loD#4 :Y#k\8Ϲw|?Wl=ჱtmMh('Y!)%OLиhfh-8+ҙNBk\z~w_Yܹ>fw0ת;񐏼'O[ϼ7{|uGc}~>L?躏{7y}굔>s]BOO/y9zޗ&[6/xq̗C?#wK~4'iUC7y'~$4 ؀y 8y_gcWtG7Ef`Gx(ya~x÷+7!/y(*(!28#1<z'|di"v(k\HJL؄%`xbo-x[헂9U؂^;a؅2ȂcX=w@XvfRxQ6=wxz|؇]x''?|ZhfhH`؈8jxkXnlglb?v&87WɗJF؈+8H(yxxw!A8"X`TVXnXP(X^:ȋ8ql/go"8tZ|8.;HX(xW8D(qbi%|7x(_ȏ(Yً GafE$F n!bFr[8=yA .49vsf{&#ԑ6Z8y9H鷐+lD9cBJ5I3puiCirE{LOISy=ȑ/Ȃ 8b[By ӷcWnCqytiKٗy99{ɗ9[yaYw '(0Y$9YI3i  [I8虞ٙȐ'DՉi4:ܩ)`e?OD٠칎rȖщ"uءɗ &fY1d'|~84Z6zy+9Pm%"$ $Z)JǛ-*Gy"A1*9yٚkʦ!jM)Y'P_%FIYWNIy馟ɓkzu:0yjwz:}ᐈ9qh}ʣk(NA~Qz:𙫍z :6<9٨CJ GII*:ρ:--Q :hZDڦ .qRZv)8Zغڭjhબ*sYjF*ω:51*ZZj9)ڝJpڦ--۱uꪁmb981+lǴ3˨#2ۗWJZu,JC>@ Bk㔔 Ii, #zLZ0{*g+[(ge!j(KOZBJv{zu3~ j+V*H{kF *+˦j;OJq8`:1Xv>Y:N:ڹUJ&۫1if & @i$j[nz{{[b a-;?a̛ r=ˣ:K=1oK˿۾כٵ[k&Gl# j;?۵k Xk l.#l֯BޡV̻ީh~qY\[-|.x;x@<=FnQ[]E=]A_M\z۲k ǎ"|;|a\=Ь-??͍anu!TPR_)ϣn]Z-^-TN]QEoGϲI .%oU^NNjӈ>":?U>Pqx?z_#>Fa.<.Z..qk?v_(AZr qn!+5ʿC 5~ 5JcȿOnsޯ?WVq-oπ0 (08pHXX(8Hiy@@yPzP@@pi ,ʜ+VF7 \{hۂ% mM| ʛ; 5]:ވ^;N7oM6 \!r{u6tK^|&E,qwEbTQ}mvTy}gXW1Q{)"]=Y4HbWuSuhUH^rWzO349'A!&_9eDYb@N> eRNIeV^eZne^~ f(wZkԝ5mdQx='hA i ԑI6⠆͘^ڀa֋u4'盗Ή؎ͭps~ʍh=e%1g7JX㛏HgA ,i]2*oyx:גоJmĊ"bB>1RVImV+v-ijl{I' 4.˥JyiR-wTIl:k~j^49fxR|[yӺXʛfBMtF"J25~{;l& gر3a]/ם r&.F"y%+PXl'Z?uaAhǖi<ϋxv$qM7@*p?=Y5c׋"تH+ڎ;{,-#߫VVHzLoǵ"[8[%HNeiz,:§9)~\0n{|s ]W?=IE8ɬ{ a*hEJ~X&g` m?|+  9F}RK<!~gx; [ZK2FZ"'+l+Fe1mOw@RlXfOj(˰udkRC=dU2R} L!bb*QjJRť&eI2ŹL ?<gUd:IL;]RL*3̜gY̯m1ʹюm5)NdNk\$?ˎ૴mQ)m~zMbKUt[%QRgr"r6uDSɽt:N?3I wgUr7>|QۆzA)~o&5E?Y^vz1u:OUyİGG_̝W9-Fqr7֢.i N9uLѲi?7R/·vP7aVcnD;ʽt)gPg3aj1noC+ص~ߥ^ijdcTD-x/R]۪kƾ܆ݍN(~Ӎw- Huv}j"em FZWh99T5HGkv[o߂~EG@{ds]ug#S*0"tT}$ f$r5h7H4 y yV~ft2~vwwQ~$$ȁR7ǂx863$R|pvN'Z~`CuwQzaxzFhag:ihyxMG}X.FRx (Vbnf~=drou^SDaamlA{]'xpxVj7Uw8C{E M8hLjVb ńor[pK@B4‹Bh}`xs8!SjcxrU)tg g]=q¸Xm%o iE׃ g7ֳg{67)7~ӘNٛ cY ,  긎Gx 6iɤ~Y{Q<.Xu0 y5J*~桖ep ꩡtZu+8 ڦZإ^:اFYgڤ">УFũ3pjTi)s߉ :}6y| y:y75Yچ|QYʫ)ӕsNzahN;rjS:pzhʠ55CC^Dw:}ijdَ'|Y##Y0bjX2I+\J8?尅ȚIbw*{Q:b¡:;(%!`Gɫz#8J.2n`O fE*uIܩٲΧ`Z:2!IbY0恵ٝs7ZNCbg["i;A|pxBE++:q|8S[jk jZ7{kƀшY W?)oJp79j K˒Jhy^pFjRxj A3{QK՛4+l(Bwi5b;ݘ{[-nrڑuxe I]kʯkJ KCʾ9{*ب~)k#.11;8a3ܷsJt39\F˿_;La &K*{kaD/Ni*ç g1 Ù -ŅД +Ļc2Jt ZGl۶K{)rˍtcV&JOT ۯ;+o䳬{G:UFĄ[` t  4 F;*PkX \vܚyqhf<{ʕ1RF繜 ,¹Dk,vfh' &,V[?ŒF zH8tU)\SȶY˺1M,[v |ظ6C<\2oQH:qř ‹ '"p=|? %)3\z{tӎsϬf|sPs̜{;I0;|. DZ|rpl 땋́~m=R ԞXoMѽR)|!N&>b!>y8 ^1jߔM `nhΦ[7#N܊Ğ:(l$6؏^"B8!ʖH<$ܳ!,⍙KVzQm؞QHЬpK&_r*ݘp.7t.Tm>5]?IY99Bo&b㘡?_0L&8+w^Clb۫<=}!Ҧ,ƥ%II8|C o !_TIؗ/o*(lj^dḧ̳k+vXAs#|7o9ɧƗJ|~vQF2,u݀]l^xvagy饎zQm}WV_R:UWPe 6",h9aGW+جaqH`}a4 eTɊ(T£dOV9M][oȞ|)ؙEn#e 4#Bv%XL6A@YHSa`B&gW"Xڃ.5BrfSBeir:r69ىu ,KW |>ZɤI"D%$iYMzHUօ51&~Q(ܦlZh76#ehp{.bb&6kZU2֮!&cȶ8;;˽ k6"9wxSm{i !K ̳a Oyc'Sch"nU.(ˏTWmXgg6 z 𦨣,H|nB4 34lVҬb] a"j}lݙ^aﭛ6еw"8s#֎dv \z+*H7Un;"p.^d,I?*1W:GRMbHW‚eJwW| 4S!6bQStX#>CfnT,#jt\7 IPIQY0͋#&'2Q8 "£L<깅*p$ӉJl1bQ5F9e,]c S`(y$} $̡0c~Iǐz,% ծz" j sɲSrD>+ Ӷ*HLg,'Zn=ͫO!]sY;*ΎE"stv8W@w,WlO 3*\V BekՋ͵#gy+P1/BJuhԨr{%2<]?[U*pھ&l (`=(uʇwd]4%!ۯik?f1f}dYORmGiZSⷪox[Y_кYݴ1KncѨVŽo_@ʖ0$o+8].7;UQHU2ơL/ 㨅8 H$: BJf7|+)=Q̃r<)WYtV dn__+=xS_xB]?y:ګs}\#i&9jF^r;VgEӐdux ;*r_٣6ֹO>'CgzGy#֚q1f^~_ g9w%Ovynadu~cSc'wCe:FkPYuf (T~ /,!gCWBI-g Dl=')@'B,HeZ&tcLh$9s|WV!HNzIsZNGW:\eTV)ubhaj6>Q ;H1^ft3Q"fm`06)(A(!mxb6%v8(dԊ83ZюW gn(.+؅ꇓ6I iAq(xdVIG~t,ҁl9 3F@dW)n3q x ᛧuPnҰ%gIYb&KȇqU)9WUq}w0܄GrĆWĜ @jtjx?uttW Iv )sR Tu,"#*ǖEg7 MƳvة%2י&~JoOqQe;W.5lX*˿Zjw#j-_~zÈMT!GI홸io@o>7?y\."(M )%S "%ɜ ش}p P`Oc?NJ|HZmS\(^O>PK6O͉ s/۷gt0YNcR*<,oFĜtZ /F_C-=lϫdHCem҃`}7!w,)">  hxx@@0x8IYiy yPzP( ;xHX ɰ+k+8ll \,h,L\pݰ{=Ij =X[-I람~9LNo/@zbP)pZxe0D~ҩC8q?2!=2d6 BIKٶq+FeBNNV0`1}?} БKbS.J 1PrJHO-L`?rfFv [BVW9 E^ aJ()2_bÔ9X9;{=9 Z :hYR,n͖p VN~|ӤL2VڹC::Ztae.y閊GI%:uFuU2#aBbrYo*@``7^h_ RE&iXE1uQ&}GWfDZs LEb.c2Hc6ވc:c>H#eG"%M6qF55fY[^(h䍈Ih"xf M`%G>x&XW9剺AIT|R)T\dܗ΅fy%hI7)H\7֓UR5ZE騡ڹՇąht9Jk'A mI ȅ(hlFFflyJ#I:*:~AԆXZk%Q3h]AȮZm#F˒Ov[MYzZb2-"Ir&r*c\< `@={CF1~1!v?]Ê<&:Ń-,'M:3n*8 g /Z#yL{gdBOTGz҆rOhܔdeVpQzy1AO} {-ޜxuwYJmب6rB.-OXoM' |ۢ9%jM'f/)?Gsƾ!e6<ӆH:1 lә:1`װG>Xk0{:ekYk:XǶLP ӵw xZǨ1y{ Q" 3V _6mBw*-XC-@(8P]0ND*b(Mx+Exeȫ|yXE+|8ޮ|C,dḧ b#zv&7(= f-e,)OTP)C%F 1p|! L| $YJl~^coHCPW \'9b%ʋ,X r4s;3D mVn]ᘖt}/`ᣋC_P-@4A#LA3AAmI|EƄ `nj(P:L(E':ƊB# I1Ș]R)?eC^XG/ sDC$#L\ꅄiz El>QUQMĄZ b0=9T.+x n Kx/.>N#b:֕/"Q x4oKRͧvmļ< oP˟85Ԫ_(KU* KeAT-f>j3 ' )y\2<8i~T!})1+τ.j ΉntPG)HKzҔY/=3ќvr, PzԤ.O=5ѹӬsW Xzִ5oyVz ` ޵d+{n hK{Ԯ|l[ p{hֶύ!:nw{P|[+޷ pQ;PKK KPK;,A'OEBPS/img/sap_proc_flow_data_detect.gif>GIF87azdf42̜dfd4d44d4$"d24fd42ddf4fd24>4424lnlr~&$$4244LL",,ljlΜ4*4̜<><̜f:4|&$RL~|zt|:4|64><~||~|:4>4.,>4B,쒬Vl스jf잼,z H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH*]ʴӧPJJիXjʵׯ`ÊKٳhӪ]˶۷pʝKݻx˷߿ LÈ+^̸ǐ#KL˘3k̹ϠCMR^ͺװW۸sͻi kǃ_ցn$}:tЫn]{vofN߷sW=:xo}ѻg}[jU~vtͷ|Ff Q|zMXT](x$i"ya0R&"'䐻G9ݒL6PF)HV)TPi=aL d)&h%fI&"`A ti-L|K/ZКLuFpH̉z~*(AVbx*jD jꩧF  2+ƪ }^ )%jzZJ*; 뫂L;z&V뭬ʐ-N$ 4l($躵8Z JHVvK<.+0 <g @fY W B,+' 3<ôM*4ͱR=T *S393{Ra #鯽 lRS@୷ l7 iֲxbcCfkGo-R ||-s sE؉W3qLǎ12@A[%G-7ݙy~l^`A Ҽ8~޲ )Buk41q&S[G/'Ư~w o\F@W0<+VB-W=0# G APEfKd C^/ [``WA %AB$0y Vl`&:IB{Rc YC!}.(iXIT@2fҁ*HI'Izd.kfeESycyMPvx@O-N'СE*+ fҩ*U?IZ5uVЮ#k* QVFNZ z"\z׼ڬY\$ Ct SXE4P6*$:ƦnMmj݄Rf(Nޭ{{guLo --Pr tZbme8طRʯ~1[R-!*bN'ظ'L [xoiYG\ q$dC Ϝ;`إ .t |b }MQ竅7Rʄ x6TM7 {$y)!N2ŗ1!c8⎿B/!>% K>XUg .!*H#&nr?*h-'̌ [iMJ!MdʾN`+\Phkz_9D':xq!I{5̝s+B$ ."͸hqN}a(D RB l T\ U}T .6p-e#/h 4 mm3|١"} nۓw{v)Z|+ %V:v:0!? %XLhBP+w6! ty#Dr%6Gt@Gr `@*w(>|`# 7!fTy|AE@ #H`_͡/e"$UăBM?<6"{c*f,I !3[;nj0 m-Cv=@z1N[~!Ǭ=t >'x|3|W§ɗ q| G}x}}Ge5}$t~0DT1*,02(rh)z{tQpw -RFh$x*?Ƨǀ#O=wLP}W}0}3@P6p8״w`{g\K&p'CFez{$T.8Dm8DŽ'jB  |W"X\(^x`nGsȊ0C@yCy}*0;8(>3،(!P|؉|PG$3ۘW|_e "~*Dx# FPф8x|)Ѐ8x(wnl$s.yƎ]A\ ȃXD'igmؐPxD|EYx)Ǎ\x6"$a`\ѱ0c%rhyG Đ`W8QTGMIa({ي%k-钪8e/jɖ4h٨&R B(|0*<QY9i ؊Rm~"~ R巎r,aPw m ɛƩ|yƢrT*3♙QpI?詞sɛP,,zuk@vj+S韌osI|R(( j #i0z34Z6z4j9* 86(3*B!nV`G)V_iX gLAKe\9d У2hXQjlmZ!BGL:w ܕ' 'nzqCǤ t e9YsX$j}J{X::Ƙ ڏ{i` Zjst_@xj  *9JJ :*zz zQ6驪鮙%t؆ʮpa0ڬ [ +tX~ ,ڋˮbr1* ;{:Ċů0J2C{ (KᰁٯHK&n@{Qȴ:X:[J{GjtKۊ W5*8TY;T bkE{<;ڴ"{l+*[N糑s-\+y }+; ciE\Հ|{ک۸ݘ*˧$rNѹ[!ۻi˻Ba#GҼ 9LAk%ֻܻ[ h";i$k2ۏikr' ![n4 knS'a˩: q ltK}W| "]X}^8}'< +-s788:,ܑ6LA<‘vM@KMpJ,|nT\Ž{@wS^|` !gƱf_nkVu Y|ȅ0jǔ&ȈqetȓȐĔ<\K|ɚ\ř ^9ʤ|Ʀ, vͰʮDz <ˁ\p˸,ȼLj˹$ ZǼ̜\Ԭ՜l޼ K̠ y͞ γܺ]|϶@LkV4 M m = $ !-*,+}#]2 ' .}8=0=< 5ғHD 5<:- NC]NM G]I Km\p8:=.=DAEE~LNPR>T^V~{X (]^acNyYHieio^a~snuwXE{} ͭ~ǜ˾>^~阞难;PK C>PK;,AOEBPS/img/cobol_eg_general.gif#3GIF87asmc筪異RRR}Δ֌֌΄΄Z΄甮΄ޔ֌猪甚ƌc1iZ{ތ{ޭkZss{}kQk9fai(" mf` &]qwbwj|bJ:`~J墀NJ)*韼Z꫙rjȎi (a(Z Z%k6QZ)^hBkc%.zfvjdNKypblpl +m/^^ZLnBk0/1D-[9L=|M6CY&,4 mlw/FtNcNmW#l=hǩϺ\oېG>I'vC-z,x11ڢs0Vgl1fvK.Q4wy{[J¶>ð n}ǀ>1>ӮҽMa.so^w[~oި? }L '`g* z FH W s- gȚb8̡w@ )H&:PH*ZXt .z` H2hLW6pH:x̣h> IBD Hd񑐌$'II%̤&7I (GI$L*W E6?,gIZR̥.wIR fYIbS2ubf:4IML &(nz\8krL:N.jgIz2'L~ֲ .IЂӞM φğ($Jъ^Ҡ'Q2ԡ HG*EbԨJW:ǎԞiCIJӚ8)Kwӗԛ1i>mJT&RUӦ3BgQOZUKͪAUB5ʤXyղShgWzʯc3JWjd^ ַ2Re]K6{M #$d;yʖR#czv 5-KmfQ>+i,lxZQlnޖqcmZ:rբo :WMlq+Zwn]7Fwӥ.P{]횷^+^׺.z^BnTߋfwܭZ 7*an\?W]iR2a #xM s0\[/΅0W%a w_1J;c%1kM[WNeKl GnqLǽ1pT!82& e%_9v2d [)ϖ?2ld$w"0,1Yf-}b%%Z-d7Ξ3L=7 WˇFcZF7_hA:r6_5XNOӖuoLZ,++kҺH5`sM] e/){6,e~6]i#ֶ Ǫms;ކýqSf=7MOp{&~7*oһqM}Y7-}G*n2.y8#Ӊ+8ǫr8ȏy?4=ySҕ\. c.s|6*s>J^̖}F)O3N'zE:V]WП~G:Î̱]f(+rz{,ϹS=ݮw|~(*19<7{+!GOқWֻ U=gOꢿw7O|j˾O{9!ЏO[Ͼo_:OOOϿ|xv: JH؀8޶HHGf}ԁ$*W"&/+84R-/H1X<؃u >XFXL@XBDxN؄PxXx XV^xRH؅_X<61dHfpPjZlڦHq44QvxzL|:~HT/10Z޷کwwh-Kz H:Zzګބvz],`zPP=+0u1AHQdmT,@$ )1>>`/Ev pG@p Hzz {LJ]l ꊞ ,pPw@Yگ)l;ZC`%$DP$Эv0tj 20s spO;i`,Ѳ'* [{0]nYA mIHP>z kLBKƊ%0;00 0X˲,\cF 0hFD G0D< iHo[Lq ys;$P I{K  pp `۵1۸`_T:H`ldW@X[AG۝$t~aWeOK; @ ` ` @ %++ty7R0N@U0@`Py Tyڡ \;6c*d- \f `  = &[/;Z˵˸+HFP QKDع*i9ɚAIy«1b,<2Lq@ !Ь00PZ |.O`LDlꏈIyW b+q2\/%pyGJzCA˻EIKMD+JZ׹ɶihlLh)\nLs*w (JDBA 0+ELD\Ɩſd\ƪ/rl=!۶T`*AG;XZ .`Mܪ r |ӄ`y{͹ْؐ=ٴת  ӄR|݀[x0Ճٟ݊ݢȆwš =؅O섞:]'vĤ7ڌ݃F}DMjݬ=ާͨjk=]}=4xDωJѹr};`ÍTǘ،p6)>g<<`*:H٨؍Ȝ &{g=$w ~.ke{n-aNvcH&X#HdihlyJ)qWF R܄1[H_O~}$>depH~㴮Yn"̛]4Λ nNtnGN#xJƉ^p156΋5}J &jmҽҵ I"I.#4JXŘEX9ϙliy%]ŏs?HM Z& j  Ʊ)ǼL6fJyeW䆄>>H\.9/:oZ9g(G/IKHD Q\Wʡ)`rb)nU:HJ}",`T̏+ GG?iHBMFkJN/ڻGK@`kdJq~?L5ϗ귟Ȇr/ҞH=/He_ݩ_?5=WXCoa@QD-^Ę0@MDR%Ò uŠ; ęSN=};E4>UA$9U֙-VB͞EVϱmݾUYcȑ^ޅkw X}>\X` v+j]čdʕ-_Ɯ\3Y2hҥMF}X1ݬ]v[lڵ-l4lݽ}N7yG\[37|tթ;l}tݽw[͟GW|ٿzOǟ_?Da/@o40A+pt0B kpB 0C QpÆ00D'pā@41E5TDqEgc1GlrqG!F$2I%]E!\2$J)ԑJIJ K/L$3 0H,z382:a;dM>P5MM ݜ)OEWZT>$4BmGDs;NlTL?SN<@QuSV[uOA֍(%NK5@L5WiU%SUXNi5X[ iQfU[g] ?vSZ[ 0[u{7Zs3_zw~م?U^ _y~mvaXU5xB7Uuu5oIFX YfuԄ7.odh4hO6p/i?Da>T_\dNS< 4rIRs xs! Bx{4dS]K#tZx:tedwֶզH}@-ԦN9՛Ro+2Ї$2(I@.kdJLA2Il=[T]v׻u )a)Ja0F9.MZτ'ːS?Vmꀰ 01YXr#^ 4m.힛EiU?H1{. P2v\ݗV" L@rы #ƾVo'?Q‰(\\òf6n~3&QW4bc'֜E1Qz n{8&_X W0oS$cXH,eTWQae.1ͼ挠Y>jfs)Yw~cg<+Oٖ ЇFtІ}#f(cuC@["3TP:yWN4=-d~E,SSZI̧jsck-\ҬNR_kUby)@ iJ9Al nhdkYZ!&BОPiVvMc($[1:}71CkLHnTqbZwx&nTnV -!bXyMlwg.X^5`$4< @tAD 4A!<T%d&$@BXA)4*Ԛ+ , Q[BBíi+C8C?3 _Sx8C"c6u㝮?{isj76w{ $oĢcCI;\ÒKv+$"F̈x I|LMNL@͋ s]¸b;y R-ٹ;J-=Z,{E#;",d,>T\ Z,[T9 Qܪ :3y2҂&SGhu$YĈ:w2qԧ8K8ƷC=r<`#;Ɋ)n6{}kT K!EaLǣJI3 ;$ /sc})K<{m4n@o +IX[Iӫ; ӖcFk+[J=rJŨ=7>k>ӬHcFdqDH‹F||=B:p9-f췰4< ..ZK<.T5Ü 3|L3;ÀLLќҜ4T`4sM$MτAдK2-SȯZj{nOD:::+mSJ'9F#UAT@0ɢ-"rE F})ezԭ+UDSLZjT$0Q"%SPTK"uqJzD,>SsVsVzW /WL؉R@Pl͑ Y 8YR+P ٟ~bS%Y] ڞ)(YHXYԠZՋXXPZZ,Q-[8[Mہ),čۥ}Zۆ[8۾X}M.YŭW}\,%LZ ѿRݰѽ[岫%Ӆ]M۝4ݫ]ߍݴ%\4㵍u DCU^^ڐ!_0]eq_lO_ZmΝm#m&eRHKlRoS`~d`t` 9YӋE9b$4 Ku$]׳z>ri|c&cۜS<<"bJeJ)Nd,[)<2dĜtK2dj>`kdAdL.%`mL0YZ+Ҁ_F`[&f%1fdefvCij ifȼnm nf sr sfgpgxy xլ}tnu2h$~v }V`h6LɄh hp茶Mh=7^FU=c&iMiViyi 6@Pf]!Å{jΏ΢ꭾj꯮&a}T谾v0뼐N~ kk6&l fplXȾʶlͦB Җg6Vm8mފ؞٦mMt6mnǬFn)n< L~ 궏njM6o,fW.f.Oo۷ՙf5&poww^pl ܵFZgG&5 gqpg \qb !"_m~OVrk'ǚrl,-'.r 1&)G(s816o+O:ss/s=5P''t,_t3D7GH6sKJFrOPrQCtTw@7u^EYmCPDu^ZVv#uNco][gv0 u% 1h3gY^voGpgq''ޅt'uvw"twrww o/x8xmOx[hox{xfxcxxaWœсGWgwykw4wWz d_a?zIzB&,vZ2@mT6@恛Bl[ ѡfAzcs;g(ͮ/lޝW~xId?,gNZ~ҭa0ډ J8! Vy7݆) oZև raU}ԝzH#j}H lW!A 9$2a h-HA8m9amx~NN'\gDUcFǥ{^cq9'" )iVc"ycz'vї=NY[I&(d)`)Bğ\ (py*zםynVJv,: hEʚ+z>b=M k;쨥-zk$QzүN*.V;JQ\f,b^&,Lz0_*PA -['-pV2p+< /pl r |3=B,,ٵ%<4 Lp% 0QK=wBGB\]k0L0A̵\F'tO i#5p\y7yw߸ 45Չ+8_VcK>9傓dޔ{y~̊eG1Ꙣ:&>=>̀\8LpΩL;+Ϡ["[/N {?>~>,B <|! >o?B:=ǽHd3 G*¹2!~#`C8  `~!s0b0 C@%jN|"():qV@<а!ØC.CϺG`7l(9ұp4\ш~A<$"HBFxdKF7ώd=1T Q<%*SJOT)Y4I,k]%cb+)a.[1e2s$l&4)MW>sּ&6}wp&8)q<':өu|'<)yҳ'>}L#*Ё=(BЅ2}(D#*щR(F3эr(HC*R~E&=)JSҕ.})Lc*әҴ6)Nsӝ>)P*ԡ8F=Kԥ2N}*T*թRV*Vխr^*X*ֱf=+ZӪֵZ5 ;PKG(3#3PK;,AOEBPS/img/cobolmap_datafile.gifT4GIF87asmc筪異RRR}Ɣ֌֌΄΄Z΄Δ΄Δ֌Μ! !}{}{{y{{u{1i10ceceϜ1c8!iJ1$s}}11)!)!1B1 1)!RRkE<$$)1k{1!!!yi9)99{{B}#`?rhCk9㒣M)疦)%Uw'u栄j {-WH䚓VJ$)h:)(mVeFj^(z].k*å鰧vdz^,f:t6)|+,f}=*)쨛nY|N(ժKF<ݘBH.rpjy-++$L߂[ - yĊ$N{llH#˰ppa,ͨ{Z?KoXhu:6OߊGjHudWvuzK,4 kjmܦ 9ݔVMw+Kck밫:_qY9Ifx7~~-+.G}/ (w |Y䗿 : _ ?Lt֧:Yg&H Z̠7z L @(L W0 gH8̡w@ H"ц;&:PH*ZwrS iPLBP(@':QО?FUz C%Q45!F{D!)YTHgJӚğ* ԓ)-JSK[-}i(^fӦ:NIpX(~8C@9[2VU% ZcQj%oek\Qx]W|eSM Op,Aծ:_5@XϖU0KVj^YφV}M-;@( [CĢVecw N%MYo2umrZ浸nRpJRvbk+Z*[x[e_ ݘWݍ+|j~2҈-O{Cv6ZX^3K[&ָ]3|zk FC vHq)BrY]`<8%K(< u{9c8HʈSFA-0fL*?7fI à1{?IN :UjmEd[:Sʠr?a ؽ2h; zbh(xsqLi1/zQ N{:%aM(yrn1x+#^ɦ9N}FkG]$:%.tUWbձƵm]o$=gxغ5on7_dF[m[>Moe;6[l~ox B$N8C]nsuHp\E=7-s.!=r&V\#gʛ3{*oΣrnƜ:I*mN,y;Oz{ˤ5IЋNu]Xw5mG%ԩubIώv@U飳Nw!2]Nɖv=r^w}nݰeN>{*d7Oxr+6Ȋ&< sfK9w _!KF_{㾦u?NZfI9~'>6 Mx"g}R7HF~d~>~ [xfzwudڗxXyl U$_XP\'o a, 28'}}5}wie=}A''P&MP|~ PXx( 5WӇ\wzlU@WE|?ztń%L4nxNK8O*xwN0~ hv_hyg@wLecHtu86BwN` 6:u(h\Fk58SVxqJL*5Waz޵nLh^؋vlhՊupc5\iXxHihXz\&؃؍̷hlhaTFЏ9YyIo888 "9$Y )n ~y,Q@ ` -aB9DYȐu(_Lو0锃kXxO FjшIqpNZ"Q @`lYYnMs7NEu`wbz|~@ryrYT6u ikmoq shih©Gmiɛ()9JXƚ_a c@e`ghМGɛ)yٞYɞYyIyJq[,PWY[]VR( 6 " *:.0Zp4Z6z8:<ڣ>@B:DZ7y}5XN:XU0%NQ©#J)^#z(J vt1ڦn9։OGJI0T0`$ʟ&X:ZZyZlZ1*sNu O:IJm5zڨZ$ʪ*Y)dNzٙzIUʜڡʟغʢīB髿N{v{ UbzX ^zaʜWz_yJފZZt嗮P[J[z;fʩm 3^F|GZxK_Xx] H0HPU;Ay?k{:iJz!k# }a }xehUk3z 5`<9<۳M[E[jz=9ЩplP{fxhdzֵOXQR Cj*g Zʹw۱*k9hg(Kfuǵv kxʏ;*L[˯!ʨj*jK|VfKfQ XXxyȸ{ȦF{ZɨໟzC۷KzGdKh;[k˶ ڻJ&ɾk`C8KlKK rmk lǃ]'z'kz-|ğD|@KFRlf̈,ہ[{h &ͭ\ܰLt\mW,$GoL WkI6(%`Llǔ7! {Q)XV  4hL3-P }c\~{>C5+mua.=K=4-,@B%Ӌэ'l'=|:wj]bN9h Tϋ&ם(`-Kk&\H~Қ(Pٕ}٘}ٚɜٖڠ ڝ٤-ڤ-٨mښ٦=ڲ=۴]۶}۸=2@@k̃aHr J(M׭=ݍ]]=]` ,Lܹ l}҇ L݄0*>/Sn\]>("n>$^)02>4^6ӽ =f '=AnCǩTT^V~XZ\^`b>d& MO^oQƕ|!Pv~xz|~>^耮hdlȋ<锾ȍ ʾP>wF/~kӘӡlĥѧͩAɭϯϱoi˵ͷѹkĽͿ^.>ž~iB,xnN>Ѯq ڞߎdƍ$8x"-hEM!' n+9ѭ|i717zP}@6,}FzU b.A(>  /689|_Ч = BN/A_I6D\W^`Ob?NU{Μj?tBp4+~?M~xRzsʌOWO!ɉ[Ujf8gR>ld/ZoL ?En<uDP*ɫV)^ؕXd2EDIkcFgݶ-{7kܴ}eD +[|)M_Ydʕ-_&Tw]ȵ*h߆hb.lժvTyfyfإ7s*\tխ$oޥ͎&]8ޣ$Q}ˏ~~/>3>dA0Be840 `N=G$Ds3++^|EM~| r<2I%"D2J#|J"K'K/3L1 l0h@C:tny3N9DQ6 OQHԳP("49y2ђ GMtF/H1KYRG%TP?E5UUWeUW_%4tƠSqN_6:{ x0YeeYg6Zi=4m1]?DMc7\x0]ue]w߅7^y祷^{ŷY7h_vm$\6\fʀ!b'b/8c7c?9diNn͙Ă9f\:'wg:h&hF:i{:r]Cmj؆6kk;l&{ڧM^f϶mYnRz1]oCo\m[o;p&| Z[׶! Ep_X//LIӧg/ύ\: P:ܞ,Qhؒ6PiZ;v&ݧnu[btp]J\WtȕrS\:uoԹVWg:;^׼5/w;;_׾ůΚF]-+(Sof[:`˽כqkoԂ f0MW&05mn d@$b몸QƩ_K`4T셫R*΀V_:'W|E x(\PE1cIXЏODV9>Geum%@KP2(ȁm,\uqJM=uG;Jo/%~L>J䪳f`CM[&eU~&M1} 2twJ EuXu_dE2l5'߹dLdo[u+/6[;2ѕ/|}u~ {Y%?yWM*g[ދG}}oS>{/g{ {~?|uׯ}K|7/|-~7#?~3_~=?ӯ~߿/e?O?[Td\Dc @s@܌ $ < ? 4AAItD4A,pA #DBu2?"L(BgB'dA, B+ (0.'4B1D1\20L8B2tC9C9C:;?,=!Tɘ|tɏxHHIVITII I JI H9@T# 4CF?ӦSF=OG}TXTIMFJTTLFMԃTO}DQ%rP 3M4DW-XYU\UV\] ^sa=`cEzTJefg}hց?kbMmV%HPVuRW W]PsHMWxlzWW}5|%h#؂}彄UfaXs؇%@҉ؕ\WwQs،UYY#ْՉUٙ)uٗ;&YxcٴٗٝYY ڒq+Z=`Kڌ]OkZ}Z>ڇZ.ZڂZZZ } +[{=[Kx]kt}[p[nk[[i[ f\*\d=\Ja]\j\_}֊\ͪ\ZWܺTܱ ]R]*]O=ݧJ]L]]j]I}ݟ]F]C]]Aݔ]>] ^;ޏ*8=^J^6]ފj3}^0ޅ-ބ^+^^(ހ $_*_"=}J]zj_}_yw__o_l_j `i*` =e=w=eHN]`d`b`_`] \"CVfv6O&UacƘm6$#O$ cbHZ19z+ ,9s-v/b,~ -2FP5>c66֚4v7^1㰉o:C,c(?b)<dc:&dDV?d d0ΚC6d3NceV~DVVZX\_&F>c`N\vdZffeeaFcf6Vfgfb6f[eWf.$b7gLcHT^wvgZeXculczf}&TedhJgWgxxfg`dG灎ht>hs~hq>WvfvcP.hw.i_Snsvghi[HhFFiFcVn}f~tމoi}؎ʏ…eLNuFNj^c~jzVhnk9i>kj.갎k>jVi~i-g>jVV.v豮kkfih~l_~k>ii\쾶lV^lfldWuwNf]eN瓞e6,Fm^{nf.n6gilflj~;jo)icIbpr2膖i fQhQc7" /kt"i'+p&qiAq /k.nmgffnfcf6nnFeJ6ir^gf-+GfNnp&e/l=fp Uq~~l3s6~NҶ.rؖ.o&kg@oj&&onk777WX-Hle6(k*fDfnSjUhGnraFId:'u&KlMsGjulUp.vYieot)ot;?fehc/dg.ξg_g6rtwnBolĮhnx7V[wnwcpn^Hsitrx.ӆPu@&sh>P~/}ߨWpqe,zxUFmzuפ_N!7N N)tz>z<_gzMSr_z٩/W''V_mj{G9~x>-{Tq/iXuWWj>|h1|6xkȟJWx7|o{aH휷r>mlXGg~vmTG^~lm~ڮV%*~z F}G/gtrּ7,h „ 2l &ND@"ƌ7r#Ȑ"G,i$ʔ*WlR"0@">'РB-j(҄1Zt)ԨRRjIeҴS'Ϥbǒ-k,ZK/6-ܸrŪU#ך7srܙ/Vbۺ3nq˻zo̚7sTrbȢG.md5IW cwpxz N%LzG Zj!#Ak4"%x")"-"18#5xcu#=eTESG*$u4QJ9%UN Yj%]ކa9&ei&\&q9g|oy'y {'ԧz(EXY:螄B:)Z)j邘r)2穨zjc*#%ѫ:kL*v6;7{,*,l1X{/h-z-۲0.En넾h.0/{/һ'owa;p |p`@ (;1t " 0 @r|23\BZ11t2l39wq!<8<4 kBʼ4-lm2 M4E%e@= Od Gte1D0m6n]C L3kǽ7pBg~xutߍ;ù7;~ސk 8#8Ԍ }0HNy閫:q>Fo΀A>{y򹿽; oH OkЮ揋ߞ<دA3>ey ym[odۖ'Aեl_rpbt`3 C²1PնC!ELh֐a^FC4T[*\NH u^Ub"B<ւ5vn ذ8v4?P#k(:u%!IH9"j#@DB NP;rr ;ٰNw³7Z)<'Ѕ2}hBN@`L1 эrE!1RR&=A Cvb3Ej ,,u)N mzI FRԥ2NMjj `AUr^*X)Iw)Ե X x+\*׹ҵv򺀽+#ZhW =,bM@ @_'C8RPpE-JxleC+Zl=mIJղvlk-lc+-ns򶷾-p+=.r2}.t+Rֽ.rEr.x+񒷼=/zӫ}/|+ҷ/~j,>03~0#, S03 s0C,g&>1S.~1c,Ӹ61s>1,!F>2;PKcHY4T4PK;,AOEBPS/img/multirecex.gifiGIF87asmc,Dڋ2H gjJhG§9ۺ؜ᆾ#S\ϫ ĴFIU~QylN,6d8$(} c7ŰxH8XXygiVjzii [*kz%IIGzjvKeʇ,˻9LSC,(*],,9 jT.Y]?o$0A  H…2|Gĉa81c;z<Ȋ!G|XJ)Wu1g T"=N =:N%C!䄱HѦ JqqZgL|y Y)9%_Lvm5Yd]ٖ8eh9ٴ ?lj TSpYgHfz#mFѨRd꩗ ͥBzЬdAWρ%Ey-{Qjl6a(%W]E;Ɋ` ^"#sriHfb[,7y)"> ,f,$n滔t#dX`o_n(2.h(ǣf4'g2x2lM-Ǽln*|>Bt8 &f*>TW=XӴ{]096,rOU=RN3܈ Bqh`g U3s/+h58+j<~j7rÓAeWZrբ *nVA.+! S` * \ Ž0! YpR$;D ;?4Z*f*p*@>1NMƮѡ fs菙Avj(a5/U&Ei–44bQꅯqkyw>#ҭy:!9?)B"0~=B#DrXeC2r$Y ZDy*S(ș:u!5|*`Q !1rLY%3hˌZ3bg Ϥf3Ll&$A>펹];AvZ8*E,1Fϝ4j=]:ɽN/$:n{ ] ~GPZRLyH9b4F/m3>d B$s06Bj\eJ Ekg&'{s]35mSĤ0 LR=CP4$k BP*I'#~d*}U)ٕa/iFrXD5LQMV*}>\ZR#ƯcTT<}bhc=HNO(9%|5'{>n(Nd+92e+ .pS*i[Hy($UfQ(D&q]jI`ꫫޚ6iWUok5XY#p 5O'd0 B\KĐvylO3Sw״E)G@A RlH~ӕ MM. 4t[hJ"w;h$VR.ĤULյ\f$*S'ȣ[Ze:Ta)T >4{>ߎCn<_49i2E!JT%z$ADMlcmK/XۥtC,=6LcBӛ4?6sɳg4%~JѣH*]ʴӧC իXꋪ֯`B곬Y^8Höm[5pʝKݻxݫf߿j{-@pa+^̸ǐ#K]y 6lϠCK 3ٳyDAbb˞M۸s[̗\G g΢+_t -Љ2~0E;Ez9W^ -yŊw]ɣOZ/zّtg`MQX 2 ]{W@B!hX!gሔu~R bH0Xi̸EؠD"s[L"a!&TViXfRV$aQrihŘ-6t։%n.=y!v*=pB 蠌6zsnBqF襘0)T媙Jw"j# J+iJr*e뫯* kbǂjF:ީ h*+,[pz(+N, ]Ƣe붋ogor ElQgU6/>뮾bpI(a/۫WlQ 1rᶻ[|0l! 9f2?۬@cl:O\az%׌REX㜵gwLc}i#wCJ´M L ˪`.n8+ދ+GL~n 1^x48g.9凧z4<Dn$鼰떯O~89pӷ;W.|ng}1zq;⾌>>_Ṃ;6ɮ~K@G( $w BB5 vPU7bPW8/NL JXBA7$ 9"!8AzP Ejԡ;C~Q "-h!HSq 2"hB'|㪚B+q=ġ@/`Bآ '8G 1Ob"ApD  5pw8B94BHJ2cL%;ʸ3Vm,gIZ%.SK sD(X@NL2́E0%_I fZԥ3iMi`߄Ý$S`L:vL<3/a K`BhNz @YO$Na Tg9І:,=JpZt `X HGJҒ(MJ+ ,,?Қ8=Zj#$TiNJԢtRpO+zѦr#GiԪZ5 O ͔W XMhR HjP:ֶ>E+SJk@u:Iȫ^ `K't8錂d%Zͬf7zDhVȢsjWnhK[ڊ㮦nw pKMp3cZ6ЍtKZͮv#  ՅZ[M/v׶n1#[ ~_ =`r$ [F3Gxm(NW0gLcx8αEoy< Hс:!or{]rw|eaM_|e)wt,*kM.Kf͹{fc9^3ڜebc&3y{|>q98t0nqK>L;/Ҟ:ͫVs7FjV}N`MiW[tA_ mL'ؖ\c[h8pi =m_Gv{ ڒvYygom[ݐc<MgC VNx{m<[|s{vqIn6X(76ɷ0Qsj/_q FO:n;o4Wt_}Vv7f\[g9qG᜺'Lzڃ[ 7WC Gsh@O7^c8x'>ܲv-qSu3Tow_[w~w:x? ٣>:慞xd0~{#_ڥ}ڟ?n֏?}3}ٹEx+k7zv G=͗=Gz~7}7rXz7}}&X@ HlmʶUs;Gzhg(vs-|ouƃ烎?gv|aW}yov$XvRxxDvwoz6U8(fSHo|.m0=GX|joXŔd=Asph@`@0W&Pxx(Њ8X%Px؋8(xhȌȋXH֘&Ȋ8xǘ8(혌(x䘏HHhј yؐǸݘŨȑ葿Ȑ  '9ُ&*% 󒧈8i)(;4*<ٍ-)EGEyJFKٌIɔٔ@ɔPhO`9Y;YK)Vy8MɖFٖkYSyvYUV٘IyXY16IO )8yٓ锕o陯ّ)Y9v9Ty`}I*Yu؉ٚy_yY99H{Ii)Y9際9yYɞi x ʠ0qɕIzɑC  uɞ)ٖ]X iʡI+iI8hY.Z ʟY&4z01:9" N.iQʓij٤C:* z (JA/ڦXjiqڟ_oZ/J| *0Jx꧆YV ZZə (N5Z2J J1ٙ&z &pyڧV$J*iznZ^j]ЩXZ㹑J]jڢlF ! ؠSyN(ک_J)yjzQ J퉰: yYrWۊJ#% ')9$, ) , ,38:@>8 YӡpE;ٴRS+2^蚴ɴ={:)+-kg)yj{P[u[l[B#{(Jp~k|Kk)HJX۸zújʸ jKOz9\ʘ뮭;+*kh۱Jߚ[ 'ګ h;:}ʘʧ* {+KIZߩ)J﫧&6[:﷠zk:޺kZjY!YK8嚺j|{| +HI}욖-B(,4 x ~J+EO++ܻ˺j9 i&L6̜8 ~|‡ UbzxNۜQ^$ m<\d2빼Lflɭ|UJ]~^!mЪϦ7NrY =MbϺǾLǣNmꨘG( ؓd̑g٦m.ԃo?)~o vZ0_ ,^$9&"O96 _A*{M`APV_?M?ZOЮP](^^5nwBlcNڶB ]~OMWފB_H巾RM\ϾЌm>o=Lɳ^ޞ> mAZЫXm=9бn¼-Nn~\4*nnLnJ&[⾋Q)κ/b]鹛b2(HhXXxh((9HYiyIY2Y ixI٩()IjۚjPb \"\KJZ\m)m= -l޸89.Z~ΙʾZ_:+/m.;O:F}tn^J2ƌ L8.d3o:Ś(],\9JW0KPSNRc$RG0tGj&M9}/bBn1aaSf˧JۦU;-\A[-8+Mk%{M:Ta:vO崬7m VR7WbdG"ՆU(*cg6گmmSgMl~vn̋Vל]N3u3C0_ԍ tGѦn_$o.2g_<.!hd  X=`IHYmj!WIȠYA".8"|袀1j6#oa6% BIdFdCdN> eRNIeV^eZne\x+"hsi7cl)^祉tb}gQ c:iщyƧ(i&dZ#b8(jθj"":*:|IXy'x% ZdU7s8h> -7yp&SFHBPm>Գ-k8a@pNM"|zٛ=oPs_ޕ(b)I\8:MĿ*į!-ۨL"ٞ5ղ_L57 'x;lLtC|@O;j({\3,԰NymS3)+F4K C-km:WD4uUu5λx;f'8.]PtSuO6Ծ4-_ª7sMҽeU>W6hgq݁7YvrgcNTkqwKw[8'u>=X> ,dezG=7}zyb_O5>^|SvFW3Q ;-. w}_2@i+m 4RLrN6>Unqlmsc4@ј+ ECSP&>iR52RT#EeqNBӈqWdL ݈G.jcz#)QII,!Q0D*rl# HJrAd'/& yXdIROvO++PnzL)J2zJ/ĘJVdf0^?2WXJ[A̦eHmfU15ȄF3`k& $ŦsRH?e~Н'ydf7lK"ֽ{BgFw֯)Po ((ú|tdDN6 a .:ȑ£ty穠x!zJ08h=rzoҜj` JIhAS94E{a8OBɬ+8Ufa<:שׂkA"_U —P*:Ƭ5q)MS]*BWf81ZTqO3^fn R lO5cf5B]VqXq);Tu fU%RuUjհwkKZٙY-k88x{%#;VfDզu yf!(Ɣp_h+R-xY_JRlWByںx͆8 ].Lg⁺=er@]܌1aRgJ&Ul죒O( /KF4$rN d6u\旧&3Y^^2lArtF$%h,0g'dξgGv oZ:μwҞ/6zՙ#荾8B|f+ S$Wiv+0uhusz]z7hA;lQFkF{"븙: KZHbѪ=~5)W:6:1<9i ԟS0?sRm.bkA+ʵ-ock[d[=謹1~нN}gw+zuٓOW:-ct6~%&UP^Q i7ߝE> Qt3C/-"ꌧ_H bbS.sZ{>i]+}k|kX64_n~b/~iS7z0V'iD+3kq(\{iitMeց!4e=io%j*XkhGk3'guJhA(CHEhGgGh"(F:xjkMxւNhk+xfik(mO,Vi98]Ri8XgUkmh\w~;xdVKqRw 8b2|:Ĉ" a E h/[O3{S!lXpWPP( q";`3} Q$ooЅy;Wc$Yu$S58'QtX[Gt }6SB`Tt8|CzwolO!}g'|{esz&gw(CQVwj?ՍpIz_WwSNO h} y!Hb4{R{%(jCPzv\fwS`(d|eQ6;!i((o/9pȍ9y1^։'{~U<&t8=Ə%YSty7#7`t9)RyvTOLQ8B4`|& yU)VZep qǀ.ŋ(c8z}}W_8s,uv9X,8oh;EWXW1gb@ؙ׈ #11p葨8htHx 9bX+$X&l H9L9_؜[Xfу?EIi DKhi9ȝ" q(Y kȅډnxx ixk)iڠgh8:qڝ$^™ eN6w9Zw8Jܶp"S N?"W9dyh4GOx03:DF| 9 E~p9FT}wاon` 1+谏l0٥Yk؈&#HCzwLYFyqv[i泧էqy\AezG"g9ר6<|&]VliwNRTa]4I'0™qLy67ҭ&qʖj1:Qƪ19j7YC%*L䥦"և-''XlOs)sYjJ7mhĎeUǷb w})<E)[B({`_vxW|*`HCqX)@"kIh6+ʊHZtմzkBbԤ!'^"7966n+w& *I,Mk@w|h|ۇ~˷pk* )KkK%k*D; J+Tֺ+/ 1ʹڢhkƫ% {˼l(ԛ%mScTVCbm:Jy٦i7DNK {l5QgUD:ot g0H5{7:vuʳgTΕ_OwlʪyoKQIö13 L#U'-M&e밡ڳkw*.ܯ1 13=v˨~j~IWK@EJwiZQWFoM`ǎ:Kتck"4:izBٶt*|cIJ,\lȷz9|GW_<-IHӆ#̯A@Ar~, \Y|,KzmIڕKY;vs8RZ2  ~9Jݸ %+,ۻ$)hҕ]%,!ۻ[Z}k) KMOmFD1m;~aR}+ eZ 4ӱ{*}KgԘr]Lc}fX]35m_TRmߴϷ*-)PH:}]v?<>{r^KP{-ךS8 ʘw\<4|0(l[sxIR4ڂk~ʂ|5|hvWĵȆ,ΡL6M{&\8|Œ`,gϫPݐk~qŗwD|i-u~imX*F8.8Cs,e[p,x7FB\L vJۿW R+˳LE6-L+mɤz~NSbĚ`LcK {/Nw >V+v;-t}ՆzSl=ׁ ^NuxͲ "V~=]ݽ1H>.N^*잊 N2} ºn۞^].%./օ='m_bj>"oBǏ~е=lڪ-> 6]ܲ& 1f|7Eߔ|_ӝm*e?ޚL<B}+wQSML;z8wax_ޭƋ|?w(%=vc}SqLGN^f*ۚMϦ.|j@h|~Q@9C4 uG̾ug^/k(ْKo|׏-\Lc [ y!@ßM젿lbϨΏFJ&)&%)&1%()ý̦՗Ϟˬө$1JO`Q}"hܾW&EĮ҈q.PD!GY-ʗ@ih&̒-C)HB6w$I#')MeK]"(ժXWpW1]lΚ];qDͻ[I/߿ +/aT\%8!WW˘-JxΞm4鼉Ss>혵Ӕ=ZLGׯqԽg߿Q kxCahУKNسkνËOӫ__OG^~}3~ bgl2 5 ~!}V8؂biV |#U'*8ȄXR}|.蛏Ya9Tvɤg=TE9V0TR:ŕJCyP蕔Ј)eXͤfWEAFՉgoJNgbQ QZ(14 C-B(UEϦCi[Iz)JVz( $QD`ۗU~"!} 2څ](1=ld bs̞$$2t?Jm˩&G_꩞"))L ̡bf[dJ:iM'bI76ꓐ2Z&7T`BDsrUgZ Ӽnp/GhvK|h1W,KȠ1d&jgJL*ftCg)tmjH\P| ο 3 76Ew)7iu[1._=RϪ~4|5fNؓ1D j{8l;к:>jO^JaFZܬ&3n;jF[a dǜ,:NrVв'˹{qFv1ߞfKr]ߴK=%䪝Ge|A/z:;֑Է#I7$tƂ;Mj$\E1b(D; c2҇$#Yȵ-qQ[$7@h뻟~8aSpJ-D+9I>So[BeE%@Zڔ3ޑm˜,ŭrqc&;^^gT7uW-]#HfNac&€VNeʙކ5PRdڜGZ23EJC?Ty )3z,rt(`:M:VW5^!\2T%)T=5!JQw&uѳs!W+uWJQh4TkmLs]HgjpїQd-ZԳzҭpZVTᲯR%K F,a E f.GABwfd3c*Q*{ՆCVVUUqٞ6nc,F0iKf{jMC) {̒-م=To;K{NnuWȽokk "2.DY::) $1\8G?f9%=Lv0aad" )1@H"HNd850b*).%KN7޲ y e9dfwN9hv1˙-~z,IXp69;Cy^( iX{J %}5|iI[ZL]pв[ 0A D)59.vFYoR;oɃ}tTO{O/ki/ozIR7; /ӘU<踆Ѝ947|g>f~cBd ؀8xGP~n~7:nO^=ԁ8*,/.vFLV!1sDChX}W=(?ulf}n_Ps$S/{Ӈ^Tr_4iY\$`^jW`bK+? iCg_Xh Mx^@`vsĆ-7u7ipP>0s utr?8m7+3NQ4ve wz(%=}F4G]fur8xsKQWSQOEzn7lv~[}({{x *C|VHL)l5؍W}%K-#r&^NJ>T2mgqHUv(ϨH(xVUX=UOuc@#JׇqlGgxP2h$oy ͸~yh]8qvs[xnP ZPg8 vowttaE9Scu~UP/ (ggWX9cE`X\'lwmxW+3N9NWLS鄴WiGvWrTT(_(B֗g8&_"|c{F|syz|ʈrXu)Fy}i u6~8HH@Ɂ+6gsKxGHX|qTgB8FȂقJgao x1ڹٝ)h (ѹ+™)iOh<ƛ)3HI*e9G鞽ˉι繠*9wrHl5w7exJ|٘dVghxZS?7: v83Y;}h jW[hyUY +SjB-_8ZЕ}4Bv8.$r) aR :ccЉg<ڨ"eU"Yբ㋗'8OQrz! 6rUeeW CzL5?tj+)O|]'WvI I]ϧ]hR,#׶N83ʐ${Xsم]HZQyN <5%*zu `\o tXPtmT9Z[*{-iUM GHXw՚Y*wۺy_IG{R9ʞy i˗* yJZVy J} su+ ։۹QR{k5!n+Y~ k~xɷ{˻1+{K +{ƫHiqh2գ;J+_&fk*z{K7U 1e|NQW5C?ʾ(˫JsGyjL+\lHXlt{G_h)hf:l0|hrZ},CBFyw#o#J yf<Z7luT ' ƒCFY/hkBi N/{a*7ܫXuHpװ슾ۗz(a.˜[×UV#I, vǭzm5$fWq&xjh !Ō˕ v\C):Ư k:p6dz-œt^H\l|Ǘ&8Ƕ3̳m9c7K>\z[|k(t'k_;o%^~  P >^~ ">$ݷ*N*^0!"02:>@B>D^F~HJLNPR>T^V, }`b>d^f~hjl_n^v~xx~>^~][=`>^~阞难. ꪾ>^~~E-ܻ^>^~Ȟʾ. @ўھ>^~>^~ ~ ?_>  "?$_&(*,.02?"8:ѽM0D_FHJLNPR?T_VX6\^7=Pfhjlnpr?t_vxz~~kb}dג?__?_?_D?Pȟʿ?_؟ڿ?_;PKǯBBPK;,A$OEBPS/img/heterogeneous_services.gif@ GIF89aX,XH*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH*]ʴӧPJJիXjʵׯ`ÊKٳhӪ]˶۷pʝKݻx˷߿ LÈ+^̸ǐ#KL˘3k̹Ϡi8:QGָFU@;jڵ΍5uxtku_frġC?.*&wuϾ}Eݽo/~t8߀V\ng 6~F(BMhyv ($h(,0(46:x>)BF&J69NFRVVfIZv^bYf jnVgx|矀*蠄I'apk-}FZVajX_)])j|jZ+s^Y譸뮼Z^v*kt첷f(k\V2Qk0A-7O߶nWil.˓ܦgB-[*Ƌ;NUO&pIRpN믻_{[[1sw_91Y5,{Twoɞ/KX)c$ ױȕM*׼þr{͏YٸSqzF3e)ZȠ)Wj@J[,-h Y|UU:kB$~N[I;ZI(+ڿ5(SНwmCN},=+Oᦕqg^gɭHﻺ.EjJ23V(V}Fsx%%hAkFn[k^X"SUkf):Be5Ow\ p{X] lTSqBohaLg}Nnw6^ r6 j+YH^V|d|F>qyY29S1*0rVZO='yL9CcsI; _3\hkqLX2ft9iCtKf*\Q6jL5$SzЪư[i[؎ᮋO}5}x,~ RZ7md;f0_MnjU.{z.~WwcEO;'N[ϸ7{ -GN(OW0gN8Ϲw@Q@;PKo4KE @ PK;,AOEBPS/img/sap_runtime_1.gifawGIF89aKor//땗wwx~תfffde533TTNLLǷɗ9l8˻r㾽ww{|}FyFpi៑򊋎XdoԴSv췹blvrtvQ\gXGFF=88ZXXޠҠ^]ٕղauUμmmmgݴ5=;Bhrrr! 铓\}@??ЎԞܽ͸!,|̃ H*5pÇ#J!ŋ3jܘ"Ǐ C#ɓ(S\$˗0c$r͛8sϟ@ JѣƆ"]ʴSVJJJgԪXj yuWb5u]ΪVv[YiʝvTqEVwۼ~ ++Ɛc1ZP8&|P7BIdXBu\r^ںv] @RW#сg#=u}T*7^i ?ekxo\4o4v|nnz&nozU]9e]*g~[5qj|GkiPXigWMMHo\2~^<_ZLv$}3q9_mo8h2ZƍydWWJzɔLVkqzcNRi|jbIqd]lYސedn6~PFƕ9:@!kǩiݫfe¹ZF azbn|z81tvn t;7QAe@ \<\5|6doK D> qQ 6T 2x "~\)vT!@#C4|a'H Vqrdz`f?}UV' N̐W<Un`:a=M@bɐ f@D 3B>pQC>;Ї1"1Qp(0 Jth-2 d`D$u `=@c+1"n>PF$BH>@ @ C$`BuāTc%pd ION` v&% `&Zі/%.0#X3  IaR70+@ΰf4q9&x!}@6FU$'9cyFSg7/>0oȴB bLe4c w@6D*:44@PT˼33J RyN&ݣ`S,@쐀rt5*"oZA,H 湂2AZ`TauPj*`TXRC61 H/l`@ IC*`/xLJY5 ܠA H+԰d%+bӪ?$RX 6 Ĭf7Ϣa z=*XԦvj @ {xSoK]$Rm^@, KV55& 0}dK}hQ qm^|av@ v`<e)!eЇup=:4ay ; 6pTl ꅰ{H |5cxpuI<[A?8b80e|. 2kAX `YLvx`3[@  1Lq @wXx&`<8=E[`.`ШǡM`j@C`3j:ȮU0#^H `jCq 3X}X lڰ>u}U?{^A]lzhC /&@5ݵe¥% M&0A Q`=elLC[4#!ywe/XflD#`xkg0q& < 9]C v =tϐ/Gj=E0Eo0r:Gw K`ֳލɐF_Mu)by+ ' 4l%x j@TOxOm0 *ʐ,!_Bgsʇ!,谅4 B~|-rC.wpl}] adϊ/ @~ |rK W&=}ʶ 1~{;aH`sUswp ` y`%Pw"jge Pև}D  5HPfrwX p[~W6{tnP)wn)HV7t_3.X ma$ba zPM-=Um |pDfPadj5[w}}[Hm i 0{6 )xo@Gj(>Ȇn%PVz  Pzx"$"eV؂8e.(.Mu `=XofLi#H2f{`XLv@HrYטw>r1PQ33OzjHXohpP`wdҨ'vxؐ s  0  (iP ?pt\gtM` ٍ9 eAHK3pH) iv[` rWY2@ppfJ hf !Uo0`H0xsdz|5. e_0xf7)Y.$ = ) <nygs %5pRw"YX`me!.$ So@gОr>` 0`PKXfhPnƝ@Рp鹞9g0%6N{HzqQ`f 4 m$R o (z$hn=~ 'fQY4ZAR *!*CjzE,,|i() Q@Y"& >>d*m@BʡFc` )e0.*%pz!Cu~:}#1p@JڞP6pevЗGF*U3Z}'`22gتq@*g P !:=`{V@yzY+9h/{z1ZDj}M%Cp0QUf&:CJa  u"c NUWKhZ Pn7{zU3t>kJ N<%m$<PvIa0P N`7г>E"G{<ж۴O e@4HZ˵Rc f+ڠetJ۶KN `q)Q<7tK=,01kKDи?`۵ bAZt ^ {V{KSe 0ٖ+Ag˻43~;h@?һC; v'+Ƽho+>ZоZEQIfûAUy>\Sit@21 t`[&wp U` ´E"DYh@*E24_'p_ Q<, > g(3E HL3y0>aUV|Yl Zgy) K @ vP~ w @wGrcZDSy?qPY؏ n>U2XU zR,D,h0=s̯ ۑ z[_/mMϡmKvAݻYYپhMd(Q5~V$~ 9|^q2Pd0$p<;UvpcQތhp=UPDo.ؾ s|=ڴh003O)\@ƎGQY|0APA4O65dC#4a@0لzdC=C=  R|J\BOLQd_)+ -?bMG D7*SD~) GqMyLy4\FR*b#zH0 Ub'V4H:_df i= h{AGo_NN~Sv_>@= X Sp`yYE6ta4OZpU-$F?X/P߾4> @DQTd+TYҋZPJ/PRfJ-KR[{a[SKQb@N- HRn07Qvq,eed66U+_AQQ;b-x"HuunZ/=䪬zdD ,+^+_-pJl!´jaʦÇ#JH*zXqC ;U2=`@ã?5J O1ԬU\pϟ@ JŇ(G4zRwJ~D\6ab&@É蟞fӪ]˶LG&]Z)$VL=9!e-,dU#Fn CuE˘3;Kn2pjj/@,Yx?  p9 Ngqh@pZ =Az5+_rEl 䡔_Ͼ(k hbBu!]܅WFASoބVh!9#_o iZhYaV80D2H ?lc B ŃfwDi&~ /\H"T@+58c5@ c@`z@@1VDPB)t7K6IIQL Fl c`D&QnĴ dQq駠 wg7y"g ;`Ex菡&ll4)ef*Ī5*7 yZ/ Pە&af~[joŦ>MK : 2d+W ~+.yTQn iF,۸M;Ko֡@'F?@ 1\G( 'lHL2L"q ʱ1}J! %,*Df=08w׎X| "1C@v( )}8PAJFP`Au v(:nsKxtgG- @ XaPBQ7d2~ǮحxgO>Q [ XrnD˼Ԃ\h{kF{*!s3x}l ,PNu;%x\n*S&|38$W/Ap PY}k P_X73z&LaQx = oB^n~g,6 p#x`eMa* Hv%N) M7dx8 >dpL\J\ ]" MfP|1ac,pa~"Q\^ V:R,Agxa J2A-z,R|!Wo RP# RwH,s. 2T G$'I(sZxdr [h_iLcx%fΆԒt@^2 %h Ʉ@Kn4\Qw$~;gq?f8Ir&i 0IJ(HDS1( zg/ vC6J9VvI7Ta&`gJpntC9WYvj`z:S wy`7SX$3?B5F0rR5F εfu]}kHZn %Y%>Ũ7Y~֫p )]+RTDAex˿3~P%RRNVm]eUmjU?Ѯ~5 2!Ym+`UlQnOaWQEq`\ᔤ%ss'_ Q;U`סTp~WFkО@{% @4A|Q/x7Qvj+9R8CpW06uZu*B Po) ˩BcQg 17Ŵ- R% ={k|B:"0Ɩy6p?dPh#o{yR38H@d7?8醴5@?TJզZdNϢE/-9Ɔ6tu!hl/zKCoQʦβpmpIqt*oc9lkؑ66hlKzφvDi ޠ=뢲Uq'^iexƄ6)nO8=IoS@#y(dNkJ[HBpt-#g⁆ks(8rh y uv.x񙣻pBr >ə|26u673a7 fMP&EgqDHW9k "wmC#7X(hh8cx PזWi.pob|pXy(޸좏`7HCj8 4%8PK @z\HZzqBq3FK$2HI,P d(Q[I@o |Dr( @zB*ɉcŢeovW}jʦoU"'j!&PwTm'rM0/  4vʦ re0 HG`"\ꤡ**}9P ayZ B[{>ɡ:co In#JF* Pa PrXH`o^y=ʦ54PYX̓+#e oPذ؏z|@J +N3 BH 1mf, |X]@6ͱC{A=(:Hԛ!Ky`lyY+ŒN@3A@U+pi|P{n}>LoaPjR\ <ІZ؅򍬰֑M[e (}Zmpr%<a߰|Ɖp;Oݾ w %D 4ǭIMtV - _P2p@(-QYKР]A*32E| *LBPPX\ny `.ؠ)9m>o.yp~GP)ptBْ&h]Pt N{ȑN<]ϋH=찓A>٢ ]ꬎ&DΡ.툐rJK7pim4tp=}`'rC[$Їaʨ)`p66ppl\T>{VŦ@kv PT  SDFnKq[^Yn\$k?)pD@soPzyGqw6e,,mtga/ }% ?555? %}[Va gt<mʜ<< Vx ei|&mVss{|d!YO9R XȰaCX!Cz,!A x hpc4 S\-B)4iFƑ%^Rˊ n1CA"!LR7n 82c*B(̯`FSQN:DYhUׂ-/~VXedA7T@c 7ҙC7!ɣg'C A(0ǡ@E[XҺ7i}\"$M):h& b"DxG@U Q̉;B TƴT\؅^c 20#LS5ȐRwIoh @dY(Lсg&U@>!QAk ETa7F}a84ђC&rJ:\M7ISPCPU@vP` eyYwwA4Wg#)ǖ,]L}!X308a ĠMJ&N%hD0#i)%!4"0a{_.%ܕW|נgϏ 9`RZ¤O>uU&3mWƲ!&۩fzG v Ή_*XW_ Vh< 2$I?M4 .BPqh0ΪL`=2G%fRM{  ,5snI&R!™We%@q PWƒEZ,b 1ufR(D(G(Q[<"٧p)jPh!!T|Bfʺ#Z[G%4Fl(?9oA؜$07YKP)`.9t{TIU$p&7H˜u_j}.s5^K#Vco̡M!(6ăǺ1gN@Jܔ:/@]f`" PJV sHp4|! C9%xwȃ<d  `;汀Xm\Y3,5i{V0T TG2NS"|JM#8- &g'DԋaNn3'wuOl 4l0Q7k 4Q&),rN(`A0ȍMʤ" /qBp|csq $LїTRKI% GNy.BA T"`:[(rՙ#j[x -P .qS>S J@7 aN. np' 7L |EJxA4}Iaa\B$H:CƲM;f%(ΒgK;'L K*@¹S&2ʟťmTh a E s ۘ޸w7‘淋~aUPG(l` B3^(D\,SXB &&,_K!u |1LBЈNF; xTcS`kM[ Y0WVհ5Yc`NYPuy€d2iH,3 I$L(1, Gq2%o_'3ɳ*%Mzη~ $t7i7@ Hwz5rP&0یSA{ Gq/EA,ZDeA$p8*6s+0CFNIG7Vssc8H*oVf&Xv==0C--(OSa  (Pc5imVo `b-C&`C 65 ' ;LAl~9M&_i8@z&x[dsnayA-n;ZY '܀@@Nv{B*8 J-nH}K  D5N`7O!lSsceglb0+ͦXpttLu,X|,@4<}ׁߤ}i>@ y 2 &  #ZE#pSH@TaP('ʄ5wubBruTeMxԉX@soXIpd5aHlG` #C2 O#ȋ99h)x)30ItDҳ}?e={g~}bwxjYSވypPc@ ]U` 81 "C0,pU#qeBl ؏Ht*TTR VX8L ٕ` t>Z{bEwE/nayB!#D4P2Up=I6YɳPx@XYKɔMH7IT)(:08xs _ @i'giCuFEm[-! 4fuRUUpEF+@g98iٔO Y:Y i }+Le|Y[لְPC&,ᘠ.րpe kX2 ۩ٝM9Uij`[ О*ڢbP5eiwָMPI|)PHp&)8T;p#Zjʡ^ZHIih0\, \Lpibb[ěop$!P0^p9٤/砢+F*^Ha]ZݹHgimڕo: C5z 69=nyjM@$bo$O0`E+Y 3IHx9ypr b::䪙[ɪzP(HSAg ;eM4iiPwlJbpLpV^TʓѺ*Rj@+[K Z&{ʪj2|0ĥuPa,'Ifɫ髼)u $&&tz06Ok2.yXX z:+N"ˋj^Y@+{*\0+\@d7dD$o&7Z &Pt&:zzRp}VkwZ(PJl:ױ!L9l[ WYPZ(w[SP 7wp3 PSjdv`#DFU@/q }ట;O*#[nqe6 5{|Wp+SPjj4)@G4M6+p[ ql=UL!!Vf[Pk8cȺɩBGYPXlŹ&I} ?&q5z'v+q9I' p`#W$;:K& |f@F {pLb н[p91%Ū\( `,7|8A@)0vNPq,Q+ =W>и(lx@;~~J 6$9a4xDʂɥk_ ^$Qō̋W  UQ3&G7A#ż=p=pa%U4S=p8~R ǰXb)ipd䒞NpvQ*SqgX ЮLXY@LUM0\3P A]`Q DMv0Rp$=$Ap!Z{g,@[Bk4C bp4e.2ߟsE6[rY Pk;l圎r`s;ƿj4>P`=_&>$qыk sn2Y`>vP AJI_ػU,1</J=M.@)Olnrj'GT$-O. \-.SqLsYi,-c.B/xפE oaywZU~ fߔ0kroS $)->2{ gwh֮Ax`.DO>$P`xˈ 0AaӰLϯZ_ a-} ~*sO~JrWW2^ 3U332U2z2Y(:ΌZGdwqdy)_vQ;b 1u"=7Q ^,S"56(B5j8 A}lyaa@mΙ3 " 4ɳ#-cδe`?nhP€?L8:'>7v4R$(SR(<9&(ɢ"]SZAB.Z3 `* \? wl-H7pƕCn]2GOF^3c@>d*ᆈ+^c#KU%LhΑL'n@5jP \Өp8Ȑȿ۲B2vFrQ]zy5Kp  )Tb(82mXqPFP |D] 9-fiU缰<[laQG^CGEie|Ɂus-dk>AYmxdo)dLXU{[7SUt-c=%  =ȠG!~`\>a|@ p+x6-(F fŒuf#p,c#?ptQCJ dqAIT:{j XdR0V}admq* z;h o' a08`)0DXf",^LA_jql9m3Z{@QR!+ђ:٬WʡK ,0H'296@ED1I\β˜ft+NL @h 6yDq P s4h"hB-~Gȱ\iaAkkJo?XB[? 4+ߡkV<;xRw{HEo:n|^ ,0q)6h,q- .H¡ FXxQ}cpm^8U [@<g0 ppak5@ i ]?OD0 PMwKD:tqkڝqCz(U@_ܶG7/3w¦`-i}cw 4l 4vuh0L Pxز/,ІDzc,:.8a 6 pޱ623 CNQtCphA  W+%#2y`4  @'W\5gJZ?BiԣНf9 9j!ՂVam NyUG C[3 @X! !r5Kx`xP(#V )'|GvS"3nũ `>e-VC=衫o,p ψgAs;\ nG\xύta p!n!p( L"#DF`3mQ FfS`2>\6:8HK-!P P dF;;7Ͳʷ#oN&nlgҐ@e/3x>܁ 0e≠2v1lb/ \P$dxX   Hx'6p3mXz޴}9BO V՞Ğ#=4V[f89E% 2@v[\#aLAm2ae6!=@v"V̗#Ahw{ r 2n8;VEqs + P3|$?|Ww  h qȉ @x^4ؼS@|ei%݇Gν琟?u5tqA~I.ZOTzrc&( X,`v]9v ރҨaadޠDկ@#Bs# #PgiGbʀ8(C#* 2(#u?PC{k;UJ@yps g>dPGJp#zzNuuu+`{}%eٶmc{`g+(W|*wnPPqd}8h6}F%~7~g_!WPo@|9`O@g_% o"GpVHz6NpNU QV@p%FPj0^F!i| h9|GPM^;DŽNM o|+q ^HX;hCd*lxy:_F3P8 y7zhhx~xzO'W%husp }`eA { WApcPP\sn4Y: ||q nP|w6K/~iQXRx}o@y]xI HG26CK=(`$\d>ć%Qy a {:F؂ 2x|VN\XM|`C(b} drt؄NH%B@rKp{wwB5i9军CFf fzx(X\G@ `apX+?aP%gG_;kY7|_vKo }  "9sO` D^xqHw>`0)Bs陝6k<[Pm#tAU)9@)zM2Gٛ Pj/ sՂV2)r$x7)9X(ܗxTHJ`}rɘ=ce0مC@p$[l8iE SVfLye tԑp סXa 4!+Jn*3R"r:o qif؉!PHw|Yi;_I6y= x8IdJU GkmJ#ZR\Mo z}/ PPP"e\4 ГejsB#ZB i W|ؙzj+Oړ?thdЬ Pzk[}y19Ё"J R0Kp\dZ4ȑ: p+Iy hP`E{ص6Tl/ף bj* JI'q{ %2I6ˡ1; @pӱV ccU ɑY@UJpOh wm  U= y&k(۠H)A0 zފs`p` 1i0UKLK =ںү-wi Ǿ_P,P1y= Iw*th0ûJ)0DnoKG 8P`%?ZKdk:rBP [3 p_z|eп$(pH @ 1wJ%QZh(Lp(gW/;=45nrN{ *pu ?ĉD|tO  \"PW8"Z\b]:E[)@e`ertr&nǸ?<AcUw|, )2`76 j\,ˠĻdr= ,0wpeR{ipVPvbˈ^*N(lfҺa~Bkpi0Lz+>NE0[P6pc>!P=~U~0Jiխ^ ""0" $~p  zqR7d=z,P)'p mO$ =*jC\z0@D^Apy "R棤I>R\ oJ/p>GЦ.ߘ\ס:RP Ѝ-&魕7t 005$*̡ҚDrL= v̹N^iOQ~fT?"`=Z/ d_n0}ڂl'spX6up}{pGP,P=LWUPdVRPvipoU O^}h}mE=%DR^+77'r#TS6wU$z_ e$+AUGee6ARRp!!p!'>>oIGpi^wqGGqqwd6ZX(xEO /)Ha:D8\H ah S \"dhB)[Y)˗0cʜI3UVbP'.8 (C@ „I|ImZְM2Q#%ͮ;عgn^Q. B1h0+2n4 +"J }./k̹s-U7YfӓY-wDÁɜ9i&pb!&];qj.Юk=PE6QEVEpXnXRRZkƵ#]xc@FB dy5NEd)T~)h 무vGP0Z,*j)QhGpD4P +&C>A@e@'HaR2`\pC{診.^PE4tXP7p@n\wRJfT`ץ yqPiGo@rɷiDrvqܦ͂ܖms]A54zJ/MF )ЋTI _,q6ڎ . dRQw;`e@/>x$.z5' >4'Aqc\`sDQŹ7¥ݎTOA@,<ޯ_ 0Cxx]*~a\]wCxo 8X$h@&@!  /0\$=Lg HE}&yTڐ?  CP|RA5@tGG ^a4tԸI@ a:8И@ Y&L P2H+\"'x\$,._p%E@RpG% l d0^ʭ C>r'A :ӎ#qxG f!2@!* -CX"DJ p2>*x򞲬B(gDII.;OR7VzJd%H2a380*`F b&K$:N.xG5LLA6 Q)P#@# '8%FA=iU%]\_ztGhnP!@P9`; B.jJ.aBWH@tl&JR6 @KۈM2EEy RAe5BFAM .0R`]=.xl5jMjP/`eIHP2(;*[mU](оvuVQz *0,b;ke0L 2H$ j Thl$: qzpfpO6!U(s)@%=nUi A " er N}9XJ8 .pE)@PaE6)PEc#\G\ (@Z(?)4|v \/ ,p @(s8"@X`3 +B"D MPa3Hb,`jCra%cll7ȇUQ"d =F-j C Ԁ@-O"BpsU fb5ηc$cH`Uch;'1A"fG w+訵'JX.K R`r1EMp5`I^ cUծ&CemZJXCR8T`׃n{.u@@k mf쨭f텒$bw،2F73vctMC RC 7?@r.)@X8⏵^q8Z! @@\۠\6B.D! Bf' k 5B P3hFy2{3ꝱoSzP(H~13C~jm&cMwZ2H`G~63sT%upT/aS<2_sG)`tRbnQn\m\\6U`^W{΄c{up||(|̧fM}3Mgw1w(pkzNn~/IN"1oFy>.qshpGVnbPmuqp@gUPQ2;aY{o(c*T|)B|x.284( Gqvw>wZ'@H2[,np)"> ([>[4[u_iPgȀ@ntodaKUP2P<v\Ç}8clp8ohW@W^#P|؏Y 6(j p@Fg}pnM3P~iPHPGP8Io~_1Nh8=#9nsneԖ[W,ӘzW!;N&(7yE2`IJLٔNPR蘎>u8x` *JXɉv£tא=pDvqD`6T >}KIP?)yP3t19X>!8(bxyo\${(q 9YyəVX9i`Z|^)ȉ4eipjlٖn;Ep: Ɛr}DkNN@$gAH68dPf+ q0>p\  7 V)*p8қPri\Yř p48Yp)ҹR9j`AɃ@kH)=MPP[QbNzIdP%pY8xŠ3P!v zO\Kڦn`աx #|ڧ~:0 &d8uٝ>?O1~-dlY9y@"6)Ft\X[ڥG fp`٫vJy:$z0ʈ|$ zF N0g Z3^`R hYDz 8 HY äLH*zk# Ь; pHiPu@hHIJ!ڤ*H{*Y2IԘdj;D !xJ+gj`ۗ(ӨiHHh`l%+w$⊟>u:z:@ÛxDzA[;rСJk ˴aP~@V۝X H YPB'\*AigwJ% >\BK˸鴐|*ɗ^R`{B2i8!;f{o2{@Q$T@o;k6K\"HU**ٰ{/XѻnhKk[y,$1g E {y0\@B%ksu[k2{\ÃrPJ{ LwЪc-ġ\PrAPf_\o3)Q!(-/6n%s{@ǜXELgGLp YWq N/GG@o3{@u$)Aƒ¡7.\lƤ\lv|x?~6IUW-\Q{niy)'f2=LDЊʶP!s<ʮ| LH Lyz,fSpr'2`)0Qy,\j, К;ˑIG\qy4{< s{}))Md\m@ь+<  鬨/K6 d)r"Iv`KySY6Әơ{r=2!~*0F}ƚԔ Եp@'niQ \v0H c-{nC=Mt=ڤOx| ~] ԆLY_cT{*6`֓-BR4=x;n͍$0\}ݤ` *ږM 7@K6 ePz=2iQQ=yКBбzDPlMB ڛ%nph@uR~r= =ۄrRȿ"{df*aݚIvl3 䘀hPcOBRrPμ M۴ǹy`g, o萾 2\ f' -at[Pq߯Ű&Z뷾N 頀L쮇wVdnK zח_>Uy ){N80연M@n쥠]!rveq `k_BuL}*-,E yn/K |`z 9iPT?n b> *gQ' WA92)pxj Xm\sLNo e 23 PnϷ+A4 iO knO,"lQsS>P-T6+cl'{_@vZ`0p9ehiM^p9M; q MieeinMnO~R2q  e;+Gy;NLR{{v2|M2qv'Q$qDnDqww66yNiuhn.E7"A0N&ATŸuQ(0# hhp F|"pV)a$|ռ0?UzD2JU#k,/\`gW>dDFF(Ǣ,{Ɩ47 lę펀nH׍˷߿ laL,vabĘVXF:|WFaeXz"g^\gtibDC( AZ 'QwJ*̑;Pwx*˪y|HåkƐU@>%:f vOwͰ}u"@)eb PDh$%Z>85QAojp%,yr!!,Yh[gQp6!)wJU\tUev wv$#@ޒząU|#b\v`~|,Ia$@du<A>lFQ|8P6%D0ACo"PxvY)!! u]5e` D&䒨BI PIeUf[jנA(o=fdTP 9؛h ]|J,OVൗxI>Akk3}Aq,,fWSܑnU@* ,JzJ]֧Wl'YxTP&eh`ġA6a!!Dž#نD~-(lrP qYaY}o=V ;! +V#J|peƄuLI'M?.8J BV/InkK ֧G ZI(B ^l n9MeSC_9/rgHfyٰbp8D TSv! M'Z0the(dS%Y Y q{3Uy.0*DM6Mh0C"KDM|%@ @ |JCGEPBdH8Z9D!; pAm߳h0 ` :я8䤨TIp*Lm'U D4jW+U &ؼ>XpH t%v0rՃ}mf7YaKf!ϽbMjW8 q( 3H.+[K\0ErK]<Iv+rxBM;^\B"2[&%NE@{ ,ć77E'DS u&jaWlvkLuQ }.c|;YB edL >˜E"&ġ *!pL O"`K4GVrrg,XIÎ'Lpca.3qɬ!K=~Ƒ Yit<|~4R9!14bc8Y %MH:f5Fz2K!^>2=5@/>uum&\3wKິfL:e>55i{^nnqp+7[7-zۛ0=ip7NNcOi;;[>{8Ű-{乒6ʯxJ.mc=|-ls Y9GF̓n2Eԓ[UY{]e?[mܩ۝uޡ]yO;6O<,D[ϼ7{GOқOWֻgO38;PK>qifwawPK;,A OEBPS/img/mapping_load_excel.gifEGIF89a!!!1111kJJJ{s{ƽc,WH*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳ' JѣH*]ʴӧPpXjʵׯ`ÊKٳ\ޔʶ۷p=ݻx݋3h,0ÃVxƐK~<92˖3Wތ9(]CMӨS^ͺװI_ @0`͘9ޭw߼سV|ПKN}دkϞ}ڇnϝϫOxAų_O[5@;9.}`% )` %@_Gr x$2X.&Xxل`7܎8X,0P)TXeBEF"IX5R%PcB&QA'ts2Ws̥9b+^bmi8*U^(uq9)brJ) m`4 . (̊&&i+t&XFlAb ߙjk ~0&x.칀::p iBjAAc"kgo< ra %2I.a'iʼnVZ)H.0c0ΌMkr( &L5wK|/U{:9#vb]BBaAMCY@AJZxRJk*9ì+~5C_n/i}n-ܬ6&rsV+Ӭ.jݱ`uˑPP\vrW0uZ,#|zĐwzSog<=Jf;ߦ=S zwԗ~lήB(@\ @6F)ކƭM}_ռozյbqL[ЁBBi7:y+{Zս ~l]bȖ L (yZA(ǸwKpk,] v?1ґcQ(9<)v4;Sb0W>u@m‹S@p pxYD.ɶKJyͿd\f>3}9 s M\<^*4>mqg@Nx T2U.)\&tAkTD$nt:DTCK&2XGQZQG9}\fJӚH NwӞ(1uIP@ԢHMRԦ:PTJգUͪVծzuAmPJֲh5UֶH +KӺQ!Z׾cJ:'1DF<Vz"!Mlaa@f"6i@3zj!2[&U-CDLz6%jw4)Y>*.oRv XV׸fejƹm:]r41maқ]j1M|un~3o"3_F[]xiߏ ؁LnGo;G 'LX8 p 4ؾ9qdh|)`pX/^mh,"{±v,7:-L*[ʆ-{`1OffF*X^,9xw z(ߓnŰDY-NWk?r@7'i_{7{^'=5ps}>~P{>w5>m6?ts;7|nWfWև}UsmVzzauAȗ|l'mI7vi~{"؀wFwH`CpaׁZyqG:xshX-Aph~#=h'HlKMHBgrJYXwvR}xqWXup.JH6pGs7 v 4xG~_txXw!pJUiwun7~hkmx%ZWzuHyuGtahhi(zqGehpH(|ʸw |݆tƌemh8wGܨ^nhih({X8m@6jxfLlh~zg9Yg^XِIf 7yu(l Y 8*X+r+1c(TG':45/|nByv-)O6YC=? єIBOG9KyJy+Yœ{ Q7d]>OQ KsEb9gyf9jEɕ !rbc9f$ rE'oisevvY!A| Ai'[i~ѧui1Y$)Ty)~ř陡 aٚ97v铁i~zAwx͹i9ѝr9Y9iΩҹIwDYi;%]HEy`Iu๞9ѧ~ 4uj9ܹcqAF e̙繜%30*Jyy[G)jYRZ٢JE iۉ9A:=hцXqYj*);* *Wtlɚ饌WNٟaɗȖ n񨱹wjR 'J|[nIzljxڣz ~i*s٪y jqVU z١:j*jtFm)JϚ Z~8yϪij犑JZZi*گ *Qf튮{Jb z_K`ժ "۱H%:Y֩qɤ++-J; &:@[aўYjq ٪a9wdz<{Z( *su)XYBt4鴌7jgi! .(|Zzhk 1Ju~gVk`z1K_JǸ幷EKiL}KMMj˜Y+_k;K8%ٵVAkf*wm;0hKIT⹽nk/m35j[yw q뵘;a*1ɻK8һ}+ +f";:A j y!̷4\ʢa0[,\)۾D|yĻzܠ=K!ܫ; JFٻji;K*5KLX_|,+ ;ř:')Y<W[ʦ|;zʬ<̳*5ɞL˕<|۳<ƾ1[L/˄7̋<~̀+.kwL|B5˫sL. r@ɮJ˿D,lǼ <:PjKl \;K̴۬ S|~k[dû,ΝPΛϑkƓ[ ll*5wХ_Z*^{lw pm \҇Cҙ }M6-y؈ Z׿^]+0H^Pl.dפ)jiHumoc段<#PhpAER]~O#qԎNݘj´]Ƈ|q|mԹ7 Wx/[q>ۊ0z혼=ޭnm)OB>hŒwݷ귩 ?}q#ګTiN.BȞ;%~&S_^z/{_}^ -Hyt=hW_V?ǿU?MXvq_7_?_9;PKKJEPK;,AOEBPS/img/designer_source.gif9@ƿGIF87a7smc筪異RRR}Δ֌֌΄΄Z΄甮΄ޔ֌猪甚999DŽ{{ssB޶s˄˄τόӌ{ӌ{߭ۥץ1i0s1I4JeBqRR{J{cJqތ{1asZƥޔJ]cyZ}cR然cs{}kQk鯑yKAZ>*._5Bz|惎KIBL"F:, HIJv̤&7IM (GIQL*WJUF򕰌,gIVO.w^ 0IbL29Ќ4%D\Zs)̦6M` 8rt4v*Җ׌QIz̧> t=;JuS =І:DЊZq,F7˃&1m"{H㌗*1Kp9汔e c^uc12rf0N6s<,Oy^.>W9Rsl6'L{g;ňr+vt;mR :ԙDM1ю1,Ҩ4\AcZЉuKR j?kԽvujZֳq-;g:Ӽ4MjM[a޳}O;NTvG[>l ]nQӫ6oR[6nf1oySs_ߞ|qw{.ٝ/ k`t-j_S9C89s{-O ,tFO+ғú}:.SݚV/rS:6~ޱg=UӮn..ҽG;ܽ~:(x.}<#ô 擫yr)C=}Sճ'-c/{Ҿ}SrݿFm/w-cJy~g鏶e>q}r-z=dOT /N34DWX hPo5sUvuh'8|W8V XW"8M/Ԃ0284X?6:<؃>HMvB8DXF8m/xJL؄NU8R8TXVVZ\HX؅`b8FBphjl؆npr8tXsH:z|؇~8Xx؈8XxhdH8H􉇤؊dHĊh'H8HX؋hY Ȍx҈؉֘C~эd☎XX8踎8؎(Hgo9U )] yW5ّ)T9$Yȑ&,IK(Y*294:)ؐ@6y8FYCyH%00%@#HKc&NUHWiHY)t[QYY_4\ K^fi䖅ԖdHpIuYt/$ŗjIZiZIIHo $P S:tIHwJ)yٕiu䙇$IPIVxNyX)ٓ P@ 0 )@6Hg)bT)+iIYeٝ^̙ɝ)~)ٞ i i9)y9ʖii99Z[Ix|ʟa  #Y$꒸H  Y$=ZI?j٠ !I ʤRVZOJ!JY\ZRڥUeʤ M_ T gzMj J :^*y K:QJizgڧxʧc\`Tt 0 ;<@GZSy䩗*I9)љqIjʢYc* j κڬSc:ZJ*ϊʮz:J꧅z*Kj @  AFc,`ii!0, />.1>4n5-,.3^\+APdPfpfPdP*/X^2]^N].^_fn7AFU(>b0^0b0ga>>Y7>膾e^iNnrl \^^\  .߄kd^>]~N= YYMꅾcN榞.>21~3Q0`03?~.㈎6m^~ڨ>۵}۹@a>6(,| >!1h.Q _<, /*z$&8+?r0o2O̵b/]a)" -)$9{DYTDgUZĒmsT&Q}p9H]L։>K#JZi駥>:k:jz/Z짝i(`3ni7K*rnEOď+ĝD=Z4cpMBs?G_[mODŽ[n_=v$;d44*}&)K G>yg%r>z'0az땯^ .w'?5c}߇?~rm`8@ЀD`85x7A VPW5R> ֌rlK<3B1Є'Da UBЅ/a e(1X uo<|xxOGDbD&D*Vq>D X!_c8F2ьgDcոF6b7,nG>Qu4ؒ<ҐDd"3ȒR#%9IJV9$#-)Hnғe(A7.PJV&QYHWҖ ,E"KQf0ː2f23$%29MjV44?)Mkvӛd )yCСrj\g<9Ozֳpg>+Mq8$(},J^[-y4QvԣiHE:RԤ'(A42E}VO2e/sY"ʑ%;J(j+`Ԩ(EjRT6*9]:US$MmR88 *PJr1+TʔVv+Q/TծwU*AX`I% L p mCOG䔯B+qZֈPt84e*׷e.xmhEh_ +`U+iNuS۲h5VemVq[YxvEnrIZZ3]mt["_kX:lMT[vf ʠ%(g$Cq=׽o|;_׽y&]%XFVf8 z(Y2,.k^GJTf0 C(aIO^4X@B1b$sƼG{+E,_x$5@9O&(< GAv~$'qe,g2͖b6ӓ6X3 Xuov\d=kZKII-Q 4P!(&q1Mxƾ4lff͟fP} Vw{%H7k`hbUt)#Mg[fRntwTp季qR6ɗ,"+U{6-IסҖ-[Uյ2.E,UnxV&Tp $3EwW0Ls CؿU@t<2z~>ut{cy[\3kَ%y<#ЫLisܭ5}-kn_^kl;6xԁm˺֣u[Ly%?yWG+^_pQ»1xƻ4zֳw}S}+]!@S`?|g`A7*6e#.!@#^}w܃ {T佃h x(??+ӯ~{$#|?>9Jڿd<[t @Y Ԙ< sB'uڽ 4,("( Bz( /A, 0\Ȫ."D$ **d1+*³*+5A%,(,eQ0\-dCk-9;1zǢ,5l>48a!cC:2̕FlDxGJ&!BD̩ۊ B)LFDDHEI=OŖOmRp-s<9H{󵒳]JNJ&Yyu^&WJ_!VW"K#._$Xq b'V%K&&_*V+LnX-b(X/^0c(^)6bnc|cҌ9b1V2V<:&6cGc?ါOiG[6|OR.dId+JXRzCTQ>Rd)>>"9nK();e8.ɍ~ U^VPn7}S[v+PFmQ^d*z7uf+Ҟ yf% Uff*䐛^iŲ029Z^x"c\US}^T g0{hV=h=FǜVCZX^RA7=EUg>7O5Tw}X$dG6՝&V$D2~ͤFfj:hijYuC꫶̬6jA̱6kD>R뵎˶棷k=ʻ֣k;ƝU &r\?%gjj$[E܍0l9BlO N"-ЌflO.ЎюҎ)`SimRmc4U5fbޣ[tfRv[ɆʆNT{n\hNV_>^V6iS "ۆJ`emJnWoo >ydo+rgWp-dp*rO p ? ߡqG%F qq gq \$f!"Ǖ#7I9frq[f%U5ٔKU5)!Zm^s%gr[ahF%PF֔-^4m=w:';gs{'n~?(?jCDKmQ\DgkJK_,wNOIhS89iQR/@BjZ[?\j]^nva_bcGv>Svafg,47kl7m pqwr7GUu'vwzCj7|6wQEs]/Vx.gW#.ʇ oaDYFTV,JoVOugsx9Qj;ϑ'3yFy-؍hM\ǘhwTT$woJw~Vvo=w_IJ7{C{5TW{jq7O{og'>3|5/Ewiy||4iǥ?|[Ǔ_ǛW`-3z>pEַ(gG _loїj8Q!-PZ~YOсΑ}~!~>WN8>^>~®~jzOgRgЎ˩9@?{=i M XpA 2LxРC!"h"ņ7r#Ȑ"G,i$ʔ*WliI`\ u (҅ BdʰC^LXuD5Bk֩-k,ڴj}%)M:ҭ;R(C%cӪcb*XҁNNcG/̚7sWۚ7sllizI~>5زgӮ=5qIM2շ}/n8q=z <:ڷszGr{=zH׳oY|Q£|W * 8Lנ]F!j!YnrXÍx")Ȑ Hފ-h]5x-s0xҌ8$EFcpF-uivfD6tQyPVa:ӛw=f)SZd+X+9jaE+gaQUWF;fvzb*bbko&ki풃ˢHm/[TAfe,c [,1f (UDk+[kIr1gGZ3&n5Sk<%]/|r傚iLdL5iy g!+Tgyªi@x{\ߢ;ZX[nWg{Άҍ~:ZӘ:챟ϓ-;zۮ <\B<K[^=o=׿>sg黯v4!nZ/GyV-H\|yY_6N-f7 ,4rP%wxQl]_䃧ǬkhRCTb/$ oG[ ]ʗR621zBca3kn&rQ d<*JY x)n,{FAv, ݱx@'7(C2F"SI`"%3!K~ 8%OeHiUXR%+cWR vh9%[ⲗѥxaQ&1Yc2 |&liAּ&6mr&8)q<':өu|'<)ySEZ4 P'i= jЅ$C#ht( Bb ё&z)ISJ&*})mX I´%9jӝbԩF=*Rԥ2N}*T*Ut(Z^W] ֱf=+ZӪֵn}+\*U!\ZJ`+ *=,ZQīKJǯ +b3rVecIB%%ecٯƠ,lc+.V -iK2YW]]km[L E obr.x+񒷼ծmA>,=&P i L](Ro -p~`*86`Snp~ ZƂ`HsG#|Sl-\a3\c>w c?XE~_™h=ak͌tY +\%63!61͌f"of3;%eс&>qX6A{ Zj 32+ ;ט1B?ZЃnNK(_5| -@a"RBClд,- ;V9"(@ p~`B1m]&[׺FEY,j򭵼)yya kh]kg'm&_vDKVQQp`0, n{ۈ78%kx%c\$8K[߸S~rߖt*l[@h]Ezm]g,IƂRmE?]M1b_T֝o\znv]P:۩N `h{tK|?<3<^wk]|ɿU&3>/ gVnJW??ӯ?/W[ }wHW  `]i^)ԈT] fn j`UA`P  hH`E} `A |F ` ` f ڈڇv.4a<{pUtz!>Z!`ah{ ԡa!" aa{\V`X}cA"""##pI$*DcY"&f}lbtz|bp(m){"!(yv-",N К۴|b]Ww٘0v׆"22!ѬͰ4b5Ye~1Yy#8cy#MXL,Z(Ѵ8}ڨa#<.F@=cw9PCۤ˹`u DZJB9CBDVEnFjFBKᚢE LG$JFD69}dMfMfHNB۽`KIK %GdqOS:%TFeF`H3!Nv\W b5\`AZeIIeHEJE1KšY]EMA$bTb/zb`&mN1jjGkR>}Ħ\ٜўnFo_gݑeY]s>mD'fw z{'|Ƨ|Χ|} x熐炘'wp ((&(>h'hN!UJ2fK9&&h2htAhe(֨>o娎BR2 )'&/-)|N)(U6)ʒ6"v)+}'R)Ci+)~ҋd(֩N耞))**&.*6>*FN*V^*fĩG~jG&GGFFΪrFުEEEFNՆFU26S=B*WAb$b*p +※FB\+$J V}%fkqmmr Ȁ,¾.,6>,.l L, ŒGuUrDf,X%2 ԫh ȲlhFTu <ɚl/׿lcl̂ήlޖn+).-+V-"ږH*;xV Wbhڮ-cmd@-vmxެ+ҭ~Wzy -*Wf WzWN n.]w,7>YjZcx-vnQ-2d"zysyZgn اw. Cr^jنةFY)>nA$d.:BjZovI/-j5W%~J(lb}ox/bZAәqp/CmIY3~$8C%Y60@\ePґzQ \KDl q0 /$*q spWnGE<1 p2&ȱƵ`f G1Mg ՞lƦA\"&#/rLW`]}k\a,Ա )^2ͩ&w2}`%++r#&i_>2(l-3]mfi)r*;mm6i221/M35+1$Wzrq)^3;s'Y,qrƞ:[pƒ<3;s|avN_U4;RuroAKA'sDO4UB@ 4G?wi_C@9@PK;,A"OEBPS/img/cobol_sqlloaderfiles.gifGIF87a1i眚###################################################################################,@hH,Ȥrl:ШtJZجvzxL h#|N~rgikno{hjlnpmzϹ؟ޖӲyҚm  ( *\ȰÇ#JHEsm Ȏ7r(G!U 2 ɚ1Yyϟ@Vt7MKI ]ʴӧP.8ӠR4]Ċt֘z$|O~䡑v駠*g)?^jS^z*vꦜj:r:뮤+찟Nzc"K6c Vklk`r+͂䭸覫nڮƻ%kԶ*,n"G ' 7p> Wlgw ,$l(,0,, >8̊@-DmH'L7PG-Tl31:g(퓡L7FiVrt؇!Z̥.w^ 0IbL2W:LC*y P4cXT6cpӛLg/) j&< vk'*~ž?: ~h9?0͙5ъrQCc )!NBTy\"J{Ϗ"CR4%:A@T *y8› czT)SNpTcSYz[%Sg'BUj԰:# [:VNb} $jU Qs}ZhJǞNO*a1bg]mevsufkΆvhSS֩}mNevͭnw pKfliO2}<+]ڶbnD]v,w;Æw'uӛNVX %2w5{ZBF}h~8`F7w@)<򱡀]])b}.~ F"T];jCU*k*{5=ѫ6CuUKbPzTXӤqbU@69u,b40F:䴶,2;e*.+}|ULՀzdl#K"÷Gf3(,A:>t#hA&jd4IԬ!N{ӠGMRZnƴUJMz~5S-kź֚s5w]N׾[5`;k>6h]+Tl\d< 0 ) c ܦEe)Zڏ˝?A휏Px_༯UO2h7#mQђ^佋No={Yga}?r;uH61Se:䡡#U??7{蓉yˋ+=ѹx4<=k!Bgo6|qw/GvŭFܥw91<ߍfNLCvc:\r}X9;fyW镃٘9 Kə7%֘@I ȖYɚ99? s9Y7$iȩY8))i7ɟܙy9=vc:ؠ,9@~PِVmٚ]ٖyk yhI gc:s9CPP>@.2Zac:Øh>04R:+:zF_c:٥ O TZfj:6nڗPztZF)klnʗ @C @腄ZXڨzȇ VSPzvC Ѝ*xfr  $4"3iW{:^WXdF*5wjzI>J8E^tce~eʫꩅGuߊ ^zíҧ,wYfc:Ta%W#qY2Vz銫cAg(8btvbPSy@?}dگz>+ӮqpgX hC:FT,G +hKjڭKmEr%sSs1ezZ'ک˲0sUFQVeҚ^;˳ڬ~I۰Ekgzve4ȁP䐳b fnhzĚwp[=#s;Rv[xKy{ }dW=r[O;Vg5{ ۹sи{={ѺT [}mq[ r(u7y39ض[MSW#˸[}^īlpd{vG`~PC*ȻǽI۴ދ}Wwu6uX+D;Kk;r L L<|ܹ̿!#,%wDxK+شg2 mcRu SY%f;LŴVxsC{b^Z4ä:;T<(RV0sYE}`Jّ-%VĤKZbh&k)޵"sY ' Hfg=Y|fz gYiAZ}&zd* >eFe> &gJZ& Wpٝ00ډ餖x9硠먇.i~ZU尒Bik~ijUlv{Ra.&KEaƫl)+Ek^ L60 _bF۬howjLC +)N3Sr9mi6'- gkq,a,.vKzLJ?4~m:ajd Ɋ` xȩ \%2KdjC%űb]H >x Y"=҅L"y&C$'d&(,R et@R򔜴(WVZ',gI4B斸̥.w^ 0N@2f:Ќ4IjZt6nz 8Ir\:v~ @JЂ3L(OІ:m(:'JъZŧF7юzt HGJR"T(IDWҖ4LgJo~8ͩNYҞ=iJ*HfMԦsPT ԪZB%V[ԮzիN X:ղլWMZ խ%_\Y:ֺ5gͫ^q־m}[J*Ml9RUk`UZTf7Mzh:Y,gWYкOKkڔen2V)mkPMX}ܳl5&qz"Uejs+Uz7Ý1K^f3zu3-JyQG_7C%zSi_e'[ ft{Xq8/Lbyf O>̊,C{bX ma`@Vgmaw-1 !?F d3yN.)Vr \f2AKJe6s9߶=o^U3%N:W+RV:Kڭs:V.vf,Ӯ)y;fٹvg;Cw~,Kz?|b W/* +S3soC;E]UzGww;*^7)sǵu=OPGr\u;*}R}w:wj˺~b?*yRwF8XxZI ؀8XHux؁"8$xlR(* .0؀i4X6x8:<؃>@BFxHJL؄NPR8TXVxXZ\؅^`(3WEHhc>en8tYlIpX"$zSw&|U䇆P؈(xxhHhX(xX؈8X؋(ȋ8!(Ęh'vȀ8LW؍hs~ 7帎weC8Xx8c؀i380P0P( 8y?q,app`yLy,9!) 0`0>.,@)+ْJ9/ 1p|~|pEY*C)FyK.є'1vpxxpvw0=I_~9b9xGyhli 0@u@v`t 0^9iD闢)xGiĚ뇖ڶhWqfmpm6h&٘4& oq qo `Y)iiii}InYpq).1mimЙ}IIIii!Ś٠O ʠ-o+yɞ١nʞ -!G0wgiig{IYymY)EqڡG"6ꩡRڤꉢ/ǢQ 0dPd0\ٗY`>z۩ՠCzJC9Jڛʧ #zY*$:Y):x3 a;.)EJI}jTzQl~zJ\|,j "I<5!کwZʡɧ扞ZRJڬwjڎ  ِٕ*q8R頠ZˆZ۪z07*zOg@!p `ky{1xkk"; x;!{Jh.K|)[wR@Kس>@BkJ$s츴wnL;j(Tdfi\;'h(dk؆"dl;e1(teQ |{5TiXz`P]PY{nz|C۹#tixI5OW kk{2;;59k[T?yɫ˺ 7W[xhPgٜopۼk+O{KjHAOkɟl%䋼뺂 <*܀ܭ޽O]w]Ky(jݒm]u}'MMu )0m*~ ڭ͑-n.^ x#α%i;<2nn!94nP7= 2;ADWXࡊI%ը[ՊMH QN;`I5R{~b-[L Ql|=`>q]wÍ؊V\xڱ:+¬۔{N{ΰ^ُ.PJ[ٞ~ΘN.P>RsFvyK"37a~Nr| J)Mm!{497$&oK>Ԑ|VM5Ƭ9XNժژSEO%.?qLPe.h>t֋MjκU\;ï7-^ĘQF=~⁈%MDRJu @ hSN'q"$SГ@4 M>UTU^tւF~VK2i9VZi eW'uadśW^ZV`…9MÍ',cʐ*Yf[W0DʥMDlv1ӭ&1]1l[-[%|'NznMD wl,cK27ݿ_|^ p 0V @`C2A#R0B3Lho݋Є:г9TP5<Q0D?L1>Bo3ǞD3A "J ۓ1D5(_r+a.J)sQH55$„$< %|< 22#sAB0 3FQ/tL.̲J1L(@$6G-U8!RAOWtpV[VCi!2IQMtQS1J_ P @5UmS:u[V}XuDW{UYqPXXdvq>s{L7uR?P`TeXsuHr/&uUcumm_2a^hb?>7ve{u^XmybXf1\WtߣM`~Z߬ꫵk;֚k.;Z*{.g]8\Ccܕ|iU(@q7q)/r7rAC3qH5ݴ\ڧNw>x'x`}anڛt1$n?|'|G?}~ , v |~Ƥ .y`8@ЀD`05xMp0 *"̃aE8BЄ'Da 79 x*C`0F uCЇ!d!0аn 8- I8E*V#$qfEؐ_ƞxgD#ƘƖokGw`GؑPHD5DPHaHHfϐd&2 i2q8JRҔD%FLHH:2Ad9KZҖe.uK^җf0K|%qb9Lf6әτf4YLNF,A5U%Mnvӛ'1WYM%2l2ùNvӝfbNQ;O~:3$:y䳟EhBkOmR"74B4-3:K3rEvH'&CyO2'QUMmQ4p2uKaqM9Ny5@phLFnX/Vb׸@2F$m؜qYXGvkd$7a>~(ۜ%8Ϲw\%@c+^zԥ>JyEwzb]_5h0\d;dg{ł?]_;~={GzG|3Ruܦ_-(7&AK[oּ9xϡ'gfnz^/28\elop^W*t S6i# Z})NKKsW_ihAYj;m[77Oxec5?RY??C#j‘P l-S@iڿ;*<@Ӣ c+s/*#36Zij{Aګ|8s#¡28B2c&| ḄB{B8,-D0+,8Q4TC#ëc3ö8ò<;;+C,@=@;#CDEdĒsD/HTI|/5DLd#M09_D?tC3D C Ȗ$C;7 V:XYEB:E>"|(Ş4E'+Fs)@SB,XEVDW܊)FZ$3z嫝h')rEehF4z@@ A[Geԙ|<}o}>\qFȄTȲK*Gk'K^KqcLƹtK.˿Gl<nD̄=>CF֬<4T̢ˤPM'Ԥ/ N#ᬤ⤡DNHRbd素ND άs)jCaTEK$M1La4OnLNc3KϢOO8dACMД PlNc-S$̢ 퉘 PwzPrz⮵ȧx *Qv*Qgȇ\DŽX k\έ\i#\]+]PX]֭Z ո<]SSUݱ̼Z]x.|aѶ^d[-SύQ`^s^n\NP]؜pp_߅Æ}%TLU``:LOeNfY[ `m_uu:EKa4beF&V2m>aieauv2Na'R.$V;(Zb"`,`UWl⣸ba`b;踌.%3.4b`c  ^2>:V:; )V 5V8d؎EHBBȏSF؏0?K9QKRF H\e WLP,+A+m0eِ]f4a6Q\!M[H5% HLs_s1]p\CGDOEgFwGgt$#0Jfu%2:-֌= #(K/L3NeCΌL Q'up5u|B RJ6mutu\"@pM-!-h/u h^&uk ihqUWenh o[)Nk~kxwfw~u~Eb/c=xԪRnxs~$ɜ%xXEEx1m^Η'^\"IĎqվ zez@I\#8<1nӱQR GΪ@J䖜>gv6__!U{} NZ"(QN! MW/R 7G!̿{AdBq 2}~@cB-Sw~|鯝GYG7G}﷝7t7g0/aRlk` 0l!Ĉ'Rh"ƌ-.c#Ȑ"G,i$ʔ*Wl@*|i&N~'РB-jâ< {Bj*֬Z&t+ؗR-k,ڴO.Ʊ­k.޻likW.].sW#V1+D`2̚7s3ТGXԪWn5زgӮm6ܺw7gTJS2ʗ3[kҧSn׷s]yǓ/ol׳o>gӯob_? x ~ :ՂPpj!Rx!e8%FC15x#9X =6.8Ey$I*=hUVyYj%]z%a0& 9Lɣ LI2yg_Y'w :(' }):J:)Zi p} hJD,6i"$ zZ+j zpB(9 j24k F=B+m zmbm+#+izsO2DB % { * 3lETpN<2%L5r '<35|3'r˼>nAs#B 3+rz< .3]{uկN[<55r3}.iϼYqQ_,&7ɀ|mc'Pv{\l/^rr i.,qyW~lmq|; וnMxC3%9ͣ `vk>`í竇.}OM"[O.5>ë>{N 4~䬫xS:Os'ͥ.dѳn< d@KZ@Cc'oP,yP›qoz)4'p=$ RzG VS3uD~! tI Ɔxq"bY<23RF1!#CG;sc>q3F6lE CV$iԀ ǡQҎ3HXr"D6AD%R5<$1RȈQ% /$HFRa]#(L`R#4Xbsmh4%GʑD:I`ts{j:t"Jw T@*Z4)yTg: Ѓ 5B!Ђ -g>ɫL eC:Ϗ^4~EЀxW[խ3~p\X AR`sjpF^־氄)\{ecVމ!F0wbŸ> 9ưa dxv%'5q8Q~ 0,140,k^.3,9ӹv&󙑫f6k+~35 AІ>4Es;Sh|t4C-Q{v&)m&5c-YӺֶjUG?.-a>v#l 0{-j|izN,7Eu-qk&mtkH-y7{7-;>8838#.S83s8C.򑓼&8򕳼.9c.Ӽ69s>9Ѓ.F?:ғsN:ԣ.SV:ֳs^:.f?;Ӯ=x/;.ӽv;~;/?<37|@;PK%66PK;,AOEBPS/img/sap_runtime_2.gif\-GIF89a덤*+%$$OLKcgddYz˓rrsz{}|~BhՌv^WspB@?Hmޓwxy6.QtmtuwVaojvYVW`kxגRUZ䦕ҜŎ|Must}~IHHLfmkkzwx\voop644>==(:񝫗mxy{ôa__fl\!, nΥ *tfpÇ#j(ŋ )bȱ#=C $ɓ(S*3˗XœI)6sLOOxQ[~pZGL)+ j=UM8֪8[%Q\0 + (Hkk~:a[juT EKA֣  zRK0(A 74'y4hpaR\8P߮"\c znnf-tnZtIѠaۤL*^zP;^G_)T\)w[RYU(^s<י\$ 8Q(Sq^'q Y=UF6}_^)A|$_Ow |_i(zM)P X=x5>j$և)*_baT$(AUP]Ug`dS!`Q( ;RsX\铧F:*W*ByfcK@dUhցth)l}w٘)MLɛ JyPfSNFGʪ~Bp?e +[~թTizNZ#kbE+i_.U5gz7|F-*x1¹,qo+ʞ^٠`DŠ^kFy^ҽ[p1:alg9 dgʝD25VLD_SԓR U<Qq.Uh,Bn$&9MUSG:`9P4j{){K8:Ud  ؋ܫ4w/?Z㧏s1/}aO?,@䳨JhZ~vJz䷿WiOsEqjTŁ@YU,@hR蛚@WiK>J %FUh.qȥN+;KVZ5C O$ĸ>-g?37 I[D&WeD1h J"$UvEIU#T 5T%Đ03!kQZĖ7+10)cK%)Ѫq!%K"1sP>Qޢ"OsnGQ&a&F@`%u(ec,VlW0^%iW$>i?l/=!"'1..o_Ix:VfYM:~(0 {(7).Y}2UT#DZ&R,4t JԀgQ)(q R٤ԡ>O;*)c-dEyLd$0 P b=*f SLiQ5t+_|_omaYX-Mc߇Țeewvv,aŠUiSZ`kcK[̶ms[춷=oK\ q\y,]sK]rL-j]|\w{vd5lD׀`|߫h.~W;B*P ;88|=,`0 vpX(>p bGXGחaƒ`@v\'N1UbH&| 5HBЀ>vKdF'#ap@\ 9!HLf&`+8[61<"?XI&3| @/XpDe.+sdT:!@{Zrs-%юA `;  Ӂ =kZ3jNj+Ղr|dg'ZѸuϩMq)W=nu_ /s޶usPjo|MomfGp8?@tckݤV=pd۾7F{%xpm„jZWpp78+N.dSµz3{5/wk_\  oÜFu“^r:{~d M=6|>/zEo+_xbz nP#< xcn.1;mG7~K& @ Y 0cAJ n={x zZ/Hy`?}9.{Cg7pY ran1kؒ% Crwɓ9 a@1E(Vot0r$ 1pѱq8Z|(hra)zȓǘ;@kg84}mnd`&tɉKhFg>i2-0((C Pʤ餺I*Z :&p@iꮔ :ŚhJt kG0aIa6j-@+kuz$ʪj{9:{sw@:p)[F.1qi5Wp4;۳Z {IJn;/ qz; J/&j+KLg2km:˳;{j;gK[{g`Ztp{`c۲{3ƶn 볧KAຸJn]0&Kff[[:;< [Uƣ( ƹhK ;rk[Bˤ2@{ kX { q  +`xTLd/ٿ.iz,{e+Kq@zyy{EG˭+ 5S =#L J(+\/1 3|w۹|+CLElk$X];gS?@d^l`,-ǎkb5p\w,;kK*+ W`PXPZ?@Z@9Ʈ\ƣx 쀼\c,s|k ǭ{,SI nGI+r'P][:L?@' \, 8 i\zWmۼt<Ϋ <K  "{g\~{lU{–k";W ÙKfAD\- LJi P\taU kzƞJHbуQ \F_J #JoX&ptg#B ̹'L<}sm ymw`~-R}Li`cCk!$JHpIKnIR]i j{`ũ-ƫ=K9JɵÊHH0M}O]άjSc-GK! `p-P_AݢM'Pp̗ M]`㝐 $9ѽmr[@ x P pXp nq<M3`ȹ.ט,Dl`" ۆ 9 |{=l↍iF`}DPĖY v=~p DN.pK䪍 p0|d=A!)pkE`fnn/̽|j jz^3@-{ZiSs ^axn @'g,cXN;ײ5_*qprj{pMǎ*>S-0U>)YN0q`(.1^bHt^ U~n؍ۍq iFfpoNJEX,ce>"Ǐm'O n?p? >nll4p"jpj0>Κe/ '.O2>,ppN!ZPfOi0]"X A/?N]mL]POSS/ Ln+Z@nl0&&yNF=O#rH[_<o?&j߽ -4D4W2*G9 9G!w2 W4-DC((<qJTR7WE ?*tqn3 xP/@i*d!KFRݻx.!@"e Uʕ,_0VL]3cP[gЮ1@Ent@dg?Q 0˺uv?d%9m…7+C,m+_lpJ[.nl d5)\vي8W,̼=60XjB`'mL P[_[-gZHrUha{EP*\1utJڽw7Y1sP C(]h#7l W,uBqPlUISYTւ Ӗ2Px`n C`R{B`'Jv؝L*dp(F ;HCc_F8ϐOyWhi\e%Dxn%Q1v$h Hbc0Yx,fp *`7t1J")R*V 9 82c7YfРJItҴȤajp3@QVHE$CHb IRA WLJ*odpFn)pʼn"\!0H@Dg"I=vSS`Vz˼` TH{$b[hg0WBNDRs˩I͂ up4AӓXm!0aBNxM@bqG!ؑ-2n3ȯ[nADjn޾Ft%@{h ' !oW+(ф}!W\by1c+ǹ6\U}p̏vq6S̢DZF|x>T qwC})PGr}W0%7IzceJVꨄЇkz}`qjxQpwr\!X'-Z}2ހZZZ.3z- IO zw/˧ (X_{Z갥JDQu8pHZ֧JXq҇vjKֹv*9_qh'3ں@Tp없{êPuj뚎i9Br tҧ\ }S [iȒ=+B臐ЃF xr*(H'Xg蘠3:Xg_`{[ T2zSzp DVk*H@' mzY*yfJ:'hxrtx |U(@=XW Os:t{88CAGuߧ`>} O&Kq5[7Iw}7`+O k\38 F7jx YgP*2[@} #7 خiw =8 |KZÔN2, qgC=<*1}պyUđ@x=8ٻʵP6:zZgÎM @^X Ǡg l{׃묌jh<[W<aypn<yҷwh~ zȎ w{Ol-LH&:ʉ(߉swW޺9t$ X(m9H]ܰNvPR?ɧ~ vm[ L՝jmoζ/n'>R~z.ͅz{ Y†²MfH5ej׫kN>u.(gyY?6wmRɾiNZ˞ng;NWxÙHn^~⮁֎M 3k)yS7e~ V;~FSo#_ep K_!!a?$='d)@5r o.#/6F;=o6 @OT#L[V55A@gF)\ S_wчĊZ`jA)PBUZ d3OgBlFatG\A}O)ABu{0N5O6TBgFA '0T_ zmAA+p.JPOkkBZpPa_BANPA,_zpL=kojg\5)T,NN>>A$&/: /oZ$\65a)AT)N5|Lʟnn&I=\T=A88,'$ֳAa6l;hB_1꧁gxG>O+v_f}}A< b9BAD1UAgHDNki%sXtifcXg k([m&r٨ZZlDקej,P .˭7Wl2HifrvB !iTX"؜s6Y iߙjq尪Xwl?T8A8H` hiK/~+>I|/~DA87뫻 0h"[Un0 ȡKie{bNA֢]s,h_̡ϋrmHce<!PQ]uXCK*W"^ s1SZxN.mdIڸ8QUDsCw?(-帄~x 9LxvNظ=6G;ȇܷ;/0Z<;f$V8ٕM &۴+CZ3g+Ylc>@/~SHجt$Xب#>䑯|;҇Vo} ^&/\̯OR  =hUЎM֕\-f#X dլ:^,E ԽߒVEzl8i ]> N(n o*lji+ן7*sګRDYKA@ECv+USAHGN \q z{I5ȗMaNy4!jj PZhp@B.Bc k]-L艉<*S/,OUy(KOe.1b2#]hmp'a "g^ YֲJۖ>#󠥤bȁq֌۽kОcbG #H @8J#dct:c8Op-Lk`D?]X Rt1 `lGja؅~]G ȡ IHa"4l >/ Iܒ+@~=x% h OB*Y?J|On^o'ecb ~tJplp6,rc)C-h 0&pT( eLPV AAp5Ag@ Swe(78)aPd 7gSC|p؋ z@|._g@LЍ $ 1Ow0! qh@ ЁqA Pҳ S^iԥ>z'||-꿀3 ]EWcT bptPr9a^t| pj }*60_f?$aPLxk+>}o8pl@}T|'zWz,:\TZipׂopyvcJ%v \GfoP`1p'{xf!)@{R|wlg,dTuS'sB S,`B$0y&ZX|J7>$aXr`f|2qH @ G <5E h Ў Tlt'"  ! n0 Kmd AP 88@o)z@I]t#D4W wGP}byCp@L0 +`# .r:w0 wYu0u (ZI #@9Wxp{L@{0B""VA5Yptxʀl#>8Px71A'S&P8 H~,PÃeb pQug ni p[92癐 IOm(8Py䷄'Ipu1`U"8ɠx@VUP8_YXhpZX:ʛ`&?@%IY k8Sa]ffXL!:PdpKnn0d0^`=9zqP{O\)Nm:%'`P|Z L!ninn Ldf^$ !1y#X_8u?#A6BGK `lp+oAcpO)Jum {0 \@T깊 !o6cXX#+A)AT56+>AN{ fXdd::O]nn]nqc\,8..++7k11#" aֲۂr6#c=&o[d lnh LobK}K:d'r|H&Wl$8 `$C²D! CI2Q#$aITRJR XIEɅYV.^ #flM2̜IɫXjˊrD8G0! @1@U"04<d/6#6ǐ#K6t2%f'6oR!ƘEb%`ׯL>U, lbԘLĽBv8Ls ܪI2p]7W3"8L1+FaA5ErYfmV+P!u)4m+-FmC_biD760^dI!sL`! s̑ |AmhE{qnP!7XĔ'|)0Gh U( n YT8QS* 5F+\b.aaBB l/53JDbxs{qLXan|AD*{R K,x9Q"B$4F+Vkf&$A9(Ƞu)|p :rT~8 N8*̗'bɚ Kid(jxjP)[aެORAM2x,`* Ԧ)N#Е3f@ vD ` R s 2:<xC>/~:, m1,P hٜ X0n &f♦HHɰ)g!(.I@⠆ à' ڴ$6 ư1@x"4"B⭊Y"(h83 e*I @ ;@"cA <-y Y #3άE0. (!jPD pnY~l.:l(* B؃2eAK0hN@eR9 gDwt2rtd g@n8|~jpoE&Hӊ|8 $Dy^ X/ ,n<t9 s00uhNAHJƧIaR ׇ> }J)AF# ,X4$he =a |hyۋ]s`KQ Tdss&VxYI63L.m?Y>$J$9L$u)3A,cֱ?%InТ.в e-"{DzWL(@%1), 0Iyp^ {i -~R_LbzDaƩFc$x$& a贵܀\,=y5+ {eԛ'89es7fLt|a.1XIJn~O xm+XC] |̕Elo; 3aVnK\8 }eA, T *L;蹐K5yi^u./{K"q+J<2/) ʈ4@nj:$ȃOe&L؄0ڵ}@bJ |NwMH7*@dm9 D{ն6#0! s)ğO%fűn[|:l0 C;ʕzqz]<` Q1S[K[Z|#=W yR=>}UW>եH$6s\7صu$2B̀ I-L, ȱn '!}pu M[x7/q\:/ Xhi-q)AI?c:tڰ7hAbqVr9AC)Zw-F{Txٷ b' `df WmkG>ç(K .hj  X~Glև} g"xk0tF=P~"y"Jwjyn AK !FS){Fܐ ؀vF`pTY=d W WWb@+PP3lX@7wv}T}(/81x3[eF$gy~I@+Nz$6zS~{K .`j({R8E؇5qƀ`r ]{mrwrL| b5Xz8W`|,x}x >gBbp~~n~cU{gp FE:kDxA(BȌ&`s Y(h8 p'{@}zA$5: - (@G8Ppب; |!nOHXtXk0`Xhj6ЅY LPA}Lkb/T`8UXv(ב*h\170' kpwdh`xi\N{瘉bĉ\8#ЄHQHҀ,bjǔxO Q  XidnhbWLf)[]lp"o陉@v9yYט,6 [|0S{,89[NHEƩ) 9I !1Vx4WheٖMnԀנh( hBn&iJ>@9޹@t{`SDǙS(0I0y+Ʋb)pnPɠlY8Jj ٜT[K`FN i3Z Fmܱ>G-J/ 03j p٣R:XG, P2bqf` |J@)ZYХa9aʜ4X$ơ6p:pf@sXw.,EɪxY B>:PuF5ohQ*F gP(8 ZʪJ '1௷m`*KP _$(Ч*[ `&ЙzaP)٨Z W&c:窩zL)Fj ;N!7r*1P t`_@ 0 ˰úr5@hZۢ@ZC LXJ>k*ZH.bgb*a,?k: C{ E  PD"/%TkB$`(Z \HE7ǰ>Akk[)60)/kg41l`:)N!8@.{{ xp1KN`T \?}UKޱx#A$%Ӻ+Xm@HĪkP;9@6{){ K #`76Xk')_@$ pPb kB8_ ]ÿUI„ ' +p@Z€SXp-$)P.N1FI+`jؚ*Ϭ4TfӍk ݢ)ҭ-ϜYӈ#{.bP]ԉߣ v˓"80ݨ|uX^4!$~ؽU+P-0>Kp8<?'NDݩ,M:<<I0m^冠5Z}-w߅6AC;0Xq>6QGx{b{@[d`=\-K҉Q&pg~*M 55! p9} $0=厞i>ױ Er ]3H>.Pa@>=⌾ߋ"> SoOA@N_Pqa75p] 61SLp#n@0 0?XA5=<d#5.G׼#A0NeO2tZ="@ug`}hZ=E(t6Awy#o> Zu3ح/ $ZpGOdߪ!_=m@)` ϳTo \ɺ0EO\''_џp9[o ".N$nn Z=\66\'m,A871cAt{6I'A,6Akl$pّںdťZIa8N,,tr. m%ؠebg.IRa5"J,ZƓ(7K!C\t$8֛ jQɞHQLN"|ΪX%! ep)V `aU3,H˷٬2$qYic`}l0e/kyg_?=3ӗB^Zְ_ÞMۯڤoާ)N<ȓ+}<7 肂 &D~҅/Ұu嗫 v_@6(~ 6ݍw#谟vh[,GLp@ pa%~(#&Ȅ< #PD AZ2p Ɛt-b/"v|2?B":ePӳ5p'@G~f(P{ɟxƷ/cy#xGwWgfoMz/n6Ιy.{&ϞSR{λ>|"#?GO[k{OdOY:1 1/Ϋ&H Z̠7z GH(L WP;PK&;\\PK;,AOEBPS/img/procflow_pathset.gifGIF87a1iޔޔޔ眺眾cce10c ,Bihlp,tmxDpH,ȤrHtJZz] zn|N[]de;[FP3bYJ9Ƽʖ@8*+'&(6%07(1b *[HK {& 껇n|'rK[?n14׏A2\a jIH߽gǝ?} EK%ˣ\Ҙ9sE6LgP>| G2HQ:)9YzթTZ1BuXxaVŹO)ǶܠmZZ7ݼqڍ&Ebn{cVg)#3V=5۸mȦG r Ncwo޿_*EBƹFz*\Edjńȴpz_."@**JV{°,HZl䒛mrn%`{.l骛 ۫`;kl 7PpĀP@rw\1 ialX*,/23W.KF =BB9M1;ձZqN7:SGTAH-[zgiuK|̚TlhcbY}jssӝ8Y_/~˩6b@id5q+~Ʉ]t1J6>W+)`:/DX]ŕ}ê;ZC{C̾Kzͩ4n1OS=cy;9}X$`0>쳀~H AoO? -gO xO dpīix9`j"U_q3a.D' S֘Fl&Ҹ&eʋbӰ90T ֶ tr0nz+ yH)J-̱ÕJno[LT4Ga0+hHtT0emxDE"RkT'%n(ɉE6+`UKgLv_%32vM~u'< BІ:(>JPFͨF7юzԞ( .Џ(MJR+'bJӚ.LmjO?e xBR3ӜaKOΣV;ZդFmSUs*VK uFek ju\5Y:.U[? ԤP]jX޵kEd V +ZZW]M+^X>ֱylT-{%d֬elhݪ6=agگIx-Xc[Ēִms Y".ՙRt}]Ēv,tW+]MVջzkQ]rͯ~M[ !_L;pQb507 "6JŻC,uFy9]<1M\< : \H/0~O,!STd2L&@Wsxe!GO&֔ܥDrxRƭN\S6f,e4*@f3DE4IܭY] AYka7:Ȝ9$9RHD, -MsK!MFkV Iשz|dVgL޺̄6lj^SX^ilduS]8Tg6k6j͠Y1͈7DkzK˩ޚ b<[l8Np0}J8ꡔZlڞ1zAȟ^١b=*wFwh'6IZj7&"i>'rcY,Ѭ8C9zj (x'Ej `Zxip!d*ꮻ v*Wg˨; K3J;p`!;PK!PK;,A%OEBPS/img/item_folder_ps_join_tab.gif+1GIF87aPWޔֵΥ1i101޽޵޽眺眾{JsֽZac{kZ{Ɣεۥc{ޔk֥cecZac{֜{sΥcik޽Z}{kmsk{ތa{aJs1cZ޽skֽk{RΌcƄޜ甲kε{νkތ眦kqs9yJΥkikcB9}p>7zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzznzzggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg,PW} H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0jI͛8sɳϟ@ JѣH*]ʴӧPJU&Xjʵׯ`ÊKٳh*V ۷pʝKݻxƷ߿)IKÈ+^̸qbMU}]uLfQC¹ϠCMӨM;װcFٸs+ Gzȓ_&jIcJUj]9T`Oӧ˧j{F5(h^/\ )Ց,@.<+uWɈ$V&,~0ƨ(h8# F]$A*H" #a-;uTi%%&F%v*rvɗ`^dcz?iuȒD,B Q 'wDMI%$(%"bi饢覜vzo'sJ"4( +yq,/@xG0k,kzk=gN:J]୷} xmg䆛ꖻnHn o?^74b*JB!pIy+yW[lY,N+2%;K^hr ֌.4 9쳻;wH'to])4$xx…)剬1Ɩ6,}O/k3 ~MC.]GxS5h" 'Ww'j衇\"7->j7m-qzd{=!L)&/#O$я`58уF:W"HJRґd$'yNBπMBЈNg$ѐ'MJ[Ҙδ7i9;@AGwԨNWVէfMZokw^emk[ZNf;ΎMj[.4nwζMr;Ad d-sηu;wM7c˛'Nqe+\ 8^ GN(OW0gN8Ϲw ϸ7HOҗN~}.[Xs @}L8ճNNugw}n;;}{M`;+{<{z͔~ߛ{?8o\>_;O͟?wm}p7 WjwfǀXuwW{q؁Xn$X h*Ȃ0f=p8:<؃>@B8DXFxHJL؄NPR8TXV48m?ׅ^`b8dXfxhhY(nƅprXvxxz|؇zH~臀8xrX舐8kȁ[(膓؉qXFXXhzhh~lllli؆HhňǨȋxWf‡ȦƍjhƈȨȎoX|Jp|gxsƏumKwz)h).)g ig ɐ-6Iggّ~֐Ihfxghf q 1 iF6ُٓ9Yij:(x/iɏFiSYSV)(49Z)y[6`9gIe_ WUIw9,y^so6Xi^ؗxY ifIYY 0F\٘iMOQTٕt٘ 㦓jyɚI;wYI\ɚ oYtiٛv6YYIxybYI+ٜ9ٙY)ny gy{朰ɜtFIiyi 9|ٞZhg-I*ymii"ZI.) Y 3ڡ,g.?PI(By|Vɛ:>ʤVٝҙmYgA YYȹi@>^R]mߦ[[.v b ~ x;+0.݄,1N(/.ثBüȓ,W,Jr(Y\3>d}k[:^Dn6n'uX#=Ԏ,Wn$-;]V]mS. U;{z.|. }^Ԭ=6j-bNZ\p>O>v<_>wU]<ʧ~dgvLLN.Ш^֜>^P> +ߞ.CsZ~~ڰ.ղp=~\NF} BNn _̪'~򹬈޿q.~G掮r 衬֎ nһ_*-/ _޻f9^$&(oD] ]BL+~<ňg^o/\ٖMR-wߢe?t҈P?|قBw!mp7݋斿?o*l]>^s?ϵoϷ͟#Hh_r{G }@p?otX^NC@ DPB tD!#F3@ppAwt#H%MPJ-]@5myS \A>&zTiͤKm:(bEI(V~VgSe =Z4ϰhE[eU5ĩ3n5அ;Ebwo=(c JvJ1P͌J[pGZ YꗝYt rAKcMۯgNTWAFmr潙{YJ@}ׯ ']_];=׊>9rA Z@돸 M<"K>Al‡8 pCP&A2qq -r4d$G%qZR ڡ)r2TIB#3D2=.D 4cY4dWfy`8gfA-BbgghFZ5;F֤:꥖>2:kWE:lzߘy;m.`^;n[n{;o9ea;pwp~FqT#Q7tsz;'>]rMguPgj$]`bmmcwo wey/xnG^y3{}mW|÷h7g?'~wƿW7@{W#`f@mHA M֫`vAiЃO >8Bpt$DaUpv) g!1!V(? ;UuGmhD$6QpB x8A'VqaEhE. Sa/jcD#X-эlZF:)!zG4Q|$?Dd >&ґb@02\N(iFaғ_63~Ҕ %FF)0ҕxd%JZ%ld-uiTNRe0sf2".l2y[&KJKfӛy3 o p| 9$QMiz׻4a=zdE4l[4 kguXmlwWv=nr)]@uսnG;wOnwo~x-zWmGxp7x%/G2n)q;H$cN$:9qU1VU,\+go{)V60*t<9}.*?z}z^~y'}gsV\L;AvV{ԳƚI^+co({-^x$1^wg'$ ^F}حs&{q?OWkgEz>G;Ͼ=k_ / 3[L|{_Seo{>_~џ~_|/sC?4Ծ??{ۿȻ=+> L=k ?| lA?t@ ;@j>Կ@A ',#?*@3˓Bd4CAR'B5(d@"B5d&A@ C#<[܋{:TK=kGS=E*4>B?@Dc0T\õRŹB/$0sDkEVWX ƷF Ō#eftFeag hoEX Bmno>ܐdA*"G(9SwttKDs xl"y!4| }Dt~BsH>饂:tt}lHL^QNJ|ȃȉԕ@pH΃HY"HT̡ȋȘ#Iț ɜ̿DId& )ɡɢJ6IJ!$ʿJxʙ%pI{DȬE&a[^ a-.^ea~FaE_%&bX=*+,-./c*4V5f6 `S X[bO/5abN^m%_U^M&v[y^dف^d&a.a<~>&@]C⾠0WXYZ[\]^_`e8I]:;>d@&eO?uR 5mvjclVeIaJJ.L!>aO'Ndvdufm@(|}~&6FVhbTMfa nfz.b"fEjvNw^-J.gdiV^B[^M > &6FVfv꧆Nc^݈`]v\]ginegE6k㒦^;p6a=?~iclfk^߿ndfVa2Qfvdž^l  c;hv{A䣠WmjFVfv׆ؖXemm^m#UӦ6FVfn͎Wm,n}n^=&6FVfvoFx8Mn1QpQ p GoW7G_W?M`o qqg !'"7#G$W%g&w()*+,-./01'273G4W5g6w789:;<=>?@A'B7CGDWEgFwGHIGsKLMNOPQ'R7SGTWUgVwWXYZo ^_`a'b7cGva/fwghijk ;PKBaE++PK;,A#OEBPS/img/drill_path_wiz1_disco.gifOmGIF87ajskc筭便RRR{Δ֌֌΄Z΄΄ޔ猭甜1kƜ֔֜ޔޭ֭޽έ޽掠ƽkssﵵcckRZZޥ{{{)))111JRJ!罽BBJ!!!999޵֥{ތΔΌΜބ΄sƵƽcscsRcR{ƄƽƭνJc{{k{{kskέƥ{JB9kZkRccsJZν{BR9RskcZRkZscJZc9Bc9RZR9kBsJ{R{JRJ{ZJB{BsJ{Js9s9k1kJs1cRccck,jH*\ȰÇ#JHŋ3jȱǏ C (S\ɲ˗0cʜI͛8sɳϟ@ Jѣ9@ӧPJJիXjʵׯ`ÊKٳhӪ]˶W& Kݻx˷߿ LÈ+^̸ǐ#K,\i̹ϠCMӨS^ͺװc˞M۸s>]R Nȓ+_μyޗ;Nسkߞ&gNӫ_{@C}7`Ͽ{}wOxu> 6`'Vh@(f ψ$8b,| - (";JYJé$Iy y9CBXq`^2~(]};.pye隗Wjyui'r$ i}g{:~&(O*椔ԅ\eFGf6n Uj袱*h:'+jnZЩx!ϳzjbI$ޙzk+: NYn:.:j~Ke￁n8ҵl5hՎ+ jr1|NnZqJ̱݊q?Z1 0)g%6+׫rO̯G/҆=ӼJ*2T:uIuc[37=6H'sRNPCWo/C'9kYg|׌;&*[͞ oJ7vWƤN8NnNsn~o㴻Xl5L#$ >w>օ#z<<w|: rܷX3;YJnS :qxӯ$bRuUliQv X̠@V k&L |F}V8TN @d H\&:щcVH*ZX̢EY` upv61h )6pH:x|ِ>񏀜IBL"F:򑐌$'IJZ4&7Nz (GIRL*Wʞ`򕰌,gIZr̥.w^ 0)[L2K_:4%0IjZ(̦6n^2 '8yr:v"S.ɉz̧>OF$=IЂMBІtDЊZtF щzAHGJRGn#HWR0-)Jg̎8uILwSiN:ԞRK)T:HTԪROjNծҪ`dSJւzhfX:ֲi\Vbx5\WB5mͫ`` `J:bK?>\lU'[EfYϚV(M-OGԎB/Id;ڦĶCi޾@ukeB[E1n?.J5[ʶ5rNܽmw r:.MRUr!r׶%oy"T3eo|;׾=}[`p>R+ pK_w)'03ߗ pe8f(5*`-^Ia ;ƍͱcU"Z׽򝱕$/lC{e U|^3*>xɜ:y4J?΁NKJVtMH>Z+i^;MD~ԈKBZVr[MW3ֲ>-[mz*5{M\.5icS6٤^3BҮi ks:۾6J[Ms2.+n;ޣ7={㻼768mn#| g"N[33{ CN 8W*gN'v6Ϲwsf@ЁsNHOҗ;PԧN[XϺַ{`NM/&]0 w5vx?=ɺO|X/+񐏼C?KݡOK[hhK{O/}gqx ~؀W8~xч7J؁(D"(D&HDѤ؂F28(h,I'7h.tHDX烚t;I88؃Jx*8T؃@~hJF؅^QO9UOxdxbZ(rH`Ȅk؆x(Kjn؀[XJs8X|(fh8LhhHJXhm@3y!HhD LTOITjDK"iHQ \ٔ6D%CŕT VįhNbyqksikfyjUKWɖmO Ou)yyjiwiyyjY|yn yyihyiK{٘闙 MxgYghKəTJIiILqII隶I04p9xw7Y NTĝviJቝ4tPKihiJ9Xф9yȒډ)IqٟyIj ɠ ZZZО~9 ١Y  l, 4>4ڢHjJE*J"Zg$JJ&z_Y+8I.ZMʛYK幠f [ZD1nZ[:JO*fQ:JSJFԦ=J]Z@ʤZv:s*N:0 jpڨ>Judw*JyDȧ䧚Ù\ʨ36Hf;o#Q?lP%'H)IN<_4+RCk\O\gf\nLLYlPA{Ȝ2LQѬԼK)daK\<,˱ؾ**MA~Mm~O}~QR~MS~SXmY]T~_}~C=(}G }ϕɦ^ q]Mq UMzt~}s}׀Ձ]ׅ-` eM- e 1,d5YSaıXVç\\ +Gym׉ ת׮ڰXR׊-y}PWmjƚM#v٪hsϑKMJ=ר}ؾ ]M}^ ׼Mخݺ۫{k\Y{q,ݿkli-}=Jޱ]m.> >*̪D-MDŽ/4d㩴^荾Fn>>ݫ~]l凬Ƥߖp,\D~t衄H~. ~N~mNDnGBt}^=L͎ٙ^m큄|hN> >Ȃ|$~DFNB?/gK.[nꢻf+n]JEݾ _FDF_a&nܜ l|HCnm/fO`oC>믎ivJ6 Z=_I/ g_~}n_@oFE@Tc?NDo׏G/o?oȏʿ?/I?_@<5SU6U뀗](@@Z$/4V\5LN/;}.$PoMQk0X6U1V(Q'fN[ve]e{V=uݽt]٫w椊6z(|m 5`9sH42VmoŚO rPC آ5v[,+mYhZ[&ezgăNgpsnqʗZF6G ڜw&gWᮽVֿmb-2Irzwn;fU䏿{Wh?ǣo\晢|u::P kpuUN9Uivn8w<-%-My Tඖ<{ؓ8qp]jO(8{Mk( h` X ujW S?U/;ܡA" u!`%, "7-o[,awA+^d4wq0XyPNDž{b]bH:u#VxXV()~X?ъv]&F1]&cŻa14^˺ȷQd^;(4Ʃ1gDLY^n A;8AQi-3!A/|D"GN !$}L '[IO8;3{dPjY[%ʎ&G#6թB$*QgbVMvD ӝK`fStz$7#"Ydd Ajє[l'Sɑ+{5s{FMZ?Ǜ^nmHB0Z☦@(AāC*ZU<_"k9(:m:$9(ΒRl`ivfJc@ݺطur-9J7:u(P`ajXRa?Gq 9 mng򖲾Ua'y!srkug_*H\hOUP=h*VD5s$$k&Q'}j [!˥S[P}__hqs6unA$GlԊ.*标T`7=.3-*MU]\VE$M֥r;MBqĒR|=T\+$BCabu&"{QQ:8r4gN7;6j?c-*|h cTgEd+WUյf:6y@EGgTuAnwc'?CD=+6\V6/eW8raxO<Ԋo|-G\:f̳wp)yZLcH'@ TEQ{:ֱyKcՑC!hGZ{gïےˏ[Per0/j@;k0^K=A":R6J[?$?Hӓ"pi C8wn"@1;Ot@v;{{7 ;0H_B:63AJ[B,lmPC55=hrʺ| Ue`0B+&\ >O`2<١D (/4>&$&$p(?{imX5 !# 29ܫ:C{C.-p(ephekP-;DsqȆ#@CD!kDBC:'D[sht`k1tUH4 /ؒ`Z]||tȣ%?doheeh\?CD?;`7j.TB0lps<?{0j|[u454#y̎zGCEPqqa0dTe4D?ACɬ] ;cQ:8:;PK;O`ip:_ V(1dH IHLhj@n`Hk0[A8? H8SlȆMʐs<;(T8KU@˵L;HD(chCh_pIX K|(̵JeTńegrh3@BQń>oR -`YbXM+8P%+~';qN 5H@,ư,sX8GRCE$"-,k;066PEHbR =aIhZSm,E(= LM݊ U.gh`OgpBu?J^Ȇ<k\8Տl;%#YCkThWdNiigcYhFHTGTKNr5;9P<=gRReexqgDbph?h rhFxV]5TR¶ 㕍t՜+e5Y9=MOXRE\EPUZa˅DE^NŽ{X==PWPbUbhŅHp(ޅQ`a Uah[݄۔4/1. e#[\]e]جd:.;f@<ៅn%pjpeUmGGDv䜵>P]XW`]b]pHQޅRE]`]GMCI10&[a:fB<6o?HASҺ憻QBhdu]\]]hx\baP4@]cF5~VRe (Fj:p^=XhcNcK@? QK ^gH-[m鏦{[(EP$K\gu]XHQߛ]Yd` jUm vf[6n^b9(:n;XD8CЄgPR>CZ.kalI$o8[R~b]kYXH]i)5@Pe_x~VlpÂ씋^hUGMmeZe؀ @LT}Za؆uԹ$ƄcLyXNTxeWxV΃G}eZi8n3YjӴ\h=~dF UhjHyg`4dmq'MZ6aHx]V\Pdvi'n(fƄgf`羅We27s^uRq;(3b ;K@b@f&RURP@nm[DPjń@\]'9cCXeXJxfheHPeUKG1W3\_6_8`8q:^cfj.\iS&X=@Dž@p'Yp2H?ȃDЄfF@]Aaue[/j] ^799_:hlKce,\fhހRon{adm2tugwwτx6LP]XkuT#skGzJ\n;cAxaDD9j?aTWf@=My_)wksFhwMWiu[)Kg|Yz7.h:G`xe¥j`DmBqE.y׃7`__{_whYKY&5BIi?z90˞; I@_`a|7Зvn퍬a!IHysO_O`YyVݚf͚ 2dAÈ'&`"ƌ7r#Ȑ"G,i$ʔ*WlG2] @ Dt!;uܙcԨAyd"%iUU1sQ3hИ)ZgJkݺUg0cEµW\p5 $Nz,md L>,I0C7OZfvOSf5زgӮm6nҴS'O޻ Z?5}NOV9gUVv5֙3jЦ-6d0_&,8Ċq Y2ea/D™/R/Bi)v!j!zhQ vSN;4\qDa7G!#ٱQ3'uQV= 0g7xlp-pѲd]$21''MrXb5Xd-ˀ`R`1 04,6MHчy'})۝#fpu\7GR,%uQ{!*7JI"]u" dxYM4̨ -r*.}}Re}B0 &rțfG]uBt'Z{-ja5܉" ]QH% Js1Iuܧ3k:/].K,zy .aL- AHKmۚ|2)QC>+!|@I0Vei09^gQ4z@/yFʫ"0 .Xb~f2fhmvu}7-1FqhB̢eB-&8+&I/YYv` K~]7^j+CsG7 ?I{ B2v({"#b4*nF@TWj{huy/ޡ9sG"|XK׮49'=0",_p,4z;|`p-zYB4oQZ\UX;aQvU`;{3a6 gaF?Wdk|F,_xRĠ_N|"(ōH\Z^T~a? RJ ;"(ǹT w c `(>|~ sXF + &81 (KA*4IRbߒ;cY"J쌒zֻJvJ{DVVixF4HeءVʡ:@@'6c"YD,H.ּ&6mr&8oQE$qA4 eQYJ1rqRv b$ ;oPipF ex& _!烗`"j!@q&=)JSҕTBYs AOTyTim:DĠ8t(,3v 25`x8`ĺPFwRXJޅ㹨r8i: Š5 "(C9Q@T1{S;ȅyf4SVrE3K6gj:a2r30 n\)ܝnEfAD n` Ӣ5L#7_R, :V >6MG4ҿT cP7!a.0:**f5y̓ûK$@~$l\'`a3ن@ӯ-Z3^8 aBWz+6'cN!eV9ꟕpR]UU|UGTv47n%,?{}(*Jq:ԣkPr OhFeۂv^#yOw,6 2z"`TK?t.3Ezws pв{ :j\CG.S'Uf=W͂z0C;s0,wu.p ETtgz+O 3η+E4 E|/T|שlS8GauA5oły},\ Np#B%\= T)Aie*MW]׭yMؽR%<؜)坾 (L +B- `+,_,`Ռ^_NX!te}zɩi^%T† ._­) %^!!RN=!UU0EX鱟[yv1L!d"!t wUB^B a 舂&".a JsQ`f޻ cʡYIb$&#EB%Lm؆A% B̟`U)°Ѣ:";bk4aA/P\U ^3>b@feb\»A &!L#7 ~E}`+:ʢ:֢⹣H#k4#=NXTc,Qt\,@ 4^$"]BH#$e*LB Fj+(c+"-BH lVJDW~% ,DWX&X%IeZdjsuyYg=ub!?$! O)e Eb#T)tU~$ɜ%ZzeX杀&Xi$[[B[M¦c*˅"$$kB@BXjbtj*,eN%h穾*X)Cjz*حFDh@f@* *l !!0kN$ D´fzEj+T‡@ xfR)rfiɶiV^U]k뮂 ytxRPTU<eZcB&b&vNeGvǎ權Ƨv,mڶ+ںּ6Dg@Z #6Qr>CA^) DB^MgjƊuǚ~..P2D6q\22۱_dum@JbV=dl$'A$B>R & _n,zdž^/ɌBnQh&@ߚ Umn՞LB.B 4B#A$p #AZhN/!F*)%%-"uN"/ aޯ\RZ$( 0eF/nnfgvN/q,In\tŦlP d(d$o ppo  Bj Ro#H" "Д 3*31 Kp'-dޢiXo&1qJ(H $H%,"P%б 'd(l-1B 2oimB>Β*J ^R5Nr ''_&)#%h8Mr L,2<._p!*uaA QSQET$MRlr"B[# dpnrqN.&%28&Tq-: K4LǴL4M״M4NN4OO4PP5QQN&1/ t%\Gͨ@GU=3XWAX(LB5O0lDB71%8G3HB$"xj;Ӳ-  6aa6b'b/6c7c?6dGdO6eWe_6fgfo6gwcHr X.\m0JVA)X\pe"BpZBBf4htG|&^tseqJKKl %i v;дkHlRCO<5 j#ƥ5"nt>3TBAv.[Z 7')']O"A(qL7`[kd;2|U{^C9m;w;z3A\AǺ{ca p%pt8|'$ҵύ@B}=C =71D =/K\jx{~޲`;ʧ 1, Дο\sH+:#Ɗu^Г@j+gS/B8>w7VPKe̲F 0pw}Tk~>}ӺkD'rq{38|L7 6?3O>C&+;?7C_?gOħ8c`o_r+.??C|qG$04@=1e&Dm20bEa 0bG3na"I&O4IG/aƔ9fM9rΔ;{S'˟(_fiSOm2R`]Ԭe3]tQVnzq֋9^–Jk&4xp8= #I: @6Hz#H$IQrgЈD?b4B_Ӆ!CE1 >y=xq?qױ/ͫYvz1,ͱeϦ;wzi#wΝ:ugO| 0B 3,& , 6(фFH[5MTȒXMF$"p*Q8Qbđ9N ѹ#%vlIGҊ++3 3#K/3R@s8k 2 $@p5M>C-S^\;f $ Uԉ: !J.nDUQa(/ڔ/KM6-?ak?K80cpGO8=KA$K JhhE`RQUY;RT6_%.eշ)2<,ɫ^KaB e89 f5p:vCt6np%?,q]!kd.J7ߪrⱝȑ$:~ji"&ɮ{G禸&\/Ϣfخ6:6Y9 CrqVC70? :8( BͶGL YDՠ@-]qk[xmG/oR+p a&q!{5(5Khm!t?\sYv!1y] kYkS-p_c@ dyP`L( MN 3P7PrBހmN}L\@':ҕn#| ZA碄@ 4@N6`E-zW|I17m b0 '™|)t Y$80<ҧ>! J~J҆XDP"DZU)PV 0IMn%=JQ4)QJUnt+S- aQdz1XYj pK}c pp¦8pô99A2$&!L" WfpCPhiKa a=JF?P5AP. uC!уҒ -]7O09Aa`XMbbMm8Fyx!b#>s =%`#\萭m]We5YњVm* Ws]׸F}_/]nz 0,iԐ286.b( +8!fMk9R9EzHpR; DTjիA^J%n]\"Wunr#@#kn, #0bXplJPBˢ"l1 q5-?oaa}_% i@iH@"1<@ $[qj\;W#6VvA2<6qC6' Zњa@=[8S0q X]#q(uMbZ.pWxaKX&E|ʝsaSw*v7|j0ݝCb(S0 {ҲMZ@SN7Ltiжn`3BX5]a.Lxk*%ص~ 5o6Avl jyF~ vvAg^tS`,1ipƘ-%uSeګopi:0a8FN,LhX( hN{XSu0k'\5v=쏃<.y?>rm6^Mj5W~)mY:.Np1\c:ژs=iw p2u~B!EZHy` l&A/so3Oi^A>r6wwyXgnlUuS <nar]Rֆ6=i2Y`08x 'duKkمd >as+[:mk>Ixwus=>eH&,)b =F=t~L ef{T +D- $D7gt bEˮ1 a1pf//.s%st0y?ItIR)Īt>TR KGUKܾKɼ Ԁ Ԁ !kmg{ -ig Qk  vjF $р̬ 0nSp8~4SSk\չ6STh ,P5UCL(25)7a Jg;R gR4 P/ Q u&hGϵ<V6e+]S]{]4^^@ `Ot 2-L$`'0*KTaˀ&Q=Dt(VЉFc;;dKEUJ\2[vn fSCJ1fKg56^c*ðg. LSt5@*+^mIXbDk a؉3E},Y=%v[57_`ɓ: onLwqVfUTI_bKup_Lŋ >H-؄M(5 sـ Ws9scb }glpxurm1ddIv8ؕzw~w]]ݏ u&up *S, ysA Mr_S {Ix{wsj/tqgz [7Q_ ~ecRnwገحoiroց0 ^ d.,RS5k̴ׄ٠O{S8csg(r1'YccAv[WG#5/5e*gVxx]x {,Cry‹KK*̌IٌIQA _oo X7qm5ĂJos)qz5 ."wd>` ֠MلOSjtѠ# ;@4-/9V|5m mw:Ό9kvG1p$ y#0< {jY|WY@h ;[}ԟQ1j42z211Z2SΨ ڸԮꠗx#nGBšr ?=SYKK-urx/홦ydu:w1&oaeK=`ͪ Y&Z#lNA_vzA:ݖ Xcz|@$cqS#J'{tҬ212e4I4f8KӳڙG{ 6U {כCm^s V|҄.Pؤu9(lv{'ñ|2M41Śf@%_[]{[9`MFeͩZHؖo&1%-\S{o9K㵂m o,{/mw=1 ^|c@rs}|v& i2•\&y{!\= x?% ' Ѱ Kܨ&){)>ˁ-8&>L K^W>>e^qZsU |/Q*^/^34Fݾ^>^ɠթ@e{=s~w<b}dlY;ۿ+jF63݅];U %c_ț"\è7u~ `7=A~_?b 2… yH&+QH2L8@$Ke'!dVt1фO@QZVxkAfv"A#[DBGp nFJdJ.d > eRNIeV^eZn%~IgDJ,1j$k1\Ags¸b25AC"_}{]GBp(o'E>`N݅e饚*Y2=s%Izxƚ)`rCz#X(\y9J-)IjmGQkpM'l0Jߞ&l^qo//+>(pL35df ,F&z࢘> "(q%7 p)N;]QK=VMYDPc}5a;;QX Ls, 1J6tz_\ؼVk8K[WuG=-xWNyeuvNkWvpo{ܩyxI2{gx#[xIO tGg[/y[9Qe͇8{({4Gc|ж n I'<8;/y7dH= YOnf~o^zEuҷaP|3IN浮j]wxK[_&Z dK@=P\~qo,T!RB0vp90a?h7"Ɖ2%)_O4b9@Vq}T4scn~d!'916/C@02\#0栎gc 1HAyP1^) C̒!\ reDd3'0Z-D$ɸєty) ШNtmMi挤3iYԤ)kPSJEJJ*u\Sy2ScJM8+G[ʐԬchYk=Z طux%Y %ҍYk`TuAaE,!Z(=c UȊViO{ɪvmk_ [)mB%g!6suJeg[!`-q*wmp5 \1Aw*)NKw-yϋw3wl CEUco} x6o{%мnЁP.V~/\4 ,`>p`,nq" aRŰt̞OܓXg6d4@ &0(uo+x-5J,ҘL|^hF˜'CYTmglryϸDX/;9sѬ}3'#(O&U}i=k:N>%ftx EZ5d"MgJxu5eN95ERsKW=V)tM*]_ƸKA&MQMV:[y-յk1.##xnوȽjs(kj6~ y~xQ Y 5pǃ8/fnǃ&$7Oo/07޾-^5Hy}@vr[OёNLӻdi*-`0ڍs448q}.7~miiڈO ]%Ev:J}{~t/Q?Ǘ~^2? p7\S:sK/3wmiQ %v/ϯZ?vLYoR yXwvXm{&'pxf 8axl:~/~~uu84H2F)dy XR$UqS52K6tOB>&6h_DO?8UdFS傕7g(u~'geM%)cL&jNjDL!JCMa Hu#7u*GX^9+ofFHe$nI߅FӂO(x0hp7Wu(wx]_(ڥaJej :gkʦm q*sjwYyʧ}21J:{ʨ aꨑJ:jE꩟z!Jjʪꪯ *Jjʫ꫿ *ÊNJJjʬʣ** jjՊʭ *jI窮ʮ Jz᧯ 3`5*$W/q M.ѰKH(Ny# !+ [,61+˲-[+ 3;,`79;˳:?k *۲Ek ;5qM˲IaNK!kp+:U˵H[X' cK%`gik˶j X[۵U{/AuwJyFK%r# ۲Kka{8M˸ `{;#˸s+'!5a[+˺,`+31&PK[_ۻ+{x;[K0q4K% K&Q $;K#оk~˻K$kګ[{,`[{< { K˾{)!L`\#ۿ58:L%|K"p!G뺧' +6F0#p`\a$l7^ULblA>34Y}ܱao̼`N QS<˼@I\T^'.SM9^Kyh[CTWN'n]znqFlGΕ>v `0.:Enx<7.|K, ý풾~Ȟ흾 弞 P0>ǎ>.|Oo ?`^>^')+ A+Z7,0o?A/COEo@IK/'Q\Q/;&/YU/3X+;:c {hVokp%1e{/o}W/Oo/OoG/Oo/OoǏɯ Oo׏ٯ/Oo/o$XA .dC%NXE5nG ;PK[TmOmPK;,A'OEBPS/img/createflatfile_properties.gifdGIF87askc筭便RRR{Δ֌֌΄Z΄΄ޔ猭甜c1kZ{ތ{ޭkZs֔焭ތ焥9JRZk{JZcZ{ZcRRR999!!!))1BBB{ccccssssskk{k{sޥޭ֭Υε޽ތ֔ΔƌƔ֥ΥƜk֔εƽέ޽眵{ֵΜkss{Zc1{R{c{ZJ{kΥΥZZZZRRsR޵RJJ{J{c{RcBRk{ΥֵޜZkZkJZƜ9JR{B{Bs9kBsJ{Jk9sJs9k1k1cRk,H*\ȰÇ#JHŋ3jȱǏ C@(S\ɲ˗0cʜI͛8sɳϟ@ JѣH`rPJJիXjʵׯ`ÊKٳhӪ]˶۷p2=Iݻx˷߿ LÈ+^̸ǐ#KL{ uZ ϠCMӨS^ͺװc˞M۸sͻߡ hnZȓ+_μУKO.|sسkν suū_ϾАtn 'hF`s^~5΄VH&vᇸ-Wr:뤨)b0(|0a(dK(yT㭔$Nr](,ТmH$hN$x疀V'6hgfo]I椔']hwbn*js>JE&٪jz룴kbvairZ9^0D@*ކmn~j|f+.TK/TF,j6) ڷPF\jO6hl뿁z([ɬV,q+O38$wW",:Lq+&-%lq*l.7[Ͳ(\w̵hiw*rk/bw y#wΛ-O3}4,M{2Inak$UO~nژXm/[k $t_v }펍x$;=f P_mezyox"6b=;68ZᱫstM{ֿ,{R7~x.f  ػ+}u^[M/B (yDf6 ETD,{V. .]XV z~DD0V8# EL6'sͺ.6Q` ňEyhLc6eH:nsZG3 IBL"HBfQ)$'II̤&7Nz (GIRL*WM,gIZ̥.uJ PZIbL2]:Ќ4eKaZfJnz g3IrԦ:Σюb H#ђtMJ'9Җ4LҕDNwT)NJTHMj&Ts P*LJժXSծZ`hV̭vE Z:OfE\mֺ5o,:׾v l=JX}.ԯ`S|MdZ֓%ld'Ym^ͬ^7 hJZӺ`W־nJ[5nޒUrJ;$@J\U5X ݕP7&ɕ$[ubInVRX.q{+W*t+׿p+\x*{Y2׻~\ Wo}1la ni](Nq~a^*S\_{8)!αHGs]m\c8Dx,X(:2Ey Ccd%_x=rHOb u1' W.sNgzyl6 yÄf5d0Y>鳤g̓nofB =O߬I]'ڣu7U}ϯw=NZ_Օub4 Pc;{M<ڨvTn& lo9Zns8nw8伃:m{{;=' ۃ;\8_pxCܩ+S/-qr<yK>͓\*7˵C:؞y4]ns:W({;;9j#}x|ԧN[=Qַ{]YN]a?5xBv9L@xHJC؄7{ xKK8TX/X8vEKV؅^8Y]fx=(jxudKhpk8&xd0䇶TxPttzmKyoLKUSg:腕(K~)hh؊hx(HXb(7(hȉz׈RH{8XXHHx؊hԘHXwhK8J(M|x׈h؏ȏ( 9ฉvXKX@HNxȍ䨏"ّɎ(9vIK9<8-y՘'IhH8C/w19K42ȐDɑؓUٕXI)d9K hP-hNLs`uה|ɄtHk|䧗ԗy$ؖ\|ɘc KUtpZiy5 ٚoI9YiexYRxpșʹٜyy9ٝ9YyOXpۄI$`ؙbXɛnh(M p2p_ԟ~EښiyM4  #` 04 Ku+jN:Wj K:wwL4$IԢ[Gr3jPJ;K ?I3࠯ĈOI Iudӄh#Mꤨ١Rt pIB0@@5pI CJK`Kcjd҄d)$Pڌq$$:>:A0@ʥ!镸ȏHhi樊TJM\\Qa: jτ'p)Q]ڒ?yɕ`ǘҨC ƫիO\ jXqLzI:͊(AH<鎬ڑۨ M:ab d07 rKtzI5`79}Bd*" =i {ګ*;O;ФʱVLUI*13({zeIZEٍjb<@B ʠ{_,WPƷTgLK Aȣ"J&7h y<%L~<@*ggȲhljJkaYbzKsd]ɰX\[KI'ːX)|2LUKN!I*V9[+Y΄{{ͼE̶4z|Iz_Y묍T˭AiJ-KQEϵdόz+ܯ8Y,;)lLTuKxM[Ll*{& Z+5Q%dl6]::LKIMKJSH?ɵ"}E/C%D\Ƌl,Zp+Muk,ἷ,ԯ:DmֳλP5w uͶwy}ФKK}hȕ J;pcŪ}ʹLK)ͩ}}RE϶ Um&\+r%ܹQ*~y`lSmƷ;ܖMkޝ)Hh%ٶTmͻ,}Vr=tܖ9*ߊՕ9 mmK8t~~M~^%')+-/13>5^7΂ @B>C㈙~搂>NNBnO6>NY\= =TV3Y]N'Z/|i\ xz]^aNr8~{~^^",Ä憞蔞mS~CN0nD癮 c>RnNnꣾ h>oN氾(u. ې@ ĠN~^.ξ.Nz.خ. ^꿾P>/Y~ / P?{M".`A>p_R04O/>@_% 2/\N3Rp_=A0YO-_0 QggmP?8W^?`_)Yo.N^Px??j}!.w׮g[0TO V ` /o6́δu/lP /n__/S Zy?Q^ _Ta@@ DPB >QD-^ĘQD`]D4\J-YzVrl$n6b|q…/^(AjGRJl)zF(_[ 6i΄˗cî+mZs?wܷo ĵ{W]y͋w޺E av Fʕ-_ƜYfΝ trdI'!M+gСF*]DG7:A4TWid[6m#.!PPCnrC$?d,ܔEr%Xx2.t#+Ô쀈A"b*}|#&h[;D%2qI|8<8E*VQsH0(," eK <wTץqFB.q& d {gEBҐâ@%ԡ`F1h?1y_Qy/]]&ȿ>Q!e9Bm–e.uK^җf/D~&",3q fD$2jrJx@#\'mSNJ7ZGXgO~ӟB"-t2fD~f71dX 92A\rЗ|(T L:-NO/{y5Ԧ7iNuS PbTQus2 .0n?nLt'T"AC%e 1V/yIQEȱrs]0GA=3i`;X55;)"Ԧ6O5KJ nvRBI_NJt-r{ć2hۀm` \6MbI M^ՅwtWDmQu_1E䏗pA [ ˳[B 2WCq fkЈ"daeV#90,h Kӽ{oGƍ6)~u?{ޭX8KfOUw@=n~; rC0l3\| pSA`Ib;=q+(T$T`9‹ x9ϓ;PI5`Ԇfxghx;c('/,-=:(Ar[4AIGA †+G\uLXZÈ\E.^_DIbI$ID@|@ghi**+ pp ,Js;FlDRLL̫sDIsLLJz#3^4-ʋʮ { <_$dI<ɓ,I6dec*j+3f@%`p4NTD:FDt謪Ѥ4[3M24#˅HH4lٜM tC‚0bعfg@/(οOTNs+A2%N$2x3K`[ͲlCKTL4ϒ|T@*k'CYkhkhbH/ eAEOݯQEe0];:9S9H4K }M %TC< *+%gijCuѾ2GSdP}7mDS 3?üTl-8CE A(1ٔR/l\Q lIhhhϖ¬QMEdSE6mSBF ЪP]:e՗S`ΌN5FEh1b54Ga%a=a[] [+>`-F%(LbL肿APг16%f\Z%[}^*^8da@BBDVE0z"dY 2Қ̂PI]"9c:Z`[^8^)M>KHZee\e[^eCfYۘ[LM6O5@,\!Fceʄn>o>TgT`r6QPgQ(vngWxWN^^G}~`hd)h =f&,eG<0?dań46&ho΄ [-;Ve^pe)Vig~i̼B > dF:Ʌa2h?BMbc4_LٔVR.nc( ٮƅn>5e.2R0vky5Rf=ƀ k\R8vjj5>.UA0k#Giv. <a]A0:,E(ֿW=G@@f5^~b`X`ƆcH&nZ>nI62-[X?|XNs. -}IؚA67xn.꫾cUǾ6'GnWBY}|?v{-pVk5o1)qE].6;xf+]Eoc$nSN R]^ViQH]A w(rcP>x,T8OT{D8N2d 0G*r89S<q7~l'v6M4΂1ARqftT,w~RI6i%g( )t/[?U$8W< ŀ; SE*s‹E^X|C:u/>0>7kdI0jBg>t^.}Mr%OLM'dO+,u$2{ESpuO4?T?'>" W?Y_`O`$ٴdk&p7nvئلR' YnorDW"%3/SBB >W8Cy{ǚ)Cs]%x><77dTvi~i6ɉ&Fjp]rVMtax)Đ/KBa\_cE yOPy{o?E;לG=d<Gq!878ϧDo;Kxcow};8`Xs9rX\rDCw"?衞h-4bLP|G=x6 <(},ۦczW%zgw|ʡJ fW]枧cj,Z܉4f$9qy$IIn4&L&ҀFdedBdYꥫRfҬiM^v BL0_Æ-jtJ2mSP*Vr+ذbǒ-իٴjײmv,r2;E@SdPb7TB8pH9-ꙤǖGfًԼDzزcюUjgQ].‡/n8X*oyXzTW>`q;vqM@HBm:Y>~.. " n=o97!Zx!qt{W`dU(FfpGrf1$x\&#xyh} KI 2o!UZy%Y6kqUԑxYThqy)Y#qm#CLq\2$yJ.y` SPB3L0BC%j)b})X>1XZdQ$*FfUDf}(-ʑIxh0J,:-ZK!Uj-z-.YVWXanqF2 I+B~' p'Kk, nF1_z-!<2;橃yƮzdm'cJZ&=g"dM+VѴ䀉BQ\2U[}5`%dʮnz`{ܡ$ƬgD_ ځ;&ʡ./\H-u։+8㜞lReGkhߡcMHGӛY#;z,7Ixq~;=XjxHgE0@3ȸqqʥRnr84"_sS*ࡆx n_l`>6(uLj` 2 X2QaR6b c{0H>;Grh+^qװ&5)t MbD)2Ӳ 9,,rd?|b#*±f^[$CK,i C1M7R" IET9U)aBE 3fRvޝ0q&鈋 X6$~Q5]62hF`̀ļ'>i-}*SsH; /2d92^&[({JWp7uK ) 2(sN`&=ϕ6R'%ٗK4"# Pt7!N:GHZ–(-@թ~Q Jzҭ JJRЂ.+a YBVU+eKZje[JLR !2'.-#$nwpf G`,*x "UE%FQNU.o\VzEj]K\ W-n}ۼ9+*>f$apXa&Gf :ֱ 9y RtnI?kD[rd՚t$N\V֬eJmiKX f낇xNs0#[Cp ¿-._)¿fђ[LcK]ɰCP?4yhF z:Wƒh(h<@Cvi7$[ߵŰ b #esQ8ox0<ͺ;ڷ{6K ݩC֟aYDm;EzkpRr4R4-@F5Qڭn-ggdӺm7_ WFqqmlg7His5^XZg@DZF fTi8F= Gk)(lkǖm@Y6S΀ΫƬ,۶X׉h,LF< yNFd|AF-j(B'BK)(`kH&^2n.纭-ςE!-І[͐F,Fff nKbBfmkFɊ QLT$@-n/ΆWȏ="c.ʧR&Lƶ~+G(@ ` B/Ư*oVn bSib(@,ex֎› )h+QD)$0KePo/*bމ#i"Mi%|[xJ@lJB Tp@z*K1ɺR$ 56@+炁Rq_10TFAC f&FM=}*%(r@Kj(ܨFF |p,P"k#c1$&L2%W%_2&g&o2'w&@I^xE Xbu/6vYAxɂ@5lƧB&ll, 3!#G""G5&6oU]/zqs.C|KkAhTz/g-sHxu-Ѡ,i@P4/2D_3EE6/FoKz΂s s99ϣBLa%3K d @'iB)|p,t'kip*8d+532DOsEO[\tF_haKV%V7íIY 9")Q~̀$1h΄*si@$dDbGX,[X\`odGVQX5Vo6W $Et6XX3 3I4k/GL +@lI,]P$4bpi5KK\-i@Pt,,b7e [lꥅ-dc6hf_5i |v7irV)TAgXZ."7 A h}q+Bg,pc(.khB tA2A@Ac[ڙ'܊;]\M7wfK8<xH+9,~3_%zӤKI$\& PZA(DF2.+aB΀Ps'Gs3Q[%-|4G|*y'@/|zX|.& Y:3"XTA`0Dp|"L{-nH.),0kP8^ ({`>7=u UՃ>xm=g8FKGGag3b+/Z06=u"|A(=m*NscL'4 =wl2@DihD&d~?+nww~'p2'hS>@8P0Ӈa=4͛}")$)'(/GTE&aDI`ҤT0fպkW_CYgǦAm[oƕ;n]wnB`ߤQ5AcUߣ?|yѧW޼^9?>Mc71ndʖ¬-FHh!96r;"9V9 y@ހ낊08HvzɓH dD 2<,#LR%rR +*{,*,7x F :IdIp!838jFn"7'ybf8n0O~l\9K C UQI-TRU,O-Ox8c_G>iOGЄ(򘳍A"$%`,zE8DO;{W_%SeU]RV?0J@u^ vcʹt7IvŖ g@d. 88@;;`&"! Z衉.~M2Vgҿ0@xUk_͏8DlbFsJ,B.z0'#"da#tyK/2ʼn@r\;# K 1P* g0PH7UFH$: Ӄp8ͩ~+ I'/C)JAp >N$-D*aʗ"BdIʢ*0 J? Ti1h 7Hm2H*҆ũ~aj7Q4JARbh =g( UB>&2\gQX Ƣ%]$Ө8US TH2@ h["ݛP+\ac86^a96n6qAr㬃,ȲrVgAԵIs H!HZ.H [Zcu XB@|at+V׷\e5ncrQnfTr aBXѕpkv+Zۀ[X]+ܕ K(pW/qc#Il Z\E&!XmV)d%/KHA0yg<[%61T$mv3^zhsɎ}N3%j h.!Q*J]Wl7,TpŸ7oӝK /C aL>:з*`L(-L \h=lesXAXF]84TȠd2d;6pcF8d!+r05[>C]6l/q @ZQO/pOyG 0"E bV+dA ]N=,HbMut/6Bn@hD 򯎁 *NMSe7;A.jzEw 8P;A xP# Vp0,!c?!Ǵ eC.wo>oGQn\T ra[ [2y>o?CO[K0Bc|mjA}#! j(ߛxt! _⹧xOw7yo?+W 4?``¯ 0To,ʀ Nh `-a0 j* 10?o x0{P-0qP P5 0 ?O #ł}  P P 0 Pٰ hͰ ,؂-B 0 115q9= ϐ ` q, !.bQiq0,>1uqy1 `N0Z 0[,,qQq(1ư1 M0Rp :1˂,qQqbr { q@ 81-Q# Er$9Q 뀖6"-21#i&'r&'#=r'K$$2(2 R @aRc)&g'c'|++I$Kب R-^3r#R-#q21+z+ / /r r/0 s0/01002s2 HнQ 2 .I3r+35U2U5]5a36a5N, \4SNS+d8839SS ͂ h` 5:_o8B9s;9$,8s6:+==  R,v @5s?{n= >4@;`,`4?S@%tB[ ` JPm~' Zk0E MQ|J3+ZZ[טSmƣdOJH@#s,e\!Ǎȑ|Mdz;*yz ȑʱĕ ̈́ʥʳ\ōbG@ý,q6*gC,)>=·ǻw,|ƟjCй}9{џzjqmxb5>/CuI47Ӆ=iJ=@ uãQ=h t_z#Z*#.h0.=׃ܽ}_W=Gb7=W#Ś//},=>֝?ˑ]\<5zZ.>{^'<}-r 7 ~U^0X>'͏]&} }Wm=#󑱛z.m=}[}懜%>鵂X^K~%^'?\C|Ә)Oh _4^Ee_M' WyEn&`taB8D|vD'(] bj &]$h #E.(=ؔ{8dHMo}HM"YO/X$b0HbK:#".fCC&QJ-*K_$zw*嬵K@h;[)5{*\Zۮڛ 6 S 1f,nJ~!hzn+.Erp~ a:5q( Q˩H0Ƀۮ_[)R 9fh.TCyD?/' 27zԇiG}~SP~߻>O궧o}އdo|@Ww?ek ȺqGV~"0p$, O8 C _C,aɲpuЃ쳡 '}ل$*q`!xD&JqT4%Yq\!,jg`,ψF:1llX5qt#J|9r,diD*rKD$# H*ϑ%/i!Jbr$k4PrQ%)OTY$*_ XJ.-oISr$.{ `,1<(sl3 hJsԬ5ljs7 ps,9ωt<;yvsL<|n? t (AP4 mЈJ4;E/btKEgÐ e#HG)m !RʔLeZÆ@4+CO Ԡ f`IS uLjBrHuSeUլju\j jԧ"M-kYꐤŬl]*ZQu@eQ(WU)vE `-a6 hlWME^'SVdd,[c ݕlYAmb@`VmlBZfq ~ֶܺca\.Q-"}.p;T:nP W1!ܽw}nU,orKT݇1{;Rw.~[R'],"/~뙏Bt a wGr0|3l0B"̠v> Ͳ,u S>0 -m,>n;9A1c~_Z])fYd*Z5+~Y7F2\9ùYL9fxLrY|- -9qs35 jf#-H6_mAgVa9MEz[u;0Gz5ui8'̲^Ӗ\\ʦv+-T}eW{ڡm`KzGz1N:\tiڢD9=gs˛1]j`z67kw7Ooڧgt!Ξ`CAD|r,TVWCh6ջd,Sw4wM@9ys^4Beln=rWnkIXΐFbm]i^,nSfw;]P'ڱEuOn4n%a>jC(?˜<'ut T>k|X?3~+- |:?M>8qX-يJn{C@/(ku[ "WT(}`т6߮f5k6tq5sף Ȁ   }}Ė}(#XuG$XsX)1H'cܢH'؀>(=~h?9ƃt"3X ҃MBH>/(u=Lh @?CH8acXw$sHuh EhvXxb((sH{8Hyh6XoXӇH? (Hzhp؊&vȋYe 45dPx?2B،bvHh爎8px=׈xǍш HxV T ɐ Y VӈAt ɐPu!)#I%i'I)3ɑS a19;ِ5Q7%4E@dSCR+By qKRMP9SRUYOX]N\a)L`)eKyTikɖmo q)sIuiwy{ɗ} )IimY )Iiə陟 )Iiɚ隯I!Iiɛ\雿 )Iiljɩɜ )I ׉٩ɝ )Ii牞驞ɞ )Ii;PK+ddPK;,A$OEBPS/img/excel_platform_connect.gif6DGIF87asmc筪異RRR}Δ֌֌΄΄Z΄甮΄ޔ֌猪甚Buν9q9mBq1mƽ9qƽ! !}{}{{y{{u{0s1I4JeBqRR{J{cJqތ{1asZƥޔJ]cyZ}cR然Ucack!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!,H*\ȰÇ#JHŋ3jȱǏ CI#R\ɲ˗0cʜI͛8sɳϟ@ JѣH*]*TJJիXjʵׯ`ÊKٳhӪ]˶۷pʝ)J˷߿ LÈ+^̸ǐ#KL˘3k]MӨS^ͺװc˞M۸sͻ NvO_μУKNy<Om=yh˟O4t= ~& 6t _#Wdp ($8_MX!h:ɋ0&h8l(,!$&dHE"ai,hO֤oQ䔍DJN\a٤[9dfRkiƥkBj)xfYU٦ehh=#w6 )3.Yffgz9^F)*zin~J[rj*Zjjq*j:jbڥ+jj& &Wy-^DFZDZJL~)uWzl}ǎ+k%|Inö+~WpQdwĐP<1nj/\'f*0 :g&s*2[ŶZܳg:t|="01JXӸ1ҬqĪrHllj̶ =j4p =直ޮO'^R%BZmޒ o ,x.-.dkgMxӴt466з+.sAO5vF<轵z"H>ՁFF5bH3ʡ XT}}.c%+8ƌd܈G( 5kYǘ/c 7POqWH{9L|԰7LRtLL%|2^yzJB.jC/)^Lfo~ٗ`*Ќ4oL8ș69xg'fm4%vsKI{r @JЂMBPʐ)hJ`@ъZͨF7юz HGꂒ(MJWҖ0LgJ8ͩNwӞ@ PJԢHMRԦ:PTJզSXUHծz`(MJֲhQֶpiUJ׺V}hVZ ,XJhbƮd!{UZ6(ͬf7YzcGK2vMjZ˺'lgiwu .eℶMnrs6׷ЍnoKNLfֹ gKֺMoRĻWKռc׽|L~~`o[ [ ΰM{1j%=z^ή3,{==sݧ=w"12K#U~>SW?.+s.oH>곿1/wە6:Xbb ׀'8Vŀ^xab 8Y"8,Q&x,x.[0Xa284`6(Y-)փ @fD8FX`HJ`L؄P6,V/vw5Dȅ]a(uuOlpr8t8WnXxz|hxw؇8|Th؈8xhjGNPx؊8T:p؋8XxȘʸ،8XxO ULx:UܸTX긎8ȎMuJX8(hTx6яh( Ga숐 9y Yّvx긑Y&f Y"Y$y.!+- 6y%Y8ٓ>Y:,n-U/Z@e`a`e@@?JJٟFZl!j$Jn*L0HŤh6rzקPڧ8Wsvo+vQ::Q{`b`0z@kzkmrzsZt8+ʧꪲpʪ|?술 \\Y9izhצr J**5*v:.֪: 0Y0Y4Z*xz گ;zu窎骮ə ;jwz:z:Kr!tJ:2p֩0QzzԊzotK7j:)Kؘy%Pۀ,.O[5+Ten%J3ǵ}ɴdiW Y[۶+Iq;s`߈U۸hXWHW ;W; KU;U{;++UK»U;;ێ;Uwuw^TrМs TeN%E㖼(껾۾qIWٻTʞ l0UkJH{ZHTkk࿹9T䫛lUOEʣM=}~K!84_E?:/COK_GOQSUߤWM[8dOfhkmoo_qosuOwy/{}/I܃_Ooo⛟ϱ{Ͼ?]?ߤ/?}_yǟ?u_?oOܯU_UnU!6χ0oHca@@ DPB (@@@PF=~0A!MDReC$+;tSL5miD1TȂ%EJfҥI>U*Н+^$:UkҬn ѱa͞Ef՞XվuUWuk ^}ϲ`r hBL'V²-\^2ANZJ> kqZ|16ꁕ d&5s\O}pٮ%G~ }`鋩GN`kW׶?z n_Wӽ;~쮿 <.> jfO?k,7@:O?<Y< _Q( c<GQ q  ɏ\I'WIlGJ Ү"ܭA6bRJ5(J62ҹ9O;,;KLK:ˍ6{MEm3"Lc+ۓ44SMr-6)N8̬ךҙTt&Qc%)ViU8XskR^ե`%v]=iVdi]6Z]; lBi7RZ[o\g%wc([teݹt}^{=ނշ_#_~%`'w`f8>Ua'vb7a}38d^G Wfe_9fgfo9gwY͒=) hF:ifi:jꨭzZ*;l&lU?]뮡l离nNAum;p'\^. ~83SNr>٩/}5PzЕzqNѕu/!l8B΁'œjq(^z# EXB? #rQP^ӑhPH*pUb#'D\Fmۣ,9LrY$f2EfLd!SϤ3LhVsa$5MaWf8M^S\9seNtZ;۹KzӞ-{)Q63I*W9P0<)P6rlzN:Ԣ3F')2jhHUZ:i8SR yeG7v$ Ԣ-FHU*'>"Apl? `F;b3ܫĸDdtt@= k⫶)6sL4DTdDA=h'01<"l?t !d?A"6kB,-.B.= %Z(PR(;,9:;?]{cl`TEBĜMLxK?e fg26ƠF(ƶkm\FG;KՃ6nƜHXGPlPw4x;:US@mI3A-GUT6R2D? . C85zBUR2TP$)O%C$>=TVIQTF=RmcTj"$-J1U? 0 @-VbMFM>/E1g=VXuSSZAUi>! {NUnY OU2ō4Q]US1VlE$W{EՑ ɑK"ČB XV]wXyEVhPol]RDUS#V횂5 DX&<V3XXY5~XQ}YXSWeYvAٰ< m=gZ3Ud1mWDim.uRi SםY2m5YpUOYgti"M+ Y\[tiڔQvI\bz\rY iu\awl\tSh)ryEUeMۓo*]ѝ ]]ݍ ^m⅓ET޿a畔--=&1\UE6l<]'m&+N_d5߁R cxr__U_^_ޜ=]:4>˛  fȜKa9 FC SJv.vKD<bQ +#Eiqiz)N*VD -a.bb B'a܁``0 "ʵ";"c ˛b8r+r=`)1&;4MJs}-K#<).d;.D-c>>eC&SbSC*G~d ] c- IpP>IFe&e`ead.aVdDH0I6T#;EOO~fDc@f+ggno6gR綂 厫Z1D:WtqCb1gcƔbbH=N謊x.ylv`h_JlaHFc__fjVL^$F6_i^`A5ꣾ'^NަjvV5sjΉmP鱖ƲƯF`Tk~'뼶%faiNaIiZ(Næ#1+6)Ǟ#ȶN,ʆ)A&in`ϞBi&bw`ȁ(V6hbvu:|fVN`b~m.&JdF.odvnngPn,mhf'Ge?>Bf.FflgYd"p'N&>h,RIhnuabO_!^깠" Fro mw+Jr/e݆qxn&lN+"<^p q4_rU#q7.*"km1md&ٶ4cn/?(moVr/lt ROPtͶ2uyFu% q&#.4u7l k!:3uXfwvIv?[vOŞvblO]nv qm lGNR^vwrs{G|߱}wwIxOu0M(6+uo`wbGx&bG;"8W ? (M NE 30xy0yjGI !" "륟<~ͳL>LɪMW={3 6by=WxZWu8K"9&5R"d*9!ㆀ̑2okOP2|Kd\V^}Yϧ{+)|8\ ?!A^ ,;z*˽?wamݿc ,s34ay?{v~W{<}Tsm"&g:GW畧iQ(h „ 2l!ĂMDh"ƌ7r#Ȑ"G PAɘ2gbP͜:w'РB=re˗D2=h!ΦRRj*֬?dְ *,ڴjײm+үn2$[,ݼzw!\Jk/Ċ3n3pRÎF<2̚CB˟G.mjV^5&Qv,[hۺwޝZr/n4+oyG2n:αsNf׳]0 ˯o _w~ğYx .J8!Zx!j!z!0"%x")"-"18#5x#9#=#A^Ry$RM:^K%UZWj%?e%aїcy& &mq %sy'u'i :{:(*y(JBJ) i)0*z*fgʪ*z+*+zg6;7{,*,lvZ+Zдj%X]ֆ-@񝉀ג.k.$k&2/// <0p0 '(, oЦ 񭽲p. ;b<2#ḵw+%z2 '*W18B)2 ?4M9Ov 0a 塋>:饛~zkι>3GzϲָBî{no> )|;<ş{|7яnp;k/:]/ ?o$|PD2> Лg=ot,H}qk^=M~=r JP?ks BD _ W0C~7F.+ܡ7Zr{ۧEBm?.tW`xEq"i!Ab<(Pt"E d@HX81M,?xʊK$1c* &r_ MUfĤ:ǣi;&BBr?!+KL@m,HRIn!1EghB!\|RKd*iND"DriVsD';jZ&7UVK!&5#blj@ 3U3㉐r <@)I\Cu2$敾mELgF1v4 0MWeЕ.,*8~؋ se0hBUx&@r`.`` \OBI8<1,!ak2UE~LV l qe)˘!|O1f>33>/Sֿ>s>??ӯ?/ӿ??  ;PK7LY66PK;,A#OEBPS/img/createflatfile_record.gif)\֣GIF87askc筭便RRR{Δ֌֌΄Z΄΄ޔ猭甜焭ތ焥9JRZk{JZcZ{ZcRRR999!!!))1BBB{ccccsssssk1kƵk{k{sޥޭ֭Υε޽ތ֔ΔƌƔ֥ΥƜk֔εƽέ޽眵{ֵΜkss{Zc1{R{c{ZJ{kΥΥZZZZRRsR޵RJJ{J{c{RcBRk{ΥֵޜZkZkJZƜ9JR{B{Bs9kBsJ{Jk9sJs9k1k1ccZ{ތ{ޭkZsRk,H*\ȰÇ#JHŋ3jȱǏ CI#R\ɲ˗0cʜI͛8sɳϟ@ JѣH*]JTJJիXjʵׯ`ÊKٳhӪ]˶۷pʝ)J˷߿ LÈ+^̸ǐ#KL˘3k]ЉMӨS^ͺװc˞M۸sͻ NwO_μУKN}<Om=yh˟O4t5 ~& 6 u :WZd~p ($X_MX!h΋0&h8cm(,:dHE"i+1גh)$:QR9mMek*vjSWh/tc؏(ڐ,0uθ$iU)嗬iY(_ Z\:jjc*j)qb槠j@^|Wy^DD&Z+:+lΊZ`, ^Њ9jJ-j.^:z{MLJ夺"譇ۨVnZ /2',\. [0 7)/Vl1^[ٮG!袌$Wno)l*j/̙l8+J' =<2 lҳBQ/}^)2%˚+N;\dnw:$r_69U.dذS"/Ep1 (ކ11}l]u>2}y DHXsC:F IJZf؛~ >y͂5<І:D'jNZͨFJ̈́z N(JҒ(MiJ7ҖLgJS8ͩNwҗ@gLkJԢ5)Ɋֺڕnͫ^St`{Pu_+]Jb'Kʞc#Ų e3KZnֳMMDiUKڶĵmWc[ֶnKܤmp:=EtJUZWͮv!:S ]Kӻx[VEowS;]xկV\K׿ 0BL:-^hCѰ6?K%Nqq/| ؚ&ILs'w[Ʊc5g-Fk1G-gFwkKfRZʺZب6-1K&rMn.j}8F-lovwmnZϝt{}7,AǺ7{p_lm醷-KC{ '5cY޼V9-^i8g <1PrNt|=tP|lyGwqN`M{_+xoKw(y<.ֵ2I'ƃ|Z)rZ}׼iҋQo g/y׷AU=n{>qڽaާ؋o#__=K&?B~oZc_<+??Ko(/O?FSXxs' ؀DXxx|؁ 8$X&XxO.,؂.0284X6x8:<؃>@B8DXFxHJL؄:('8TXVO.Rx\؅^YXdXfXaȀcxl؆n}i*tXvvqsx|؇~(_y{XXx؈RXXZxȉwk(xmH؊ȅxOX#4XXO؋8QHȘhO8XxؘڸܨȇxQ8XxhQ(Xl؎5xdՏY ِI T(y(YO " y9*%O(2 0y8:-O8B=O@y8J59H㸔REOPy8ZUOXbI]O`y8j MYhkWp)xytiOvyԗg m鑄٘'阔h)XYbPiQTpOٙI?5䚦yiyiOY-Y* 9 )Y? SÉ)YɚiIɜ )թޙi۩Kٜ ɞƙ)SIIٞٝ*:I%iɞ Zٟ:ZyaY[y(j,:.98W5j1>V;ʣDUA*XJSGPRMAVQSJx\*PYI٥bO_ 8hbh Q p؀p Zn0Jxzا@tzwJI">%ʈZ(PנO*zZ N@ Iʡڛ̪jZhQ N*1ʚ ٭ ʝ٠JثM*!4 *Yy+zժߴO) މ ; ʯz*1Jz㊯+"+Z5M+1;iZzFQS  P/>[pztЩaMOK[ ]_ace[g[ikKmoqsukwy {};KˢQ;uj k*m*Q~ J VIkQMШ+ĩڳΊZۇ+#P0 Tڰ ۃ \؍ټɓ C-#؝HՉسԐێ۽m5MomL N]|{]լ ܍WWp^ݴm=l ٿB$"z#<ޡ}~ɺmچLׂ-}6~K=۰`҉ }*D>*~\ &n(R䧽ͩ 3~7~^8ݲ@ =,Dn,x{n^ Yn^n~9 Xm@.}}+zsQ~=Kpnꇮ  Б~ؖ\Μ>z=Ԁ< $ҭ}\^謾ddP{fG`菞`M+^廞{^翾N^ϥ>㩮fePҐꉾ* n_m .^2nN@ _O u@9m۵. o  Ȯ -]Bi6-^i|1oMn> >~@} bDuP6'L .-YXo00_Y o }E%v_|??_?7 $`_u@ p~`P"r_ >?˒ R&7؂ @~]`Я^yAM@ 4PB >QD-^=~R>rD’3SL5męSE`]`tv`4ќ=}K2YX!ze6̐y#'Aǔ %Ju1cȑ%W"aK2P6eT`; FsHƍsNDV[M77ٔ)lF1PPF<E4QE1>Ҍ@vHڄeds 2@J&R0ڐ9<+Ŀ5W]D4U`_:=ӻ? Z &P6[mOlt.YeIS?fyF@3 ,0#4B JC2DgltWuc'Jրa#be}!#P0t[OFn\q{IƘ])#h.}&;j+48 5 f05뮼o]6v8F`X@&v뉹.Y0=5昱+/]`H9oiG2͢pg9^x)׾PrzSn@xkp*ʐ&s27 03iYoP*:uX]'zk{v֎m 8' ogp6Hg1& \Jaԙe rV <`8\19$85ֿjnG;.mw"^$x5ς<߾%8qUzE1 c<jҀ%7U@d9zNKctSK΄(*J`6&Yw"=$wJT _4(=R4'MEꕀ`f&p`u3\dgG6 0%V=j лɳ/Zڋ $ Bqnwqw`bI<^9;0,F tfE? "zH1 G PErWl ;.0Тr4h$ZѼ6}wYҕtɛˆB a5gX*r|kC&w5u:\q]F=ozh)v'miKSz@.PjaXBt[GGzs"S7/ g# ƠE1xa ^"Kwڏ nO@zNtw/ YFRbC}5Q' C PCx1͞W -rvk4t-ꖖm 㪞…Y˼+>8e t;ˈ @ . @!?JՓ:-:C3 &88"4Hb+_H3R¹Y++>?+>V08c@;HZUx5't'ۤ(@*,< ԛ#1CL4D44ӱ!8J8P9r{/b˶Y0H10B(@CDTPDEtF\UXSG(D‰B+¢ Q ./,3?-p4LT/;IDCLk?}PJ4Z($Tn5oP-pr5^)&j:J:L4[ՈWQ TT3R0c'NgE34jKDnUoXSXBs5W D@_WqׅmtB Ѓ#XTZflt- ؊X\8ڣEڤ]ZPEt2xUY-٫Gg$Hڭ]QUoe_}_{_ _A7/(P5ZٓKdh[U 6 WW`) y @A.7>AaM uuD۵PU`]\^"#4X\04b-VFNhD_cXX`G\HvqcRڵ1~FeG]fdŬdKL<"0*8@A<AS.A^^,RMo^SN5s&_HOEf^vg^xgT޽VÃ342/0VK+k?xAC-/WWlvdͮ a#(*05N.@NIx?(kfv쵮㼸l *@N/3lR>18cfohF`F]IXEP<_^Pvo aF=AXn^n5 /NKV/mVl>m`e0ӋO Cm^d\g#6peH7P/Hm^M:F4mFDU5hHl#_a5q031UnWT4WILӢFrn"o$Ws- &GVn$%Ts43/r/m2?AV0A7B_E6b5(.s(G6B\LH= bTK1tB?C/tTGV`Wc%0hr><3+12F,meFo\hr$HivWk;Gu?nW<> >~J3C9]*R-fLNS/EFHI@Eb!j7xkG:mwbn7k=}Qa0c=> r /1V(vwyc/i\ FkPTI7ug6نxvV`ox ?_YPRWD9Ё(o6vx7h.L78Zܗ.ktcsGyo{Q{LJEy7H0.?cebV`ȇ|ۿ&K|p0?\CG *xM]U`Αxetߌq‰d1_ss1Hz7s4A (h „9u!ć '%|d⩌Pq*=|e$ʔ& l%̘2]~9̚/uɓϖA{-j(ҤJ2m)ԨRRE@@LHϗ4ixQ ?~¸[`ĀQV FUU MS4n8Ȓ*7:Zfh0y6ui@Iv-4ڞw7‡ǪW0Sl۵l G.]IӅ.0rÄ\<';lH muǾin h`~ :  gV]}RΙGvny g1g]^by8#GYea&|G}ɆC&~tk `I8%UZy%Q܅e*z "ś e ""!"(HAg%$ȌdycI'6袞_Pڀ MOriLCe9*z*[ZKލIƚz&! p|H!%ҧ\r &b"QFhfH^mDzd*.;aVtn}zхGG&ICp$@ #5V㍆9(wdlJ6Y`m9Zj,=3ЩfU^otl}թ "*9_qB,qBJc 9' p0E L H#V_(}w=a7}7vT).fkog'AJ0qM`P4I0F8rdݭ? 8<˰~;%8.ZsG]/\'_l1V71٢77 0:\x>?O§F߿7.|8X)\0 '4PH} S~F_ )z1~(OPB0 E "!EMD{A)HGe<E2n|##B  gؿ0xiNl%4x~0DJ8@*t]1 P8&D` JBFĸ5g,(YҲObAOm6]In}>$n^ E$A A&-  a4tC(p@ cY)yі'>˖(c/膼|!_CY.6+e9YЄ&,Q %x$$+@$I 9=%A}%\#NqWҁA0)P*ԡF=*Rԥ2N}*T*թRV*Vխ*uL'KٓїKx1.!°Ȅ& 0Bs8Ƀ0E)FFl`)I!}ַӜr6>EhC+ђ=-jSղ}-lc+Ҷ-ns6и;~2_5/慇b$A k~A"1 F4"DAOD $<ܴ`"*d/~ /,U {S\' Sxyˋ#āE|^8>a+x d=%1@[sDx)mg;{kx&=Fwp$/߾ peܺ,8n< | L%4aMH".#&LTlhO{^TNr}ASoXn0rg`4aj 7u.7H4֏X$ˆ8[o  g!pR@ts T0LZ ɛ$U%U^#&TRpA@#h4rB)İ%0HaS(ԢAfB-:[BbS袺a,I֡F0#d /c23Ft4Z4D  6&tG0Դ2A!D:^(x(*BB1C$5)+ $@( V$CiJ3eEzd/v/~13j[IVI52J]K_Ћ# ~M.6P_0aDݥWx`A ѷAkgN؁B~>෱h) >+n-7}Gkk)5yEM~~#@k|88{\ϕ+AT|O1| ?@8P&T!C h8È1fԸcGA9dI'?@eK/aRH] @ ,tq34_Ԥ#iS`xϟ4b f lڈiAgڈEF0 "p` F$ @ch!$:A+S\sgϟAwtiӧCFaΝ=U82IqڴKXݴik?\aE sˡ|NsyP|h"~ʔL(IH"D4`1[CuaP ,!BML!PB4?\'6)0Hj*,ʲ9sq?_-<L/<’ " +B!(X bq9+[- x/ S1 3LS5l7S9;SO;0C8.@M K*8E!TI%]n  =c&+o<%{=#` a+) 7) yW/ Va-cMVeEI:l Bqk?Q6hcj-\ZRl08 U% S 3 %PBZ͝Vr)a_nXxh_Ph l #n׍qk(X啭 3 xUT|0q(kB=#`Y҃ iv[ꩩ>Sj=&.(Z *"mV[F)r՝!7f&'`B!( X]tRL饥Z7A]I/t?\x@9T 5h#5p4y߁>yh1ƨ;;#OFXɜV @d8C5. KF8i\#jxmMP@!<iH+E92P aOhBPD1\xGQRCwJT~tX-tÌQ0HCDp P6#ɛtrK]M/"de5hJU^ڬM7r|4}Khu;H&^Γ APĹMHBL$rΌ4љЕtΜ6i͈s):Q) TQؙZNx QJw&5)^Hͥ4)L}!c%0ӗNa&f?vٕD/PΡhTե654 i R4+YU*Sեh=Z׳5tkJTG(&䀭o}YZb.*W!J#W(7Z̎Sc#X@Ծum\Ujo [ۚZ${P [&2Y6P6lVUjֳl6[]3uAI▷u{߻6z{o}93&rsQ]N#ץDnx,KC^ϘWQb-ί}*[^;X!GEAPל8!"{؛mhx|w#5e-o2v X#|S{b'IrA\Jyws2I2eTYh7_ ,xi3k29u%=ׄϧA-A ˜{ +nAm7g:5S7-N33Wlx`n0i)oU[G;ɮk`o۹!6.i~uo]z׳΃ Hc>lJ? ҝ>J]s5|}oug$3;t/J;eyo2v t% ۳o=N0pp Pw@=*/ϕ/f_B& ip'Pqk0wpKPmp)0@LƐ`O0XPP/3/b"x0c w y PP sp ߐ P rI'q dp\#[3c 10%1+Q0ǰ=75w`0< l> ѓFqW2(Bq1gPK1L-rknq߇UHW+CɱUQrl`}%đ2ұz 2ZMP9!U'Ob' )"-k/t,!5"Iaz2~q"]%n`p@q$$u4x$$(`r('ݬ'[)s1%'c%N(*Ҷ)'3&o*o*,2$+%&,Ra(r--oݶ-Q/-A"($ S 0c 1ǐ0111!3132+1533 050%;2c L*n5Y5]5a36_3.ob./o201s372%7w3/S871S7A8s9s77{0n:S$.o93:38S<ɓ<Ó93=S=ss::-"س>>3?S<ݳ?r>'b? @ @˳?@$!4B%tBSA+A1!(C=C-ti2tDqqCCQ4E 4DD] MT!TtFiT=Y`^4G/FF}GFoEGx!4IiTHH tJQIIt K)J/$KֶLLcLMtE:۴NAM4OSMNTTO5=5P!+PuQwP3Q!Q)2"5SiR+uQ/245TES;UP?u2D5UgTK5OO(T5V݇U[N_&d5W5VkLo"t5XW{Ku"5Y%XuJ!5ZY5I!5['ZGu!5\U!5]m325N5!Ե^A]gd^M!5`_ _}uNS`VVȒ>K b]\'C+ 0cq,Sb7Y?A6eGBcKKOvAU6f?e[VB;d6g9fk6M_Bu6h/g{@oVhhVN_!iuViV?jVdo(GjeVjvOVDk]q3lgk6eVmٓmcn ul[tnl5mcGdo3ptpo` DIc q3rtr/r-7H17L5a9s-s4tvt;WnQW]UrYuu7veW[ipmv5wvwyWY}n7xuxxWWWmwyeyyWUwkzEz6{WSwi{#5|v|Qͷg7}t}k}New~۴~K~wLwc'6I a 4uXG8^!8_t˵-D1[5x3AAEYI5U8>YW]3khp73HwB-ua3k#ݐ8x89]q!Ԉ}Vx8)6Vk@8xٸ[h8xX` ɸoX3!9%y)Yݕؑ9=xC5yAQ9UY%veyiFm9uyyK}9y9y9y97y6Z9bùyٹkY9y%9؞z K :zw!:*yd#-z5z99AEHMQ:UzY]a:ezimq:uzy}:zZ':z9ڜ:y::zwz:ź:'պݺz8RS  {[Y{!#"5{9=^/#>Q;Ce\_d{imq۶ɦDS;;.V{۴;OMF۟;{ɻۼC؛⺳;½[!#I " "ۻA|'|+S @;_c L91|ORWO"^c!\OمQ!Ye烞=-]9߭a^ݽo賾 @ʍ^E!}陞>s>>a^˞}_>#@օ)y^A9_۾Ǘ{!>!V b' ޛ޳ B_ /Ysm_]c!õ=.:?e?}_ǿ_߇xS_o?yb# Р 0dxaCF (Aˆ'F<aE\dǐ!SN,IҦD/FȘ`̙4Dͥ,j) P`(с$v2iɄ;z(! B} 7ܹtڽ7޽|AH_ę؉g#]+#HI<(6g٣ ?~ u`uTTfղ p4W—S'>[֐a7J*V qJE(P8ԫ[=ץUI!b;u#!_r` ݻa6X_zCRxBzi\UWe5[>]a~a@=rGb&b*fa.ω{Cc>x_~-VA!zpRJ!x*UcZj)@4fbIfyE9ec.ZheV4"١qbAwNy!| '^ 駢_F5 "Pniz: :j@ 뫡:kAkJ꯸ NjRj҂Hkmn fJ;팣Zۑǂ, dA~Ѣ LV$J0 TP.pwak^"L.ṉ| r"Lr crhЮhILq]3\3>;| bFtG@ pROM[BtZ'ʹP @bMvf APt[MwOrͷvMip@@x/8xW ys{@_PyՠNp7󥓿{N{9{-OO||s |?} _@_}o}~O~柏~~O~ p,*p lJp/ jp #gp$, Op,l _p4 op< q=$*qLl(JqT,jq\0qd,ψ2;PK.\)\PK;,A!OEBPS/img/cobolmap_config_new.gif &GIF87ak1iksss{{{ބބތތޔޔޔ眺眾,////////////////////////////,@@+Ȥrl:ШtJZجvzpUhzn|N~vd.̬ӗיd22 Ht.E!=y!ӷ"<%n1HMjHE۩Ly›8sɳϛ gY#|6m}HɢC4eSYdG-FٳhӪUʡS-\^΅t޾O5P{$ǐ#l;ulIpG*ffҢgPG&F ~=[دaߦ{ Nȓ+_μУK7wmׁ۶pڃN𰗷ξ'o-˟ο(Vyہ5y7^} ۂMx |(b"$h#x0(4h8<@)$.G&i'2d+),LVQNN!RϒT^iCp)tY$g|'y ex*e0vdY8aXif馜v睞*jxꪬꪌRZj뮼knzkkBAF+*K4:k v+k覫+k:$  l' 7GLVlKwSI $(J 0G,&- BPE^T> ~UϊO/GOpס1p/0F y閛sIDMMz-~MSFWKsWthNf~W\Tz5PPfXTw`2(JoU^vi.UhYvdŁ H 'HLVYvYggNtwm.M J PHyxxsF\IE(M-$Ah]vUxqy/A&,HU(MRiZnfi98]8wNg~1DzA7TG|Xb~sEwEh҃Eȉ80(㉥C8C !58H0??@/ e(jċs ňȸ?$YtnWM<8$uvh=oJbyYwT=Z]WWyz㸜UWfko[CDl<ǩ@yzV1V{QGj6CeXڤa z;ڠ/9z ٪FlZzګ:ZzȚʺʖH4:Zzؚںڭ:Zz?:Zz亮JC;ԯ ۰ {;@ 85;Sʌ؊zzתʲjʲ2۱4[ k="$'.;>۲4FkJ9;;=[I{?[@K[ *+]?_G d(˴l۶O;QۭH8PFb;)۷A{{U۵YB{붌p3:++~Ժ&f^({V{}{58J% ˷[z[;y»Ӻn[˹T{K;˰kjK{K$k aKқ`k'kbݻ[5˿5\h|\: \<4l݋4ˬ$\&|(*,!<:{)T1,S68\8:Ã4T? f3DF\6Hl 9A(4sIn' gGMLSYZt5j|Ů+>h>s?gg*~Цq'vfǣ:hh }*=p,ǥ>n fhV>|zdZ u1qiג\Lxi JaG mfU|T|BXo|IlKL6<4Tl9T˾ Z|̮˿ &̮0O 4\pM| 3̀Wo}`Z\48:RnكPJwӓƞZw=ܑ̤::Pv ot9(vgSjZ ;J Й[8QGmf|9x: <̪q}@;cף̀؂|~*S؆=jỳ)؎ 2=ؘm }1o-X3PC.[{;8q_0=яN ~kCENٷ鹮B%>T뼎 r̾2юTӞ`8ˆn DjJ\k_mgwexNŮTLn]Pǧ:?M絓@@i]N%敵zނ]48懇ȐlOƠ w#Mo~ S=5x $_d5z^9OW0?]>LME ;'/dH87/'^R!c߬ǧ{՝9} fOʡ[jmێWniU턇O {7TowCAO hžk %To00P__įpҊŋSSNKm7NBuj|_n(!PN83?BO)AOY@8"4.MNUb['%2vwuh_0Ppp1L1 rO2/H.O31Tt4͐515+iO) sז5Xxt`yYQy;+Z۫;\| }=\<?_`@ 4xaB 6tpx)Vb79vDѣ!Id)Ydҥ1i$f9yӧ’ӅgLQ=j4M ԩ<1zѫF 롩jmrC/%ɓ^kqVX$Hh$lX߲T]:5u/ȩ}V]WU͌gM6:{w26T8t؇" }`Ƭ4\}u-+Q[Kiw>oi{ 5/+%G/-.:3\gzUϷoQ(g߿& p,|% -GA5v[[8RsXf4SQ qoWg N(9e[zGkN>轚z {K>:}ߧǑ_yr ppuGP@[ ,PakZ*8:L,ڦ6%K3hQծU&c2i.Dؑ^7t춃V q8 ^&XrH-^WoYu3fX8ZNf(ǰAqCcXFe1.D\TAhtH8=*2,~c%H8Zc7RK~HIDH'UvJT2%P+ 8@Ͳ&piZ|0YLcC Q/cLev.q35͖L&Km3%fiqH:鄱 n!:g, Q8vshFcƋuBMeCRT _->7 fu|Z]!a%F>3kGWD˂g 3RD,Mٯ1u=g6R156>jζr>HUjMSΒhTXZͱ&fMYsLqBؚouvWIRW: Z*Xrְ%l^A~AhC0`u>G/ c`8ZBDm:5.0T=iY9ZmJK퍷 KkH>-,MIE+u\_PWuY #64Tlh#Է{y ]o%d9ֱHh[a!Ƚhc(}9R7ҭosH,5u +Dzo;G7噭zk"JWĶ8/qWe<5$,\ycؘ Xcm{DD.rOܑ$/=Mȓ\)gU͕-e-Ke P-Bf6[׉ᑳKHBdFgGZ ohZy1y%$+x~\p~K93PW3Rk iiZ#1(NCۜ ʽh| k~ίTy cX)wiHkdk\Dױqlν6Ym6Z&I3l)[Џ.GSN&>M*oS7}M^I 穮;ga9҉q)B)=.W%)r1'r5q=+>z>t<;7zLgc1v<*|sd]edym:pC7:ݨK(uhqum:W]"f=Wx?)_y_9yI_z#WYz׿i_{y{_#W|?ї_}_}_~?_P PO`#P'+/3P7;PK7 PK;,AOEBPS/img/execution_units.gifr(GIF87alތֵΥ1k111Δ֜ޔޔ眽眜c眜ΜΜ1ΜZRR1!B!9{1k1c)c)Z!Zkcss9sBs!cZ{RB{!RJ{JRJ9k֔)ZBk)Rk{1R1R)R)J!Jcs֭9{R{֌ֵB{1s)kJ{k{R{cB{RJZ{cB11)֥Zs{k{ƌ{ޔcB9c9BJsRssBZ)1ZsJZRJRR{RcΌsBB9RΥƜ{sRcJ{έJs,lG@*\ȰÇ#JHŋEȱǏ CIɓ'UȲ˗0cʜIMɳϟ@ JѣH*]ʴ货PJJիXjݺUUӯ`ÊKٳhɵ۷pʝKݻx˷߿ 7'È+^̸ǐ#KL˘3k̹ϠCMӨONͺװc˞M۸s_^ Nڼ+_μУ;OСS3ϾB^hbEk2 4ȓ&(sԱ&]atw c_@ƄL2(#2,! NDMƨ$ 0(㌖u 0Ȇ;!b^)SL/ C6x1T3 4f\v)\a)&w;"F,,B -B0K.Q*f,'/8|@vZ8$D 5Azp ap[ gH8̡w@ H"HL&.Q8B/ H=,j6:@AaNL6pH:74.f a9@p D! C8 P@HJZ̤&7JD (C*L(?B+1Xz ii^ 0IbL2f:Ќ4If~̦6nz 8IrNL:v~ @JЂMBІ:D'JъZ(F JԢHMRԦ:PTJժZXͪVծz` XJֱr|hMZֶp\J׺xͫ^׾ `KY:d'KZ,z hGKҚ=jWֺhS+ͭnw Z pK\Mr΍tKמͮv^ xKMzᢷ|;ͯ~ kZ+%0[W'\S0k-{×Ę1Q*ZfLc8lp@L"HN;ɄL*[Xq.UYLf"ohN3\\6LVV6_`@3|e=,, h#7@*lgфFA:y64E{ˍ+}gRC=K<:լ]jKԩ^G  shTխ'lf/;ӱVg j ~tm7`@MnՖfvvC{֎}mv q >Mkl4ph{ 7A?,c< 8Eg[_NxWm{0@bv6s?GV9.mCct ϼ'Gcml᎞+>eե>/h_eltpgNTvҺ~_^qO Tp?9ЏO[? p{=@4ȿ_58Xx7~~Z{]g0$Xg *,؂.028.6x7uv%>$B)FxHJ'F~VV3{XUڊxnNُ) LHH(ؖ^AVC >J[X { Vj 0[UR,txVۓX_;h5/(+mVV:0pL.yyٓ5)xY!Kۯ >(V >kZx(: ZۏX)h){ [uh kًV:@\ɆһT yXHX;[Ӌz+3<< 3 PH;Z+R\;k{hUl<[JzۿګV+0Vٵ\۷ĻS9< #I::˿: އ)sh];æzY7z+fL!\xzHܸ0¶Ĕ}e<΃]l5\[|KƛÉ|Ǝ<+3%+\M\Iɱ剄yJ`({8Ƙ<ʏ|[IČ*LǙܽś]$ʼ̅&+H+|͙LiInL >< G ?Y|BC0jܧ$̶\NP é,LΙ,Z lЉZ̞,l̿ܽ tѡϜl:Ӛ,,Ŭ -} :լvB\DM# m(-7=mOQ]\S҇:[p^6x[~'.ҁ]/^]5>dK*KCOƭ!NWވf~9_n^5啥'Xe[}>P^|"{>Zު5 Z*\|snD.yhNjy霾>Mn娾軎ik  >L2+.~Nc.f ~Ȯs+ꚰ,.7W@n&>Ԯ^em~ɮVW){.so^-%벾V? /ـWEpG{{U:NZ>.f$] wEZ= NZj^7KOnϸBQ$دgϮWTeڮ﨏N26^oD+eӘui*?r>OO܏VԬɝU/_vC &$0A >QD-^ĘQF'RyQCtLpLa,!BTPoEQ.@U:| aS]&C!WJ<[PK2"eJS'Oq{n^ ST XbE>N 12ۗ1G _bfэ?ꙧA;~l$)!XCʵ0ݲZ3瞤kyP˝?(uXbeG\{-eqsgͿy'Muu={㋇w/0: Dp1l r8+ps)7S?\Cs*D1EWdE_O1c;6,OĊ8LoD!Ir@J0d,&$,O d< A,a+L {> ]ʶ+!/[DT(MDQ tώMJ 4[RE!TQG%TSGųO$HUOW4XT͈:}5WNWRSU\5>b=vP47buWiy'a5ڼ2SluYm%ק`︅4١|0u6Rt9vt7_}7 Ow~fa#{IvXb46~nA&V!&cعWY׎SN7mEnfcYwNg~&U.ڴzNiƘj&:ॻ[[AqaٗfR6[^ƻdF:oqnk&\/ZIjC,q$;Vp aʻI]ʠ˱uc`/OY3l}?E7LÎ)Fg]uC\]ƿxùfQG?}Wמr.{g={Cdy'7᧺,\OF>}OEC+>i/Ýu@uzܟ?yπ_N1t'Xg~WA^ DpnSC_F0~4bO8´dQ\|*E$Xb~2/p*89$k{Mo$/(@L:{S]v@M1$}| A*+W!=hF GY zw: 4-$Dd2e_Kj"̖_ZVL4!zyqVӜ#1mǙt8]s3d TL3Z썖9M{SOt6lY !T*T&UWjxbu-gW{GST8Ysԧj Uߥ5Gi!JyE,T-HQVaT4c+cXf;9 H*3^ojQb)]aMkZNlq~YV[m^k}-wD;Q׹[ljٜf-He\tZm,\E+w])or]nW\e/: KH֗ͽeLbn, 6hJۑWؿ.e`k8>h_'FqUb^4yp{7quc=Yc ;A'ld&m='z#A?u{.a okIEs:]†\ 37&Fq{t-CB:էlu8K]_1g-/4;}:a]w~w罒:s,.O#Ny{)o=󚯼ϛv%Kӻ<_}W[?>N۫5޽{gxA x#?9?3gN}wE8~cMG?,ϟ~'n?mǿm@$@Dt\Y| L  T |$DdLtDD ! @ $$L #DB%tB`'Bƈ)B+¯-B/á14C(3TCH5tËh7C9Â;<7>\?340CDDTEdFtGdDJJ MNOPQ$R4SDTTUdVtWXYZEOKEKl^E#T]a$b4c\PD pgDA ltFdpaTFf\@tTt| v|uF Fq?6 @EDUEeFuG%e|RT)+RP+=RMMF/6;"iL8\ YZ[\]^_`a%b5cEdUeefu\MR/uTR-TlDLo şS35S~!4 wxyz{|}~؀؁%؂5؃E؄U؅$jl]P LuPQRnRkHR_!##C9v `ؕeٖuٗ٘ٙٚuY  ORpVZ,9N2YЧc[ګڬڭڮگ[Ed_$Ό"Qp۷۸۹ۺۻۼ۽۾ۿ%5EU\,ڴǵ]ʵ]=[%]a\!Ueuׅؕ]F(EPhy%\#LTeuuU^(%5EUeuE_#&6FVfv &6FVfvab8"6#F$V%f&v|'()*+,-./01&26c2 6v789:;<=c0@A&B6CFDVEfFvGHIJKLMND;PKPLw(r(PK;,AOEBPS/img/cobol_samplefile.gif[GIF87a#Buν9q9mBq1mƽ9qƽ焦Δ֜ޜޥƜΌﭪΌHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH,# HZ*\ȰÇ%Hŋ3j4qǏ C #ɓ(S\$˗0cʜ%͛8sܙ&ϟ@ J'ѣH*itӧPl*իXoQʵׯKAbϪ]iڶpʽvݻx˷oȺ~ |0È2LPcIL*ˍ,\sƞ? =4ӣ+tjŰmhmW-U@mILtPGRWm_Wg5][wuK_-GTmlvp=rmwOw$2߄HA7W7"z̖w~5R[礣 :~\^nq.{n!E+|gb[ OUL+C;/Wogw/o觯/oPX0 HL:'H Z̠7z xQ_ W, gH8̡wʰ@ "("F,".qO"C*ъM̢B,2 8F.ha5qn| (waiGQ^ "18&)Fp*$I J6’d"4NB“*e"JIH\)"Jsd,+9Kֲ|+ K\&$D.L(NIaҙ`&)jޒ$D65Lhj@'Mo.@g%I vv$f< Lt"D&=ycr"ä;\4RY$1L䜝,Osn'DsIH8eA%ڎ6 O()NO $I BBMIjRF;Aӧ#*G,0Ħ2JYOU.K+W ꑙAz/qUtJY{V MYSPѳ՗DjR/V7ͫU׺MөW~ht-DKߙXQHUYKuDԬUTeF;)Ɏ鴔ëgU*Oӵ^cYZzS)-1QUMB~ŪLn 6ӛT+pP.ڬUIwњ RYMn5X "z Γ9{Ή' {tZs:ק.MrJ~F6/MN¬mBz5uMnO܏>^IKm{vm3aw\TOK3^#nS{_u<|7_/Nr{ޞ0gN8ϹwnށaI\[NcN[9ַnusPbؓ8^/>?f y<{ٍw][;.Ov$#/d 7~bt'dyA^7z^?GO{?>~둟|3wkOߏzO>_T=CV= kR Z<0a!˟oƅaZ* 7GWWEwxwgw{ؗu(}pD}8؀x~'h~''y4{e!y׃$ȃ h~<~AC8g?hNNHEIRH74vMhzfTv_z0ww.($XH(VuFxt9}4wy43B_؄WqȄB#(ȅZ؈z)hȇSxDGHHgXWǁ0$](xHX*G~>xL'y(GdLo8XxX@~Bh%GXG^(hugȆh8ȏhb燑gȌgRaXHg+XC؂tt鑢Hxx.iHihňhu; dgȸ{}~9xV@)熎X:VI(,Ԏ8)[xTH,9uu4 }(Bُڈ?Qc铆d6e}YdI9镚`9[)Ǒov "iԖϗxsi=\ȕbYiIYg}HYg?'|.y8TzRHHU)V鎹Iȍh48Yنs>Ȝ):UǛ9iWi角e|9J,YBP7R-hB~&(gl)pA X xxvy6z8  NIj$|lY{yxo|$sYtFQ:~/pp2;<>갟DjwiwDʉNפ[L*bPhPBY]>}|>ڦځtFHJGr7٨SWʥ^ J0eZZ G|zvCJw|Zꩂjkh_ڨKFDڪG6Iv*gȩZ8x7t:z 'wJ~)gr媨:w J#JjzکҺ^Tr{ ۰+? ꪫժZEJt Jź隫ڌJF!+;ʪ#;pi<+˲{Why:xZjs:tR[|HK˭L!wj[TV+jLmIuvȋgIɂڟ *"Hf[JJ k({)y8i ۲ wȠS)w.KXۜyb[kQʢ*v˗zmbŦ+k i1ɞcشwCʸȈ拺8 Û+k[Hu2 ;2ˡ& )ZsYh{;; 컙,y ̽﹢Bܢ쟩 a vĜˣ s+\{ȷv~^H z Ɉ+<ۃw(kۻ ,g9h]촽KtּE}},ܣaLm:uO z08wĝH Ma{&2<ʹP=Z m:ҁЭE]L"l:^QmOeY=SUW}le}Иx ` v=mmyL>1d5=+֋;؂+]-̐`yA{ٜ٘ٚٞD7dڍ}A sԯq թ? A]rv]c -z=ͤؾm'|֣_LJ+" Imm{{MNl`=Ψܤ9܉%ƴ]Thj=eq'ںzL܍, LǬ9m}jC<~R-.̞ t隧[˗ |7!׎̻+NjBmP㶅(ʭ[tmz]m׬e ȓ;M-W9̑{9/O~ |ܷ^ͰɈ- \i Hѫ )[$-ۭʗ IizC,7dϩ9Gڸ]=˖>n߰x)>К /ł_>ÏIHޏܙ|@Nzj~\nzyԈ;.$̟,8α9,|&gS MyLMYMNuΦi?>_FL F 7yn U, -MudM(/0/%ܬ}]@NyZw6=έЊÌ-yӔn?}_y!>و 4JL=IoM_p[ݿ.?R/NO݀p 8HXhx8hH9I iəs *Yyh:JJ!hp#S{0L\l|p|l10M]m}mm .>N^n~/?O_oϟ|kW_-Kf0…:ĉ+ZbJ6>1֬YF2 $NJ*C|i etLCbwLE0ĤGuPIj*Q**fu 4Oj 7"r5ʥWY[ޏu Í9m !o [:rH sn8_RK 9uҳ Yq&CL nA >;y78aZ>(9oȓ79pG KL{Ȏuw$oӽO'4?u[LZYm 6dm[q1G_tY(6"j}Raxqb=y +(ߎx"!N-u&O .%CZFX!aAn٥}iaXcz!Z((+^ydI$c!eL @nVxaonȦ_*f%j(~vi!j{n*ƅ_ꉭ݊e{hBjF [ =iljn%ev͖.\k*e*+6Kk&t\r% Q[VYeW+/Jx/ o!c{/"0_u k1 /V o*2&rn1lWʅ,^+l,,NPψ" "{3!.*9I:1 %!lr-o\r/ ` sȝ+JmD%SQ3B!)M FgR~aX d=ԦHPӚ2)iN,ј5l8I)ƓkLd(?)j1iMhZ֑r%պ2wHo`W֛"z8TqleZ<+zWL2G^宔 O*_lMue*2?^.N *u ɮ&8[ұ8gft ;V Ԋk=o7[{BY8I<,b}r\^yvA *;wfjw͉V[,/36zsQ~"*:k,U1LWnBW 5[}J6V]S)D첫,< n! ;g3\(:1JS:J/1t2쐬χMib˱`E G4Mm85*~a N{qS𧤳묫#.EO,qv^6i<9Zޗǜ>G[W(ws&Q92.sH_x@s>wZw'JZG9ktc>I;;bXr +~oKzmDwpѼN}y$vgT^K٣{>=iDGos$uO{c9cworEg3C_o>=5}i `ͺ[~x<˦rSq@}~gmЦm1r<0@oWh6jhzUmE.%;3Si"f-:sccW }Ui`%gU*j_od~R"p~cvbrROt*~k|hVm^U,Ӆ577jgZȁ7[v3EY#6;(U7h])HH~/}w|V{e88]WIY D'tKqpbTD{i}Gqaf~wnIx)Q7?f݇`Yc9ĘvY}0a|[rؙvs1x|y=ru"gw !I"FؘU?K?["Rўɩ|:wM7Z= yCv *q쉜ةtxr*j v y1*3J5j76ZW,z%z jI)zIykA@UjUA?0AڤKFEJ*cNdt] @o oPYe\ǩ}`j8L))ǤMhgUMMQtڄwʠٜ)jZAkJe_g\Y: Ri+sʕ7 S&p(˕q˦ Apk8(O,L,{E[~Øx_ E6! #Pٲ$۾X8lǶUuܱz, Z*j}Y(QǬ=jؚ%H LՉL+mC:kVۓMQʃ˲@ȰWۄD룦ɇZ-Yi>LN  =Z+=۫UY((ě=ؽŝ{F3norM/G߷,OmW!蚹EhL|~ AKٹF$l몲6&ڗQ _kح<,W=֜<8Wd[bn\;[G>ΐ ֧h!8fJ6'Gi7gK^+`^xOfeLb;(]D= AwNne膂]葘=|ыVS7͒L,Zҝ玗Z2N>^ X/#}/ю->u{֞`WjNj^1<陵&nͶSnr OVyj탬&?h]Q=Ŵ.|>B@B땱𴸹 6p? )d@"9U|ʡLIsP}F "0mfE:ӧ΃:]Ue͵UU2յ^N<**K,Ŧ;!yV$o 7XI8侅]F+ʕeϦzT믆`+ 0g5w>;4giSj]t.h[ޢKNpڽ[d!\vg?HÇvlO6<Ǚ`(9ɧ$Y6^oFڃ)ؠMZ T[ۅvu]bQx|!y_go;9~$"Mkd!m'oG᎖$Ś(%b%'-W^|2_ץ7Xߜ?I9CyR%M3RXXZy^eegZ@=̨f2qs")zlY٠iem{Fu2e`Ef藑Vd cc]¹IZ*u+7ekCeBB whr# *v|@G1c;ZXQ$dk酡* .0GZ[J4kFi$)s'1\bgcA~T/%T2dUFjٌ<#DmM+TNG2JZs̵0J~xə`MꆦsY7.[l@ #qJ;J+ņu>jF.C9mn-uÏreo۳ۧ6@57ᦫO_ѪQe4[n?)Z@舵n]0s4"8ЁAƈf"7o!A]M^"Q&TG a:NnJ@C'$z]\2 k"Dyr$T|BI9/+b7!ζC&zQY_,"?ʑPzFm[dX+bܢ]F/_7–&#(&J|Td`@,K"{@z,Ju1nR5bZ$yƑy2:X!5Bf:Ĥݟ":^ Dc+c̍(3-$3 /]) ]Z#R)R;'bPC%*&OtԩQ eCSTf=ES)T#\W*VVfrVsPmָ.·B-5NѤOukT(<8d+z\1:v?#*9n(\ݫYYyvE.-3%R{ ݆*K#.B8 2JvS3h9y}_)Znm" nĶmnކ̬f扦Rc$8bP-.g3kfKtE&N3 û|w+I5ӰG,--'AWb[~Y3I,tƭ &Ԓ,PV+>+RjuҀ edΞ2ƌ0zW p`#"9Vlm^M[;2 eq}Z+EcOnKlىL[Mf Yη*r#ūSиHjtS˖l]`#]ucڲpM KwJ߲cm8i|gBҩװQ4Glls6ԋiP]U;v.*|?m NN8v 8vcծF8dsǹ06`O nZSǃy6eem~ s˿h/2q%fQ^x[rVv&A3F:+%5`pXUwhwWe{[VBf"K_=d^]M/xWiٯ/myx ޮ aO Pr{;S߬O$=Qty?t}gW^Giˍ*wC=Y/5M9kS$?}sO/-;?%/K G |z"@ETM ؀8|A~TG5DP"~'$z'jW(6#~3tdGXI!"Faz7LyWL:6xz&I$K%~S·K=hy&FR0h2QDMy]؂TVطVX{Zy\uw{TQMU5h^gA'Wqfcgf>X[w'g #Y;X%87mQ' +\r/54u2u_놇R|QM@eG@RtxwlZR`AsdEkzGup$88fv)p8` 6pQIspg]ng>Q@S@gh>&u&Nj{fdsl5c8q*v`d7w-`6f4_M_OulxJ!xH68brǎZwoJbu7x$Iڶ[v6[gmTx6)6*9pFHTQ]%Pؑ&[&LQnfi7θismضprHi挛wzjG kH],aipȊRycP9P Y$'w6H[ɍ@s8lbIU&XuOhil>F|*8,Ȍ0~ɍ:FmӒakvJ uGQxyI X*lo9:ֈ^#n~ b8 q) w|擠)qԕ49>Cio6j}a)g.It&3) uAC9(xq]IԐHLSM6V DoA+gɟ),]j<آpi|םCǗ=6: su)tuiPVw$Jwv8>z9) *Yj獊7з{Zژԥ,T^zChh`xlzn }7x&[g4ǜ`jǣ}ꣂ|93{jxfچz\?8 ]32RkgZ"+ݙ_bP{ÁrڳitKĥV:Pbu 6S,w|Ỷ[|syg8=٭j?{lr&tlܸkZ*+ ]䬝8\<~:>=]?эk>7LO]. MU- $I^ N/KRmB}ֆ {lM8m^ Z؊،؎Ћ su-ᨽ^{sd[}$e{ʯD5JU ۉ`"jJ>_r82 `t^ݝ ߝ u*-&){]׏2f Yޓ4)q]:n NJ^^osntK8s7^vi"^yƃ,yMs2榶R$]5ƍ&(7\9lnr.zN dl]FLt< ~<ʐȵl,.Li`|,)Nj㭑w: [nj;ioVӌeD}Vd^gL~ꨮŜϘd0f+kŮiO(滌˅+6lh7:× >mk&r -;Rk|tl(̶]ܘa\&aMl-WNbdv~=^o? j}CKݝחiw#^9O(A-ݢ?L\}bajs y~B=|~mӣf/Nܐ;ѽuᝆ_DU߀p 8(hAxh)9IY9hٙy #S``zjp! ;K[k{ k1k,M^m *Jzz;++_o lp/s |4ഄ 5t!tQdbDH+u\ƋB*.U/||9k׀4kڼf<{ 4СD=4ҥL:} 5ԩTZUdJ\ %iC=K#Ij %6H$9P^k­)k^~ f:1SVx7]m5]ћ F鮰Ĭlx솢-[ogϻs&{k:U5q]r!߶>5v{>="MN[=gݘ`G_}GHWȀX`GAWh!"ݷew1tx` ``*h"N!rgz^b%(#~G 8L>I$Mbw%xɌ%HuۙHMMHI,Z)`\Vev2hg}u܏$+̲h.CX!^.I&pf~J of'n)9 )1Φ&oiꘞgd{iVꠧbd6q框rjhѡ^kfHq)kn$-f /_*g}j+[*^J9Ȭ) @DܴY-*Xdz1ļB1[0P U,)>/j<2"KrJd$1J.0 0Q3b˵ā챮+^.ۻ!뺢mF⋩-"5*h˃p`%+N]K՚^- n챟j|;|!˝v٢m:#ܓܷo)Q7 9-(Ǿ~#x.n垾fې=sgߑ.Cg;y7;8. ~ҖX7{M"CV~HF#HpO"+Czm׋¡|[duA ]IoDu}> GxG-GWDz2~P Iǜs6; xs=|spb9IyjFAÙ`fcL+Xe {$'W9Pyr/nӡ7QSި˔^H[Y2z()WPTO RVq1̣J,PP{GdQ8Tuibш@/D}5P@\1X"NqS3;*Z/ʕWs]j/QBjIJliyÝ׭e k*+ZH#&YӞTy(T@U{h^r&jlıXg6ֱҴ~'-(Vf++(Nl"QͩlJ۞VjYpF"ɂOB!VEnX%e@fl^,`۝Moxx6 _ϻ*%+ޓWlHh;Ow{W+yô*1؀Ċ piG7΍hk,6 ֖qñ$,Vh]૵(Ke,+ԗyc78?pi>§ ZzZ^ѿOk3ٟ ;~/ϏU)䓃7$u޼V6i[{ܷx'o%Jj2&KR<}EWTz6IǀPkvi1|M)}o&{*xx~&dYsq >"m5hq*h1 ]'#BEo3_~9U"m]'`rX]&V''_;'k,DFl WMWWube1%Og8YgyBlh|0^ljFjhZZ_"tib49VxG6U^6z7ae%vjb33Jdu}nX58YG1ak_E1bؘY{Esjh%wf],:$t_W\weiCj9NF@u`5`~V sf(k@8l؊FYnv8hXh]+bYw 8p(t C÷zpw蕅ȊEHgn5njZpؙ؀ ԑxo8gB ?oˀǧx @ YpdD {7WXQHV!%#׋9Vy*gF>!ě274ijI6WJWA yUY2;IS3xHiyչ: XY 9T[ɕPv`q'|dǑfq"悢ׁو=$9#H J,ء8Ƣ)'5xH+J3l*yuI#:^xJ}uzȒCڂpX{SnI HS:;eeʥ8Mg h9Jh見v~J'Jj~6zy T')Z(zէJ,ک$ L:yJ=ʣgz䃲ǡZz}"]:dʥjQɨ0jCJږ{*P |٩zfXy9&cY7 qC)f9H$Zj}%ʘZ t#U*moȭY_%8m[oh/$Zhs[х],Ԏfm֭Űؓ;Y8Pv' ɮۥ Ҋ!kYt^^f/8h5mi5affLS[ H_ّQ96bZbB;Q[*ie-/۽Hm+_SHa;rXV)KF+3r;+)_kܘAs̽f٘ewe17S[ɫ뜎hǛ}H& aGrs#]VWY Xj IBLD|w=Dmm|;,pӠTFkz ưF0ȳYC^r^C٫^X:ms,6Dh|GΊa{_X,3ɧ81<;\ǣ|ZDulzZ8c\z=xMGi"+n͎ܒ <JlǨXfjP\JΘ<Ʈļ a^Sd.1N.Nn꧎ꩮ^&p(#빮NeN`ڋP.Nn׎ٮ.N "0P.N>ƎNe lݨ8騐f /Oo!/#')Qco}MoMSѽ/OoǯȯROo׏ُӯ/o_/o.ǰүڰՎ 'h^ULȰÇcDV\E?Id^L`Aƍ(Y&E2o^3C?m4QNAER:ZiӧBJH(K` ^C hRFg5 'ښK5% gR^˷ɬp]@ ,˘,R,r6#K&[ͣ)7L9OҤKsNSN7xukئ~}k׵eF-hz*_<`D!Dp0edۘkOt'g.8x۷=}9{߯~~y~޷^w5 j!Me]A䱧w[xڧqfWwu}Ƣ{ߋAPh"w煖`@)*"K 8P08_8ހ<\[Pj%^DWele8t֩I& `gqe,hcy0FI(f捛bjc=YȘvE2@%i2z+夗 ,(~¢hjqkF!ꨚĢΉ'!к6iy27 N;.Z6pDkT+IpGܐ‘$cgwܱ L"l(,C$,4לJ6<7s@-?mH7\tL7OG-ԫ.MXgZwp dfڠptmwވ߀7;PKn=\[PK;,A&OEBPS/img_text/cobolmap_config_new.htmY Description of the illustration cobolmap_config_new.gif

The figure shows the Configuration Properties dialog box for the mapping. The language is set as SQL*Loader. Other options in SQL*Loader Settings can be defined based on the requirement.

PK9n^YPK;,A"OEBPS/img_text/cobol_datatable.htm Description of the illustration cobol_datatable.gif

The figure shows the data that has been loaded into the target table.

PK(5*PK;,A#OEBPS/img_text/cobol_samplefile.htm Description of the illustration cobol_samplefile.gif

The figure shows the Structure tab of the Edit Flat File dialog box for the imported copybook. From left to right, it displays the following fields, Name, Type, Field Start, Field End, Length. It also displays the SQL Type field. On the lower left, the option Automatically update start and end positions for all fields is selected.

PKPK;,A"OEBPS/img_text/designer_source.htm# Description of the illustration designer_source.gif

This image displays the Edit Module dialog box. The Metadata Location tab is currently displayed. You can specify the workarea and container element which contains the Oracle Designer object. At the top are the following list ordered from top to bottom: Source Type list (currently displaying as Oracle Designer Repository) and the Location list (currently displaying as (ORCL_DESIGNER_LOCATION1). Below the list is the Details box. The Details box contains the following ordered from top to bottom:

  • Name label (currently displaying as ORCL_DESIGNER_LOCATION1)

  • Description field

  • Type label containing the following information:

    • HOST.PORT.SERVICE

    • User Name

    • Password

    • Host

    • Port

    • Service Name

  • Schema label (currently displaying as REPOS_MANAGER

  • VERSION label (currently displaying as 10.1)

Below the Details box are the following lists ordered from top to bottom:

  • Workarea list (currently displaying as GLOBAL SHARED WORKAREA)

  • Container Element list (currently displaying as test)

At the lower left-hand corner of the window is the Help button. At the lower right-hand corner of the window, the following buttons, ordered from left to right, OK and Cancel.

PKz`(#PK;,A$OEBPS/img_text/flatfile_location.htm} Description of the illustration flatfile_location.gif

The figure displays the Details tab of the Edit File System Dialog Box. The fields from top to bottom are Name, Description, Connection Type, and Path. The Browse button next to the Path field enables you to browse and select a path. On the bottom of the screen, the following buttons are available from left to right, Help, Test Connection, OK, and Cancel. The following tabs are available on the top left corner and are listed from top to bottom: Details, Advanced, Prefix, and Mask.

PK 2PWPK;,A)OEBPS/img_text/applications_locations.htmP Description of the illustration applications_locations.gif

The figure shows the Locations Navigator of the Oracle Warehouse Builder UI. Under the Applications node, the various applications and the corresponding databases are listed.

PKUUPPK;,A)OEBPS/img_text/heterogeneous_services.htm Description of the illustration heterogeneous_services.gif

This screenshot shows the Heterogeneous Services architecture. This screenshot is divided into three main boxes. The first box is divided into two parts: Oracle and Heterogeneous Services. The second box is divided into two parts: Agent Generic Code and Driver. The third box contains the Remote Database. All the three boxes are connected to each other.

PKTE PK;,A"OEBPS/img_text/case_excel_odbc.htmK Description of the illustration case_excel_odbc.gif

This screenshot displays the ODBC Microsoft Excel Setup dialog box. To the left is the Data Source Name field. To the right of the Data Source name is the OK button.

On the left, below the Data Source Name field, is the Description field. To the right of the Description field is the Cancel button. Below the Cancel button is the Help button.

Below the Description field is the Database box. This box contains the Version list, in which Excel 97-2000 is currently displayed. Below the Version list is the read-only field Workbook. To the right of this is the location of the Excel file. Below the location is the Select Workbook button. Below the Select Workbook button is the check box Use Current Directory.

At the lower right corner of the window is the Options button.

PKPK;,A,OEBPS/img_text/logical_table_ps_join_tab.htmQ Description of the illustration logical_table_ps_join_tab.gif

This image displays the Logical Table Details. At the bottom are the following editors ordered from left to right: Name, Source Items, Items, Joins, Conditions, Composition. The Joins editor is currently displayed. Joins editor is used to define Joins. The editor contains the JOINS table, containing the following columns, ordered from left to right: Join Name, Master Logical Table, Detail always has master, One to one, Outer join, Description. One row is displayed. Below the Join table is the Join Components table. This table contains the following columns, ordered from left to right: Local Item, Operator, and Remote Item. The Join Components table defines the join condition.

PK"VQPK;,A"OEBPS/img_text/execution_units.htm  Description of the illustration execution_units.gif

The figure shows a mapping containing two Execution Units. The first execution unit contains two DB2 source tables. The second execution unit contains a Joiner operator, which combines the rows from the two DB2 tables, and a target Oracle table. Arrows connect each source table to the Joiner operator, and another arrow connects the Joiner operator to the target table.

PK- PK;,A"OEBPS/img_text/io_deploy_disco.htm= Description of the illustration io_deploy_disco.gif

This image displays the Discoverer Administrator interface that shows the Business Intelligence Objects that you deployed. At the top of the window is the menu bar. Below the menu bar is the toolbar. Below the toolbar are four tabs ordered from left to right: Data, Hierarchies, Item classes, and Summaries. The Data editor is currently displayed. The Data editor contains information regarding SALES in a tree format.

PK B=PK;,A)OEBPS/img_text/excel_platform_connect.htmD Description of the illustration excel_platform_connect.gif

The figure shows the Edit Generic JDBC Location dialog. The connectin type is JDBC. Dummy username and password is provided in the respective fields. The value in the Driver Class is based on the value provided in the script. The URI field points to the location of the excel file.

PK3jfuPK;,A(OEBPS/img_text/createflatfile_record.htm3 Description of the illustration createflatfile_record.gif

The figure shows the Record Type Properties page of the Create Flat File Wizard. The following fields are listed from top to bottom: Single Record, Multi Record, Field Position. Below this is the Record Type Values spreadtable, which consists of two fields: Type Value and Record Name. At the bottom of the page, the following buttons are available from left to right: Help, Back, Next, Finish, Cancel.

PKCKS83PK;,A,OEBPS/img_text/createflatfile_properties.htmF Description of the illustration createflatfile_properties.gif

The figure shows the File Properties page of the Create Flat File Wizard. The following fields are listed from top to bottom: Records delimited by, Record length (in bytes), Number of Physical Records per Logical Record, End Character of the Current Physical Record, Start Character of the Next Physical Record, Number of Rows to Skip, Fixed Length Fields, Delimited Fields, Field Delimiter, Enclosures Left, Right. At the bottom of the page, the following buttons are available from left to right: Help, Back, Next, Finish, Cancel.

PKyhPK;,A(OEBPS/img_text/drill_path_wiz1_disco.htm Description of the illustration drill_path_wiz1_disco.gif

This image displays the Drill Levels page of the Create Drill Path Wizard. The Drill Levels section displays the drill levels in a table. The table contains the following columns, ordered from left to right: Drill Level, Item Folder, and Description. Below the table is the Drill Level Items section. This section contains a Drill Level Items table with two columns, ordered from left to right, Item and Use as drill item. At the lower left-hand corner of the page is the Help button. At the lower right-hand corner of the page, the following buttons, ordered from left to right: Back, Next, Finish, and Cancel.

PKu PK;,A,OEBPS/img_text/sap_proc_flow_data_detect.htmI Description of the illustration sap_proc_flow_data_detect.gif

The figure shows the activities of a Process Flow. It consists of the following activities from left to right: START, FILE EXISTS, WAIT, FTP, SQL PLUS, END SUCCESS.

PKE2=NIPK;,A(OEBPS/img_text/drill_path_wiz1_obiee.htm Description of the illustration drill_path_wiz1_obiee.gif

This image displays the Drill Levels page of the Create Dimension Drill Path Wizard. The Drill Levels section displays the drill levels in a table. The table contains the following columns, ordered from left to right: Drill Level, Logical Table, and Description. Below the table is the Drill Level Items section. This section contains a Drill Level Items table with two columns, ordered from left to right, Item and Use as drill item. At the lower left-hand corner of the page is the Help button. At the lower right-hand corner of the page, the following buttons, ordered from left to right: Back, Next, Finish, and Cancel.

PKmPK;,A%OEBPS/img_text/mapping_load_excel.htmk Description of the illustration mapping_load_excel.gif

This screenshot displays the mapping that loads data into the target table. The the left is the EMPLOYEE_DETAILS table which contains a collapsible INOUTGRP1 with the following rows: EMP_ID, FIRST_NAME, LAST_NAME, and DEPT_ID. To the right is the TGT_EMP table which contains a collapsible INOUTGRP1 with the following rows: EMP_ID, FIRST_NAME, LAST_NAME, and DEPT_ID. All the rows in the EMPLOYEE table are connected to the respective rows in the TGT_EMP table

PK cpkPK;,A#OEBPS/img_text/cobol_eg_general.htm Description of the illustration cobol_eg_general.gif

The figure shows the General Tab of the Edit Flat File dialog box. It lists out the field properties set for the file.

PKPK;,A*OEBPS/img_text/item_folder_ps_join_tab.htmK Description of the illustration item_folder_ps_join_tab.gif

This image displays the Item Folder Details. At the bottom are the following editors ordered from left to right: Name, Source Items, Items, Joins, Conditions, Composition. The Joins editor is currently displayed. Joins editor is used to define Joins. The editor contains the JOINS table, containing the following columns, ordered from left to right: Join Name, Master Item Folder, Detail always has master, One to one, Outer join, Description. One row is displayed. Below the Join table is the Join Components table. This table contains the following columns, ordered from left to right: Local Item, Operator, and Remote Item. The Join Components table defines the join condition.

PKɶPKPK;,A OEBPS/img_text/sap_runtime_2.htm Description of the illustration sap_runtime_2.gif

The figure shows the SAP development environment and the SAP production Environment. ABAP code is designed in the Development environment and transported to the production environment. The SAP administrator creates a new ABAP report name, and from the Oracle Warehouse Builder, you call this ABAP program, whcih extracts the data.

PKzpPK;,A'OEBPS/img_text/cobol_sqlloaderfiles.htmE Description of the illustration cobol_sqlloaderfiles.gif

The figure shows the configuration properties for the COBOL map. The cursor is placed on the ellipsis at the right extreme corner of the SQL Loader Data Files field.

PK$JJEPK;,AOEBPS/img_text/sap_location.htmU Description of the illustration sap_location.gif

The figure shows the Details tab of the Edit SAP Location dialog box. The following fields are listed from top to bottom: Name, Description, Connection Type, User Name, Password, Application Server, System Number, Client, Language, Staging File Directory, Execution Function Module, Transport Type, Root Path, File Name. On the bottom of the dialog box, the following buttons are placed from left to right: Help, Test Connection, OK, and Cancel.

PK8:ZUPK;,A OEBPS/img_text/sap_runtime_1.htmv Description of the illustration sap_runtime_1.gif

The figure shows the automated data retrieval mechanism. You design and run the mapping in Oracle Warehouse Builder. The ABAP code gets executed in the SAP system, and the data is extracted and loaded to the target table.

PK{vPK;,A$OEBPS/img_text/cobolmap_datafile.htmX Description of the illustration cobolmap_datafile.gif

The figure shows the details of the data file node in the Configuration Properties dialog box. A data file name and the data file location from where the data will be loaded is specified.

PKc~]XPK;,A#OEBPS/img_text/sap_columns_desc.htm Description of the illustration sap_columns_desc.gif

The figure shows the Columns editor for the SAP table BKPF. The left most column contains the name of each column in the table, while the right-most column provides the description of each column of the table. The details that are visible from left to right include Name, Data Type, Length, Precision, Scale, Not Null, Default Value, and Description.

PK+ PK;,AOEBPS/img_text/cobol_map.htmn Description of the illustration cobol_map.gif

The figure shows a mapping with two objects, SAMPLE and COBOL_TARGET. The flat file operator contains the source metadata. Each field in the flat file operator is mapped to the corresponding field in the target table.

PKLsnPK;,AOEBPS/img_text/sap_mapping.htm Description of the illustration sap_mapping.gif

The figure shows a mapping to extract data from an SAP system. It consists of the following objects from left to right: Table BKPF and an Input Parameter are connected to a Filter operator. Tables KONV, VBRP, VBRK, and the output from the Filter operator are connected to a Joiner. The output data from Joiner is connected to a staging table STG_BILLING_TABLE.

PKNTPK;,AOEBPS/integrating_apps.htm Integrating with Oracle ERP Applications

8 Integrating with Oracle ERP Applications

Oracle Warehouse Builder can integrate with Oracle's enterprise applications including E-Business Suite, PeopleSoft, and Siebel. Metadata for objects in the applications' underlying database schemas, such as tables, views and sequences, can be imported into a project, and then used like any other database objects in ETL mappings as sources and targets.

This chapter contains the following topics:

Importing Metadata from Oracle E-Business Suite Applications

Oracle E-Business Suite of applications provide comprehensive business solutions that can be implemented across a wide variety of industry functions including customer relationship management (CRM), project management, supply chain management (SCM), product life cycle management, financial management, and so on.

Before You Begin

Contact the database administrator for the E-Business Suite application and request a user name and password for accessing the APPS schema. The DBA may have previously created a user by running the script owbebs.sql as described in Oracle Warehouse Builder Installation and Administration Guide. If not, you must provide the DBA with a list of the tables, views, sequences, and keys from which you want to extract data. This is so that the DBA can grant object access privileges for these tables, views, sequences, and keys to the specific user. The user must be granted object privilege because the objects are accessed using PL/SQL in the extraction mappings.

Depending on the preference of the DBA, there may be a single user who extracts the metadata and the data. Or, there may be two separate users to access the metadata and data respectively.

Importing E-Business Suite Metadata Definitions

After creating the E-Business Suite source module, you can import metadata definitions from E-Business Suite objects using the Import Metadata Wizard. This wizard enables you to filter the E-Business Suite objects you want to import and verify those objects. The E-Business Suite module contains nodes for tables, views, and sequences. You can also create a User Folder within the module to organize the objects that you import. See "Creating User Folders" for more information about User Folders.

To import E-Business Suite metadata:

  1. Create an E-Business Suite module as described in "Creating an E-Business Suite Module".

  2. Import metadata from the E-Business Suite application as described in "Importing E-Business Suite Metadata".

Creating an E-Business Suite Module

To create an E-Business Suite module

  1. Right-click Oracle E-Business Suite under the Applications node and select New Oracle EBS Module.

    The Create Module Wizard is displayed.

  2. Click Next to display the Name and Description page.

  3. Specify a name and an optional description for the source module. Also select the access method. You can either make a native heterogeneous connectivity or a Gateways connection. Click Next.

    The Connection Information page is displayed.

  4. Specify the connection information for the E-Business Suite source module and click Next.

    Ensure that the location associated with the module contains information needed to connect to the E-Business Suite source. If you created a location earlier, associate that location with the module being created by selecting the location on the Connection Information page.

    To create a new location, click Edit on the Connection Information page of the Create Module Wizard. The Edit Non-Oracle Location dialog box is displayed.

    See "Edit Non-Oracle Location Dialog Box" for details of the values to be entered in this dialog box.

  5. On the Summary page, review the options entered on the previous wizard pages. Click Back to modify any selections. Click Finish to create the E-Business Suite source module.

Edit Non-Oracle Location Dialog Box

Use the Edit Non-Oracle Location dialog box to create a location for the source module.

Name

Provide a name for the location.

Description

Provide an optional description.

Connection Type

Lists the connections available to access a location. You cannot change the connection type after creating a location.

  • HOST:PORT:SERVICE: Makes a connection using the Easy Connect Naming method, which requires no prior setup:

    • User Name: The database user credential that has permission to access the schema location.

      When connecting to an application that does not have user names, enter any text as a mock user name.

    • Password: The password associated with user name.

      When connecting to an application that does not require a password, enter any text as a mock password.

    • Host: The name of the system where the application is installed.

      If the application is installed on the same system as the Oracle Warehouse Builder, you can enter localhost instead of the computer name.

    • Port: The SQL port number to access the application.

    • Service Name: The service name of the application.

    • Use Global Name: The unique name of the application, which is composed of the application name and the domain in the form application_name.application_domain. Select this option when connecting to an application on a different network.

  • Database Link: Makes a connection to another database using an existing database link. Select this method only when you do not have privileges that enable you to make a direct connection. You cannot deploy to a location that uses a database link.

    A database link is a schema object that contains information for connecting to a remote database. Database links are used in distributed database environments and enable a client to access two physical databases as one logical database.

    • From Location: An existing location where the database link is defined.

    • Database Link: The object name of the database link.

  • SQL*NET Connection: Makes a connection using a net service name previously defined using a tool such as Oracle Net Configuration Assistant. The net service name provides a convenient alias for the connection information.

    • User Name: The user credential that has permission to access the schema location.

      When connecting to an application that does not have user names, enter any text as a mock user name.

    • Password: The password associated with user name.

      When connecting to an application that does not require a password, enter any text as a mock password.

    • Net Service Name: The name of the predefined connection.

    • Use Global Name: The unique name of the database, which is composed of the database name and the domain in the form application_name.application_domain. Select this option when connecting to an application on a different network.

Schema

The schema where the source data is stored or the target objects are deployed. The schema must be registered. By default, it is the User Name schema.

When connecting to a type of application that does not have schemas, leave this field empty.

Importing E-Business Suite Metadata

To import metadata into the module:

  1. Right-click the E-Business Suite source module and select Import, and then Database Objects.

    The Import Metadata Wizard is displayed.

  2. Complete the following tasks using the wizard.

Filtering E-Business Suite Metadata

The Import Metadata Wizard includes a Filter Information page that enables you to select the metadata. Oracle Warehouse Builder provides two filtering methods:

  • Business Domain

    This filter enables you to browse E-Business Suite business domains to locate the metadata you want to import. You can view a list of objects contained in the business domain and the names of the objects in the E-Business Suite application. For more information, see "Filtering E-Business Suite Metadata by Business Domain".

  • Object Type

    This filter enables you to search by the object type such as tables, views, and sequences or to search by entering text string information in the field provided in the Filter Information page. This is a more specific search method if you are familiar with the contents of your E-Business Suite application database. For more information, see "Filtering E-Business Suite Metadata by Object Type".

Select a filtering method and click Next to proceed with the importing of metadata.

Filtering E-Business Suite Metadata by Business Domain

To filter metadata by the business domain:

  1. Select Business Domain and click Browse to open the Business Domain Hierarchy dialog box.

  2. The Business Domain Hierarchy dialog box lists the available E-Business Suite business domains.


    Note:

    The time it takes to list the business domains depends on the network location of the E-Business Suite application server, the type of LAN used, and the size of the E-Business Suite application database.

    Use the Business Domain Hierarchy dialog box to select the E-Business Suite business domains that contain the metadata objects you want to import.

  3. Select a business domain and click Show Entities.

    The Folder dialog box displays a list of objects available in the selected business domain.

  4. Review this dialog box to ensure that you are selecting the required objects and click OK to go back to the Business Domain Hierarchy dialog box.

    Some business domains can contain more than 1000 objects. The time required to import such a large amount of metadata can vary depending on the network connection speed and the processing power of the source and target systems. It is recommended that you review the list of objects and import only the ones that are required.

  5. Click OK.

    The wizard displays the Filter Information page with the E-Business Suite business domain displayed in the Business Domain field.

Filtering E-Business Suite Metadata by Object Type
  1. Select Object Type.

  2. Select the type of objects you want to import. You can select Tables, Views, and Sequences.

    To select specific objects, enter the object name in the text field. Create a filter for object selection by using the wildcard characters (%) for zero or more matching characters, and (_) for a single matching character.

    For example, to search the business domain for tables whose names contain the word CURRENCY, then type %CURRENCY%. To refine the search to include only tables named CURRENCY and followed by a single digit, then type %CURRENCY_.

Selecting the Objects

The Object Selection page contains a description of the objects and enables you to select the objects you want to import into the E-Business Suite module.

To select the objects:

  1. Move the objects from the available list to the selected list.

    The Import Wizard also enables you to choose to import tables with foreign key relationships for each object that you choose to import. You can select one of the following:

    None: Import only the objects in the Selected list.

    One Level: Import the objects in the Selected list and any tables linked to it directly through a foreign key relationship.

    All Levels: Import the objects in the Selected list and all tables linked to it through foreign key relationships.

    The foreign key level you select is the same for all tables selected for importing.


    Note:

    Selecting All Levels increases the time it takes to import the metadata because you are directing the wizard to import tables that are related to each other through foreign key constraints. Select this option only if it is necessary.

  2. Click Next.

    If you select One Level or All Levels, then the Confirm Import Selection dialog box is displayed if other related tables are to be imported due to foreign keys or other dependencies.

    Review this dialog box to ensure that you are selecting the required tables.

  3. Click OK.

    The selected objects appear in the right pane of the Object Selection page.

  4. Click Next.

    The Import Wizard displays the Summary and Import page.

Reviewing Import Summary

The Import Metadata Wizard imports definitions for the selected objects from the E-Business Suite application server, stores them in the E-Business Suite source module, and then displays the Summary and Import page.

You can edit the descriptions for each object by selecting the description field and entering a new description.

Review the information about the Summary and Import page and click Finish to import the selected objects.

The E-Business Suite integrator reads the table definitions from the E-Business Suite application server and creates the metadata objects in the module.

The time it takes to import the E-Business Suite metadata to the workspace depends on the size and number of tables and the connection between the E-Business Suite application server and the workspace, especially if you are connecting servers located in different local area networks (LANs).

When the import completes, the Import Results dialog box is displayed. Click OK to finish importing or click Undo to cancel the import.

Importing Metadata from PeopleSoft Applications

Oracle's PeopleSoft Enterprise applications provide comprehensive business solutions in a wide variety of industry functions including Human Resource Management System (HRMS), Financials, Customer Relationship Management (CRM), and Material Management. A PeopleSoft application consists of numerous modules, each pertaining to a specific area in an enterprise.

Importing PeopleSoft Metadata Definitions

To import metadata from PeopleSoft applications, create a PeopleSoft module from the Projects Navigator. After creating the module, you can import metadata definitions from the PeopleSoft application using the Import Metadata Wizard. This wizard enables you to filter the objects you want to import and verify those objects. The PeopleSoft module contains nodes for tables, views, and sequences. You can also create a User Folder within the module to organize the objects that you import. You can import metadata for tables, views, and sequences.

To import PeopleSoft metadata:

  1. Create a PeopleSoft module as described in "Creating a PeopleSoft Module".

  2. Import metadata from the PeopleSoft application as described in "Importing PeopleSoft Metadata".

Creating a PeopleSoft Module

To create a PeopleSoft module

  1. Right-click PeopleSoft under the Applications node and select New Peoplesoft Module.

    The Create Module Wizard is displayed.

    Oracle Warehouse Builder displays the Welcome page for the Import Metadata Wizard.

  2. Click Next to display the Name and Description page.

  3. Specify a name and an optional description for the source module. Also specify whether you want to connect through native database connectivity (using JDBC drivers) or through Oracle Gateways.

    If you select Oracle Gateways, then select the database from which the metadata is to be imported. Click Next.

    The Connection Information page is displayed.

  4. Specify the connection information for the PeopleSoft source module and click Next.

    Ensure that the location associated with the module contains information needed to connect to the PeopleSoft source. If you created a location earlier, associate that location with the module being created by selecting the location on the Connection Information page.

    To create a new location, click Edit on the Connection Information page of the Create Module Wizard. This opens the Edit Non-Oracle Location dialog box. See "Edit Non-Oracle Location Dialog Box" for more information about the values to be entered in the dialog box.

  5. On the Summary page, review the options entered on the previous wizard pages. Click Back to modify any selections. Click Finish to create the PeopleSoft source module.


See Also:

Chapter 6, "Connecting to Data Sources Through JDBC" for more information about native database connectivity.

Chapter 4, "Connecting to Non-Oracle Data Sources Through Gateways" for more information about Gateways connectivity.


Importing PeopleSoft Metadata

To import metadata into the module:

  1. Right-click the PeopleSoft module and select Import, Database Objects.

    The Import Metadata Wizard is displayed.

  2. Complete the following tasks:

Filtering PeopleSoft Metadata

The Import Metadata Wizard includes a Filter Information page that enables you to select the metadata. Oracle Warehouse Builder provides two filtering methods:

  • Business Domain

    This filter enables you to browse PeopleSoft business domains to locate the metadata you want to import. You can view a list of objects contained in the business domain. For more information, see "Filtering PeopleSoft Metadata by Business Domain".

  • Object Type Matching

    This filter enables you to search by the object type such as tables, views, and sequences or to search by entering text string information in the field provided on the Filter Information page. This is a more specific search method if you are familiar with the contents of your PeopleSoft application database. For more information, see "Filtering PeopleSoft Metadata by Object Type".

Select a filtering method and click Next to proceed with the importing of metadata.

Filtering PeopleSoft Metadata by Business Domain

To filter by the business domain:

  1. Select Business Domain and click Browse to open the Business Domain Hierarchy dialog box.

    The Import Metadata Wizard displays Loading Progress dialog box while it is retrieving the business domains.

  2. The Business Domain Hierarchy dialog box lists the available PeopleSoft business domains.


    Note:

    The time it takes to list the business domains depends on the network location of the PeopleSoft application server, the type of network used, or the size of the PeopleSoft application database.

    Use the Business Domain Hierarchy dialog box to select the PeopleSoft business domains that contain the metadata objects you want to import.

  3. Select a folder and click Show Entities.

    The Import Wizard displays a list of objects in the selected business domain in the Folder dialog box.

  4. Review this dialog box to ensure that you are selecting the required objects.

    Some business domains can contain more than 1000 objects. The time it takes to import such a large amount of metadata can vary depending on the network connection speed and the processing power of the source and target systems. It is recommended that you review the list of objects and import only the ones that are required.

  5. Click OK.

    The wizard displays the Filter Information page with the PeopleSoft business domain displayed in the Business Domain field.

Filtering PeopleSoft Metadata by Object Type
  1. Select Object Type.

  2. In the Object Type section, select the types of objects you want to import. You can select Tables, Views, and Sequences.

    To select specific objects, type the object name in the text field. Create a filter for object selection by using the wildcard characters (%) for zero or more matching characters, and (_) for a single matching character.

    For example, to search the business domain for tables whose names contain the word CURRENCY, then type %CURRENCY%. To refine the search to include only tables named CURRENCY and followed by a single digit, then type %CURRENCY_.

Selecting the Objects

The Object Selection page contains a description of the objects and enables you to select the objects you want to import into the PeopleSoft module.

To select the objects:

  1. Move the objects from the Available list to the Selected list.

    The Import Wizard also enables you to choose to import tables with foreign key relationships for each object that you choose to import. You can select one of the following:

    None: Import only the objects in the Selected list.

    One Level: Import the objects in the Selected list and any tables linked to it directly through a foreign key relationship.

    All Levels: Import the objects in the Selected list and all tables linked to it through foreign key relationships.

    The foreign key level you select is the same for all tables selected for importing.


    Note:

    Selecting All Levels increases the time it takes to import the metadata because you are directing the wizard to import tables that are related to each other through foreign key constraints. Select this option only if it is necessary.

  2. Click Next.

    If you select One Level or All Levels, the Confirm Import Selection dialog box is displayed.

    Review this dialog box to ensure that you are selecting an appropriate number of tables.

  3. Click OK.

    The selected objects appear in the Selected pane of the Object Selection page.

  4. Click Next.

    The wizard displays the Summary and Import page.

Reviewing Import Summary

The Import Metadata Wizard imports definitions for the selected tables from the PeopleSoft application server, stores them in the PeopleSoft source module, and then displays the Summary and Import page.

You can edit the descriptions for each object by selecting the description field and entering a new description.

Review the information about the Summary and Import page and click Finish.

The PeopleSoft Connector reads the table definitions from the PeopleSoft application server and creates the metadata objects in the workspace.

The time taken to import PeopleSoft metadata to the workspace depends on the available objects including tables, views, and sequences and the connection between the PeopleSoft application server and the workspace. Importing a large number of objects can result in delays so it is recommended that you import in smaller batches.

When the import completes, the Import Results dialog box is displayed. Click OK to finish importing metadata.

Importing Metadata from Siebel Applications

Oracle's Siebel applications provide Customer Relationship A Management (CRM) solutions. Oracle Warehouse Builder provides a connector for Siebel systems that enables you to extract both metadata and data from Siebel applications.

The Siebel connector enables you to connect to any Siebel application, read its metadata, import the metadata into Oracle Warehouse Builder, and extract data from the system.

Importing Siebel Metadata Definitions

Before you import metadata definitions from Siebel, you must create a Siebel source module. You can then import metadata definitions from Siebel using the Import Metadata Wizard. This wizard enables you to filter the Siebel objects you want to import and verify those objects. The Siebel module contains nodes for tables, views, and sequences. You can also create a User Folder within the Siebel module to organize the objects that you import. You can import metadata for tables, views, and sequences.

To import metadata definitions from Siebel:

  1. Create a Siebel source module, as described in "Creating a Siebel Source Module".

  2. Import metadata from Siebel, as described in "Importing Siebel Metadata".

Creating a Siebel Source Module

  1. From the Projects Navigator, click the Applications node to expand it.

  2. Right-click Siebel and select New Siebel Module.

    The Create Module Wizard is displayed.

  3. Specify a name and an optional description for the source module. Also specify whether you want to connect through native database connectivity (using JDBC drivers) or through Oracle Gateways.

    If you select Oracle Gateways, then select the database from which the metadata is to be imported. Click Next.

    The Connection Information page is displayed.

  4. Specify a name and an optional description for the Siebel source module and click Next.

    The Connection Information page is displayed.

  5. Specify the connection information for the Siebel source module and click Next.

    Ensure that the location associated with the Siebel module contains information needed to connect to the Siebel source. If you created a location earlier, associate that location with the module being created by selecting the location on the Connection Information page.

    Or create a new location by clicking Edit on the Connection Information page to open the Edit non-Oracle dialog box. See "Edit Non-Oracle Location Dialog Box" for more details.

  6. On the Summary page, review the options entered on the previous pages. Click Back to modify any selections. Click Finish to create the Siebel source module.


See Also:

Chapter 6, "Connecting to Data Sources Through JDBC" for more information about native database connectivity.

Chapter 4, "Connecting to Non-Oracle Data Sources Through Gateways" for more information about Gateways connectivity.


Importing Siebel Metadata

  1. Right-click the Siebel source module into which you want to import metadata and select Import, Database Objects.

    Oracle Warehouse Builder displays the Welcome page for the Import Metadata Wizard.

  2. Click Next.

    The Filter Information page is displayed.

  3. Select the objects to be imported and click Next.

    You can search for specific object types such as tables, sequences, and views. Oracle Warehouse Builder also enables you to specify the name of the object to be imported. You can search for specific object names by entering text string information in the field provided in the Filter Information page. This is a more specific search method if you are familiar with the contents of your Siebel application database.

  4. On the Objects Selection page, select the objects to be imported into the Siebel module and click Next.

    You can choose to import tables with foreign key relationships for each object that you choose to import using the following options on this page:

    None: Import only the objects in the Selected list.

    One Level: Import the objects in the Selected list and any tables linked to it directly through a foreign key relationship.

    All Levels: Import the objects in the Selected list and all tables linked to it through foreign key relationships.

    The foreign key level you select is the same for all tables selected for importing.


    Note:

    Selecting All Levels increases the time it takes to import the metadata because you are directing the wizard to import tables that are related to each other through foreign key constraints. Select this option only if it is necessary.

  5. Review the summary information and click Finish to complete the import. To modify any selections, click Back.

After you import metadata for tables, views, or sequences from Siebel applications, you can use these objects in mappings.

Importing Metadata from Applications Implemented on non-Oracle Databases

You can import metadata from PeopleSoft and Siebel applications that are implemented on non-Oracle databases such as DB2, SQL Server, Sybase, Informix, and so on.

With earlier releases of Oracle Warehouse Builder, you required an Oracle Gateways connection to import metadata from an application such as PeopleSoft implemented on a non-Oracle database, such as SQL Server. With Oracle Warehouse Builder 11g Release 2 (11.2), you can define a CMI definition and use a native heterogeneous connectivity using JDBC drivers to import from these applications.

See "Connecting to a PeopleSoft Application Implemented on SQL Server" for more information about using a CMI definition to import metadata from a PeopleSoft application implemented on SQL Server.

On the Locations Navigator, click an application to see the databases from which you can import metadata for that application as shown in Figure 8-1. Create a location based on the database on which the application is implemented. For example,

To define a location corresponding to a PeopleSoft application on SQL Server:

  1. On the Locations Navigator, navigate to Applications, PeopleSoft.

  2. Right-click SQL Server and select New SQL Server PeopleSoft Location.

    The Create SQL Server PeopleSoft Location dialog box is displayed.

  3. Provide the connection details corresponding to the SQL Server database. See "Connecting to SQL Server Database" for more information about the details to be specified to connect to an SQL Server database.

Figure 8-1 The Locations Navigator for the Oracle Applications

Description of Figure 8-1 follows
Description of "Figure 8-1 The Locations Navigator for the Oracle Applications"

Connecting to a PeopleSoft Application Implemented on SQL Server

To import metadata from a PeopleSoft application that is implemented on a SQL Server database, first define a CMI definition for PeopleSoft on SQL Server.

To leverage on a CMI mechanism, you must create a CMI_DEFINITION for the PeopleSoft application.

CMI definitions must be created from the root context. You can switch to the root context only from the OMB Plus console. You cannot switch to the root context using the OMB*Plus view from within the Oracle Warehouse Builder UI. Therefore it is recommended that you use the OMB Plus console for the implementation.

For more information about OMB*Plus scripting, see Oracle Warehouse Builder API and Scripting Reference.


See Also:

Oracle Warehouse Builder OMB*Plus Command Reference for a list of all OMB*Plus commands.

To use the OMB Plus console on a Windows system, select Start, then All Programs, <OWB>, Warehouse Builder, and then OMB Plus.

To switch to the root context, use the following command:

OMBCONNECT <repository user>/<password>@<host>:<port number>:<service name>

For example,

OMBCONNECT rep_user/password@localhost:1521:orcl

Where rep_user/password is the user name/password to connect to the repository, localhost indicates a local installation, 1521 is the port number, and orcl is the service name of the database.

Example 8-1 lists the .tcl script to create a CMI. Run the script from the OMB Plus console.

Example 8-1 Script to Create a CMI Definition

set platformname SQLSERVER
set application PEOPLESOFT
 
set cmi $platformname\_$application
puts "Creating Custom Application Metadata Import" 
OMBCREATE CMI_DEFINITION '$cmi' USING DEFINITION_FILE 'c:\\cmi\\platformdef4_miv.xml'
OMBALTER CMI_DEFINITION '$cmi' SET PROPERTIES (MIV_TYPE) VALUES ('Applications')
puts "Created Custom Application Metadata Import"
puts "        - $application on $platformname"
puts ""

Save the changes using the command OMBCOMMIT.

The file platformdef4_miv.xml contains the CMI_DEFINITION for PeopleSoft on SQL Server as listed in Example 8-2. Ensure that you provide the correct file location for the .xml file in the .tcl script listed in Example 8-1.

Example 8-2 CMI Definition File for PeopleSoft on SQL Server

<?xml version="1.0"?>
<miv>
  <miv_tables type="SQLStatement" default="true" >
select  
        REC.RECNAME                             as TABLE_NAME,
        TAB.TABLE_NAME           as RES_NAME,
        rtrim(REC.RECDESCR)             as TABLE_DESC
  from  
        PSRECDEFN REC left outer join
         PS_EO_BCOWNRID_VW  M on ( REC.OBJECTOWNERID=M.OBJECTOWNERID),
        INFORMATION_SCHEMA.TABLES TAB
where (REC.RECNAME =TAB.TABLE_NAME or 'PS_'+REC.RECNAME =TAB.TABLE_NAME)
        and REC.RECTYPE =0 </miv_tables>
  
<miv_columns type="SQLStatement" default="true" />

  <miv_capabilities type="ResultSet">
    <table_supported>true</table_supported>
    <view_supported>false</view_supported>
    <sequence_supported>false</sequence_supported>
    <table_name_filter_supported>false</table_name_filter_supported>
    <view_name_filter_supported>false</view_name_filter_supported>
    <sequence_name_filter_supported>false</sequence_name_filter_supported>
    <business_area_supported>false</business_area_supported>  
    <business_area_table_supported>false</business_area_table_supported>        
    <business_area_view_supported>false</business_area_view_supported>  
    <business_area_sequence_supported>false</business_area_sequence_supported>  
    <application_owner_supported>true</application_owner_supported>
    <table_fklevel_supported>false</table_fklevel_supported>
    <reimport_supported>true</reimport_supported>
    <data_object_at_leaf_levels>true</data_object_at_leaf_levels>
    <multiple_tree_supported>false</multiple_tree_supported>
    <function_supported>false</function_supported>
   <function_name_filter_supported>false</function_name_filter_supported>
  </miv_capabilities>

</miv>

This MIV file is created using elements defined in an XML schema definition (XSD) file.

After you have created a CMI definition, create a PeopleSoft module from the Projects Navigator to connect to the PeopleSoft application implemented on the SQL Server database.

CMI_DEFINITION must have it's name defined as platform_application to work. The illustration creates an example called SQLSERVER_PEOPLESOFT. You get the list of platform names using the command OMBLIST PLATFORMS.

To create the PeopleSoft module:

  1. Under the Application node, right-click PeopleSoft and select New PeopleSoft Module.

    The Create Module Wizard is displayed.

  2. On the Name and Description page, provide a name and an optional description. Select the access method to be Native Database Connection. Also select SQL Server as the platform. This option is now available because you have created a CMI definition for PeopleSoft on SQL Server. Click Next.

    The Connection Information page is displayed.

  3. Click Edit to define the location details of the PeopleSoft application on SQL Server. See "Creating a SQL Server Module" for more information about the connection details to an SQL Server database.

    You require the JDBC drivers to connect to the SQL Server. For more information about the JDBC driver requirements, see "Connecting to SQL Server Database".

After creating the module, you can import metadata from the PeopleSoft application.

PK)i'PK;,A OEBPS/toc.ncxO Oracle® Warehouse Builder Sources and Targets Guide, 11g Release 2 (11.2) Cover Table of Contents Oracle Warehouse Builder Sources and Targets Guide, 11g Release 2 (11.2) Preface Connecting to Sources and Targets in Oracle Warehouse Builder Connecting to Data Sources and Importing Metadata Using Flat Files as Sources or Targets Connecting to Non-Oracle Data Sources Through Gateways Connecting to Microsoft Data Sources Through ODBC Connection Connecting to Data Sources Through JDBC Extracting Data from SAP Applications Integrating with Oracle ERP Applications Importing Oracle Warehouse Builder Data into Business Intelligence Applications Importing Design Definitions from Oracle Designer Creating New Platforms Using Code Templates to Load and Transfer Data Importing and Publishing Web Services Index Copyright PK4UTOPK;,AOEBPS/content.opf? Oracle® Warehouse Builder Sources and Targets Guide, 11g Release 2 (11.2) en-US E10582-05 Oracle Corporation Oracle Corporation Oracle® Warehouse Builder Sources and Targets Guide, 11g Release 2 (11.2) 2011-09-21T23:32:40Z Describes data sources and targets for Oracle Warehouse Builder data warehouses and data integration systems. This guide also lists all the supported sources and targets and provides procedures for importing from sources and deploying to targets. PKM2??PK;,AOEBPS/dcommon/prodbig.gif GIF87a!!!)))111BBBZZZsss{{ZRRcZZ!!1!91)JB9B9)kkcJJB991ssc絽Zcc!!{祽BZc!9B!c{!)c{9{Z{{cZB1)sJk{{Z{kBsZJ91)Z{!{BcsRsBc{9ZZk甽kBkR!BZ9c)JJc{!))BZks{BcR{JsBk9k)Zck!!BZ1k!ZcRBZcZJkBk1Z9c!R!c9kZRZRBZ9{99!R1{99R{1!1)c1J)1B!BJRkk{ƽ絵ތkk絵RRs{{{{JJsssBBkkk!!9ss{{ZZssccJJZZRRccRRZZ))cBBJJ99JJ!!c11991199Z11!c!!))Z!!!1BRck{)!cJBkZRZ,HP)XRÇEZ֬4jJ0 @ "8pYҴESY3CƊ@*U:lY0_0#  5tX1E: C_xޘeKTV%ȣOΏ9??:a"\fSrğjAsKJ:nOzO=}E1-I)3(QEQEQEQEQEQEQE֝Hza<["2"pO#f8M[RL(,?g93QSZ uy"lx4h`O!LŏʨXZvq& c՚]+: ǵ@+J]tQ]~[[eϸ (]6A&>ܫ~+כzmZ^(<57KsHf妬Ϧmnẁ&F!:-`b\/(tF*Bֳ ~V{WxxfCnMvF=;5_,6%S>}cQQjsOO5=)Ot [W9 /{^tyNg#ЄGsֿ1-4ooTZ?K Gc+oyڙoNuh^iSo5{\ܹ3Yos}$.nQ-~n,-zr~-|K4R"8a{]^;I<ȤL5"EԤP7_j>OoK;*U.at*K[fym3ii^#wcC'IIkIp$󿉵|CtĈpW¹l{9>⪦׺*ͯj.LfGߍԁw] |WW18>w.ӯ! VӃ :#1~ +މ=;5c__b@W@ +^]ևՃ7 n&g2I8Lw7uҭ$"&"b eZ":8)D'%{}5{; w]iu;_dLʳ4R-,2H6>½HLKܹR ~foZKZ࿷1[oZ7׫Z7R¢?«'y?A}C_iG5s_~^ J5?œ tp]X/c'r%eܺA|4ծ-Ե+ْe1M38Ǯ `|Kյ OVڅu;"d56, X5kYR<̭CiطXԮ];Oy)OcWj֩}=܅s۸QZ*<~%뺃ȶp f~Bðzb\ݳzW*y{=[ C/Ak oXCkt_s}{'y?AmCjޓ{ WRV7r. g~Q"7&͹+c<=,dJ1V߁=T)TR՜*N4 ^Bڥ%B+=@fE5ka}ędܤFH^i1k\Sgdk> ֤aOM\_\T)8靠㡮3ģR: jj,pk/K!t,=ϯZ6(((((((49 xn_kLk&f9sK`zx{{y8H 8b4>ÇНE|7v(z/]k7IxM}8!ycZRQ pKVr(RPEr?^}'ðh{x+ՀLW154cK@Ng C)rr9+c:׹b Жf*s^ fKS7^} *{zq_@8# pF~ [VPe(nw0MW=3#kȵz晨cy PpG#W:%drMh]3HH<\]ԁ|_W HHҡb}P>k {ZErxMX@8C&qskLۙOnO^sCk7ql2XCw5VG.S~H8=(s1~cV5z %v|U2QF=NoW]ո?<`~׮}=ӬfԵ,=;"~Iy7K#g{ñJ?5$y` zz@-~m7mG宝Gٱ>G&K#]؃y1$$t>wqjstX.b̐{Wej)Dxfc:8)=$y|L`xV8ߙ~E)HkwW$J0uʟk>6Sgp~;4֌W+חc"=|ř9bc5> *rg {~cj1rnI#G|8v4wĿhFb><^ pJLm[Dl1;Vx5IZ:1*p)إ1ZbAK(1ׅ|S&5{^ KG^5r>;X׻K^? s fk^8O/"J)3K]N)iL?5!ƾq:G_=X- i,vi2N3 |03Qas ! 7}kZU781M,->e;@Qz T(GK(ah(((((((Y[×j2F}o־oYYq $+]%$ v^rϭ`nax,ZEuWSܽ,g%~"MrsrY~Ҿ"Fت;8{ѰxYEfP^;WPwqbB:c?zp<7;SBfZ)dϛ; 7s^>}⍱x?Bix^#hf,*P9S{w[]GF?1Z_nG~]kk)9Sc5Ո<<6J-ϛ}xUi>ux#ţc'{ᛲq?Oo?x&mѱ'#^t)ϲbb0 F«kIVmVsv@}kҡ!ˍUTtxO̧]ORb|2yԵk܊{sPIc_?ħ:Ig)=Z~' "\M2VSSMyLsl⺿U~"C7\hz_ Rs$~? TAi<lO*>U}+'f>7_K N s8g1^CeКÿE ;{+Y\ O5|Y{/o+ LVcO;7Zx-Ek&dpzbӱ+TaB0gNy׭ 3^c T\$⫫?F33?t._Q~Nln:U/Ceb1-im WʸQM+VpafR3d׫é|Aү-q*I P7:y&]hX^Fbtpܩ?|Wu󭏤ʫxJ3ߴm"(uqA}j.+?S wV ~ [B&<^U?rϜ_OH\'.;|.%pw/ZZG'1j(#0UT` Wzw}>_*9m>󑓀F?EL3"zpubzΕ$+0܉&3zڶ+jyr1QE ( ( ( ( ( ( ( (UIdC0EZm+]Y6^![ ԯsmܶ捆?+me+ZE29)B[;я*wGxsK7;5w)}gH~.Ɣx?X\ߚ}A@tQ(:ͧ|Iq(CT?v[sKG+*רqҍck <#Ljα5݈`8cXP6T5i.K!xX*p&ќZǓϘ7 *oƽ:wlຈ:Q5yIEA/2*2jAҐe}k%K$N9R2?7ýKMV!{W9\PA+c4w` Wx=Ze\X{}yXI Ү!aOÎ{]Qx)#D@9E:*NJ}b|Z>_k7:d$z >&Vv󃏽WlR:RqJfGإd9Tm(ҝEtO}1O[xxEYt8,3v bFF )ǙrPNE8=O#V*Cc𹾾&l&cmCh<.P{ʦ&ۣY+Gxs~k5$> ӥPquŽўZt~Tl>Q.g> %k#ú:Kn'&{[yWQGqF}AЅ׮/}<;VYZa$wQg!$;_ $NKS}“_{MY|w7G!"\JtRy+贾d|o/;5jz_6fHwk<ѰJ#]kAȎ J =YNu%dxRwwbEQEQEQEQEQEQEQEQEQE'fLQZ(1F)hQ@X1KEQE-Q@ 1KE3h=iPb(((1GjZ(-ʹRPbR@ 1KE7`bڒyS0(-&)P+ ڎԴP11F)h&:LRmQ@Q@Š(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((-DE ĿϘ|"d=wZx[F) 8tOݣ3chl+ ~ Sz?ڭMˌ ;#`e?:'SeǓq}/v^ $W?mhK[h-ϋ~0'99=8Xg,AZ]G{n9ƀ6(x-h%@WR2#5^Vt[{B{m*4͐0=h7tmPiszlZuAhHlm NF9ȭ [cHU I9IEczvv Ү`GlNO[OMմfݮ4Br%*8%IWzgN KXW4s e$׬i:3 .N3V^]F[}S[lgd]$LW$d Ԣxn⸷9$l]H #y5m6R.]B5 |V2]yS9#n@}(U=7Vuv K4,$g{Egzy_ڭ/w c8FqQk>d7N<ϲ\$3gi8_C@QXpx·W[Fy\$q38$1@QEWua|UKi mh $dCW?|A-sƨ(QwxsǚWQS.-'g$DF ˜)BrMz武o9Ti a9cz(vz\][j3>˘]lNTC@z66h)[ELrɜ/$w^jnqko{Z[Ov-eF9`0=Gszvm!X>yQz8q1ѶQX,ޙy%4Kc '# 5m6R.]B5 |V2]yS9#n@}*x|'`? (9i[[m%+4On#nRW&;u*R Ogm n>Aq¶}:'Seqc/n͇nFdg4&^LРHDF5A ;@{(jsj:5ܖs[w1t,@qA9:u_O^s\˿?03@}95_N͸F3Y|'f wyhǟwqހ1k6puQ-'UfzoӮ>}=[ͼ#<[p`r9w. 2{WqMn(x+L`$$!kS,,[p)F\v=$P**?h'cRIsxKšo/\Y[șS8b_ Uroac]uy4R?,#s$99h|qƿ[lΈF0;pM\o V֛ uos:VP%  w'DV!ege_wUv11OOR7UkN?C9t9쮅rX:7̸5c6:OȚO؞̀1 c|8ljEE]g~)CBѧMwMQk[i*f⠑`df?IaY?TTxۿ&X;fݼm?˷kv#u~}3oLPQ2 `|9qb0RZ4k04%*h?.G,TW,N.[ B`s@wQK~ 1%ƥ,,&V æf!&9th ~ښIaN9qc/>hje27 #$O$dPW ;£FWi7AEO +Iˆ?t|ۑq^w So'u7>V78q ?kG( *mgmh%O뻋C"^2,xOZ7j:]fH7@F} yf DxG:bylLKG G?G@Co?/; u˿ݍqszW? K ;q+( C=%a1=YXrjg%vc|3$FeOU(?>;|9șY&CG(T8ֺ 6euK^?X HtZآ1-ZxİYqހ(i;G^֍c6wuY>T @2 HP`#;z? fH&ՠ-D#R#[ ռG4I#C+ q1Yñ˰dPI `t7Fk}/OGk ĥHPpϰP=kO] =B<;m'hvPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEm]+>8ImiHbqp|![( Lꭎ@c0$g}l|Efs]+9u5bhI%q#2X A⯇/4a˔ J< w<FѦ&lOU,5kբy7uqpĕR1FM>:-*~!9o ݎWCI\( *m{w?±j8>[Ūx:޵:c5[}qd8³?!yGpdǾ#׼G_^O}>D| AmvUٯ-êDU& pހ=awiԡ+8$>|dVs1$>]? xRէ@|yfb0# US +k]SĭïOy]o|Vrw6@ nx`[$+cy7|?mCYCEa<%գg_3sQ^|_K}k{K&jV5Ry`6RE;ppc=Š:uhܖ֨|# Vcd`|4$m|C_DqpU,`XA%wG` '~o~zq^@o⟇$׼Gw|CtYlI,"%Qk5 x↓Ys6aJvyUp^?: *O.i? :+O y9CPq|98+'u/x:]ދ{f3W/ F:?=V^ '⋙Tyt^e2 ʳHsǁ>h>(Wt۽J84[olȁwʹ|1>\eryӢc΂WP܅ݹy4߀/MuxPDI)=+9#A݀G . OA~mm_iyd9.7o͞z vQEQEQEQEQEQEQEQEQEQEQEQEQEsMYG-- 7iB4ٕvge#'΄ko-ıH^I$`I$?3׎%No:,K wpNb%'n"3E%a\NЊc |i12[I<(F#rϴ _|nn:feI wdEʀIq2$ÚGt[-ؤf=K3X$g~MgNIm?xla$9\A .E5w_!ϴ.ׂrH냁xῇ+?_Gm.-`Dc#+@#A%dc9 uE/%[Kf }*a0R 5A VG  HB(q {仰yR/+z<9!u?cOܴNg>yiv6S9xKm7Zи}JaЫ)OQGכ:6{ftG IqWӶ0pzpA",|tfԽ;-."f!˹6@ __iD*k,,m:?.$NPNk~ o- $B޸@P]s:2.l &i {;?v8rEzp<1)t'ⴼeV0jb'~CP표 |+."ӬPԅp8E8r2;g xl͇uMWQH>y' o';K'/2YwI:fE )k `}ᦿ}⏇Fmy:H.$dݎ`d8NyUs.{0Op J"x#A VG  HB(qxc |Oun{I HWUڥ P01_CכQMW2H?w!c\d@%1( I܅6#;g9g5#:[iՌwvbTYH*z8$t&yUs.{0Op J"x#+RYW RdX/obd0WyFp}M{erGYL*$,PG ڣy9 ('u^\i0{X[xW_( ۜ~ %|ğ>*|ctcYO5H  ČW|o&~.ol['T3+@@Oq5y!mU.eƁ`@R(GzSm+>{seV% v/)݆a?72gg~^sn|c=%$B(65VI.ja,Y`Gl~Iz'7gZhvO%;sǵG <'~( gq\8GnYOdIWS~ ),W??^ ӚEݦy3(,8PI5PEPEPEPEPEPEPEPEPEPEPEPEPEPEs~9񝏁|5&}x48Œ)$p|j|j?aH-o"nnHh$&=;k/{b 7z\H\KU0c.Ќ9,QŒ^@Q@GQEQEQEW;?_Z^-). u> xYwo/ϵG<*RG@:(:}7×~&Ҵ;[= &U2$\>OPx'}q7C̺5,p8$((Zޣχ}'˗b"x$r(OI6:5o `5 0g烼 5XDm}@ >`6vb=B(+)ږ㯇vZݴzKᙑf_6S@EPU,;9, 1"6#*x8 ¬Q@ K ;q+,㳰<h$(dEQEQEQEW&ǐlc{.S0h2m0A$F0HҾ:.6buo$qn\H_N3PQ\_?C Ɗ;}BWuFd((((((((((((( A>:/zQ vdo>삇B1ox^?Hd wk ! @E%ʼ9Uscgyawݬ4 H8a~yCI\.? 5}cK$7ҭ.6MqxHkcmO /5?5wRyC#' ? jZjv]e.cfE|b0}Oh|i 󤪬 Fއk)A\y>)7Y3uHOʏ$?ṬQĝn#k鶓kd\ g q Ox#kVs+R#v* Uuoſfh%@ԌhxJ׀guVqe}2"U2&KWsMLoO_[E/Gx8fU2XtzQEC²訫+g'dQPWmCۿG^^InQtyZ襬^1i_uVOPHg-?3 [yZ襯??4W*~^^'( ~IW}kn .$,>͹ !Q¿RXx;}0lD#B<[+H׸A<7V\[J6 dGk_ۘLؓGʱO`8=FG4נWmCۿG@M3Z̟duC cgPzV=WҹI>PF ~ ׁ|=qqi-I$ĤJyqz2?o)y¾!Gfts;y`&bq@OY+ZyVicPON2B88y'?ut΁4,k l1qZ5X=jM9*_qҾ\=3sgpa9A@<5xtxUVD++T lo J oQwRĺ|CԞ%&bHȅ8%c$8%O@,{j<+ 41¨''!Cbf::g@XYScYK6OsA5bx8e_ |CivYMJl0  <_O:Wǫiz?u ٕr]Y 67dž{Oi1>_QKпa#OB:!1{pԡ.k_'Im)2!i X88>(\$<-cv"Mn[?,||͓t}xkHg>:ywrNkO|"񯆴{I㥊Cq VTf H +Ǿ3Ķ Dq2,W, qwC3a-lỵ}.L`, m9͌3;˯y1&i Y]7?$iF FJ%kA+:7O_Y8u6^G(Ilc+~YanW9;rNzG/,[??`n<vr9j(<~oo7xKzkq%[$ nWBT y9-X:&w&ezQzᑰ>anW9;rNzOUҬu.LM0Ar`xZS>!k:V[(bwm)"N:`sײQ@_OTd-[ZH./oHU~b\~>74hVtM5[[c A-Oz$䳿ɍ #`2|^Ey>Ě&K 'UX;$X4#x @یxNuo x;m.dUwB#;Fx6gp9nV~i#ukXϷ̋{&r@N~ ^is[e$ƋnI.f-)I+ڲ D|Ie: vq|Y~ 3%zf#Z-vRX,z xt5+?1ϱm"vz( Lwm"v߱N3&{x|o·iYgP9UOlWYEW74+יpH,@ܮ qs^Ey[z姈5m{Uuh(/&;6%`3XKgOjp`C|!3G#y`{(%s}qνU=Ii?7 ;< O붹|+D]s޻ (}IJCχw-*⦳  H%UE'qJ(/ }[ŷ|/aqvqGۇL}ֻ ((((((((((((( sY{߾[HW:*X3 W/P.v|KsMFVaX3m sev'K-%+oSDV,V"Ę䍱s CkoQH8Ppb8^oɩqn&ۑU2/,8= ?:xH8JZ+ 92`pcֽ"?6=Ŀ!qw^,g đcڌH]G}rV3$906@`6Xi wB,aK!# =A/د#K[TEb1kl` g6mºFpѴVPђT RF@82n\k>Tѿ{b/BO3*z%x?p~XۇLAeX9$W>@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@?>wiT|N>Q'<}}׺lK/.q d8ڏ>.Z/k1-@Wڀ; P'Tۊs ?J _9>*`ų~Xy$k5[jvzu林+yd![p`r9\uC7͸+khqz(vr@6<k',t~>gs<#2)Qϥy>|MiO"]-IeّBLnO#h/uMg\=u0{*J3Ý͗?/W==#תi1CXŪM[ƷR0(Q=PPů:MoXC۲pp~^x?|P{'ͦito?%{QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQENIt->{s$04͒r }jQEQEQEQETs ռG4I#C+ qcagYgaiy rI8Q$5b((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((PKfLf4s/sPK;,AOEBPS/dcommon/contbig.gif`GIF87a!!!111999BBBJJJRRRccckkksss{{{skk{{ZRRRJJƽ{sZRJRJB91)kcZB9)sskZRJ1޽ƽ{{ssskkkcƵZZRccZRRJJJB{BB9991ssckkZccR))!RRB!!JJ1))99!11ƌ)1R)k֔)s1RZJR{BJs9R1J!11J1J9k{csZk!1J!)cBR9J1B)91B!cRs{!)s!){1B!k!s!{ksksckckZc9B)1!)!)BJ9B1919έƌ!!)JJcZZ{!!!1RR{JJsBBkJJ{!!9BB{1!!J9)!!Z!!c1!!kR!!s9Z!BckJs)19!!c!!ZRZ,H rrxB(Kh" DժuICiи@S z$G3TTʖ&7!f b`D 0!A  k,>SO[!\ *_t  Exr%*_}!#U #4 & ֩3|b]L ]t b+Da&R_2lEٱZ`aC)/яmvUkS r(-iPE Vv_{z GLt\2s!F A#葡JY r|AA,hB}q|B`du }00(䡆<pb,G+oB C0p/x$…– ]7 @2HFc ) @AD \0 LHG',(A` `@SC)_" PH`}Y+_|1.K8pAKMA @?3҄$[JPA)+NH I ,@8G0/@R T,`pF8Ѓ)$^$ DDTDlA@ s;PKPK;,AOEBPS/dcommon/darbbook.cssPKPK;,A!OEBPS/dcommon/O_signature_clr.JPG"(JFIF``C    $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (?O '~MQ$Vz;OlJi8L%\]UFjޙ%ԯS;rA]5ފ<׈]j7Ouyq$z'TQuw7Ŀ KX߁M2=S'TQt?.5w'97;~pq=" ~k?`'9q6 E|yayM^Om'fkC&<5x' ?A?Zx'jß={=SßM gVC.5+Hd֪xc^)Җufz{Cީ|D Vkznq|+Xa+{50rx{|OG.OϞ~f/ xxX[2H )c+#jpUOZYX\=SG ߨC|K@;_߆'e?LT?]:?>w ڔ`D^So~xo[Ӡ3i7B:Q8 Vc-ďoi:FM292~y_*_闱YN\Fr=xZ3鳎OwW_QEzW~c]REeaSM}}Hӏ4&.E]u=gMѠ+mF`rNn$w9gMa꺢nTuhf2Xv>އ a(Û6߭?<=>z'TQuw7Ŀ KX߁M2=S'TQt?.5Kko\.8S$TOX߀Gw?Zx汴X)C7~.i6(Щ=+4{mGӭ¸-]&'t_kV*I<1)4thtIsqpQJ+> \m^[aJ5)ny:4o&QEnyAEPEEss 72,PDۢ׃K W{Wjr+wگ iM/;pd?~&?@;7E4gv8 $l'z'TQuw7Ŀ Gֱ=ɿ&G?. iR(5W*$|?w᫼gkmIbHe/_t>tg%y.l}N5[]+Mk0ĠeHdPrsst'UiC,y8`V%9ZIia|ܪvi מYG,o}+kk{YbyIeb*sAtի82zWoEK5z*o-eo;n(P u-I)4Š(HQEQEQEQEhz(X/Đ?}Bk˩ ݏrk0]4>8XzV? }6$}d^F>nU K ?Bտk_9׾x~w'ߞ  uDŽtL ؈5c-E/"|_Oo.IH쐍=i*Iw5(ںw?t5s.)+tQ2dUt5Vĺ.jZ"@IRrZƅY4ߡ_;}ų(KyQf1Aǵt?sZg+?F5_oQR&Dg߿]6FuRD u>ڿxl7?IT8'shj^=.=J1rj1Wl$얲cPx;E,p$֟ˏkw qg"45(ǛkV/=+ũ)bYl~K#˝J_כ5&\F'I#8/|wʾ_Xj Q:os^T1.M_|TO.;?_  jF?g N 8nA2F%i =qW,G=5OU u8]Rq?wr'˻S+۾.ܼ 87Q^elo/T*?L|ۚ<%<,/v_OKs B5f/29n0=zqQq(ª=VX@*J(э(f5qJN_EVǞQEOuoѕOuoa5}gO?:߂8Wא|cڽ~]N&O( (<]>͠@VQ=^~U ̴m&\խ5i:}|}r~9՝f}_>'vVֲ$~^f30^in{\_.O F8to}?${φ|#x^#^n~w=~k~?'KRtO.㌡h![3Zu*ٷճ(ԟ]z_/W1(ԟ]v~g|Yq<ז0 ; b8֮s,w9\?uEyStKaª@\,)) (!EPEPEPEPEPzѧts{v>C/"N6`d*J2gGӧWqBq_1ZuΓ\X]r?=Ey88Mp&pKtO-"wR2 K^-Z< \c>V0^@O7x2WFjs<׻kZ(<Т(OFw/6$1[:ޯԯ#q~4|,LVPem=@=YLUxӃV}AUbcUB.Ds5*kٸAeG>PJxt͝ b88?*$~@ׯD VkraiJs}Q.20x&mXξ,Z]“A-J#`+-E/"<]\a'tZGy.(|lދ~gMK OZdxDŽU9T6ϯ^<Ϡt5CZ]].t۫S=s`ڳ%8iVK:nqe+#<.T6U>zWoy3^I {F?J~=G}k)K$$;$de8*G Uӟ4Ocºw}|]4=ݣ\x$ʠms?q^ipw\"ȿPs^Z Q_0GڼU.t}ROM[G#]8wٞ ӫ87}Cgw vHȩBM55vof =A_٭`Ygx[6 P,5}>蚊(0(+?>+?> k|TuXq6_ +szk :u_ Z߶Ak_U}Jc2u/1[_»ݸG41-bሬ۴}}Eȹפ_c?5gi @cL\L<68hF_Ih>X4K7UТ sMj =J7CKo>Օ5s:߀t ~ηaٿ?|gdL8+gG%o?x`دOqȱwc¨&TW_V_aI=dpG!wu۞սZ1yL50$(l3(:~'ַo A}a3N*[0ǭ HKQV}G@֜$ 9of$ArNqUOgË05#m?D)^_h//5_/<?4}Jį+GkpG4"$ r| >S4Ђ"S 1%R:ȝ 8;PKPz PK;,AOEBPS/dcommon/feedback.gif7GIF89a'%(hp|fdx?AN5:dfeDGHɾTdQc`g*6DC\?ؘ||{;=E6JUՄfeA= >@,4`H.|`a (Q 9:&[|ځ,4p Y&BDb,!2@, $wPA'ܠǃ@CO~/d.`I @8ArHx9H75j L 3B/` P#qD*s 3A:3,H70P,R@ p!(F oԥ D;"0 ,6QBRɄHhI@@VDLCk8@NBBL2&pClA?DAk%$`I2 #Q+l7 "=&dL&PRSLIP)PɼirqМ'N8[_}w;PK-PK;,AOEBPS/dcommon/booklist.gifGIF89a1޵֥΄kZ{Jk1Rs!BZ)B),@I9Z͓Ca % Dz8Ȁ0FZЌ0P !x8!eL8aWȠFD(~@p+rMS|ӛR$ v "Z:]ZJJEc{*=AP  BiA ']j4$*   & 9q sMiO?jQ = , YFg4.778c&$c%9;PKː5PK;,AOEBPS/dcommon/cpyr.htm1 Oracle Legal Notices

Oracle Legal Notices

Copyright Notice

Copyright © 1994-2012, Oracle and/or its affiliates. All rights reserved.

Trademark Notice

Oracle and Java are registered trademarks of Oracle and/or its affiliates. Other names may be trademarks of their respective owners.

Intel and Intel Xeon are trademarks or registered trademarks of Intel Corporation. All SPARC trademarks are used under license and are trademarks or registered trademarks of SPARC International, Inc. AMD, Opteron, the AMD logo, and the AMD Opteron logo are trademarks or registered trademarks of Advanced Micro Devices. UNIX is a registered trademark of The Open Group.

License Restrictions Warranty/Consequential Damages Disclaimer

This software and related documentation are provided under a license agreement containing restrictions on use and disclosure and are protected by intellectual property laws. Except as expressly permitted in your license agreement or allowed by law, you may not use, copy, reproduce, translate, broadcast, modify, license, transmit, distribute, exhibit, perform, publish, or display any part, in any form, or by any means. Reverse engineering, disassembly, or decompilation of this software, unless required by law for interoperability, is prohibited.

Warranty Disclaimer

The information contained herein is subject to change without notice and is not warranted to be error-free. If you find any errors, please report them to us in writing.

Restricted Rights Notice

If this is software or related documentation that is delivered to the U.S. Government or anyone licensing it on behalf of the U.S. Government, the following notice is applicable:

U.S. GOVERNMENT RIGHTS Programs, software, databases, and related documentation and technical data delivered to U.S. Government customers are "commercial computer software" or "commercial technical data" pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations. As such, the use, duplication, disclosure, modification, and adaptation shall be subject to the restrictions and license terms set forth in the applicable Government contract, and, to the extent applicable by the terms of the Government contract, the additional rights set forth in FAR 52.227-19, Commercial Computer Software License (December 2007). Oracle America, Inc., 500 Oracle Parkway, Redwood City, CA 94065.

Hazardous Applications Notice

This software or hardware is developed for general use in a variety of information management applications. It is not developed or intended for use in any inherently dangerous applications, including applications that may create a risk of personal injury. If you use this software or hardware in dangerous applications, then you shall be responsible to take all appropriate fail-safe, backup, redundancy, and other measures to ensure its safe use. Oracle Corporation and its affiliates disclaim any liability for any damages caused by use of this software or hardware in dangerous applications.

Third-Party Content, Products, and Services Disclaimer

This software or hardware and documentation may provide access to or information on content, products, and services from third parties. Oracle Corporation and its affiliates are not responsible for and expressly disclaim all warranties of any kind with respect to third-party content, products, and services. Oracle Corporation and its affiliates will not be responsible for any loss, costs, or damages incurred due to your access to or use of third-party content, products, or services.

Alpha and Beta Draft Documentation Notice

If this document is in prerelease status:

This documentation is in prerelease status and is intended for demonstration and preliminary use only. It may not be specific to the hardware on which you are using the software. Oracle Corporation and its affiliates are not responsible for and expressly disclaim all warranties of any kind with respect to this documentation and will not be responsible for any loss, costs, or damages incurred due to the use of this documentation.

Oracle Logo

PKN61PK;,AOEBPS/dcommon/masterix.gif.GIF89a1ޜΌscJk1Rs!Bc1J),@IS@0"1 Ѿb$b08PbL,acr B@(fDn Jx11+\%1 p { display: none; } /* Class Selectors */ .ProductTitle { font-family: sans-serif; } .BookTitle { font-family: sans-serif; } .VersionNumber { font-family: sans-serif; } .PrintDate { font-family: sans-serif; font-size: small; } .PartNumber { font-family: sans-serif; font-size: small; } PKeӺ1,PK;,AOEBPS/dcommon/larrow.gif#GIF87a絵ƌֵƽ{{ss֜ƔZZ{{{{ZZssZZccJJJJRRBBJJJJ991111))!!{,@pH,Ȥrl:ШtpHc`  өb[.64ꑈ53=Z]'yuLG*)g^!8C?-6(29K"Ĩ0Яl;U+K9^u2,@@ (\Ȱ Ë $P`lj 8x I$4H *(@͉0dа8tA  DсSP v"TUH PhP"Y1bxDǕ̧_=$I /& .)+ 60D)bB~=0#'& *D+l1MG CL1&+D`.1qVG ( "D2QL,p.;u. |r$p+5qBNl<TzB"\9e0u )@D,¹ 2@C~KU 'L6a9 /;<`P!D#Tal6XTYhn[p]݅ 7}B a&AƮe{EɲƮiEp#G}D#xTIzGFǂEc^q}) Y# (tۮNeGL*@/%UB:&k0{ &SdDnBQ^("@q #` @1B4i@ aNȅ@[\B >e007V[N(vpyFe Gb/&|aHZj@""~ӎ)t ? $ EQ.սJ$C,l]A `8A o B C?8cyA @Nz|`:`~7-G|yQ AqA6OzPbZ`>~#8=./edGA2nrBYR@ W h'j4p'!k 00 MT RNF6̙ m` (7%ꑀ;PKl-OJPK;,AOEBPS/dcommon/index.gifGIF89a1޵ΥΥ{sc{BZs,@IM" AD B0 3.R~[D"0, ]ШpRNC  /& H&[%7TM/`vS+-+ q D go@" 4o'Uxcxcc&k/ qp zUm(UHDDJBGMԃ;PK(PK;,AOEBPS/dcommon/bookbig.gif +GIF89a$!!!)))111999BBBJJJRRRZZZccckkksss{{{skkB991)))!!B11))1!JB9B9!!cZ9ƭƽssk{ZZRccZRRJJJBBB9c!!ν)1)k{s絽ƌkssֽZccJRRBJJ{9BB)11)99!!))11!!k!JZ!)RcJccBcs)1c)JZ!BR!)BZ)99J!Rk9!c11B)Z{)9Bkc1kB9BZ!Z{9Rs)Jkksk9kB1s1Jk9Rƥc{k9s)Z{1k91)s1Rk)Jc1J!))BZ!1k{csc{)19B!)Bcsc{ksc{kZs!RkJkJkքc{9Zks{ck9R)Bks9R9R1J!)Z1B!)c)9)99BR19kksBBJcc{ccBBZ))9kk!!199c11ZBB{9!!R!!Z!!c))!!kR!!s!!BcksRZ1c9B)R91c1)Z!R9B9k1)RcZ{)!1B9JB9B)!)J9B!& Imported from GIF image: bookbig.gif,$!!!)))111999BBBJJJRRRZZZccckkksss{{{skkB991)))!!B11))1!JB9B9!!cZ9ƭƽssk{ZZRccZRRJJJBBB9c!!ν)1)k{s絽ƌkssֽZccJRRBJJ{9BB)11)99!!))11!!k!JZ!)RcJccBcs)1c)JZ!BR!)BZ)99J!Rk9!c11B)Z{)9Bkc1kB9BZ!Z{9Rs)Jkksk9kB1s1Jk9Rƥc{k9s)Z{1k91)s1Rk)Jc1J!))BZ!1k{csc{)19B!)Bcsc{ksc{kZs!RkJkJkքc{9Zks{ck9R)Bks9R9R1J!)Z1B!)c)9)99BR19kksBBJcc{ccBBZ))9kk!!199c11ZBB{9!!R!!Z!!c))!!kR!!s!!BcksRZ1c9B)R91c1)Z!R9B9k1)RcZ{)!1B9JB9B)!)J9BH`\Ȑ:pظа"A6DBH,V@Dڹ'G"v Æ ܥ;n;!;>xAܽ[G.\rQC wr}BŊQ A9ᾑ#5Y0VȒj0l-GqF>ZpM rb ;=.ސW-WѻWo ha!}~ْ ; t 53 :\ 4PcD,0 4*_l0K3-`l.j!c Aa|2L4/1C`@@md;(H*80L0L(h*҇҆o#N84pC (xO@ A)J6rVlF r  fry†$r_pl5xhA+@A=F rGU a 1х4s&H Bdzt x#H%Rr (Ѐ7P`#Rщ'x" #0`@~i `HA'Tk?3!$`-A@1l"P LhʖRG&8A`0DcBH sq@AXB4@&yQhPAppxCQ(rBW00@DP1E?@lP1%T` 0 WB~nQ@;PKGC PK;,AOEBPS/dcommon/rarrow.gif/GIF87a絵ƌֵƽ{{ss֜ƔZZ{{{{ZZssZZccJJJJRRBBJJJJ991111))!!{,@pH,Ȥrl:ШLlԸ NCqWEd)#34vwwpN|0yhX!'+-[F 'n5 H $/14w3% C .90" qF 7&E "D mnB|,c96) I @0BW{ᢦdN p!5"D`0 T 0-]ʜ$;PKJV^PK;,AOEBPS/dcommon/mix.gifkGIF89aZZZBBBJJJkkk999sss!!!111cccֽ{{{RRR)))猌ƭ{s{sks!,@@pH,B$ 8 t:<8 *'ntPP DQ@rIBJLNPTVEMOQUWfj^!  hhG H  kCúk_a Ǥ^ h`B BeH mm  #F` I lpǎ,p B J\Y!T\(dǏ!Gdˆ R53ټ R;iʲ)G=@-xn.4Y BuU(*BL0PX v`[D! | >!/;xP` (Jj"M6 ;PK枰pkPK;,AOEBPS/dcommon/doccd_epub.jsM /* Copyright 2006, 2012, Oracle and/or its affiliates. All rights reserved. Author: Robert Crews Version: 2012.3.17 */ function addLoadEvent(func) { var oldOnload = window.onload; if (typeof(window.onload) != "function") window.onload = func; else window.onload = function() { oldOnload(); func(); } } function compactLists() { var lists = []; var ul = document.getElementsByTagName("ul"); for (var i = 0; i < ul.length; i++) lists.push(ul[i]); var ol = document.getElementsByTagName("ol"); for (var i = 0; i < ol.length; i++) lists.push(ol[i]); for (var i = 0; i < lists.length; i++) { var collapsible = true, c = []; var li = lists[i].getElementsByTagName("li"); for (var j = 0; j < li.length; j++) { var p = li[j].getElementsByTagName("p"); if (p.length > 1) collapsible = false; for (var k = 0; k < p.length; k++) { if ( getTextContent(p[k]).split(" ").length > 12 ) collapsible = false; c.push(p[k]); } } if (collapsible) { for (var j = 0; j < c.length; j++) { c[j].style.margin = "0"; } } } function getTextContent(e) { if (e.textContent) return e.textContent; if (e.innerText) return e.innerText; } } addLoadEvent(compactLists); function processIndex() { try { if (!/\/index.htm(?:|#.*)$/.test(window.location.href)) return false; } catch(e) {} var shortcut = []; lastPrefix = ""; var dd = document.getElementsByTagName("dd"); for (var i = 0; i < dd.length; i++) { if (dd[i].className != 'l1ix') continue; var prefix = getTextContent(dd[i]).substring(0, 2).toUpperCase(); if (!prefix.match(/^([A-Z0-9]{2})/)) continue; if (prefix == lastPrefix) continue; dd[i].id = prefix; var s = document.createElement("a"); s.href = "#" + prefix; s.appendChild(document.createTextNode(prefix)); shortcut.push(s); lastPrefix = prefix; } var h2 = document.getElementsByTagName("h2"); for (var i = 0; i < h2.length; i++) { var nav = document.createElement("div"); nav.style.position = "relative"; nav.style.top = "-1.5ex"; nav.style.left = "1.5em"; nav.style.width = "90%"; while (shortcut[0] && shortcut[0].toString().charAt(shortcut[0].toString().length - 2) == getTextContent(h2[i])) { nav.appendChild(shortcut.shift()); nav.appendChild(document.createTextNode("\u00A0 ")); } h2[i].parentNode.insertBefore(nav, h2[i].nextSibling); } function getTextContent(e) { if (e.textContent) return e.textContent; if (e.innerText) return e.innerText; } } addLoadEvent(processIndex); PKo"nR M PK;,AOEBPS/dcommon/toc.gifGIF89a1ΥΥ{c{Z{JkJk1Rk,@IK% 0| eJB,K-1i']Bt9dz0&pZ1o'q(؟dQ=3S SZC8db f&3v2@VPsuk2Gsiw`"IzE%< C !.hC IQ 3o?39T ҍ;PKv I PK;,AOEBPS/dcommon/topnav.gifGIF89a1ֽ筽ޭƔkZZk{Bc{,@ ) l)-'KR$&84 SI) XF P8te NRtHPp;Q%Q@'#rR4P fSQ o0MX[) v + `i9gda/&L9i*1$#"%+ ( E' n7Ȇ(,҅(L@(Q$\x 8=6 'נ9tJ&"[Epljt p#ѣHb :f F`A =l|;&9lDP2ncH R `qtp!dȐYH›+?$4mBA9 i@@ ]@ꃤFxAD*^Ŵ#,(ε  $H}F.xf,BD Z;PK1FAPK;,AOEBPS/dcommon/bp_layout.css# @charset "utf-8"; /* bp_layout.css Copyright 2007, Oracle and/or its affiliates. All rights reserved. */ body { margin: 0ex; padding: 0ex; } h1 { display: none; } #FOOTER { border-top: #0d4988 solid 10px; background-color: inherit; color: #e4edf3; clear: both; } #FOOTER p { font-size: 80%; margin-top: 0em; margin-left: 1em; } #FOOTER a { background-color: inherit; color: gray; } #LEFTCOLUMN { float: left; width: 50%; } #RIGHTCOLUMN { float: right; width: 50%; clear: right; /* IE hack */ } #LEFTCOLUMN div.portlet { margin-left: 2ex; margin-right: 1ex; } #RIGHTCOLUMN div.portlet { margin-left: 1ex; margin-right: 2ex; } div.portlet { margin: 2ex 1ex; padding-left: 0.5em; padding-right: 0.5em; border: 1px #bcc solid; background-color: #f6f6ff; color: black; } div.portlet h2 { margin-top: 0.5ex; margin-bottom: 0ex; font-size: 110%; } div.portlet p { margin-top: 0ex; } div.portlet ul { list-style-type: none; padding-left: 0em; margin-left: 0em; /* IE Hack */ } div.portlet li { text-align: right; } div.portlet li cite { font-style: normal; float: left; } div.portlet li a { margin: 0px 0.2ex; padding: 0px 0.2ex; font-size: 95%; } #NAME { margin: 0em; padding: 0em; position: relative; top: 0.6ex; left: 10px; width: 80%; } #PRODUCT { font-size: 180%; } #LIBRARY { color: #0b3d73; background: inherit; font-size: 180%; font-family: serif; } #RELEASE { position: absolute; top: 28px; font-size: 80%; font-weight: bold; } #TOOLS { list-style-type: none; position: absolute; top: 1ex; right: 2em; margin: 0em; padding: 0em; background: inherit; color: black; } #TOOLS a { background: inherit; color: black; } #NAV { float: left; width: 96%; margin: 3ex 0em 0ex 0em; padding: 2ex 0em 0ex 4%; /* Avoiding horizontal scroll bars. */ list-style-type: none; background: transparent url(../gifs/nav_bg.gif) repeat-x bottom; } #NAV li { float: left; margin: 0ex 0.1em 0ex 0em; padding: 0ex 0em 0ex 0em; } #NAV li a { display: block; margin: 0em; padding: 3px 0.7em; border-top: 1px solid gray; border-right: 1px solid gray; border-bottom: none; border-left: 1px solid gray; background-color: #a6b3c8; color: #333; } #SUBNAV { float: right; width: 96%; margin: 0ex 0em 0ex 0em; padding: 0.1ex 4% 0.2ex 0em; /* Avoiding horizontal scroll bars. */ list-style-type: none; background-color: #0d4988; color: #e4edf3; } #SUBNAV li { float: right; } #SUBNAV li a { display: block; margin: 0em; padding: 0ex 0.5em; background-color: inherit; color: #e4edf3; } #SIMPLESEARCH { position: absolute; top: 5ex; right: 1em; } #CONTENT { clear: both; } #NAV a:hover, #PORTAL_1 #OVERVIEW a, #PORTAL_2 #OVERVIEW a, #PORTAL_3 #OVERVIEW a, #PORTAL_4 #ADMINISTRATION a, #PORTAL_5 #DEVELOPMENT a, #PORTAL_6 #DEVELOPMENT a, #PORTAL_7 #DEVELOPMENT a, #PORTAL_11 #INSTALLATION a, #PORTAL_15 #ADMINISTRATION a, #PORTAL_16 #ADMINISTRATION a { background-color: #0d4988; color: #e4edf3; padding-bottom: 4px; border-color: gray; } #SUBNAV a:hover, #PORTAL_2 #SEARCH a, #PORTAL_3 #BOOKS a, #PORTAL_6 #WAREHOUSING a, #PORTAL_7 #UNSTRUCTURED a, #PORTAL_15 #INTEGRATION a, #PORTAL_16 #GRID a { position: relative; top: 2px; background-color: white; color: #0a4e89; } PK3( # PK;,AOEBPS/dcommon/bookicon.gif:GIF87a!!!)))111999BBBJJJRRRZZZccckkksss{{{ޭ{{ZRRcZZRJJJBB)!!skRB9{sν{skskcZRJ1)!֭ƽ{ZZRccZJJBBB999111)JJ9BB1ZZB!!ﭵBJJ9BB!!))Jk{)1!)BRZJ{BsR!RRJsJ!J{s!JsBkks{RsB{J{c1RBs1ZB{9BJ9JZ!1BJRRs!9R!!9Z9!1)J19JJRk19R1Z)!1B9R1RB!)J!J1R)J119!9J91!9BkksBBJ119BBR!))9!!!JB1JJ!)19BJRZckތ1)1J9B,H*\hp >"p`ƒFF "a"E|ժOC&xCRz OBtX>XE*O>tdqAJ +,WxP!CYpQ HQzDHP)T njJM2ꔀJ2T0d#+I:<жk 'ꤱF AB @@nh Wz' H|-7f\A#yNR5 /PM09u UjćT|q~Yq@&0YZAPa`EzI /$AD Al!AAal 2H@$ PVAB&c*ؠ p @% p-`@b`uBa l&`3Ap8槖X~ vX$Eh`.JhAepA\"Bl, :Hk;PKx[?:PK;,AOEBPS/dcommon/conticon.gif^GIF87a!!!)))111999BBBJJJRRRZZZccckkksss{{{ZRR޽{{ssskkkcccZ991ccRZZBBJJZck)19ZcsBJZ19J!k{k)Z1RZs1!B)!J91{k{)J!B!B911)k{cs!1s!9)s!9!B!k)k1c!)Z!R{9BJcckZZcBBJ99B119{{!!)BBRBBZ!))999R99Z!!999c1!9!)19B1)!B9R,  oua\h2SYPa aowwxYi 9SwyyxxyYSd $'^qYȵYvh ч,/?g{н.J5fe{ڶyY#%/}‚e,Z|pAܠ `KYx,ĉ&@iX9|`p ]lR1khٜ'E 6ÅB0J;t X b RP(*MÄ!2cLhPC <0Ⴁ  $4!B 6lHC%<1e H 4p" L`P!/,m*1F`#D0D^!AO@..(``_؅QWK>_*OY0J@pw'tVh;PKp*c^PK;,AOEBPS/dcommon/blafdoc.cssL@charset "utf-8"; /* Copyright 2002, 2011, Oracle and/or its affiliates. All rights reserved. Author: Robert Crews Version: 2011.10.7 */ body { font-family: Tahoma, sans-serif; /* line-height: 125%; */ color: black; background-color: white; font-size: small; } * html body { /* http://www.info.com.ph/~etan/w3pantheon/style/modifiedsbmh.html */ font-size: x-small; /* for IE5.x/win */ f\ont-size: small; /* for other IE versions */ } h1 { font-size: 165%; font-weight: bold; border-bottom: 1px solid #ddd; width: 100%; } h2 { font-size: 152%; font-weight: bold; } h3 { font-size: 139%; font-weight: bold; } h4 { font-size: 126%; font-weight: bold; } h5 { font-size: 113%; font-weight: bold; display: inline; } h6 { font-size: 100%; font-weight: bold; font-style: italic; display: inline; } a:link { color: #039; background: inherit; } a:visited { color: #72007C; background: inherit; } a:hover { text-decoration: underline; } a img, img[usemap] { border-style: none; } code, pre, samp, tt { font-family: monospace; font-size: 110%; } caption { text-align: center; font-weight: bold; width: auto; } dt { font-weight: bold; } table { font-size: small; /* for ICEBrowser */ } td { vertical-align: top; } th { font-weight: bold; text-align: left; vertical-align: bottom; } ol ol { list-style-type: lower-alpha; } ol ol ol { list-style-type: lower-roman; } td p:first-child, td pre:first-child { margin-top: 0px; margin-bottom: 0px; } table.table-border { border-collapse: collapse; border-top: 1px solid #ccc; border-left: 1px solid #ccc; } table.table-border th { padding: 0.5ex 0.25em; color: black; background-color: #f7f7ea; border-right: 1px solid #ccc; border-bottom: 1px solid #ccc; } table.table-border td { padding: 0.5ex 0.25em; border-right: 1px solid #ccc; border-bottom: 1px solid #ccc; } span.gui-object, span.gui-object-action { font-weight: bold; } span.gui-object-title { } p.horizontal-rule { width: 100%; border: solid #cc9; border-width: 0px 0px 1px 0px; margin-bottom: 4ex; } div.zz-skip-header { display: none; } td.zz-nav-header-cell { text-align: left; font-size: 95%; width: 99%; color: black; background: inherit; font-weight: normal; vertical-align: top; margin-top: 0ex; padding-top: 0ex; } a.zz-nav-header-link { font-size: 95%; } td.zz-nav-button-cell { white-space: nowrap; text-align: center; width: 1%; vertical-align: top; padding-left: 4px; padding-right: 4px; margin-top: 0ex; padding-top: 0ex; } a.zz-nav-button-link { font-size: 90%; } div.zz-nav-footer-menu { width: 100%; text-align: center; margin-top: 2ex; margin-bottom: 4ex; } p.zz-legal-notice, a.zz-legal-notice-link { font-size: 85%; /* display: none; */ /* Uncomment to hide legal notice */ } /*************************************/ /* Begin DARB Formats */ /*************************************/ .bold, .codeinlinebold, .syntaxinlinebold, .term, .glossterm, .seghead, .glossaryterm, .keyword, .msg, .msgexplankw, .msgactionkw, .notep1, .xreftitlebold { font-weight: bold; } .italic, .codeinlineitalic, .syntaxinlineitalic, .variable, .xreftitleitalic { font-style: italic; } .bolditalic, .codeinlineboldital, .syntaxinlineboldital, .titleinfigure, .titleinexample, .titleintable, .titleinequation, .xreftitleboldital { font-weight: bold; font-style: italic; } .itemizedlisttitle, .orderedlisttitle, .segmentedlisttitle, .variablelisttitle { font-weight: bold; } .bridgehead, .titleinrefsubsect3 { font-weight: bold; } .titleinrefsubsect { font-size: 126%; font-weight: bold; } .titleinrefsubsect2 { font-size: 113%; font-weight: bold; } .subhead1 { display: block; font-size: 139%; font-weight: bold; } .subhead2 { display: block; font-weight: bold; } .subhead3 { font-weight: bold; } .underline { text-decoration: underline; } .superscript { vertical-align: super; } .subscript { vertical-align: sub; } .listofeft { border: none; } .betadraft, .alphabetanotice, .revenuerecognitionnotice { color: #e00; background: inherit; } .betadraftsubtitle { text-align: center; font-weight: bold; color: #e00; background: inherit; } .comment { color: #080; background: inherit; font-weight: bold; } .copyrightlogo { text-align: center; font-size: 85%; } .tocsubheader { list-style-type: none; } table.icons td { padding-left: 6px; padding-right: 6px; } .l1ix dd, dd dl.l2ix, dd dl.l3ix { margin-top: 0ex; margin-bottom: 0ex; } div.infoboxnote, div.infoboxnotewarn, div.infoboxnotealso { margin-top: 4ex; margin-right: 10%; margin-left: 10%; margin-bottom: 4ex; padding: 0.25em; border-top: 1pt solid gray; border-bottom: 1pt solid gray; } p.notep1 { margin-top: 0px; margin-bottom: 0px; } .tahiti-highlight-example { background: #ff9; text-decoration: inherit; } .tahiti-highlight-search { background: #9cf; text-decoration: inherit; } .tahiti-sidebar-heading { font-size: 110%; margin-bottom: 0px; padding-bottom: 0px; } /*************************************/ /* End DARB Formats */ /*************************************/ @media all { /* * * { line-height: 120%; } */ dd { margin-bottom: 2ex; } dl:first-child { margin-top: 2ex; } } @media print { body { font-size: 11pt; padding: 0px !important; } a:link, a:visited { color: black; background: inherit; } code, pre, samp, tt { font-size: 10pt; } #nav, #search_this_book, #comment_form, #comment_announcement, #flipNav, .noprint { display: none !important; } body#left-nav-present { overflow: visible !important; } } PKʍPK;,AOEBPS/dcommon/rightnav.gif&GIF89a1ֽ筽ޭƔkZZk{Bc{,@ ) l)- $CҠҀ ! D1 #:aS( c4B0 AC8 ְ9!%MLj Z * ctypJBa H t>#Sb(clhUԂ̗4DztSԙ9ZQҀEPEPEPEPEPEPEPM=iԍP Gii c*yF 1׆@\&o!QY00_rlgV;)DGhCq7~..p&1c:u֫{fI>fJL$}BBP?JRWc<^j+χ5b[hֿ- 5_j?POkeQ^hֿ1L^ H ?Qi?z?+_xɔŪ\썽O]χ>)xxV/s)e6MI7*ߊޛv֗2J,;~E4yi3[nI`Ѱe9@zXF*W +]7QJ$$=&`a۾?]N T䏟'X)Ɣkf:j |>NBWzYx0t!* _KkoTZ?K Gc+UyڹgNuh^iSo5{\ܹ3Yos}.>if FqR5\/TӮ#]HS0DKu{($"2xִ{SBJ8=}Y=.|Tsц2UЫ%.InaegKo z ݎ3ֹxxwM&2S%';+I',kW&-"_¿_ Vq^ܫ6pfT2RV A^6RKetto^[{w\jPZ@ޢN4/XN#\42j\(z'j =~-I#:q[Eh|X:sp* bifp$TspZ-}NM*B-bb&*xUr#*$M|QWY ~p~- fTED6O.#$m+t$˙H"Gk=t9r娮Y? CzE[/*-{c*[w~o_?%ƔxZ:/5𨴟q}/]22p qD\H"K]ZMKR&\C3zĽ[PJm]AS)Ia^km M@dК)fT[ijW*hnu Ͳiw/bkExG£@f?Zu.s0(<`0ֹoxOaDx\zT-^ѧʧ_1+CP/p[w 9~U^[U<[tĽwPv[yzD1W='u$Oeak[^ |Gk2xv#2?¹TkSݕ| rݞ[Vi _Kz*{\c(Ck_܏|?u jVڔ6f t?3nmZ6f%QAjJf9Rq _j7Z-y.pG$Xb]0')[_k;$̭?&"0FOew7 z-cIX岛;$u=\an$ zmrILu uٞ% _1xcUW%dtÀx885Y^gn;}ӭ)場QEQ@Q@Q@Q@Q@Q@!4xPm3w*]b`F_931˜[ן+(> E ly;<;MF-qst+}DH @YKlLmؤciN<|]IU)Lw(8t9FS(=>og<\Z~u_+X1ylsj'eՃ*U3`C!N9Q_WܱhKc93^ua>H ƕGk=8~e#_?{ǀe-[2ٔ7;=&K挑5zsLdx(e8#{1wS+ΝVkXq9>&yஏh$zq^0~/j@:/«Vnce$$uoPp}MC{$-akH@ɫ1O !8R9s5ԦYmϧ'OUṡ5T,!Ԛ+s#1Veo=[)g>#< s)ƽُA^䠮ωFUj(ǩ|N3Jڷ睁ϱuږZYGOTsI<&drav?A^_f׻B$,O__ԿC`it{6>G׈C~&$y؎v1q9Sc1fH[ѽ>,gG'0'@Vw,BO [#>ﱺg5ΒFVD%Yr:O5 Tu+O멃]ی38Ze}R&ѝ_xzc1DXgس;<,_,{ƽY'AS#oF.M#~cBuEx7G+Y)(5q+GCV;qF+CLQ)qEC&6z𿊘z}?&w=+)??&\g{;V??׻xGœdٿ׼-Nc')3K]N)iLTӿCdb7Q^a N sd>Fz[0S^s'Zi 77D}kWus ab~~H(>.fif9,~|Jk;YN3H8Y(t6Q݉k͇_÷Z+2߄&[ +Tr^藺97~c܎=[f1RrBǓ^kEMhxYVm<[џ6| kqbѱ| YA{G8p?\UM7Z66 g1U1igU69 u5Pƪ:VVZC=[@ҹ¨$kSmɳО\vFz~i3^a Osŧυ9Q}_3 όO{/wgoet39 vO2ea;Ύ7$U#?k+Ek&dpzbӱ+TaB0gN{[N7Gי}U7&@?>Fz~E!a@s ?'67XxO*!?qi]֏TQN@tI+\^s8l0)2k!!iW8F$(yOּT.k,/#1:}8uT˾+5=O/`IW G֯b.-<= HOm;~so~hW5+kS8s.zwE| ?4ӿw/K N 9?j(#0UT` Wzw}:_*9m>󑓀F?ELzv=8q:=WgJ`nDr Zе<ֹ](Q@Q@Q@Q@Q@Q@Q@Q@ 'IdC0EYJVcMty_~u+Sw-aO n<[YJgL#6i g5ЖDZ14cʝ!!\/M}/_AYR__>oC? _?7_G#RERW쏞KB}JxGSkǕA pƱơP m]hwB7U$Zq M95"3q1ioATߚ{g.t uu2k=;h#YB= fgS :TdLԃ!44mFK{Hrd^7oz|BVr<{)6AXգV»|>*/hS܏z͆OM=Εq (s|s׊LKQI :9NJ)P+!ʣoAF>+=@I}"x/}۠1aנc¹4emC:>p_xWKX` >R3_S½èųp3޺u3N e یbmͺ<_ mnݮ1Op?Gm)Qb%N585'%Ahs\6yw!"&Ɨ._wk)}GP;Z!#\"< *oƾ\)}N>"լ/~]Lg}pBG X?<zZ#x69S=6) jzx=y9O&>+e!!? ?s~k5Gʏ)?*ce7Ox~k5􇔾Q/e7/Ԑ#3OgNC0] ;_FiRl>Q.g>!%k#ú:Kn'&}?U@\pџPtp)v<{_i}Oվֲ3XIYIx~b<D?(=_JXH=bbi=Oh?_ C_O)}oW쏜? %Ƶ;-RYFi`wۭ{ϖZMtQ$"c_+ԃx1*0b;ԕ݋ESQEQEQEQEQEQEQEQEQEQZ(1F)h1K@XLRE&9P (bf{RӨ&)PEPEPbԴPGKZ(iإbn(:A%S0(-&)P+ ڎԴP11F)h&:LRmQ@Q@Š(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((PKje88PK;,AOEBPS/dcommon/help.gif!GIF89a1εֵ֜֜{kZsBc{,@ )sƠTQ$8(4ʔ%ŌCK$A HP`$h8ŒSd+ɡ\ H@%' 6M HO3SJM /:Zi[7 \( R9r ERI%  N=aq   qƦs *q-n/Sqj D XZ;PKއ{&!PK;,AOEBPS/gateways_connection.htma Connecting to Non-Oracle Data Sources Through Gateways

4 Connecting to Non-Oracle Data Sources Through Gateways

Gateways provide a transparent connection between Oracle and non-Oracle databases. Once a database is connected through a gateway, you can access it just as you access an Oracle database. As a result, you can use any of the transformation operators available in Oracle Warehouse Builder to transform the data before loading it into a target database.

Using Oracle Database Gateways, you can connect to different non-Oracle databases such as SQL Server, Sybase, Informix, Teradata, and DRDA. DRDA connectivity enables connection to DB2 database. Gateways provide a specific connection agent for each of these databases. For example, for a Sybase data source, the agent is a Sybase-specific gateway. You must install and configure this agent to support communication between the two systems. After creating a gateway connection to the database, you can import metadata into Oracle Warehouse Builder.


Note:

Before attempting to import metadata from a non-Oracle database through a gateway, ensure that the specific gateway for that database is installed on the system. See Oracle Database Heterogeneous Connectivity Administrator's Guide for more information about Oracle Database Gateways.


See Also:

For installation instructions and information about specific gateway agents for different databases, go to

http://www.oracle.com/pls/db112/gateways


This chapter describes the use of Oracle Database Gateways for connectivity among databases, from the perspective of Oracle Warehouse Builder. It provides background information on gateway-based connectivity, and then a few examples to illustrate the most common sources and targets. This chapter contains the following topics:

Connecting to a DB2 Database

To create a gateway connection to a DB2 database, ensure that Oracle Database Gateway for DRDA is installed. Once the gateway connection is established, you can access the DB2 database just as you access an Oracle database.

Creating a DB2 Module

To import metadata from a DB2 database, create a module in the DRDA node. The DRDA node is available under the Databases node in the Projects Navigator. To create a DRDA module:

  1. Right-click DRDA and select New DRDA Module.

    The Create Module Wizard is displayed.

  2. In the Name and Description page, provide a name, description (optional), and select a module status.

  3. In the Connection Information page, either select an existing location or click Edit to open the "Edit Non-Oracle Location Dialog Box" and create a new location.

  4. In the Summary page, verify the details and click Finish.

The newly created DB2 module is now available under the DRDA node.

Edit Non-Oracle Location Dialog Box

Select the Connection Type to be one of Host:Port:Service, Database Link, or SQL*Net.

Host:Port:Service

If you selected Host:Port:Service, then provide the following connection details:

  • User Name/Password: User name and password to access the database.

  • Host: Computer on which the database is hosted.

  • Port: SQL port number of the database. The default port number to access DB2 is set to 1111.

  • Service Name: The service name of the database.

  • Schema: Browse to select a schema to import.

Database Link

If you selected Database Link, then provide the following connection details:

  • From Location: An existing location where the database link is defined

  • Database Link Name: The object name of the database link

  • Schema: The schema where the source data is stored or the target objects is deployed.

SQL*Net

For SQL*Net, provide the following connection details:

  • User Name: The database user credential that has permission to access the schema location.

    When connecting to a database that does not have user names, enter any text as a mock user name.

  • Password: The password associated with user name.

    When connecting to a database that does not require a password, enter any text as a mock password.

  • Net Service Name: The name of the predefined connection.

  • Use Global Name: The unique name of the database, which is composed of the database name and the domain in the form database_name.database_domain. For example, db2.us.example.com identifies the db2 database in the us.example.com domain. Select this option when connecting to a database in a different network.

Click Test Connection to verify that you have provided the correct details and click OK to set the connection details.

Connecting to a SQL Server Database

To create a gateway connection to a SQL Server database, ensure that Oracle Database Gateway for SQL Server is installed.

Creating a SQL Server Module

The SQL Server node is available under the Databases node in the Projects Navigator. To create a SQL Server module:

  1. Right-click SQL Server and select New SQL Server Module.

    The Create Module Wizard is displayed.

  2. In the Name and Description page, provide a name, description (optional), and select a module status. Select SQL Server Gateway as the access method.

  3. In the Connection Information page, either select an existing location or click Edit to open the "Edit Non-Oracle Location Dialog Box" and create a new location.

  4. In the Summary page, verify the details and click Finish.

The newly created SQL Server module is now available under the SQL Server node.

Edit Non-Oracle Location Dialog Box

Select the Connection Type to be one of Host:Port:Service, Database Link, or SQL*Net.

Host:Port:Service

If you selected Host:Port:Service, then provide the following connection details:

  • User Name/Password: User name and password to access the database.

  • Host: Computer on which the database is hosted.

  • Port: SQL port number of the database. The default port number to access SQL Server is set to 1526.

  • Service Name: The service name of the database.

  • Schema: Browse to select a schema to import.

Database Link

If you selected Database Link, then provide the following connection details:

  • From Location: An existing location where the database link is defined

  • Database Link Name: The object name of the database link

  • Schema: The schema where the source data is stored or the target objects is deployed.

SQL*Net

For SQL*Net, provide the following connection details:

  • User Name: The database user credential that has permission to access the schema location.

    When connecting to a database that does not have user names, enter any text as a mock user name.

  • Password: The password associated with user name.

    When connecting to a database that does not require password, enter any text as a mock password.

  • Net Service Name: The name of the predefined connection.

  • Use Global Name: The unique name of the database, which is composed of the database name and the domain in the form database_name.database_domain. For example, sqlserver.us.example.com identifies the SQL Server database in the us.example.com domain. Select this option when connecting to a database in a different network.

Click Test Connection to verify that you have provided the correct details and click OK to set the connection details.

Connecting to an ODBC Data Source

Oracle Warehouse Builder can access any data source that supports open database connectivity (ODBC). This is possible using the ODBC support provided by Oracle Database. You can use ODBC access for any data source not supported by a specific gateway agent.

Setting up ODBC Connectivity

While ODBC connectivity is widely available, it is most commonly used to connect to data sources on Windows platforms. The Oracle Database configuration process should be substantially similar for connecting to any ODBC source. ODBC setup on the source system can vary greatly in different environments. The following discussion describes the common case of setting up ODBC connectivity to a source on a Windows platform using a System DSN. If you are on a non-Windows platform, consult the documentation from your vendor on ODBC setup.

Installing ODBC Driver

To enable ODBC connectivity to a data source, you must first install the ODBC driver for that particular data source.

Creating a System DSN

After installing the driver, create a system DSN using the Microsoft ODBC Administrator.

  1. Select Start, Settings, Control Panel, Administrative Tools, Data Sources (ODBC).

    This opens the ODBC Data Source Administrator dialog box.

  2. Navigate to the System DSN tab and click Add to open the Create New Data Source dialog box.

  3. Select the driver for which you want to set up the data source.

    Click Finish to open the ODBC Setup dialog box.

  4. Specify a name for the data source, and other relevant connection details for the data source. The connection details that you provide here differs for each type of data source.

Configuring the Database

Next, you must configure Oracle Database to connect to the data source. Oracle Warehouse Builder can then use this configuration to extract metadata from the data source. This involves:

Creating a Heterogeneous Services Initialization File

To configure an ODBC connection agent, you must create a heterogeneous services initialization file for the agent. Create this file in the OWB_HOME\hs\admin directory of the database.

The file name should start with init and have the extension .ora. It should be of the format initSID.ora, where SID is the system identifier for the ODBC agent. The value to be entered in this file is:

HS_FDS_CONNECT_INFO = DSN_NAME

DSN_NAME is the data source name that you provide while creating the system DSN. Other relevant data that must be provided in this file depends on the data source you are connecting to.

Configuring the listener.ora File

Add a new SID description in the listener.ora file. This file is available in the OWB_HOME\network\admin directory.

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = SID)
      (OWB_HOME = owbhome)
      (PROGRAM = program)
    )
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (OWB_HOME = owbhome)
      (PROGRAM = program)
      )
  )

The SID_NAME parameter must contain the name of the configuration file you created in the previous step. However, it must not contain the init prefix. For example, if the configuration file you created in the previous step was initdb2.ora, then the value of the SID_NAME parameter should be db2.

OWB_HOME must point to the Oracle home location of your database installation.

The value associated with the PROGRAM keyword defines the name of the executable agent, and differs for each type of data source.

Restart the listener service after making these modifications.

The steps involved in setting up the ODBC connectivity are similar for all data sources. However, the data to be provided while "Creating a System DSN", "Creating a Heterogeneous Services Initialization File", and "Configuring the listener.ora File" differs for each data source.

See Chapter 5, "Connecting to Microsoft Data Sources Through ODBC Connection" for specific examples of connecting to an Excel worksheet and SQL Server database.


See Also:

For more information about heterogeneous connectivity using Oracle Gateways, see Oracle Database Heterogeneous Connectivity Administrator's Guide.

Creating an ODBC Module

After you set up the ODBC connectivity to a data source, you must create an ODBC module to import the metadata from this data source. The ODBC node is available under the Databases node in the Projects Navigator. To create an ODBC module:

  1. Right-click ODBC and select New ODBC Module.

    The Create Module Wizard is displayed.

  2. In the Name and Description page, provide a name, description (optional), and select a module status.

  3. In the Connection Information page, either select an existing location or click Edit to open the "Edit Non-Oracle Location Dialog Box" and provide the connection details.

  4. In the Summary page, verify the details and click Finish.

The newly created ODBC module is now available under the ODBC node.

Edit Non-Oracle Location Dialog Box

Select the Connection Type to be one of Host:Port:Service, Database Link, or SQL*Net.

Host:Port:Service

If you selected Host:Port:Service, then provide the following connection details:

  • User Name/Password: You can provide a dummy user name and password as you are not connecting to an Oracle database.

  • Host: Computer on which the database is hosted.

  • Port: SQL port number of the database.

  • Service Name: The SID_NAME that you specify in the listener.ora file.

  • Schema: You can leave this field empty if you are not importing from a schema.

Database Link

If you selected Database Link, then provide the following connection details:

  • From Location: An existing location where the database link is defined

  • Database Link Name: The object name of the database link

  • Schema: The schema where the source data is stored or the target objects is deployed.

SQL*Net

For SQL*Net, provide the following connection details:

  • User Name: The database user credential that has permission to access the schema location.

    When connecting to a database that does not have user names, enter any text as a mock user name.

  • Password: The password associated with user name.

    When connecting to a database that does not require password, enter any text as a mock password.

  • Net Service Name: The name of the predefined connection.

  • Use Global Name: The unique name of the database, which is composed of the database name and the domain in the form database_name.database_domain. Select this option when connecting to a database in a different network.

Click Test Connection to verify that you have provided the correct details and click OK to set the connection details.

Importing Database Objects

After establishing connection to a DB2, SQL Server, or any other generic ODBC database, you can import metadata from the data objects in the database. The database objects that you can import are tables, views, and sequences. To import database objects:

  1. Right-click the newly created module, and select Import, Database Object.

    The Import Metadata Wizard is displayed.

  2. In the Filter Information page, select the object types to be imported. You can also narrow down the selection of objects by specifying a string pattern.

  3. In the Object Selected page, move the required objects from the Available list to the Selected list. Use the Find Objects button to search for objects in the Available list. Also specify whether dependent objects must be imported.

  4. In the Summary and Import page, verify the objects to be imported. Click Advanced Import Options to open the Advanced Import Options dialog box. By default, the following options are selected:

    • Preserve workspace added column

    • Preserve workspace added constraints

    • Import descriptions

    Retain or deselect any of the options.

You can now use any of the imported objects in a mapping to load data.

PKbaPK;,A OEBPS/toc.htm Table of Contents

Contents

Title and Copyright Information

Preface

1 Connecting to Sources and Targets in Oracle Warehouse Builder

2 Connecting to Data Sources and Importing Metadata

3 Using Flat Files as Sources or Targets

4 Connecting to Non-Oracle Data Sources Through Gateways

5 Connecting to Microsoft Data Sources Through ODBC Connection

6 Connecting to Data Sources Through JDBC

7 Extracting Data from SAP Applications

8 Integrating with Oracle ERP Applications

9 Importing Oracle Warehouse Builder Data into Business Intelligence Applications

10 Importing Design Definitions from Oracle Designer

11 Creating New Platforms

12 Using Code Templates to Load and Transfer Data

13 Importing and Publishing Web Services

Index

PK=/鴝PK;,AOEBPS/platform_extensions.htm Creating New Platforms

11 Creating New Platforms

Starting with Oracle Warehouse Builder 11g Release 2 (11.2), you can create new platforms to integrate with other systems and construct integration capabilities using code templates based on your requirements. A platform refers to a data source or target. By creating new platforms, you can thus connect to new databases in addition to those that are supported by default in Oracle Warehouse Builder.

This chapter contains the following topics:

Creating a New Platform

When you create a new platform, you must define properties including connection information, code generation options, data types supported by the platform, and how these data types map to the generic data types.

To create the platform and define its characteristics, you must use OMB*Plus scripting commands.

For more information about OMB*Plus scripting, see Oracle Warehouse Builder API and Scripting Reference.


See Also:

Oracle Warehouse Builder OMB*Plus Command Reference for a list of all OMB*Plus commands.

The OMBCREATE command creates a new platform:

OMBCREATE PLATFORM 'MICROSOFT_EXCEL' SET PROPERTIES (BUSINESS_NAME) VALUES ('Microsoft Excel')

The business name is displayed in the Projects Navigator.

To define the properties of this platform, use the OMBALTER command:

OMBALTER PLATFORM 'MICROSOFT_EXCEL' ADD PLATFORM_TYPE 'CHAR'

For a complete listing of the commands to create and define a new platform, see "Creating a Microsoft Excel Platform". You can add to this depending on your specific requirements.

When you create a platform from the OMB*Plus interface, the platform gets added under the Databases node in the Projects Navigator. The location of the platform gets added under the Databases node in the Locations Navigator. You can now create a module under this new platform.

Defining the Properties of a New Platform

While creating a new platform, you must define certain basic properties for the platform. These include:

  • Designer and run-time properties

  • Platform data types

  • CMI/MIV to be used for custom import

  • Data type definitions for the mappings

  • JDBC driver for the platform

Table 11-1 lists the properties that must be specified for a platform.

Table 11-1 Properties of a Platform

PropertyData TypeDescription

NAME

STRING

The physical name of the platform.

BUSINESS_NAME

STRING

Business name of the platform.

DESCRIPTION

STRING

Description of the platform.

DRIVERCLASS

STRING

The default JDBC driver class. For example com.sunopsis.jdbc.driver.xml.SnpsXmlDriver for XML.

URL_TEMPLATE

STRING

The default URL for the driver. This is used as a template.

COL_ALIAS_WORD

STRING

The separator for a column and its alias. It is not mandatory to specify this property.

TAB_ALIAS_WORD

STRING

The separator for a table and its alias. It is not mandatory to specify this property.

DATE_FCT

STRING

The function that returns the date and time. For example sysdate for Oracle.

DDL_NULL

STRING

A column that can hold NULL value.

DEFAULT_MAX_NAME_LEN

INTEGER

The maximum length for a table name. If you specify a name longer than this limit, the name is truncated to this length.

DEFAULT_NAME_LEN_SEMANTIC

STRING

Whether the name length is specified in characters or bytes.

SPECIAL_MAX_NAME_LEN

STRING

Name length for second class objects (SCOs). (For example INDEX=18 or COLUMN=30).

SPECIAL_NAME_LEN_SEMANTICS

STRING

Whether SPECIAL_MAX_NAME_LEN is specified in terms of characters or bytes.

ESCAPE_CHAR

STRING

The escape character. For example, it is the double quotation mark (") for Oracle Database.

ENCLOSURE_CHAR

STRING

The enclosure character. For example, it is the backslash (\) for Oracle Database.

RESERVED_WORDS

STRING

Reserved words for a platform.

ILLEGAL_CHARS

STRING

Characters that cannot be used while naming objects in a platform.

ILLEGAL_LEADING_CHARS

STRING

Characters that cannot be used as the first character in the name of an object.

CUSTOM_IMPORTERS


The custom metadata definitions that are associated to a platform.

Data Types


The data types supported by a platform. You can specify the syntax to define a data type and any parameter that the data type uses. For example the length, precision, and scale.

Data Type map to Generic platform


The mapping of a platform's data types to the generic data types.

Data Type map from Generic platform


The mapping of generic data types to a platform's data types.

VARCHAR_MASK

STRING

Run-time properties used by the platform while executing Code Templates.

DATE_MASK

STRING


NUMERIC_MASK

STRING

The syntax to be used to describe the numeric data type in DDL. The tags %L (data length) and %P (precision) can be used.


Defining the Platform Type

Based on your requirements, you can provide support for various data types in a platform. The properties of the Data Type define the scope of a data type. These properties are listed in Table 11-2.

Table 11-2 Properties of Data Type

PropertyTypeDescription

NAME

STRING

The physical name of the data type.

BUSINESS_NAME

STRING

The business name of the data type.

DESCRIPTION

STRING

Description of the data type.

SYNTAX

STRING

The syntax to be used during code generation. For example CHAR[(%size)].

P1

STRING

Either size, precision, or scale.

P1TYPE

STRING

Specifies the range.

P1DEFAULT

STRING

Default value for P1.

P1MIN

STRING

Minimum value for P1.

P1MAX

STRING

Maximum value for P1.

P2

STRING

Specifies either Size, Precision, or Scale.

P2TYPE

STRING

Specifies the range.

P2DEFAULT

STRING

Default value for P2.

P2MIN

STRING

Minimum value for P2.

P2MAX

STRING

Maximum value for P2.


Defining the Data Type Map

After you define data types for a platform, you must also define how these data types map to other generic data types. You can define these data type mappings with the properties listed in Table 11-3.

Table 11-3 Data Type Mapping Properties

PropertyDescription

NAME

The physical name of the map.

BUSINESS_NAME

Business name of the map.

DESCRIPTION

Description of the map.

FROM_DATATYPE

The data type to map from.

TO_DATATYPE

Data type to be mapped to.

CONDITION1

Defines the condition where the data type mapping is valid. For example, mapping from a generic CHAR data type to a DB2UDB CHAR data type is dependent on the size of the characters, and this size is specified in the CONDITION1 parameter.

CONDITION2

Used for setting additional condition.

CONDITION3

Used for setting additional condition.


Generic Data Types Supported in Oracle Warehouse Builder

The Generic data types supported in Oracle Warehouse Builder are listed in Table 11-4.

Table 11-4 Generic Data Types

CategoryGeneric Data TypeParametersDescription

Numbers

BIGINT


Range is -2^63 to 2^63-1


BINARY_FLOAT


Single precision floating point numbers

Minimum positive finite value = 1.17549E-38F

Maximum positive finite value = 3.40282E+38F


BINARY_DOUBLE


Double precision floating point numbers

Minimum positive finite value = 2.22507485850720E-308

Maximum positive finite value = 31.79769313486231E+308


BIT


An integer data type that can take a value of 1, 0, or NULL


FLOAT

FLOAT (precision)

-1.79769E+308 to -2.23E-308, 0 and 2.23E-308 to 1.79769E+308


DOUBLE

DOUBLE (precision)

-1.79769E+308 to -2.23E-308, 0 and 2.23E-308 to 1.79769E+308


INTEGER


NUMERIC(38)


INT10


The range of large integers is -2 147 483 648 to +2 147 483 647


MONEY


Ranges from -922,337,203,685,477.5808 to 922,337,203,685,477.5807. (Used only by MS SQL Server)


NUMERIC

NUMERIC [(precision [, scale])]

The precision p can range from 1 to 38. The scale s can range from -84 to 127


DECIMAL

DECIMAL [(precision [, scale])]

The precision p can range from 1 to 38. The scale s can range from -84 to 127


REAL


Ranges from - 3.40E + 38 to -1.18E - 38, 0 and 1.18E - 38 to 3.40E + 38


SMALLINT


Ranges from -2^15 (-32,768) to 2^15-1 (32,767)


SMALLMONEY


Ranges from - 214,748.3648 to 214,748.3647


TINYINT


Ranges from 0 to 255

Large Objects

BLOB

BLOB

A binary large object, with no limit on the maximum size


VARLOB

VARBLOB [(size[K|M|G])]

A binary large object is a varying-length binary string that can be up to 2 GB (2 147 483 647 bytes) long. The default value is 1 MB (1,048,576)


CLOB


Character large object. No limit on the maximum size


VARCLOB

VARCLOB [(size[K|M|G])]

A CLOB (character large object) value can be up to 2 GB (2 147 483 647 bytes) long. The default value is 1 MB (1,048,576)


DBCLOB

DBCLOB [(size[K|M|G])]

A DBCLOB (double-byte character large object) value can be up to 1 073 741 823 double-byte characters long. (Only used by IBM DB2 UDB)


NCLOB


Character large object in Unicode or double-byte. No limit on the maximum size

Character Strings

CHAR

CHAR[(size)]

Fixed length character data with size between 1 and 8000


GRAPHIC

GRAPHIC (size)

The size attribute must be between 1 and 127, inclusive. (Only used by IBM DB2 UDB)


LONGVARGRAPHIC

LONGVARGRAPHIC (size)

VARGRAPHIC value can be up to 16 350 double-byte characters long. (Only used by IBM DB2 UDB)


NCHAR

NCHAR (size)

Fixed length (1 to 2000) Unicode or double-byte character data

Size: 1-4000


NVARCHAR

NVARCHAR (size)

Variable length (1 to 4000) Unicode or double-byte character data


NVARCHARMAX

NVARCHARMAX

Variable length (1 to 2^31-1) Unicode or double-byte character data


VARCHAR

VARCHAR (size)

Variable length (1 to 8000) character data


VARCHARMAX

VARCHARMAX

Variable length (1 to 2^31) character data


VARGRAPHIC

VARGRAPHIC (size)

A VARGRAPHIC value can be up to 16 336 double-byte characters long. (Only used by IBM DB2 UDB)

Date and Time

DATE


Date in year, month, day, hour, minute, and second without fractional seconds precision or time zone


DATETIME


Range is January 1, 1753, through December 31, 9999, accuracy is 3.33 milliseconds. (MS SQL Server only)


INTERVAL YEAR TO MONTH

INTERVAL DAY [(day_precision)] TO SECOND [(fractional_seconds_precision)]

Stores a period in days, hours, minutes, and seconds, where

day_precision is the maximum number of digits in the DAY datetime field. Accepted values are 0 to 9. The default is 2.

fractional_seconds_precision is the number of digits in the fractional part of the SECOND field. Accepted values are 0 to 9. The default is 6. The size is fixed at 11 bytes.


SMALLDATETIME


Range is January 1, 1900, through June 6, 2079; accuracy is 1 minute


TIME


A TIME is a three-part value (hour, minute, and second) designating a time of day under a 24-hour clock. The range of the hour part is 0 to 24. The range of the other two parts is 0 to 59. If the hour is 24, the minute and second specifications are zero.


TIMESTAMP

TIMESTAMP [(fractional_seconds_precision)]

DATE with factional seconds precision


TIMESTAMP WITH TIME ZONE

TIMESTAMP [(fractional_seconds_precision)] WITH TIME ZONE

TIMESTAMP plus time zone displacement value


TIMESTAMP WITH LOCAL TIME ZONE

TIMESTAMP [(fractional_seconds_precision)]

WITH LOCAL TIME ZONE

TIMESTAMP normalized to the database time zone

Binary Strings

BINARY

BINARY [(size)]

Binary data up to 8000 bytes


VARBINARY

VARBINARY [(size)]

Binary data of variable length up to 8000


VARBINARYMAX

VARBINARY [(size)]

Binary data of variable length up to 2 GB


LONGVARBINARY

LONGVARBINARY

Raw binary data of variable length up to 2 gigabytes


IMAGE

IMAGE

Variable-length binary data from 0 through 2^31-1 (2,147,483,647) bytes

Others

UNDEFINED

UNDEFINED

Represent all non-supported data types (catch-all)


XMLTYPE

XMLTYPE

Only mapped between Oracle/Oracle Work Flow and Generic


BOOLEAN

BOOLEAN

Only mapped between Oracle/Oracle Work Flow and Generic


DB2 Data Types Mapping

Table 11-5 lists the mapping of DB2 data types to generic data types.

Table 11-5 DB2 Data Types to Generic Data Types

DB2 Data TypeGeneric Data Type

CHARACTER, CHAR

CHAR

VARCHAR, CHARACTER VARYING, CHAR VARYING

VARCHAR

LONG VARCHAR

LONG VARCHAR

GRAPHIC

GRAPHIC

VARGRAPHIC

VARGRAPHIC

LONG VARGRAPHIC

LONG VARGRAPHIC

DBCLOB

DBCLOB

SMALLINT

SMALLINT

INTEGER, INT

INT10

BIGINT

BIGINT

NUMERIC, NUM

NUMERIC

DECIMAL, DEC

DECIMAL

REAL

REAL

FLOAT

FLOAT

DOUBLE

DOUBLE

DATE

DATE

TIMESTAMP

TIMESTAMP

TIME

TIME

BLOB, BINARY LARGE OBJECT

VARLOB

CLOB, CHARACTER LARGE OBJECT, CHAR LARGE OBJECT

VARCLOB


Table 11-6 lists the mapping of generic data types to DB2 data types.

Table 11-6 Generic Data Types to DB2 Data Types

Generic Data TypeDB2 Data Type

BIGINT

BIGINT

BINARY_FLOAT

REAL

BINARY_DOUBLE

FLOAT(53)

BIT

NUMERIC(1)

FLOAT [(precision)]

FLOAT [(precision)]

DOUBLE [(precision)]

DOUBLE [(precision)]

INTEGER

NUMERIC(31)

INT10

INTEGER

MONEY

REAL

NUMERIC [(precision [, scale])]

NUMERIC [(precision [, scale])]

DECIMAL [(precision [, scale])]

DECIMAL [(precision [, scale])]

REAL

REAL

SMALLINT

SMALLINT

SMALLMONEY

REAL

TINYINT

SMALLINT

BLOB

BLOB

VARLOB

BLOB

CLOB

CLOB (2147483647)

VARCLOB

CLOB

DBCLOB [(size [K|M|G])]

DBCLOB [(size [K|M|G])]

NCLOB

DBCLOB

CHAR [(size)]

CHAR [(size)]

GRAPHIC (size)

GRAPHIC (size)

LONGVARCHAR

LONGVARCHAR

LONGVARGRAPHIC

LONGVARGRAPHIC

NCHAR [(size)]

VARGRAPHIC [(size)]

NVARCHAR (size)

VARGRAPHIC (size)

NVARCHARMAX

DBCLOB

VARCHAR (size)

size<=32,672: VARCHAR

32672<size<=32700:LONG VARCHAR

size>32,700: CLOB

VARCHARMAX

CLOB

VARGRAPHIC (n)

VARGRAPHIC (n)

DATE

DATE

DATETIME

TIMESTAMP

INTERVAL YEAR [(year_precision)] TO MONTH

VARCHAR

INTERVAL DAY [(day_precision)] TO SECOND [(fractional_seconds_precision)]

VARCHAR

SMALLDATETIME

TIMESTAMP

TIME

TIME

TIMESTAMP [(fractional_seconds_precision)]

TIMESTAMP

TIMESTAMP [(fractional_seconds_precision)] WITH TIME ZONE

VARCHAR

TIMESTAMP [(fractional_seconds_precision)] WITH LOCAL TIME ZONE

VARCHAR

BINARY [(size)]

size<=254: CHAR (size) FOR BIT DATA

size>254:VARCHAR(size) FOR BIT DATA

VARBINARY [(size)]

size<=32,672:VARCHAR(size) FOR BIT DATA

size>32,672: BLOB

VARBINARYMAX

BLOB

LONGVARBINARY

BLOB

IMAGE

BLOB

UNDEFINED

VARCHAR(32672)

XMLTYPE

VARCHAR(32672)

BOOLEAN

VARCHAR(10)


There might be precision loss in the following cases:

  • Mapping a generic NUMERIC data type (up to 38) to DB2 NUMERIC data type with a maximum precision of 31

  • Mapping a generic DECIMAL data type (up to 38) to DB2 DECIMAL data type with a maximum precision of 31

  • Mapping a generic INTEGER data type (up to 38) to DB2 NUMERIC(31) data type with a maximum precision of 31

MS SQL Server Data Types Mapping

Table 11-7 lists the mapping of MS SQL Server data types to generic data types.

Table 11-7 MS SQL Server Data Types to Generic Data Types

MS SQL Server Data TypeGeneric Data Type

CHAR

CHAR

VARCHAR

VARCHAR

VARCHAR(MAX)

VARCHARMAX

TEXT

VARCHAR(2147483647)

NCHAR

NCHAR

NVARCHAR

NVARCHAR

NVARCHAR(MAX)

NVARCHARMAX

NTEXT

NVARCHAR

BINARY

BINARY

VARBINARY

VARBINARY

VARBINARY(MAX)

VARBINARYMAX

IMAGE

IMAGE

SMALLINT

SMALLINT

INT

INT10

BIGINT

BIGINT

TINYINT

TINYINT

BIT

BIT

MONEY

MONEY

SMALLMONEY

SMALLMONEY

NUMERIC

NUMERIC

DECIMAL

DECIMAL

REAL

REAL

FLOAT

FLOAT

DATETIME

DATETIME

SMALLDATETIME

SMALLDATETIME

UNIQUEIDENTIFIER

UNDEFINED

XML

UNDEFINED

TIMESTAMP

UNDEFINED

SQL_VARIANT

UNDEFINED


Table 11-8 lists the mapping of generic data types to MS SQL Server data types.

Table 11-8 Generic Data Types to MS SQL Server Data Types

Generic Data TypeMS SQL Server Data Type

BIGINT

BIGINT

BINARY_FLOAT

REAL

BINARY_DOUBLE

FLOAT

BIT

BIT

FLOAT

FLOAT

DOUBLE

FLOAT

INTEGER

NUMERIC(38)

INT10

INT

MONEY

MONEY

NUMERIC

NUMERIC

DECIMAL

DECIMAL

REAL

REAL

SMALLINT

SMALLINT

SMALLMONEY

SMALLMONEY

TINYINT

TINYINT

BLOB

VARBINARY(MAX)

VARBLOB(N)

VARCHAR(MAX)

CLOB

VARCHAR(MAX)

VARCLOB(N)

VARCHAR(MAX)

DBCLOB

NVARCHAR(MAX)

NCLOB

NVARCHAR(MAX)

CHAR(N)

CHAR(N)

GRAPHIC(N)

NCHAR(254)

LONGVARCHAR

VARCHAR(MAX)

LONGVARGRAPHIC(N)

NVARCHAR(MAX)

NCHAR(N)

NCHAR(N)

NVARCHAR(N)

NVARCHAR(N)

NVARCHARMAX

NVARCHAR(MAX)

VARCHAR(N)

1<=n<=8000: varchar (n)

n>8000: varchar (max)

VARCHARMAX

VARCHAR(MAX)

VARGRAPHIC(N)

NVARCHAR(MAX)

DATE

DATETIME

DATETIME

DATETIME

INTERVAL DAY TO SECOND

VARCHAR

INTERVAL YEAR TO MONTH

VARCHAR

SMALLDATETIME

SMALLDATETIME

TIME

VARCHAR

TIMESTAMP

DATETIME

TIMESTAMP WITH TIME ZONE

DATETIME

TIMESTAMP WITH LOCAL TIME ZONE

DATETIME

BINARY (size)

BINARY (size)

VARBINARY (size)

1<=size<=8000: varbinary (size)

n>8000: varbinary (max)

VARBINARYMAX

VARBINARY(MAX)

LONGVARBINARY

VARBINARY(MAX)

IMAGE

IMAGE

UNDEFINED

VARCHAR(MAX)

XMLTYPE

VARCHAR(MAX)

BOOLEAN

VARCHAR(10)


Creating Modules Based on a Platform

When you run the OMBCREATE command to create a platform, the corresponding platform node is added under the Databases node in the Projects Navigator. You can now create a module under this new platform.

For example, to create a module under Microsoft_Excel, right-click Microsoft_Excel and select New Microsoft_Excel Module. The Create Module Wizard guides you through the steps to create a module. This includes:

  1. "Providing a Name and Access Method"

  2. "Providing Connection Information"

Providing a Name and Access Method

On the Name and Description page, provide a name for the module. By default, this is a Generic Access module. Select the access method as well. It can be either Native Database Connection or Gateway. For native database connectivity, Oracle Warehouse Builder supports importing metadata based on JDBC. So if a JDBC or ODBC driver is installed on the system, you can use this driver for the data import. Click Next to open the Connection Information page.

Providing Connection Information

Native Database Connection implies a generic JDBC connection. Click Edit to open the Edit Generic JDBC Location dialog box and provide the location information. You must provide a JDBC URL in the UrL field and a JDBC driver in the Driver Class field.

If you select Gateway connection, then provide the database connection details.

A platform module supports the following objects:

  • Transformations

  • Tables

  • Views

The data you can store in these objects depends on the data types you defined for the platform.

You can also import metadata by defining a Custom Metadata Interface (CMI) that is based on a custom API.

Creating a Microsoft Excel Platform

The following example creates a new platform to extract data from Microsoft Excel worksheets. This example lists only the most basic options to create the platform, including the connection information, and the supported data types. You can build on the platform by inserting additional features.

First, define the platform on the Projects Navigator:

OMBCREATE PLATFORM 'MICROSOFT_EXCEL' SET PROPERTIES (BUSINESS_NAME) VALUES ('Microsoft Excel')

Next, define the connection information for the platform. This includes specifying the ODBC:JDBC driver and the URL template:

OMBALTER PLATFORM 'MICROSOFT_EXCEL' SET PROPERTIES (DRIVER_CLASS,URI_TEMPLATE) VALUES
('sun.jdbc.odbc.JdbcOdbcDriver','jdbc:odbc:Driver={Microsoft Excel Driver (*.xls)}\;
DBQ=<filename>\;DriverID=22\;READONLY=true')

We then define the properties for the platform:

OMBALTER PLATFORM 'MICROSOFT_EXCEL' SET PROPERTIES (LOCAL_OBJECT_MASK) VALUES ('%SCHEMA.%OBJECT')
OMBALTER PLATFORM 'MICROSOFT_EXCEL' SET PROPERTIES (DATE_MASK) VALUES ('DATETIME')
OMBALTER PLATFORM 'MICROSOFT_EXCEL' SET PROPERTIES (DDLNULL) VALUES ('null')
OMBALTER PLATFORM 'MICROSOFT_EXCEL' SET PROPERTIES (NUMERIC_MASK) VALUES ('NUMBER')
OMBALTER PLATFORM 'MICROSOFT_EXCEL' SET PROPERTIES (VARCHAR_MASK) VALUES ('VARCHAR(%L)')
OMBALTER PLATFORM 'MICROSOFT_EXCEL' SET PROPERTIES (LOCAL_OBJECT_MASK) VALUES ('%OBJECT')
OMBALTER PLATFORM 'MICROSOFT_EXCEL' SET PROPERTIES (DEFAULT_MAX_NAME_LEN) VALUES ('30')
OMBALTER PLATFORM 'MICROSOFT_EXCEL' SET PROPERTIES (REMOTE_OBJECT_MASK) VALUES ('%OBJECT')

We finally define the data types supported by the platform:

OMBALTER PLATFORM 'MICROSOFT_EXCEL' ADD PLATFORM_TYPE 'LOGICAL'
OMBALTER PLATFORM 'MICROSOFT_EXCEL' MODIFY PLATFORM_TYPE 'LOGICAL' SET PROPERTIES(SYNTAX) VALUES ('LOGICAL')
OMBALTER PLATFORM 'MICROSOFT_EXCEL' ADD FROM_PLATFORM_TYPEMAP 'LOGICAL_TOG' SET PROPERTIES (FROM_DATATYPE, TO_DATATYPE) VALUES ('LOGICAL', 'CHAR')
OMBALTER PLATFORM 'MICROSOFT_EXCEL' ADD TO_PLATFORM_TYPEMAP 'LOGICAL_FROMG' SET PROPERTIES (FROM_DATATYPE, TO_DATATYPE) VALUES ('CHAR', 'LOGICAL')
OMBALTER PLATFORM 'MICROSOFT_EXCEL' ADD PLATFORM_TYPE 'CURRENCY'
OMBALTER PLATFORM 'MICROSOFT_EXCEL' MODIFY PLATFORM_TYPE 'CURRENCY' SET PROPERTIES(P1,P1MIN, P1MAX,P1DEFAULT,P1TYPE) VALUES ('precision','1', '64000', '1','range')
OMBALTER PLATFORM 'MICROSOFT_EXCEL' MODIFY PLATFORM_TYPE 'CURRENCY' SET PROPERTIES(P2,P2MIN, P2MAX,P2DEFAULT,P2TYPE) VALUES ('scale','1', '18', '1','range')
OMBALTER PLATFORM 'MICROSOFT_EXCEL' MODIFY PLATFORM_TYPE 'CURRENCY' SET PROPERTIES(SYNTAX) VALUES ('CURRENCY(%precision,%scale)')
OMBALTER PLATFORM 'MICROSOFT_EXCEL' ADD FROM_PLATFORM_TYPEMAP 'CURRENCY_TOG' SET PROPERTIES (FROM_DATATYPE, TO_DATATYPE) VALUES ('CURRENCY', 'NUMERIC')
OMBALTER PLATFORM 'MICROSOFT_EXCEL' ADD PLATFORM_TYPE 'NUMBER'
OMBALTER PLATFORM 'MICROSOFT_EXCEL' MODIFY PLATFORM_TYPE 'NUMBER' SET PROPERTIES(P1,P1MIN, P1MAX,P1DEFAULT,P1TYPE) VALUES ('precision','1', '64000', '1','range')
OMBALTER PLATFORM 'MICROSOFT_EXCEL' MODIFY PLATFORM_TYPE 'NUMBER' SET PROPERTIES(P2,P2MIN, P2MAX,P2DEFAULT,P2TYPE) VALUES ('scale','1', '18', '1','range')
OMBALTER PLATFORM 'MICROSOFT_EXCEL' MODIFY PLATFORM_TYPE 'NUMBER' SET PROPERTIES(SYNTAX) VALUES ('NUMBER(%precision,%scale)')
OMBALTER PLATFORM 'MICROSOFT_EXCEL' ADD FROM_PLATFORM_TYPEMAP 'NUMBER_TOG' SET PROPERTIES (FROM_DATATYPE, TO_DATATYPE) VALUES ('NUMBER', 'NUMERIC')
OMBALTER PLATFORM 'MICROSOFT_EXCEL' ADD TO_PLATFORM_TYPEMAP 'NUMBER_FROMG' SET PROPERTIES (FROM_DATATYPE, TO_DATATYPE) VALUES ('NUMERIC', 'NUMBER')
OMBALTER PLATFORM 'MICROSOFT_EXCEL' ADD PLATFORM_TYPE 'DATETIME'
OMBALTER PLATFORM 'MICROSOFT_EXCEL' MODIFY PLATFORM_TYPE 'DATETIME' SET PROPERTIES(SYNTAX) VALUES ('DATETIME')
OMBALTER PLATFORM 'MICROSOFT_EXCEL' ADD FROM_PLATFORM_TYPEMAP 'DATETIME_TOG' SET PROPERTIES (FROM_DATATYPE, TO_DATATYPE) VALUES ('DATETIME', 'DATETIME')
OMBALTER PLATFORM 'MICROSOFT_EXCEL' ADD TO_PLATFORM_TYPEMAP 'DATETIME_FROMG' SET PROPERTIES (FROM_DATATYPE, TO_DATATYPE) VALUES ('DATETIME', 'DATETIME')
OMBALTER PLATFORM 'MICROSOFT_EXCEL' ADD PLATFORM_TYPE 'VARCHAR'
OMBALTER PLATFORM 'MICROSOFT_EXCEL' MODIFY PLATFORM_TYPE 'VARCHAR' SET PROPERTIES(P1,P1MAX,P1DEFAULT,P1TYPE) VALUES ('size','64000', '1','range')
OMBALTER PLATFORM 'MICROSOFT_EXCEL' MODIFY PLATFORM_TYPE 'VARCHAR' SET PROPERTIES(SYNTAX) VALUES ('VARCHAR(%size)')
OMBALTER PLATFORM 'MICROSOFT_EXCEL' ADD FROM_PLATFORM_TYPEMAP 'VARCHAR_TOG' SET PROPERTIES (FROM_DATATYPE, TO_DATATYPE) VALUES ('VARCHAR', 'VARCHAR')
OMBALTER PLATFORM 'MICROSOFT_EXCEL' ADD TO_PLATFORM_TYPEMAP 'VARCHAR_FROMG' SET PROPERTIES (FROM_DATATYPE, TO_DATATYPE) VALUES ('VARCHAR', 'VARCHAR')

Run this script from the OMB*Plus console in Oracle Warehouse Builder. The newly created platform is now visible as a node in the Projects Navigator.

Importing an Excel Worksheet

To import an Excel worksheet:

  1. Create a new Excel module from the MICROSOFT EXCEL platform node in the Projects Navigator.

  2. On the Name and Descriptions page of the Create Module wizard, specify Native Database Connection as the access method.

  3. On the Connection Information page, click Edit to open the Edit Generic JDBC Location dialog box.

    Provide a dummy user name and password as shown in Figure 11-1. You can provide any value for the user name and password, but cannot leave the fields blank. Values for Driver Class and URL fields are set, based on the values provided in the script. However, you must edit the UrL field to point to the location of the Excel file.

    The URL field contains the value:

    jdbc:odbc:Driver={Microsoft Excel Driver (*.xls)};DBQ=<filename>;DriverID=22;READONLY=true
    

    The file name field must be altered to point to the location of the Excel file. For example:

    jdbc:odbc:Driver={Microsoft Excel Driver (*.xls)};DBQ=c:/my_projects/excel/employees.xls;DriverID=22;READONLY=true
    

    In this example, the location points to the file employees.xls.

Figure 11-1 Connection Information for the Excel File

Description of Figure 11-1 follows
Description of "Figure 11-1 Connection Information for the Excel File"

After you create the Excel module and provide the location details for the excel file, you can import the table definitions from the file.

To import the definitions:

  1. Right-click the module and select Database Objects.

    The Import Metadata Wizard is displayed.

  2. Import the table from the Excel file in the same way you import tables from a database.

  3. To view the data in the table, right-click the imported table and select Data.

Using Custom Metadata Import in Platforms

Using a CMI mechanism, you can define how metadata from a database is to be imported into Oracle Warehouse Builder. You can define a CMI that leverages the SQL definitions or the API definitions of the database from which you want to import metadata.

Example: Implementing SQL-Based CMI Import for DB2 UDB

You can define a CMI that uses SQL to retrieve metadata from the SQL-based data dictionary of DB2 UDB and import tables from a DB2 platform. You can implement a similar mechanism to import metadata from any database that uses an SQL-based data dictionary.

To leverage on a CMI mechanism, you must define a CMI DEFINITION for the platform. CMI definitions can only be created from the root context. You can switch to the root context only from the OMB Plus console. You cannot switch to the root context using the OMB*Plus view from within the Oracle Warehouse Builder UI.

To use the OMB Plus console on a Windows system, select Start, then All Programs, <OWB>, Warehouse Builder, and then OMB Plus.

To switch to the root context, use the following command:

OMBCONNECT <repository user>/<password>@<host>:<port number>:<service name>

For example,

OMBCONNECT rep_user/password@localhost:1521:orcl

Where rep_user/password is the user name/password to connect to the repository, localhost indicates a local installation, 1521 is the port number, and orcl is the service name of the database.

Example 11-1 lists a platform definition for DB2 UDB. This lists only the basic definition and does not include the data types that can be added to the platform.

Example 11-1 Platform Definition for IBM DB2 UDB

set platformname IBM_DB2_UDB
set platformdisplay "IBM DB2 CMI Api"
 
puts "Creating Platform $platformdisplay"
 
OMBCREATE PLATFORM '$platformname' SET PROPERTIES (BUSINESS_NAME) VALUES ('$platformdisplay')
OMBALTER PLATFORM '$platformname' SET PROPERTIES (DRIVER_CLASS,URI_TEMPLATE) VALUES ('com.ibm.db2.jcc.DB2Driver','jdbc:db2://Host:Port/Database Name')
OMBALTER PLATFORM '$platformname' SET PROPERTIES (LOCAL_OBJECT_MASK) VALUES ('%SCHEMA.%OBJECT')
OMBALTER PLATFORM '$platformname' SET PROPERTIES (DATE_MASK) VALUES ('TIMESTAMP')
OMBALTER PLATFORM '$platformname' SET PROPERTIES (DDLNULL) VALUES ('null')
OMBALTER PLATFORM '$platformname' SET PROPERTIES (NUMERIC_MASK) VALUES ('NUMERIC(%L,%P)')
OMBALTER PLATFORM '$platformname' SET PROPERTIES (VARCHAR_MASK) VALUES ('VARCHAR(%L)')
OMBALTER PLATFORM '$platformname' SET PROPERTIES (LOCAL_OBJECT_MASK) VALUES ('%SCHEMA.%OBJECT')
OMBALTER PLATFORM '$platformname' SET PROPERTIES (DEFAULT_MAX_NAME_LEN) VALUES ('30')
OMBALTER PLATFORM '$platformname' SET PROPERTIES (REMOTE_OBJECT_MASK) VALUES ('%SCHEMA.%OBJECT')

Next, add a CMI definition to the platform.

OMBCREATE CMI_DEFINITION 'DB2_IMPORT_SQL' USING DEFINITION_FILE 'c:\\platformdef2_miv.xml'
OMBALTER CMI_DEFINITION 'DB2_IMPORT_SQL' SET PROPERTIES (MIV_TYPE) VALUES ('Databases')
OMBALTER PLATFORM '$platformname' SET REF CMI_DEFINITION 'DB2_IMPORT_SQL'

Save the changes using the command OMBCOMMIT.


Note:

You can store the entire script as a .tcl file and run the file from the OMB Plus console.

The file platformdef2_miv.xml contains the custom import definition to import metadata using SQL. Example 11-2 lists the CMI definition file.

Example 11-2 CMI Definition File

<?xml version="1.0"?>
<miv>

<Kmiv_tables type="SQLStatement" default="true">
        SELECT rtrim(tabname) table_name 
        FROM syscat.tables  
        WHERE tabschema = <Parameter name="owner"/> 
                AND type = 'T'   
                AND status = 'N'   
        ORDER BY table_name
</miv_tables>

<miv_columns type="SQLStatement" default="true">
        SELECT rtrim(col.tabname) entity_name, 
               col.colno position, 
               rtrim(col.colname), 
               col.typename, 
               col.length, 
               col.length, 
               col.scale, 
               col.remarks, 
               col.nulls,
               '' datatypeowner,
               col.default,
               CHAR(col.codepage) charset,
               1 bytes_per_char,
               'N' use_char_semantics
        FROM syscat.columns col
        WHERE col.tabschema = <Parameter name="owner"/>
</miv_columns>
 
<miv_capabilities type="ResultSet">
        <table_supported>true</table_supported>
        <view_supported>false</view_supported>
        <sequence_supported>false</sequence_supported>
        <table_name_filter_supported>true</table_name_filter_supported>
        <view_name_filter_supported>false</view_name_filter_supported>
        <sequence_name_filter_supported>false</sequence_name_filter_supported>
        <business_area_supported>false</business_area_supported>      
        <business_area_table_supported>false</business_area_table_supported>    
        <business_area_view_supported>false</business_area_view_supported>      
        <business_area_sequence_supported>false</business_area_sequence_supported>      
        <application_owner_supported>true</application_owner_supported>
        <table_fklevel_supported>false</table_fklevel_supported>
        <reimport_supported>true</reimport_supported>
        <data_object_at_leaf_levels>false</data_object_at_leaf_levels>
        <multiple_tree_supported>false</multiple_tree_supported>
</miv_capabilities>
 
</miv>

The definition file contains queries to retrieve tables and columns. This MIV file is created using elements defined in an XML schema definition (XSD) file. This file is called cmi.xsd and is stored in the OWB_HOME/owb/misc folder.

After you create the platform, it is available under the Databases node in Projects Navigator. You can now connect to a DB2UDB database and import metadata. To connect to DB2, you require the appropriate driver files. For information on the driver file requirements, see "JDBC Connection Drivers for DB2".

Similarly, you can create a new platform for any database that uses an SQL-based data dictionary and then create a SQL-based CMI mechanism to import metadata from the database.

Defining Other Platforms

Table 11-9 lists the URL template specification and the driver class for other common platforms.

Table 11-9 JDBC Requirements for Different Platforms

PlatformURL TemplateDriver Class

Teradata

jdbc:teradata://<host>:<port>/<server>

com.ncr.teradata.TeraDriver

Informix

jdbc:informix-sqli://<host>:<port>:informixserver=<servername>\;database=<dbname>\[\;<property>=<value>...\]

com.informix.jdbc.IfxDriver

Sybase

jdbc:sybase:Tds:<host>:<port>\[/<database>\]\[?<property>=<value>&<property>=<value>...\]

com.sybase.jdbc2.jdbc.SybDriver

MySQL

jdbc:mysql://<host>\[:<port>\]/\[<database>\]\[?<property>=<value>\[&<property>=<value>...\]\]

com.mysql.jdbc.Driver


For each database, you must also install the required JDBC driver. The JDBC driver for a database may be shipped with the product, or may require a separate download or purchase.

PKlșPK;,AOEBPS/loading_ms_data.htm^. Connecting to Microsoft Data Sources Through ODBC Connection

5 Connecting to Microsoft Data Sources Through ODBC Connection

This chapter provides examples of using ODBC connectivity to connect to Microsoft Excel and Microsoft SQL Server as sources. It contains the following topics:

Connecting to Excel Spreadsheets Through ODBC

Scenario

A company stores its employee data in an Excel file called employees.xls. This file contains two worksheets: employee_details and job_history. You must load the data from the employee_details worksheet into a target table in Oracle Warehouse Builder.

Solution

To load data stored in an Excel file into a target table, you must first use the Excel file as a source. Oracle Warehouse Builder enables you to connect to data stored in a non-Oracle source, such as Microsoft Excel, using "Oracle Database Heterogeneous Services".

Case Study

This case study shows you how to use an Excel file called employees.xls as a source in Oracle Warehouse Builder.

Step 1: Install ODBC Driver for Excel

To read data from Microsoft Excel, you need the ODBC driver for Excel. By default, the ODBC driver for Excel is installed on a Windows system.

Step 2: Delimit the Data in the Excel File (Optional)

If you want to delimit the data to be imported from the Excel file, then define a name for the range of data being sourced:

  1. In the employee_details worksheet, highlight the range to query from Oracle.

    The range should include the column names and the data. Ensure that the column names confirm to the rules for naming columns in the Oracle Database.

  2. From the Insert menu, select Name and then Define. The Define Name dialog box is displayed. Specify a name for the range.

Step 3: Create a System DSN

Set up a System Data Source Name (DSN) using the Microsoft ODBC Administrator.

  1. Select Start, Settings, Control Panel, Administrative Tools, Data Sources (ODBC).

    This opens the ODBC Data Source Administrator dialog box.

  2. Navigate to the System DSN tab and click Add to open the Create New Data Source dialog box.

  3. Select Microsoft Excel Driver as the driver for which you want to set up the data source.

    Click Finish to open the ODBC Microsoft Excel Setup dialog box.

    The ODBC Microsoft Setup dialog box is shown in Figure 5-1.

    Figure 5-1 ODBC Microsoft Excel Setup Dialog Box

    Description of Figure 5-1 follows
    Description of "Figure 5-1 ODBC Microsoft Excel Setup Dialog Box"

  4. Specify a name for the data source. For example, odbc_excel.

  5. Click Select Workbook to select the Excel file from which you want to extract data.

  6. Verify that the Version field lists the correct version of the source Excel file.

Step 4: Create the Heterogeneous Services Initialization File

To configure the agent, you must set the initialization parameters in the heterogeneous services initialization file. Each agent has its own heterogeneous services initialization file. The name of the Heterogeneous Services initialization file is initSID.ora, where SID is the Oracle system identifier used for the agent. This file is located in the OWB_HOME\hs\admin directory.

Create the initexcelsid.ora file in the OWB_HOME\hs\admin directory as follows:

HS_FDS_CONNECT_INFO = odbc_excel
HS_AUTOREGISTER = TRUE
HS_DB_NAME = dg4odbc

Here, odbc_excel is the name of the system DSN you created in Step 3. excelsid is the name of the Oracle system identifier used for the agent.

Step 5: Modify the listener.ora file

Set up the listener on the agent to listen for incoming requests from the Oracle Database. When a request is received, the agent spawns a Heterogeneous Services agent. To set up the listener, modify the entries in the listener.ora file located in the OWB_HOME\network\admin directory as follows:

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = excelsid)
      (OWB_HOME = C:\oracle11g\product\11.2.0\db_1)
      (PROGRAM = dg4odbc)
    )
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (OWB_HOME = C:\oracle11g\product\11.2.0\db_1)
      (PROGRAM = extproc)
      )
  )
  1. For the SID_NAME parameter, use the SID that you specified when creating the initialization parameter file for the Heterogeneous Services, which, in this case, is excelsid..

  2. Ensure that the OWB_HOME parameter value is the path to your Oracle Database home directory.

  3. The value associated with the PROGRAM keyword defines the name of the agent executable.

Remember to restart the listener after making these modifications.


Note:

Ensure that the initialization parameter GLOBAL_NAMES is set to FALSE in the database's initialization parameter file. FALSE is the default setting for this parameter.

Step 6: Create an ODBC Source Module

Use the following steps to create an ODBC source module:

  1. From the Projects Navigator, create an ODBC source module.

    ODBC is listed under the Databases node. See "Creating an ODBC Module".

  2. To provide connection information, on the Connection Information page, click Edit to open the Edit Non-Oracle Location dialog box and provide the following details:

    Ensure that the service name you provide equals the SID_NAME you specified in the listener.ora file.

    Enter the host name and the port number in the Host and Port fields respectively.

    Because you are not connecting to an Oracle database, you can provide dummy values for user name and password. The fields cannot be empty.

    The Schema field can be left empty because you are not importing metadata from a schema.

    Click Test Connection to verify the connection details.

Step 7: Import Metadata from Excel Using the Metadata Import Wizard

Use the Metadata Import Wizard to import metadata from the Excel file into Oracle Warehouse Builder. Select Tables as the Filter condition. The wizard displays all the worksheets in the source Excel file under the Tables node in the list of available objects.

  1. Select employee_details and use the right arrow to move it to the list of selected objects.

  2. Click Finish to import the metadata.

    The data from the employee_details worksheet is now stored in a table called employee_details in the ODBC source module.

Step 8: Create a Mapping to Load Data Into the Target Table

Create a mapping in the module that contains the target table. Use the employee_details table imported in the previous step as the source and map it to the target table.

Figure 5-2 displays the mapping used to load data into the target table.

Figure 5-2 Mapping to Load Data Into the Target Table

Description of Figure 5-2 follows
Description of "Figure 5-2 Mapping to Load Data Into the Target Table"

Step 9: Deploy the Mapping

Use the Control Center Manager or Design Center to deploy the mapping you created in step 8. Ensure that you first deploy the source module before you deploy the mapping. See Oracle Warehouse Builder Data Modeling, ETL, and Data Quality Guide for more information about mappings.

Troubleshooting

This section lists some errors that you may encounter while providing the connection information.

Error

ORA-28546: connection initialization failed, porbable Net8 admin error
ORA-28511: lost RPC connection to heterogeneous remote agent using
SID=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(Host=localhost)(PORT=1521)))(CONNECT_DATA=(SID=oracledb)))

ORA-02063: preceeding 2 lines from OWB###

Probable Cause

Providing the same SID name as that of your database.

Action

Provide an SID name different from the SID name of your database.

Error

ORA-28500: connection from ORACLE to a non-Oracle system returned this message: 
[Generic Connectivity Using ODBC][H006] The init parameter <HS_FDS_CONNECT_INFO> 
is not set. Please set it in init<orasid>.ora file.

Probable Cause

Name mismatch between SID name provided in the listener.ora file and the name of the initSID.ora file in OWB_HOME\hs\admin.

Action

Ensure that the name of the initSID.ora file and the value provided for the SID_NAME parameter in listener.ora file is the same.


Tip:

Ensure that you restart the listener service whenever you make changes to the listener.ora file.

Connecting to SQL Server Database Through ODBC

Scenario

Your company has data that is stored in SQL Server and you would like to import this into Oracle Warehouse Builder. Once you import the data, you can perform data profiling to correct anomalies, and then transform the data according to your requirements by using mappings.

Solution

One of the ways to connect to an SQL Server database from Oracle Warehouse Builder is to use an ODBC gateway. Once connected, you can import metadata and load data.

Case Study

To connect to SQL Server and import metadata, refer to the following sections:

  1. "Creating an ODBC Data Source"

  2. "Configuring the Oracle Database Server"

  3. "Adding the SQL Server as a Source in Oracle Warehouse Builder"

If you encounter problems implementing this solution, see "Troubleshooting".

Creating an ODBC Data Source

You must create an ODBC data source to connect to the SQL Server database using ODBC. You must set up a System Data Source Name (DSN):

  1. Select Start, Control Panel, Administrative Tools, Data Sources (ODBC).

    This opens the ODBC Data Source Administrator dialog box.

  2. Navigate to the System DSN tab and click Add to open the Create New Data Source dialog box.

  3. Select SQL Server as the driver for which you want to set up the data source.

  4. Click Finish to open the Create A New Data Source to SQL Server Wizard.

  5. In the Name field, specify a name for the data source. For example, sqlsource.

  6. In the Server field, select the server to which you want to connect and click Next.

  7. Specify whether the authentication should be done at the Operating System level or at the server level. Click Next.

  8. Select the database file and click Next.

  9. Accept the default values in the next screen and click Finish.

  10. Test the data source to verify the connection.

Configuring the Oracle Database Server

Next, you must configure the Oracle database to connect to the SQL Server database. Oracle Warehouse Builder can then use this configuration to extract metadata from the SQL Server database. This involves the following steps:

Creating a Heterogeneous Service Configuration File

You must create the heterogeneous file in the OWB_HOME\hs\admin directory. The naming convention for this file should be as follows:

  • Must begin with init

  • Must end with the extension .ora

  • Must not contain space or special characters

For example, you can name the file initsqlserver.ora.

Enter the following in the file:

HS_FDS_CONNECT_INFO = sqlsource
HS_FDS_TRACE_LEVEL = 0

Here, sqlsource is the name of the data source that you specified while creating the ODBC data source.

Editing the listener.ora file

You must add a new SID description in the listener.ora file. This file is stored in the OWB_HOME\network\admin directory.

Modify the file as shown:

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = sqlserver)
      (OWB_HOME = c:\oracle10g\owb_home)
      (PROGRAM = dg4odbc)
    )
    (SID_DESC =
      (SID_NAME = PLSExtProc)
      (OWB_HOME = c:\oracle10g\owb_home)
      (PROGRAM = extproc)
      )
  )

The SID_NAME parameter must contain the name of the configuration file you created in the previous step. However, it must not contain the init prefix. For example, if the configuration file you created in the previous step was initsqlserver.ora, then the value of the SID_NAME parameter should be sqlserver.

OWB_HOME must point to the Oracle home location of your database installation.

The value associated with the PROGRAM keyword defines the name of the executable agent, which, in this case, is dg4odbc.

Restart the listener service after making these modifications.

Adding the SQL Server as a Source in Oracle Warehouse Builder

The final step involves adding an ODBC module in Oracle Warehouse Builder, and importing the data from the SQL server into this module.

To add an ODBC source module in Oracle Warehouse Builder:

  1. Within a project in the Projects Navigator, navigate to the Databases node.

  2. Right-click ODBC and select New ODBC Module.

  3. Create a new ODBC module using the Create Module Wizard.

  4. Use the Connection Information page to provide the location details. To create a new location, click Edit to open the Edit Non-Oracle Location dialog box.

  5. In the Edit Location dialog box, ensure that you enter user name and password within double quotation marks ("). For example, if the user name is matt, then enter "matt".

  6. For Service Name, enter the SID name you provided in the listener.ora file. Also select the schema from which you want to import the metadata.

  7. Click Test Connection to verify the connection details.

To import metadata into the ODBC module:

  1. Right-click the module and select Import.

  2. Import the metadata using the Import Metadata Wizard.

    The tables and views available for import depend on the schema you selected when providing the connection information.

Troubleshooting

Some of the errors that you may encounter while providing the connection information are listed here:

Error

ORA-28500: connection from ORACLE to a non-Oracle system returned this message: 
[Generic Connectivity Using ODBC][Microsoft][ODBC Driver Manager] Data source name 
not found and no default driver specified (SQL State: IM002; SQL Code: 0)

ORA-02063: preceding 2 lines from OWB_###

Probable Cause

Creating the DSN from the User DSN tab.

Action

Create the DSN from the System DSN tab.

Error

ORA-28500: connection from ORACLE to a non-Oracle system returned this message: 
[Generic Connectivity Using ODBC][Microsoft][ODBC SQL Server Driver][SQL 
Server]Login failed for user 'SA'. (SQL State: 28000; SQL Code: 18456)

ORA-02063: preceding 2 lines from OWB_###

Probable Cause

The user name and password in the Edit Location dialog box are not enclosed within double quotation marks.

Action

Enter the user name and password within double quotation marks.


Tip:

Ensure that you restart the listener service whenever you make changes to the listener.ora file.

PKJ^^PK;,AOEBPS/code_templates.htm_ Using Code Templates to Load and Transfer Data

12 Using Code Templates to Load and Transfer Data

As Oracle Warehouse Builder loads and transforms data from many different database platforms and systems, the technology used to access and load these different data sources must be flexible, extensible, and efficient. Oracle Warehouse Builder solves this problem using code templates (CTs).

CTs are extensible components that enable efficient loading, transformation, or integration of data for a specific data source or target. They can be used in a mapping to perform specific tasks. For example, the task can be extracting data from a source and loading it into a target table.

This chapter contains the following topics:

About Code Templates

CTs are components of Oracle Warehouse Builder's open connector technology. CTs contain the knowledge required by Oracle Warehouse Builder to perform a specific set of tasks against a specific system or set of systems. Combined with a connectivity layer such as JDBC, CTs define an open connector that performs defined tasks against a system, such as connecting to this system, extracting data from the system, transforming the data, or checking and integrating the data.

Open connectors provide a combination of:

  • Connection options such as JDBC

  • Correct syntax, such as SQL, for the specific platform

  • Control over the creation and deletion of objects such as the temporary and work tables, views, and triggers

  • Data processing and transformation strategies

  • Data movement options (create target table, insert, delete, update)

There are different types of CTs available for performing different tasks.Oracle Warehouse Builder contains the following types of CTs:

With CTs, you thus get templates to perform specific tasks in an efficient manner. For example, to load data from a DB2 database and move it to a SQL Server database using CTs:

  1. Create a mapping with a source table and a target table

  2. Use a Load CT (LCT) to load data from the DB2 source table

  3. Use an Integration CT (ICT) to move data to the SQL Server target table

When you execute this mapping, the loading and transfer of data from DB2 to SQL Server is managed by the LCT and the ICT.

You cannot use CTs in customary mappings. A CT can be used only in a special type of mapping called code template mappings. You can create code template mappings from the Template Mappings node in the Projects Navigator.

To use CT in a mapping, you must encapsulate the objects in a code template mapping into units called execution unit. See "Using Code Templates" for more details.

You can either import predefined CTs from Oracle Data Integrator 10g (Knowledge Modules) or create new CTs based on your specific requirements.

Load Code Template

LCTs enable you to load data from a remote data source to the staging area. They support a variety of data sources. These include:

  • Oracle

  • DB2

  • SQL Server

  • File

You can also add new data sources. By default, an LCT must be associated with an execution unit that contains a source table object.

Integration Code Template

ICTs are used to integrate data from staging tables into a target database. Based on the loading method and the type of target database, you can use one of the existing set of ICTs. The following rules are applicable when using ICTs.

  • The input to an ICT must come from an LCT

  • An ICT must be associated with a target database (through an execution unit).

Control Code Template

Control CTs provide data quality checks to ensure data integrity. These include checking for key constraints and other user-defined data loading rules. CCTs are used to check for data constraints in existing tables and while loading new data into tables. CCTs are associated with execution units in maps. For details about implementing data quality rules in ETL, see Oracle Warehouse Builder Data Modeling, ETL, and Data Quality Guide.

Change Data Capture Code Template

The CDC CTs enable you to capture only those changes that have been made to a data object since the last import. CDC CTs control the change capture data processing and are associated with tables and modules.

Oracle Target Code Template

Oracle Target CTs can contain all of the regular mapping operators such as match/merge, name/address, dimension, and so on.

Function Code Template

A Function CT is used to deploy functions, packages, and procedures. Function CTs are associated with functions, packages, and procedures.

Predefined Code Templates

Oracle Warehouse Builder contains certain predefined CTs that you can directly use in Oracle Warehouse Builder.

These predefined CTs are also installed in the Oracle Warehouse Builder repository and are listed in the Globals Navigator. To view the predefined CTs from the Globals Navigator, expand the Public Code Templates node and then expand the BUILT_IN_CT node. You can directly use these predefined code templates without having to import them.

For a list of all the predefined code templates shipped with Oracle Warehouse Builder, see Oracle Warehouse Builder Data Modeling, ETL, and Data Quality Guide.


Note:

The predefined code templates available in Oracle Warehouse Builder were imported from the Knowledge Modules available in Oracle Data Integrator 10g. These code template files are available at OWB_HOME/owb/misc/CodeTemplates.

Working with Code Templates

To use CTs in Oracle Warehouse Builder, perform the following steps:

Creating a Code Template Folder

You must have a container in Oracle Warehouse Builder to hold CTs. This is known as a CT folder.

To create a CT folder:

  1. From the Projects Navigator, right-click Code Templates and click New Code Template Folder to open the Create Code Template Folder dialog box.

  2. Provide a name for the new folder and click OK.

The newly created CT folder is available in the Projects Navigator. You can also view all the available types of CTs under the newly created folder.

Creating a Code Template

You can create any of the available types of CTs under a CT folder. For some types of CTs such as Load, Integrate, and Change Data Capture, you can either import an existing CT from Oracle Data Integrator or create a new one. For Oracle Target CTs and Function CTs, you must create a new CT. The process to create any type of CT equals as described for LCT.

To create a new LCT:

  1. Right-click Load and click New Load CT.

  2. The Create Load Code Template dialog box is displayed.

  3. Enter a name and an optional description for the CT and click OK.

    The newly created CT is displayed under Load.

    You can now specify the tasks between the Start and End tasks.


See Also:

For more information about creating code templates, refer to the section on Knowledge Modules in the Oracle Data Integrator documentation set.

Importing a Code Template

To import CTs:

  1. Select a Code Template Folder into which you want to import the CTs.

  2. Select File, then Import, and then Code Template.

    The Import Code Template Wizard is displayed.

  3. Click Next to open the Select Files page.

  4. Click Browse and select the source directory containing the CTs to be imported.

    The available CTs are listed under Directory Files in the Select Files page.

  5. Select the CTs and move them to the Files to Import list.

  6. Click Next to open the Name Code Templates page.

    Here, you can either provide new names for the CTs or retain the current name.

  7. Click Next to open the Summary page, and then click Finish.

Oracle Warehouse Builder automatically inserts imported CTs under the appropriate type. For example, if you import an LCT, it gets added under Load in the Projects Navigator.


Note:

You do not have to import predefined CTs, as these are available in the repository and can be used directly.

Tasks in a Code Template

A CT consists of a series of predefined tasks that are broadly classified as:

  • JDBC: To process JDBC statements.

  • Jython: To process Jython statements.

  • Runtime API: To provide access to Oracle Data Integrator 10g tools such as OdiOSCommand.

  • Operating System: To provide access to the operating system.

  • Jacl: To provide access to native tcl script that is generated for a CT mapping.

For example, an LCT that is used to load data from SQL to Oracle consists of the following tasks:

  • Start_Task

    1. Validate KM options: Jython task

    2. Drop work table: JDBC task

    3. Create work table: JDBC task

    4. Lock journalized table: JDBC task

    5. Load data: JDBC task

    6. Analyze work table: JDBC task

    7. Cleanup journalized table: JDBC task

    8. Drop work table: JDBC task

  • End_Task

Using Code Templates

CTs are used in a code template mapping. To use CTs:

  • Create a template mapping module.

  • Create a map under the module.

  • Use the CT in the mapping.

Creating a Template Mappings Module

To create a Template Mappings module:

  1. From the Projects Navigator, right-click Template Mappings and select New Mapping Module.

    The Create Module Wizard is displayed.

  2. In the Name and Description page, provide a name and description (optional).

  3. In the Connection Details page, either select an existing location or click Edit to open the Edit Agent Location dialog box and provide the connection details for the agent. See "Specifying an Agent for Template Mappings" for more details.

  4. In the Summary page, verify the information you provided and click Finish.

The newly created template mapping module is now available under the Template Mappings node.

Specifying an Agent for Template Mappings

Template mappings get executed in a control center agent. By default, Oracle Warehouse Builder contains a default agent location, which like the default control center, refers to the control center agent on the same host as the control center service.

Starting and Stopping the Control Center Agent

To use the default agent, ensure that the control center agent (CCA) is running.

Windows On Windows, start the CCA instance by navigating to OWB_HOME/owb/bin/win32 and running the file ccastart.bat. When you run this file the first time, you are prompted to enter a password for the oc4jadmin user.

To stop the CCA, run the ccashut.bat script located in the OWB_HOME/owb/bin/win32 directory. The script prompts you to enter the oc4jadmin user password.

UNIX On UNIX, start the CCA instance by running the file ccastart located in the OWB_HOME/owb/bin/unix directory.

To stop the CCA, run the ccashut file located in the OWB_HOME/owb/bin/unix directory. The script prompts you to enter the oc4jadmin user password.

Edit Agent Location Dialog Box

You must specify the following details in the Edit Agent Location:DEFAULT AGENT dialog box:

  • User: oc4jadmin

  • Password: The password set while invoking the ccastart file.

  • Host: Host where the agent resides

  • Port: 23791

  • Port Type: RMI

  • Instance: Can be left blank

  • Application Name: Name of the application where the mapping gets deployed. Enter the value jrt to deploy it to the default CCA that is installed with Oracle Warehouse Builder.

  • HTTP Port: 8888


Note:

Ensure that the CCA instance is running before you set the agent location.

Creating a Mapping Under the Code Template Mapping

To create a mapping under the code template mapping module:

  1. Right-click the Template Mapping module and click New Mapping.

  2. In the Create Mapping dialog box, provide a name for the mapping.

The newly created mapping is available under Template Mapping module.

Using Code Templates in the Mapping

For mappings under a code template mapping, Oracle Warehouse Builder provides two different views to work with, Logical View and Execution View.

In the logical view, you can insert the various components of the mapping. This includes the source and target operators (tables), and the transformation operators. You can also define the data flow from the source to the target, along with the transformation operators that define how the data is transformed before it is loaded into the target.

In the execution view, you must define execution units for the components within the mapping. An execution unit is a module that holds the various mapping operators.

For example, if your mapping has a DB2 source table, an expression operator, and an Oracle target table, then you can bind the source table to an execution unit DB2_SOURCE_TABLE, and the expression and the target table to another execution unit DB2_to_OracleTable, as shown in Figure 12-1.

Figure 12-1 Execution Units in a Map

mapping with 2 execution units
Description of "Figure 12-1 Execution Units in a Map"

After you bind the components of the mapping to execution units, you must associate a CT with each of the execution units. In the current example, you must associate DB2_SOURCE_TABLE to an LCT that loads data from a DB2 source (LCT_SQL_TO_ORACLE). DB2_to_OracleTable must be associated with an ICT that retrieves and loads data into an Oracle table (ICT_ORACLE_INCR_UPD). For more information about how to bind the components of a mapping to execution units, see Oracle Warehouse Builder Data Modeling, ETL, and Data Quality Guide.

Execution units containing certain transformation operators cannot be bound to LCTs and ICTs. See Oracle Warehouse Builder Data Modeling, ETL, and Data Quality Guide for more information about operators not supported in LCTs and ICTs.

For more information about different types of CTs, and about creating and using CTs in mappings, see the Oracle Warehouse Builder Data Modeling, ETL, and Data Quality Guide.

PKj__PK ;,Aoa,mimetypePK;,Aݢ]X:iTunesMetadata.plistPK;,AYuMETA-INF/container.xmlPK;,ANcOEBPS/sap_integrate.htmPK;,A[pTO#OEBPS/cover.htmPK;,ARg%OEBPS/defining_flatfiles.htmPK;,AN\?OEBPS/imp_thirdparty_design.htmPK;,Ad4p[OEBPS/title.htmPK;,A$ t`K[K3qOEBPS/intro_sources_targets.htmPK;,Ae 55OEBPS/jdbc_connection.htmPK;,Afu{"|"OEBPS/preface.htmPK;,A5!7-tOEBPS/importing_metadata.htmPK;,A'~^]OEBPS/business_intelligence.htmPK;,A'&ooVUOEBPS/index.htmPK;,A qTlTAOEBPS/web_services.htmPK;,A-9;:OEBPS/img/sap_location.gifPK;,A,,AUOEBPS/img/flatfile_location.gifPK;,A%%OEBPS/img/case_excel_odbc.gifPK;,Arf!a!$OEBPS/img/applications_locations.gifPK;,A!OEBPS/img/io_deploy_disco.gifPK;,A!D| OEBPS/img/sap_mapping.gifPK;,ARȡ'''7 OEBPS/img/logical_table_ps_join_tab.gifPK;,A~I`' OEBPS/img/sap_proc_flow_data_detect.gifPK;,AG(3#3. OEBPS/img/cobol_eg_general.gifPK;,AcHY4T4" OEBPS/img/cobolmap_datafile.gifPK;,A[ niHW OEBPS/img/multirecex.gifPK;,AǯBB_ OEBPS/img/cobol_datatable.gifPK;,Ao4KE @ $ OEBPS/img/heterogeneous_services.gifPK;,A>qifwaw OEBPS/img/sap_runtime_1.gifPK;,AKJE 0& OEBPS/img/mapping_load_excel.gifPK;,AI>@9@> OEBPS/img/designer_source.gifPK;,A