21
Informatica MDM Multidomain (Version 9.0.1) SIF SDK Usage and Enabling SOA Guide (Siperian Hub XU SP2)

SIF SDK Usage and Enabling SOA

Embed Size (px)

DESCRIPTION

jj

Citation preview

  • Informatica MDM Multidomain (Version 9.0.1)

    SIF SDK Usage and Enabling SOA Guide (Siperian Hub XU SP2)

  • 2 SIF SDK Usage and Enabling SOA

    Informatica MDM Multidomain Hub - Version 9.0.1 - September 2010 Copyright (c) 2010 Informatica. All rights reserved.

    This software and documentation contain proprietary information of Informatica Corporation and are provided under a license agreement

    containing restrictions on use and disclosure and are also protected by copyright law. Reverse engineering of the software is prohibited.

    No part of this document may be reproduced or transmitted in any form, by any means (electronic, photocopying, recording or otherwise)

    without prior consent of Informatica Corporation. This Software is be protected by U.S. and/or international Patents and other Patents

    Pending.

    Use, duplication, or disclosure of the Software by the U.S. Government is subject to the restrictions set forth in the applicable software

    license agreement and as provided in DFARS 227.7202-1(a) and 227.7702-3(a) (1995), DFARS 252.227-7013(1)(ii) (OCT 1988), FAR

    12.212(a) (1995), FAR 52.227-19, or FAR 52.227-14 (ALT III), as applicable.

    The information in this product or documentation is subject to change without notice. If you find any problems in this product or

    documentation, please report them to us in writing.

    Informatica, Informatica Platform, Informatica Data Services, PowerCenter, PowerCenterRT, PowerCenter Connect, PowerCenter Data

    Analyzer, PowerExchange, PowerMart, Metadata Manager, Informatica Data Quality, Informatica Data Explorer, Informatica B2B Data

    Transformation, Informatica B2B Data Exchange, Informatica On Demand and Siperian are trademarks or registered trademarks of Informatica

    Corporation in the United States and in jurisdictions throughout the world. All other company and product names may be trade names or

    trademarks of their respective owners.

    Portions of this software and/or documentation are subject to copyright held by third parties, including without limitation: Copyright

    DataDirect Technologies. All rights reserved. Copyright Sun Microsystems. All rights reserved.

    This product includes software developed by the Apache Software Foundation (http://www.apache.org/), and other software which is

    licensed under the Apache License, Version 2.0 (the "License"). You may obtain a copy of the License at http://www.apache.org/licenses/

    LICENSE-2.0. Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS

    IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific

    language governing permissions and limitations under the License.

    This product includes software which is licensed under the GNU Lesser General Public License Agreement, which may be found at

    http://www.gnu.org/licenses/lgpl.html. The materials are provided free of charge by Informatica, "as-is", without warranty of any kind, either express or

    implied, including but not limited to the implied warranties of merchantability and fitness for a particular purpose.

    This product includes software which is licensed under the CDDL (the "License"). You may obtain a copy of the License at

    http://www.sun.com/cddl/cddl.html. The materials are provided free of charge by Informatica, "as-is", without warranty of any kind, either express or implied,

    including but not limited to the implied warranties of merchantability and fitness for a particular purpose. See the License for the specific language governing permissions and limitations under the License. This product includes software which is licensed under the BSD License (the "License"). You may obtain a copy of the License at

    http://www.opensource.org/licenses/bsd-license.php. The materials are provided free of charge by Informatica, "as-is", without warranty of any kind, either

    express or implied, including but not limited to the implied warranties of merchantability and fitness for a particular purpose. See the License for the specific language governing permissions and limitations under the License. This product includes software Copyright (c) 2003-2008, Terence Parr, all rights reserved which is licensed under the BSD License (the "License"). You may obtain a copy of the License at http://www.antlr.org/license.html. The materials are provided free of charge by Informatica, "as-is", without warranty of

    any kind, either express or implied, including but not limited to the implied warranties of merchantability and fitness for a particular purpose. See the License for the specific language governing permissions and limitations under the License. This product includes software Copyright (c) 2000 - 2009 The Legion Of The Bouncy Castle (http://www.bouncycastle.org) which is licensed under a form of the MIT License (the "License"). You may obtain a copy of the License at http://www.bouncycastle.org/licence.html. The materials are provided free of charge by Informatica, "as-is", without warranty of any kind, either express or implied, including but not limited to the implied warranties of merchantability and fitness for a particular purpose. See the License for the specific language governing permissions and limitations under the License. DISCLAIMER: Informatica Corporation provides this documentation "as is" without warranty of any kind, either express or implied,

    including, but not limited to, the implied warranties of non-infringement, merchantability, or use for a particular purpose. Informatica

    Corporation does not warrant that this software or documentation is error free. The information provided in this software or documentation

    may include technical inaccuracies or typographical errors. The information in this software and documentation is subject to change at

    any time without notice. NOTICES

    This Informatica product (the Software) may include certain drivers (the DataDirect Drivers) from DataDirect Technologies, an operating company of Progress Software Corporation (DataDirect) which are subject to the following terms and conditions: 1. THE DATADIRECT DRIVERS ARE PROVIDED AS IS WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOTLIMITED TO,

    THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.

    2. IN NO EVENT WILL DATADIRECT OR ITS THIRD PARTY SUPPLIERS BE LIABLE TO THE END-USER CUSTOMER FOR ANY DIRECT, INDIRECT, INCIDENTAL,

    SPECIAL, CONSEQUENTIAL OR OTHER DAMAGES ARISING OUT OF THE USE OF THE ODBC DRIVERS, WHETHER OR NOT INFORMED OF THE POSSIBILITIES OF

    DAMAGES IN ADVANCE. THESE LIMITATIONS APPLY TO ALL CAUSES OF ACTION, INCLUDING, WITHOUT LIMITATION, BREACH OF CONTRACT, BREACH OF

    WARRANTY, NEGLIGENCE, STRICT LIABILITY, MISREPRESENTATION AND OTHER TORTS.

  • SIF SDK Usage and Enabling SOA 3

    Informatica Resources

    Informatica Customer Portal As an Informatica customer, you can access the Informatica Customer Portal site at http://my.informatica.com. The site contains

    product information, user group information, newsletters, access to the Informatica customer support case management system

    (ATLAS), the Informatica How-To Library, the Informatica Knowledge Base, the Informatica Multimedia Knowledge Base,

    Informatica Documentation Center, and access to the Informatica user community.

    Informatica Documentation The Informatica Documentation team takes every effort to create accurate, usable documentation. If you have questions,

    comments, or ideas about this documentation, contact the Informatica Documentation team through email at

    [email protected]. We will use your feedback to improve our documentation. Let us know if we can contact

    you regarding your comments.

    The Documentation team updates documentation as needed. To get the latest documentation for your product, navigate to the

    Informatica Documentation Center from http://my.informatica.com.

    Informatica Web Site You can access the Informatica corporate web site at http://www.informatica.com. The site contains information about

    Informatica, its background, upcoming events, and sales offices. You will also find product and partner information. The services

    area of the site includes important information about technical support, training and education, and implementation services.

    Informatica How-To Library As an Informatica customer, you can access the Informatica How-To Library at http://my.informatica.com. The How-

    To Library is a collection of resources to help you learn more about Informatica products and features. It includes articles and

    interactive demonstrations that provide solutions to common problems, compare features and behaviors, and guide you through

    performing specific real-world tasks.

    Informatica Knowledge Base As an Informatica customer, you can access the Informatica Knowledge Base at http://my.informatica.com. Use the Knowledge

    Base to search for documented solutions to known technical issues about Informatica products. You can also find answers to

    frequently asked questions, technical white papers, and technical tips. If you have questions, comments, or ideas about the

    Knowledge Base, contact the Informatica Knowledge Base team through email at [email protected].

    Informatica Multimedia Knowledge Base As an Informatica customer, you can access the Informatica Multimedia Knowledge Base at

    http://my.informatica.com. The Multimedia Knowledge Base is a collection of instructional multimedia files that help you learn

    about common concepts and guide you through performing specific tasks. If you have questions, comments, or ideas about the

    Multimedia Knowledge Base, contact the Informatica Knowledge Base team through email at [email protected].

  • 4 SIF SDK Usage and Enabling SOA

    Informatica Global Customer Support You can contact a Customer Support Center by telephone or through the WebSupport Service. WebSupport requires a user name

    and password. You can request a user name and password at http://my.informatica.com.

    Use the following telephone numbers to contact Informatica Global Customer Support:

    North America / South America Europe / Middle East / Africa Asia / Australia

    Toll Free +1 877 463 2435 Standard Rate Brazil: +55 11 3523 7761 Mexico: +52 55 1168 9763 United States: +1 650 385 5800

    Toll Free 00 800 4632 4357 Standard Rate Belgium: +32 15 281 702 France: +33 1 41 38 92 26 Germany: +49 1805 702 702 Netherlands: +31 306 022 797 Spain and Portugal: +34 93 480 3760 United Kingdom: +44 1628 511 445

    Toll Free Australia: 1 800 151 830 Singapore: 001 800 4632 4357 Standard Rate India: +91 80 4112 5738

  • SIF SDK Usage and Enabling SOA 5

    Contents 1 Introduction ............................................................................................................................. 6

    1.1 Prerequisites .................................................................................................................... 6

    1.2 System Configuration ..................................................................................................... 7

    2 Description of Web Service Examples ................................................................................... 7

    2.1 PartyWebServiceExample .............................................................................................. 7

    2.2 LookupWebServiceExample .......................................................................................... 7

    2.2.1 Lookup Code Services ............................................................................................ 7

    2.2.2 Cross-reference Service .......................................................................................... 8

    3 Informatica MDM Sample ORS Configuration ...................................................................... 8

    3.1 Source Systems ............................................................................................................... 8

    3.2 Data Model...................................................................................................................... 8

    3.3 Base Objects.................................................................................................................... 9

    3.4 Packages and Queries ................................................................................................... 10

    4 PartyWebServiceExample .................................................................................................... 12

    5 Lookup Web Service Example ............................................................................................. 14

    5.1 Lookup Code Services .................................................................................................. 14

    5.2 Cross-reference Lookup Service ................................................................................... 16

    6 Using and Testing Web Services .......................................................................................... 18

    6.1 Testing Web Services with a Web Browser ................................................................. 18

    6.2 Testing Web Services with SoapUI .............................................................................. 18

    7 Creating a Web Service ........................................................................................................ 19

  • 6 SIF SDK Usage and Enabling SOA

    1 Introduction

    The purpose of this document is to provide a general guide for developers using the

    Informatica MDM SIF API to create Web Services to access, update, or distribute data stored

    in an Informatica MDM Hub. This guide has been written for application developers,

    database administrators, system administrators, and other technical members of an

    Informatica MDM Hub implementation team.

    Two Web Service examples have been included with the Informatica MDM Resource Kit

    sample applications. This document describes those examples in detail including specific

    methods for testing Web Services, and a step-by-step guide for creating your own custom

    Web Services. The examples are a good starting point for creating Web Service elements

    that can be incorporated into the SOA infrastructure of your organization.

    The following topics are covered in this document:

    Description of Web Service examples PartyWebServiceExample

    LookupWebServiceExample

    Informatica MDM sample ORS configuration Brief overview of the Resource Kit sample ORS

    Configuration components relevant to the Web Service examples

    Party Web Service example Composite services for complex data objects

    Party services

    Sample request/response XML

    Lookup Web Service example Lookup code services

    Code translation services

    Cross-reference service

    Sample request/response XML

    Using and testing Web Services Test cases for Web Service examples

    Using SoapUI to test Web Services

    Creating your own Web Service Guidelines for code developers

    It is recommended that developers use the code examples in conjunction with this

    document to develop their own Web Services. The source code for the examples can be

    copied and edited as needed to create new Web Services.

    1.1 Prerequisites The developer should already have a basic understanding of the following software and

    technologies:

    Java

    Web Services

    Informatica MDM Hub XU SP2

  • SIF SDK Usage and Enabling SOA 7

    1.2 System Configuration Make sure that you fulfill the following software requirements. To learn more about these

    requirements, see the Informatica MDM (Siperian) Hub XU SP2 Release Notes.

    Application Server - the examples use JBoss-4.0.3SP1

    Eclipse IDE

    Sun JDK 1.5.0

    Informatica MDM (Siperian) Hub XU SP2

    2 Description of Web Service Examples

    This section describes two composite Web Service examples:

    PartyWebServiceExample

    LookupWebServiceExample

    2.1 PartyWebServiceExample

    PartyWebServiceExample is a composite Web Service that provides several services for

    managing Party data. Similar composite Web Services can be used to make Master Data

    stored in the Informatica MDM Hub available to consuming applications across the

    enterprise. The example includes services to search for Party data, get Party data, and

    maintain Party data.

    The Party data structure is a complex object that consists of the main base object (Party)

    with a child base object (Party Phone) and two base objects (Account and Address) related

    to Party by relationship base objects (Party Account Relationship and Party Address

    Relationship).

    The initial version of the source code for this example was created using the WSCodeGen

    plug-in for Eclipse. The code was then modified to add the necessary business logic to

    complete the Web Service. The WSCodeGen plug-in is distributed as part of the Informatica

    MDM Resource Kit and its use should be reviewed along with the code from this example to

    learn how developers can quickly create a skeleton Web Service project in Eclipse using the supplied wizard.

    2.2 LookupWebServiceExample

    LookupWebServiceExample is also a composite Web Service that provides two sets of Web

    Services:

    Lookup code services

    A cross-reference service

    2.2.1 Lookup Code Services

    The Lookup Code Services are simple services that get code descriptions for the given key,

    and validate a code value or translate a code value from one system to the code value for

  • 8 SIF SDK Usage and Enabling SOA

    another system. Also provided are services that return an entire code set or translate an

    entire set between two systems.

    These services can be used in a typical scenario where multiple enterprise applications are

    being integrated, yet they do not have a unified set of reference code values. A Lookup

    Service similar to this example can resolve the different lookup values in a complex data

    orchestration touching multiple systems. Such a service can be used by composite

    applications that bring data together from multiple sources.

    2.2.2 Cross-reference Service

    The Cross-reference Service is a simple service that is essential to complex integration of

    multiple enterprise systems. The service uses the cross-reference table in the Informatica

    MDM Hub to provide the set of all source system keys for a particular base object record.

    The input is a unique key value from either the Hub or from one of the sources paired with

    the source system name. This service can be used to provide all consuming applications

    with the correct set of unique identifiers for a particular base object record. This is

    necessary when publishing data updates from the Hub to downstream systems after data

    consolidation in the Hub.

    3 Informatica MDM Sample ORS Configuration

    The SIF SDK Web Service examples are based on the Informatica MDM Sample ORS which

    is installed as part of the Resource Kit. This sample Informatica MDM Hub implementation

    integrates three primary source applications, one data augmentation source, and a

    reference system. These sources provide the data for Party, Address, Household, and

    Product information.

    The sample Web Services rely on configured components in the ORS. This section identifies

    the components used by these services. The components are necessary for the examples to

    function properly. Any modification to them may change the functionality of the services,

    change the results of the services or cause the services to fail.

    For more information on the configuration of the Sample ORS refer to the Sample Schema

    Guide.

    3.1 Source Systems

    Here are the data sources used by the Web Service examples:

    SFA A Sales Force Automation system providing party, address, household, and account data.

    Legacy A legacy system providing party, address, household, and relationship data.

    Lookups A source system providing reference table data for lookups.

    3.2 Data Model A Party data model has been defined to address the Master Data needs for Individual,

    Organization, and their relationship to Account data. The data model also contains a Product

    data model to address product Master Data.

  • SIF SDK Usage and Enabling SOA 9

    The diagram below, generated by the Informatica MDM Schema Viewer, depicts the data

    model configured in the sample ORS.

    Figure 1 Informatica MDM Sample Data Model as shown in the Schema Viewer tool

    3.3 Base Objects

    The following Base Objects from the Informatica MDM Sample ORS are used by the Web

    Service examples:

    Party Data Model Base Objects

    Display Name Table Name Description

    Account C_ACCOUNT Accounts held by a Party. Includes credit cards, debit cards, store accounts, and so on.

    Address C_ADDRESS Consolidated Addresses per Customer.

    Party C_PARTY

    Party Base Object with Individual and Organization data: - Tax Id Can be organizations Tax Id or Individuals

    Social Security Number. - Status Cd Used to support workflow (Pending,

    Active, Deleted). - DNB Level A cleanse function within the schema

    will determine this based on the data from DNB. - Display Name Name to be displayed in the Hub

    console.

    Party Account Relationship

    C_REL_PARTY_ACCOUNT Accounts held by a specific Party.

    Party Address Rel C_RL_PARTY_ADDRESS Party to Address relationship.

  • 10 SIF SDK Usage and Enabling SOA

    Party Data Model Base Objects

    Display Name Table Name Description

    Party Phone C_PARTY_PHONE

    Phone numbers of Parties: - Valid Ind For US phone numbers. If anyone

    creates validation for International numbers, please send to SDC to update this model.

    - Do Not Call May be set to Yes for work and No for Home (if an Individual states that they do not wish to be disturbed at work).

    Lookup Base Objects

    Display Name Table Name Description

    LU Country C_LU_COUNTRY Lookup table for Country Codes. Different systems may use different values for county code (for example, ISO 2, ISO 3, Country Name).

    LU State C_LU_STATE Lookup table for state codes.

    3.4 Packages and Queries

    The PartyWebServiceExample application uses the following packages:

    PartyWebServiceExample Packages

    Display Name Physical Name Query PKG WS Party Account Put PKG_WS_PTY_ACCOUNT_PUT QRY WS PTY Account

    PKG WS Party Address Put PKG_WS_PTY_ADDRESS_PUT QRY WS PTY Address

    PKG WS Party Party Put PKG_WS_PTY_PARTY_PUT QRY WS PTY Party

    PKG WS Party Phone Put PKG_WS_PTY_PHONE_PUT QRY WS PTY Phone

    PKG WS Party Account Rel Put PKG_WS_PTY_ACCT_REL_PUT QRY WS PTY Account Rel

    PKG WS Party Address Rel Put PKG_WS_PTY_ADDR_REL_PUT QRY WS PTY Address Rel

    The PartyWebServiceExample application uses the following queries:

    PartyWebServiceExample Queries

    Query SQL

    QRY WS PTY Account

    SELECT C_ACCOUNT.ROWID_OBJECT, C_ACCOUNT.ACCOUNT_NUMBER,

    C_ACCOUNT.CARDHOLDER_NAME, C_ACCOUNT.STREET_NAME, C_ACCOUNT.CITY, C_ACCOUNT.STATE_PROVINCE, C_ACCOUNT.POSTAL_CODE,

    C_ACCOUNT.EXPIRATION_MONTH, C_ACCOUNT.EXPIRATION_YEAR,

    C_ACCOUNT.ISSUING_COMPANY, C_ACCOUNT.SECURITY_CODE, C_ACCOUNT.ACCOUNT_TYPE, C_ACCOUNT.HUB_STATE_IND FROM C_ACCOUNT

    QRY WS PTY Address

    SELECT C_ADDRESS.ROWID_OBJECT, C_ADDRESS.ADDRESS_LINE_1,

    C_ADDRESS.ADDRESS_LINE_2, C_ADDRESS.ADDRESS_LINE_3, C_ADDRESS.CITY_NAME, C_ADDRESS.STATE_CD, C_ADDRESS.POSTAL_CD,

    C_ADDRESS.POSTAL_EXT_CD, C_ADDRESS.IS_VALID_IND,

    C_ADDRESS.CARE_OF_ADDRESS, C_ADDRESS.PO_BOX, C_ADDRESS.MAIL_BOX_NUMBER, C_ADDRESS.BLDG_NAME,

    C_ADDRESS.DEPT_NAME, C_ADDRESS.FLOOR_NUMBER,

    C_ADDRESS.UNIT_NUMBER, C_ADDRESS.STREET_NUMBER, C_ADDRESS.STREET_TYPE, C_ADDRESS.STREET_NAME,

    C_ADDRESS.COUNTY_NAME, C_ADDRESS.COUNTRY_CODE,

    C_ADDRESS.LATITUDE, C_ADDRESS.LONGITUDE, C_ADDRESS.EFF_START_DATE, C_ADDRESS.EFF_END_DATE, C_ADDRESS.POSTAL_SUB3 FROM C_ADDRESS

  • SIF SDK Usage and Enabling SOA 11

    PartyWebServiceExample Queries

    Query SQL

    QRY WS PTY Party

    SELECT C_PARTY.ROWID_OBJECT, C_PARTY.NAME_PREFIX_CD,

    C_PARTY.FIRST_NAME, C_PARTY.LAST_NAME, C_PARTY.MIDDLE_NAME,

    C_PARTY.GENERATION_SUFFIX_CD, C_PARTY.ORGANIZATION_NAME, C_PARTY.DUNS_NUMBER, C_PARTY.TAX_ID, C_PARTY.BIRTHDATE,

    C_PARTY.GENDER_CD, C_PARTY.STATUS_CD, C_PARTY.DNB_LEVEL,

    C_PARTY.DISPLAY_NAME, C_PARTY.HM_DISPLAY, C_PARTY.PARTY_TYPE, C_PARTY.HUB_STATE_IND FROM C_PARTY

    QRY WS PTY Phone

    SELECT C_PARTY_PHONE.ROWID_OBJECT,

    C_PARTY_PHONE.PHONE_COUNTRY_CD, C_PARTY_PHONE.PHONE_NUM, C_PARTY_PHONE.PHONE_EXT_NUM, C_PARTY_PHONE.IS_VALID_IND,

    C_PARTY_PHONE.EFF_START_DATE, C_PARTY_PHONE.EFF_END_DATE,

    C_PARTY_PHONE.DO_NOT_CALL_IND, C_PARTY_PHONE.PHONE_TYPE_CD, C_PARTY_PHONE.PARTY_ID FROM C_PARTY_PHONE

    QRY WS PTY Account Rel

    SELECT C_REL_PARTY_ACCOUNT.ROWID_OBJECT,

    C_REL_PARTY_ACCOUNT.ROWID_HIERARCHY,

    C_REL_PARTY_ACCOUNT.ROWID_REL_TYPE,

    C_REL_PARTY_ACCOUNT.PARTY_ID, C_REL_PARTY_ACCOUNT.ACCOUNT_ID,

    C_REL_PARTY_ACCOUNT.REL_START_DATE,

    C_REL_PARTY_ACCOUNT.REL_END_DATE, C_REL_PARTY_ACCOUNT.DEFAULT_PAYMENT_ACCOUNT,

    C_REL_PARTY_ACCOUNT.HUB_STATE_IND FROM C_REL_PARTY_ACCOUNT

    QRY WS PTY Address Rel

    SELECT C_RL_PARTY_ADDRESS.ROWID_OBJECT, C_RL_PARTY_ADDRESS.PARTY_ID, C_RL_PARTY_ADDRESS.ADDRESS_ID,

    C_RL_PARTY_ADDRESS.ADDRESS_TYPE,

    C_RL_PARTY_ADDRESS.EFF_START_DATE, C_RL_PARTY_ADDRESS.EFF_END_DATE, C_RL_PARTY_ADDRESS.STATUS_CD,

    C_RL_PARTY_ADDRESS.PREFERRED_IND, C_RL_PARTY_ADDRESS.OPT_IN_IND

    FROM C_RL_PARTY_ADDRESS

    The LookupWebServiceExample application uses the following packages:

    LookupWebServiceExample Packages

    Display Name Physical Name Query PKG WS Lookup Country Code Xref PKG_WS_LKP_COUNTRY_XREF QRY WS LKP Country Code Xref

    PKG WS Lookup Legacy Party Xref PKG_WS_LKP_LGC_PARTY_XREF QRY WS LKP LGC Party Xref

    PKG WS Lookup SFA Party Xref PKG_WS_LKP_SFA_PARTY_XREF QRY WS LKP SFA Party Xref

    PKG WS Lookup State Code Xref PKG_WS_LKP_STATE_XREF QRY WS LKP State Code Xref

    PKG MRM System lookup PKG_MRM_SYSTEM_LOOKUP QRY MRM System

    The LookupWebServiceExample application uses the following queries:

    LookupWebServiceExample Queries

    Query SQL

    QRY WS LKP Country Code Xref

    SELECT C_REPOS_SYSTEM.ROWID_SYSTEM, C_REPOS_SYSTEM.CREATE_DATE, C_REPOS_SYSTEM.CREATOR, C_REPOS_SYSTEM.LAST_UPDATE_DATE,

    C_REPOS_SYSTEM.UPDATED_BY, C_REPOS_SYSTEM.SYSTEM_NAME,

    C_REPOS_SYSTEM.DESCRIPTION, C_REPOS_SYSTEM.LAST_LOAD_DATE, C_REPOS_SYSTEM.ADMIN_IND, C_REPOS_SYSTEM.SEQ FROM C_REPOS_SYSTEM

  • 12 SIF SDK Usage and Enabling SOA

    LookupWebServiceExample Queries

    Query SQL

    QRY WS LKP LGC Party Xref

    SELECT C_PARTY_XREF.PKEY_SRC_OBJECT AS PARTY_PKEY_SRC,

    C_PARTY_XREF.ROWID_OBJECT AS ROWID_OBJECT,

    C_ADDRESS_XREF.PKEY_SRC_OBJECT AS ADDRESS_PKEY_SRC, C_PARTY_XREF.ROWID_SYSTEM AS ROWID_SYSTEM,

    C_ADDRESS_XREF.ADDRESS_LINE_1 AS ADDRESS_LINE_1,

    C_RL_PARTY_ADDRESS_XREF.S_PARTY_ID AS S_ROWID_PARTY, C_RL_PARTY_ADDRESS_XREF.ADDRESS_TYPE AS S_ROWID_ADDR_TYPE FROM

    C_RL_PARTY_ADDRESS_XREF INNER JOIN C_PARTY_XREF ON

    C_RL_PARTY_ADDRESS_XREF.PARTY_ID = C_PARTY_XREF.ROWID_OBJECT INNER JOIN C_ADDRESS_XREF ON C_RL_PARTY_ADDRESS_XREF.ADDRESS_ID =

    C_ADDRESS_XREF.ROWID_OBJECT WHERE

    C_RL_PARTY_ADDRESS_XREF.ROWID_SYSTEM = 'Legacy' AND C_PARTY_XREF.ROWID_SYSTEM = 'Legacy' AND

    C_ADDRESS_XREF.ROWID_SYSTEM = 'Legacy'

    QRY WS LKP SFA Party Xref

    SELECT C_PARTY_XREF.PKEY_SRC_OBJECT AS PARTY_PKEY_SRC, C_PARTY_XREF.ROWID_OBJECT AS ROWID_OBJECT,

    C_ADDRESS_XREF.PKEY_SRC_OBJECT AS ADDRESS_PKEY_SRC,

    C_ADDRESS_XREF.ADDRESS_LINE_1 AS ADDRESS_LINE_1, C_ADDRESS_XREF.CITY_NAME AS CITY, C_ADDRESS_XREF.STATE_CD AS STATE,

    C_PARTY_XREF.DISPLAY_NAME AS PARTY_FULL_NAME FROM

    C_RL_PARTY_ADDRESS_XREF INNER JOIN C_PARTY_XREF ON C_RL_PARTY_ADDRESS_XREF.PARTY_ID = C_PARTY_XREF.ROWID_OBJECT

    INNER JOIN C_ADDRESS_XREF ON C_RL_PARTY_ADDRESS_XREF.ADDRESS_ID =

    C_ADDRESS_XREF.ROWID_OBJECT WHERE C_RL_PARTY_ADDRESS_XREF.ROWID_SYSTEM = 'SFA' AND

    C_PARTY_XREF.ROWID_SYSTEM = 'SFA' AND C_ADDRESS_XREF.ROWID_SYSTEM

    = 'SFA'

    QRY WS LKP State Code Xref

    SELECT C_LU_STATE_XREF.PKEY_SRC_OBJECT,

    C_LU_STATE_XREF.ROWID_OBJECT, C_LU_STATE_XREF.ROWID_SYSTEM,

    C_LU_STATE_XREF.STATE_ABBREVIATION, C_LU_STATE_XREF.STATE_NAME_DISP AS CD_DSC FROM C_LU_STATE_XREF

    QRY MRM System

    SELECT C_REPOS_SYSTEM.ROWID_SYSTEM, C_REPOS_SYSTEM.CREATE_DATE,

    C_REPOS_SYSTEM.CREATOR, C_REPOS_SYSTEM.LAST_UPDATE_DATE,

    C_REPOS_SYSTEM.UPDATED_BY, C_REPOS_SYSTEM.SYSTEM_NAME, C_REPOS_SYSTEM.DESCRIPTION, C_REPOS_SYSTEM.LAST_LOAD_DATE,

    C_REPOS_SYSTEM.ADMIN_IND, C_REPOS_SYSTEM.SEQ FROM C_REPOS_SYSTEM

    4 PartyWebServiceExample

    PartyWebServiceExample is a composite service created to manage Party data in the

    Informatica MDM Hub. This example combines the underlying granular Informatica MDM SIF

    APIs into a cohesive service that can be exposed to a SOA infrastructure for use within

    complex enterprise system integrations.

    PartyWebServiceExample shows how a complex data object can be translated into the

    underlying base object relational structure of the Informatica MDM Hub. The structure of the

    Party data object is built into the logic of the Party Web Service code for getting the Party

    data and for inserting or updating Party data.

    Note: The initial code skeleton for this example Web Service was created using the Web Service Code Generation Plug-in (WsCodeGen) utility for Eclipse. This plug-in is distributed

    as part of the Informatica MDM Resource Kit. Developers reviewing the Party Web Service

    example should also become familiar with the plug-in and the code components generated

    by the plug-in as a starting point for building complex composite services.

    The following services were created for the Party data object:

  • SIF SDK Usage and Enabling SOA 13

    getParty - Retrieves a single Party profile using a record key. A record key can

    either be the Party Rowid Object or Source System and Pkey Src Object.

    findParty - Searches for a Party profile based on attributes entered for Party and/or

    Address. This search uses the fuzzy match capabilities of the Informatica MDM Hub.

    maintainParty - Maintains the composite Party data object comprising of Party,

    Account, Address, and Telecom entities as well as the relation tables between

    Account and Address. When doing a put either the object is created (with the Rowid

    Object auto-generated) or the matching object is updated.

    Here is an example of a request and response XML for the PartyWebServiceExample, using

    the getParty service. The request is to get the entire party data object for the Party with

    Pkey Src Object value of 90000045 in the SFA system.

    Request XML for the getParty Service:

    90000045

    SFA

    Response XML from the composite get service (note this Party only has a Party record, it

    does not have Address, Phone or Account records. See Test Cases for more complex

    examples):

    - - - KISMAT PREFERRED, LLC 1616 BAYO VISTA AVE KISMAT PREFERRED, LLC (, ) KISMAT PREFERRED, LLC Organization 242

    You can try invoking the sample PartyWebServiceExample at the following location in your

    sample ORS environment after replacing the hostname and port-number parameters to

    match your environment -

    http://hostname:port/PartyWebServiceExample/services/SiperianWebServices?wsdl

  • 14 SIF SDK Usage and Enabling SOA

    There is an Excel file provided in the PartyWebServiceExample folders that has a number of

    test cases that you can run in SoapUI. For more details, see Using and Testing Web Services in this document.

    5 Lookup Web Service Example This section describes the following topics:

    Lookup code services

    Cross-reference lookup service

    5.1 Lookup Code Services

    Reference data management, or lookup code management, is a typical problem of data

    integration and MDM, especially in heterogeneous environments. While reference data can

    be complex, the lookup code Web Service shows a simple example using State and Country

    codes coming from two source systems.

    The sample ORS contains a number of base objects that hold lookup type reference data.

    These base objects are used to restrict and validate data in related fields in other base

    objects. For example, the Address base object has a field called Country Code. This field has

    a foreign key relationship to the LU Country base object to ensure that the Country Code

    value in the Address record is one of the values in the Country Code field on the LU Country

    reference data base object.

    The Informatica MDM Hub manages reference data or lookup codes from different systems

    using built-in cross-referencing capabilities. Reference data from multiple systems can be

    brought into the Hub, merged into a canonical or Best Version of the Truth record, and then

    managed as the master reference value for use across all enterprise systems.

    The tables below show examples of the LU Country base object records and cross-reference

    records for two country codes originating from two source systems. The Lookup Web

    Services example provides services to access the base object code value and the cross-

    reference code values depending on the input parameters and the service requested.

    BASE OBJECT

    Rowid Object

    Country Code

    Country Code - ISO3

    Country Code - Num

    Code Description

    1 CI CIV 384 Cte dIvoire

    2 US USA 840 United States

    CROSS-REFERENCE

    Rowid Xref

    Pkey Src Object

    Source System

    Rowid Object

    Country Code

    Country Code - ISO3

    Country Code - Num

    Code Description

    1 CI Lookups 1 CI CIV 384 Cte dIvoire

    2 44 SFA 1 44 Cte dIvoire

    3 US Lookups 2 US USA 840 United States

    4 230 SFA 2 230 United States

  • SIF SDK Usage and Enabling SOA 15

    The Lookup Web Service example will work on any base object with the same basic

    structure as the country code table; however it only accesses the code and description field.

    The test cases provided with the example code use the LU Country base object as well as

    the LU State base objects. Other LU base objects can be added by modifying the properties

    file and creating the associated package in the Hub.

    Here are the benefits provided by the Lookup service:

    Retrieves and manages centralized MDM reference/lookup data from the Hub.

    Maps lookup codes between systems for use in downstream system data

    orchestration scenarios.

    Provides values for a unified data management UI that spans systems, and uses the

    centralized MDM lookup codes in drop-down lists or other UI aids.

    LookupWebServiceExample includes the following services:

    getCodeDescription - Retrieves the description for a given a code and code type.

    translateCode - Translates a code value from one system to the code value of

    another system.

    isValidCodeValue - Determines if a given code value for a code type is valid.

    getCodeSet - Retrieves the entire code set (code value and description) for a given

    code type and system.

    getCodeTranslationSet - Retrieves the entire code translation set (code value for

    one system and its equivalent in another system).

    xrefLookup - Given a Party key (Rowid Object or Source System & Pkey Src

    Object), retrieves the primary keys for the given Party in other systems. Note that

    this service is described in detail in the Cross-reference Lookup Service section.

    Here is an example of a request and response XML for the translateCode service. The

    request is to translate the COUNTRY code value of 230 in the SFA system to the value in

    the Lookups system.

    Here is the request XML for the translateCode service:

    COUNTRY 230 SFA Lookups

    Here is the response XML from the service:

    US United States

    You can try invoking the sample LookupWebServiceExample at the following location in your

    sample ORS environment after replacing the hostname and port-number parameters to

    match your environment: http://hostname:port/LookupWebServiceExample/wsdl

  • 16 SIF SDK Usage and Enabling SOA

    Note: There is an Excel file provided in the LookupWebServiceExample folders that has a

    number of test cases that you can run in SoapUI. For more details, see Using and Testing Web Services.

    5.2 Cross-reference Lookup Service

    The LookupWebServiceExample also provides a service that shows how cross-reference data

    can be exposed through Web Services. The service is called xrefLookup. This service

    allows users to find the unique key attributes for a specific entity for a given system.

    For example, the sample ORS stores Party data originating in two source systems: SFA and

    Legacy. Each system uses a unique key to identify the Party and another key to identify the

    child base objects such as Address. These unique keys can be retrieved using a lookup on

    the cross-reference tables of different base objects, in this case Party and its Address

    children.

    xrefLookup provides the following functionality:

    1. Input is a Party key from the hub (Rowid Object) or source system (System and

    Pkey Src Object).

    2. Output is a list of the keys for all Party cross-reference records, including the input,

    and the cross-reference keys for the Addresses of that Party.

    3. The HUB_KEY is the Rowid Object from the Party base object.

    4. The SFA system key is the Pkey Src Object of the Party cross-reference table where

    the system is SFA.

    5. The Legacy system key is a composite key that is built using the address city, state,

    and zip details from the address package.

    xrefLookup provides the following benefits:

    It avoids the impact of Extended Keys in the Hub. Theres no deconstruction of the concatenated keys for downstream synchronization. Provides downstream applications with keys relevant to those systems.

    Allows storage of granular data elements in the Hub.

    The service can be utilized as an independent SOA component to enable data

    integration across complex enterprise systems integrations.

    Here is an example of a request and response XML for the xrefLookup service. The request

    is to get the set of attributes to uniquely identify the Party record for Rowid Object 809 in

    each source system.

    Request XML for the xrefLookup service:

    809

    Response XML from the xrefLookup service (notice that the Address Pkey Src is a

    concatenated key, but the relevant elements are also available as granular attributes so

    that a downstream system is not required to deconstruct the key attributes from a

    concatenated string value):

  • SIF SDK Usage and Enabling SOA 17

    809 -

    -

    SLS2031 PARTY_PKEY_SRC -

    809 ROWID_OBJECT -

    SLS2031 |Billing ADDRESS_PKEY_SRC -

    Legacy ROWID_SYSTEM

    -

    11390 HARTMAN CIR ADDRESS_LINE_1 -

    SLS2031 S_ROWID_PARTY -

    BILL S_ROWID_ADDR_TYPE PACKAGE.PKG_WS_LKP_LGC_PARTY_XREF -

    -

    CST2042 PARTY_PKEY_SRC -

    809 ROWID_OBJECT -

    CST2042|999 ADDRESS_PKEY_SRC -

    11390 HARTMAN CIR ADDRESS_LINE_1 -

    BELLEVUE CITY -

    NE STATE -

    BILL BRUCE PARTY_FULL_NAME PACKAGE.PKG_WS_LKP_SFA_PARTY_XREF

  • 18 SIF SDK Usage and Enabling SOA

    You can try invoking the sample LookupWebServiceExample at the following location in your

    sample ORS environment after replacing the hostname and port-number parameters to

    match your environment - http://hostname:port/LookupWebServiceExample/wsdl

    There is an excel file provided in the LookupWebServiceExample folders that has a number

    of test cases that can be run in SoapUI. See the section below on testing Web Services for

    more details.

    6 Using and Testing Web Services

    There are a number of tools available to test Web Services. Browsers can display the URL of

    the Web Service, while tools such as Eclipse and SoapUI can send requests and receive

    responses. There are test cases for each of the sample Web Services in the Excel files

    distributed with the Resource Kit. You can use these text cases in SoapUI, or modify them

    for use within Eclipse as needed.

    6.1 Testing Web Services with a Web Browser The quick and simple way to test that your Web Service is available is to enter the URL to

    the WSDL page into a browser.

    1. Open a web browser such as Internet Explorer or Mozilla Firefox.

    2. Enter: http://localhost:8080/LookupWebServiceExample/wsdl.

    3. You should see an XML structure with definitions for the requests and responses for

    the LookupWebServiceExample.

    4. For the PartyWebServiceExample enter:

    http://localhost:8080/PartyWebServiceExample/services/SiperianWebServices?wsdl

    6.2 Testing Web Services with SoapUI SoapUI is the leading tool for Web Service Testing. You can download SoapUI from:

    http://www.soapui.org.

    1. Create a new WSDL project in SoapUI. For Initial WSDL enter the WSDL URL for the

    LookupWebServiceExample or the PartyWebServiceExample. These are the same as

    the URLs shown for a web browser above. Allow sample requests to be created.

    2. Open one of the sample requests and replace the XML within the Envelop tags with

    the XML in the test case excel file for that request.

    3. Click the green run button to submit the request. 4. The Response window should have the same text as in the response column in the

    spreadsheet.

    5. Run each test case for each sample Web Service. You can add the WSDL for the

    other example Web Service to the existing project or create a new project for the

    other example.

  • SIF SDK Usage and Enabling SOA 19

    7 Creating a Web Service This section describes the steps for creating your own Web Service that leverages the

    Informatica MDM SIF API. For reference, refer to the sample applications

    (PartyWebServiceExample and LookupWebServiceExample) while going through the steps.

    In the source code you will need to reference the following files:

    source\resources\properties\mapping.xml Maps your Java classes to your WSDL declarations.

    source\resources\properties\server-config.wsdd Declares your Web Service to axis.

    source\resources\properties\siperianConnection.properties A properties files used to initialize your application. Recommended for initializing SipClient.

    source\resources\properties\lookupServices.wsdl Declares the input and output objects used in your webs service.

    build.xml - Used to compile your Java code.

    1) Set up your Eclipse environment to include all necessary JAR files:

    a) Make sure you have all the necessary JAR files for your project. Take a look at the lib

    directory of one of the sample applications for an idea of what JAR files are needed.

    The lib directory will be in the root directory of the sample application.

    b) Its probably easiest to put all the JAR files needed in a lib directory relative to your project. Edit your build.xml script accordingly. (See the build.xml file included with

    the examples.)

    c) Use the build.xml script in Eclipse (ant window) to quickly build your code. Make sure

    to modify this build script to reference your code.

    2) Create the following java objects. These objects do not need to have any functionality at

    this point and are just place holders. Later you can add the business logic. Note that you

    should repeat these steps (except for Step c.) for each service in the composite service.

    a) Input class object. This is the container for the input to your Web Service.

    b) Output class object. This is the container for the output of your service. Note that

    this can contain the data of base objects.

    c) An entry point class. This is the first java class that is executed when the Web

    Service is first accessed. This class contains all your different service methods. (For

    more information, see com.siperian.partyservice.WebServices.)

    d) A service processor class. This class encapsulates all of the logic for your service. It

    should only have one main access method (typically process).

    e) A service method for each Web Service in your entry point class defined in Step c.

    This service method uses the input class from Step a, and the output class from Step

    b. This service method should call the main processor method from Step d. At this

    point you may just want to have this method set a hard-coded string in your output

    class.

  • 20 SIF SDK Usage and Enabling SOA

    3) Decide which Axis framework to use:

    a) Axis framework alone which autogenerates the WSDL and mapping files.

    Notes:

    i) Faster and less work involved.

    ii) Less flexibility in controlling XML input and output.

    iii) All the settings are set in the WSDD.

    iv) See PartyWebServiceExample.

    Next: go to Step 7.

    b) Axis framework with Castor, which requires manually creating the WSDL and

    mapping files.

    Notes:

    i) Axis framework with Castor requires more work.

    ii) More flexibility in controlling XML input and output. This method may be needed

    when the XML out put needs to be in a specific format.

    iii) See LookupWebServiceExample.

    4) Copy the Castor package from the LookupWebServiceExample.

    5) Define the WSDL file:

    a) Suffix must be .wsdl.

    b) Make sure to define in WSDD (see Step 7).

    c) Define the Input class as complex type (note that you can name the fields anything

    you want)

    d) Define an element (right after Input complexType) for the input and set the name to

    the name of your service (for example, lookupService). Note: This is not the name

    of the Input class

    e) Define the Output class as a complex type (note that you can name fields anything

    you want)

    f) Define an element (right after Output complexType) for the output and set all values

    to output type.

    g) Define Message for Input.

    h) Define Message for Output.

    i) Add an operation for your service with Input and Output into the portType section.

    j) Add an operation for your service with Input and Output into the binding section.

    6) Define mapping.xml file

    a) Make sure to define this fine in the WSDD (step 7).

    b) Set up the mapping of the Input class from WSDL to your java class (that is,

    XrefLookupRequest). Make sure to map to your service (that is,

    xrefLookupService)

    c) Set up mapping of Output class from WSDL to your java class (that is,

    XrefLookupResponse). Make sure to map to your service (that is,

    xrefLookupService)

    7) Create the server-config.wsdd file. The contents will vary depending on which Axis

    framework you chose in Step 3. See the corresponding server-config.wsdd in the

    corresponding sample application. This file should include the following:

    a) The service name section. This should point to your entry point class (see Step 2c).

    b) Add your input and output class objects to this service name section.

    c) Ensure that the WSDL and mapping.xml file are defined here.

  • SIF SDK Usage and Enabling SOA 21

    8) Copy and modify the build.xml file in the sample code to build your project. You can

    build your project in Eclipse by dragging the build.xml file into the ant window.

    9) Deploy your Web Service and test it using Web Services Explorer in Eclipse. At this point

    the Web Service will not have any logic. Hard-code the output to a string as you only

    need to see if it can be accessed. In Eclipse use the following steps to access your Web

    Service:

    a. Run

    b. Launch the Web Services explorer

    c. WSDL page (top-right icon)

    d. WSDL Main

    e. Enter the URL for your webservice, depending on your configuration it should

    something like http://localhost:8080/LookupWebServiceExample/wsdl

    As long as you can see the string you hard-coded in your output, you are fine at this

    point.

    10) Create the SiperianConnection.properties file.

    a) Store the settings for connecting your application to the Informatica MDM Hub.

    b) This file is used to initialize the SipClient (Step 11).

    c) You can also create a second properties file for settings particular to your application

    (see LookupWebServiceExample.properties).

    d) There can be local versions of the property files which can be modified at runtime.

    This is convenient as the application need not be redeployed if the user wishes to

    modify behavior that is based on those property files.

    11) Initialize the SipClient (see com.siperian.partyservice.processor.WebServiceProcessor).

    This Siperian-defined java object is needed to make SIF API calls. It is recommended

    that a properties file (Step 10) is used to initialize the SipClient.

    12) This SipClient object should be made available to classes that will be making SIF API

    calls.

    13) Add logic to your java classes. You will be using the SipClient class created in Step 11 to

    make SIF API calls. To get more information on what API classes are available, and how

    to use them use the following resources:

    a. Take a look at the SIF WSDL using Eclipses WSDL editor or SoapUI. The steps are the same as in Step 6, except that the URL is

    http://localhost:8080/cmx/request/wsdl (note that this may be different

    depending on how your configured your Informatica MDM Hub). You will want to

    experiment with the input and observe what output you will be getting.

    b. Take a look at the Informatica MDM SIF javadoc. This documentation provides

    more detailed information on the input and output from SIF.

    Under your Informatica MDM Resource Kit installation folder there is a folder

    called sifsdk, this folder contains the SIF SDK as well as the associated SIF

    javadoc.

    c. The code examples from the samples section of the Informatica MDM Resource

    Kit.