Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Report from the trenches: Using SOA Integrated Gateway

678 views

Published on

There are several uses cases for integrating custom applications with Oracle E-Business Suite:
• Use data from the HR system to determine hierarchy in your packaged application;
• Use functionality of a module like Oracle Time control in another application;
• Expose services for self-service purposes.
Oracle E-Business suite has built-in support for these types of integration. We implemented a web service in EBS for a project that is an example of the third use case: a self-service application for expense reports, which stores the result (a pay element) in the E-Business Suite.
The following topics will be discussed:
1) Possible integration methods with EBS
2) Short introduction into web services to explain the type of integration we were realizing
3) Preparation: install and configure the SOA Gateway. Specifically the roles were very confusing. There is a large number of documents that you need to read to find the appropriate information
4) Creating the web service. This is the easiest part, you can use a wizard for that
5) Deploying the web service. You need to know about web service security standards to be able to know what security option to pick
6) Granting access to the service.
7) Using the service
8) Conclusion, lessons learned, knowledge needed etc.

In this session delegates will learn what decisions they need to take when integrating EBS with other systems using SOA Gateway, what knowledge they need and what practical problems we ran into when applying this technology. This is based on the project that we did at the city of Rotterdam where they were doing a large EBS 12 implementation.

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Report from the trenches: Using SOA Integrated Gateway

  1. 1. 1  |  28   Report from the trenches: Using SOA integrated gateway at the city of Rotterdam Lonneke Dikmans October 15th 2013 | UKOUG Apps
  2. 2. 2  |  28   Introduction Agenda ●  Integrating with Oracle EBS ●  Case ●  Conclusion ●  Future developments Who am I ●  Consultant and managing partner at Vennster ●  Specializing in SOA and integration ●  Oracle Ace Director
  3. 3. 3  |  28   Integrating your packaged App | Use Cases Use data ●  For example from HR system to determine approval chain Use functionality (fine grained) ●  For example using Oracle Time control in your custom application Expose services (coarse grained) ●  For example to change an address or to fill out an expense report
  4. 4. 4  |  28   Integrating with Oracle EBS | options API ●  Call directly ●  Use EBS Adapter SOA Suite ●  Generate PL/SQL Web Service Web Service ●  Generate your own ●  Use Integrated SOA Gateway
  5. 5. 5  |  28   Intermezzo | What is a Web Service “A software system designed to support interoperable machine-to-machine interaction over a network. It has an interface described in a machine-processable format (specifically WSDL). Other systems interact with the Web service in a manner prescribed by its description using SOAP messages, typically using HTTP with an XML serialization in conjunction with other Web-related standards.” (W3C)
  6. 6. 6  |  28   Integrating with Oracle EBS | Web Services Components Integrated SOA Gateway ●  Integration Repository (IREP) ●  Service Provider ●  Service Invocation Framework (SIF) ●  Service Monitor
  7. 7. 7  |  28   Integrating with Oracle EBS | Documentation Title   Audience   Oracle  E-­‐Business  Suite  Integrated  SOA    Gateway  User’s   Guide   Architect,  Developer,   Administrator   Oracle  E-­‐Business  Suite  Integrated  SOA  Gateway   ImplementaAon  Guide   Administrator   Installing  Oracle  E-­‐Business  Suite  Integrated  SOA   Gateway,  Release  12   Administrator   Oracle  E-­‐Business  Suite  Integrated  SOA  Gateway   Developer’s  Guide   Developer  
  8. 8. 8  |  28   Integrated SOA Gateway | Overview
  9. 9. 9  |  28   Integrated SOA Gateway | Design time
  10. 10. 10  |  28   Integrated SOA Gateway | Runtime
  11. 11. 11  |  28   Case | ESS & MSS @ City Of Rotterdam Proof of concept ●  Use EBS module ●  Custom development ●  Buy self service module Process ●  Expense reports Criteria ●  Data quality & control ●  Cost ●  Usability ●  Process support (workflow) ●  ICT ●  Other
  12. 12. 12  |  28   Case | Overview ●  Preparation •  Installation and configuration •  Roles and permissions ●  Creating the web service ●  Deploying the web service ●  Granting access to the web service ●  Using the web service
  13. 13. 13  |  28   Case | Preparation Installation and configuration ●  Installation -> lots of patches ●  Setup roles and permissions -> see next slide, not obvious Analysis ●  Functionality needed in Application ●  Functionality needed in EBS (pay elements) ●  Determine APIs to be (created and) exposed
  14. 14. 14  |  28   Case | Roles and permissions Privilege   Analyst   Developer   Administrator   View  public  interfaces   Yes   Yes   Yes   View  private/internal  interfaces   No   Yes   Yes   (Re)Generate  Web  Services  (WSDL)   No   No   Yes   (Re)Deploy  Web  Services   No   No   Yes   Undeploy  Web  Services   No   No   Yes   Subscribe  to  business  events   No   No   Yes   Create  grants   No   No   Yes   Download  composite  services   No*     Yes   Yes  
  15. 15. 15  |  28   Analysis | Preparation
  16. 16. 16  |  28   Case | Create Web Service
  17. 17. 17  |  28   Case | Deploying the Web Service
  18. 18. 18  |  28   Case | Granting access Authentication & authorization ●  Use create Grant option ●  Create one user, for example ‘selfsvc’ that has access (system account) => Note that this is on top of the information that is sent in the message!
  19. 19. 19  |  28   Case | Using the service
  20. 20. 20  |  28   Case | Using the Web Service <?xml version = '1.0' encoding = 'UTF-8'?><definitions name="PAY_ELEMENT_ENTRY_API" targetNamespace="http://xmlns.oracle.com/apps/per/soaprovider/plsql/ pay_element_entry_api/" xmlns:tns="http://xmlns.oracle.com/apps/per/soaprovider/plsql/pay_element_entry_api/" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns1="http://xmlns.oracle.com/apps/per/soaprovider/plsql/pay_element_entry_api/create_element_entry/" xmlns:tns2="http://xmlns.oracle.com/apps/per/soaprovider/plsql/pay_element_entry_api/delete_element_entry/" xmlns:tns3="http://xmlns.oracle.com/apps/per/ soaprovider/plsql/pay_element_entry_api/update_element_entry/"> <types> <schema xmlns="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://xmlns.oracle.com/apps/per/soaprovider/plsql/pay_element_entry_api/create_element_entry/"> <include schemaLocation="http:// sdra01.sdr.rotterdam.nl:8001/webservices/SOAProvider/plsql/pay_element_entry_api/APPS_ISG_CREATE_ELEMENT_ENTRY_PAY_ELEMENT_ENTRY_API-24CREATE_.xsd"/> </schema> <schema xmlns="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://xmlns.oracle.com/apps/per/soaprovider/plsql/ pay_element_entry_api/delete_element_entry/"> <include schemaLocation="http://sdra01.sdr.rotterdam.nl:8001/webservices/SOAProvider/plsql/pay_element_entry_api/ APPS_ISG_DELETE_ELEMENT_ENTRY_PAY_ELEMENT_ENTRY_API-24DELETE_.xsd"/> </schema> <schema xmlns="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://xmlns.oracle.com/apps/per/soaprovider/plsql/pay_element_entry_api/update_element_entry/"> <include schemaLocation="http:// sdra01.sdr.rotterdam.nl:8001/webservices/SOAProvider/plsql/pay_element_entry_api/APPS_ISG_UPDATE_ELEMENT_ENTRY_PAY_ELEMENT_ENTRY_API-24UPDATE_.xsd"/> </schema> <schema xmlns="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://xmlns.oracle.com/apps/per/soaprovider/plsql/ pay_element_entry_api/"> <element name="SOAHeader"> <complexType> <sequence> <element name="Responsibility" minOccurs="0" type="string"/> <element name="RespApplication" minOccurs="0" type="string"/> <element name="SecurityGroup" minOccurs="0" type="string"/> <element name="NLSLanguage" minOccurs="0" type="string"/> <element name="Org_Id" minOccurs="0" type="string"/> </sequence> </complexType> </element> </schema> </types> <message name="CREATE_ELEMENT_ENTRY_Input_Msg"> <part name="header" element="tns:SOAHeader"/> <part name="body" element="tns1:InputParameters"/> </message> <message name="CREATE_ELEMENT_ENTRY_Output_Msg"> <part name="body" element="tns1:OutputParameters"/> </message> <message name="DELETE_ELEMENT_ENTRY_Input_Msg"> <part name="header" element="tns:SOAHeader"/> <part name="body" element="tns2:InputParameters"/> </message> <message name="DELETE_ELEMENT_ENTRY_Output_Msg"> <part name="body" element="tns2:OutputParameters"/> </message> <message name="UPDATE_ELEMENT_ENTRY_Input_Msg"> <part name="header" element="tns:SOAHeader"/> <part name="body" element="tns3:InputParameters"/> </message> <message name="UPDATE_ELEMENT_ENTRY_Output_Msg"> <part name="body" element="tns3:OutputParameters"/> </ message> <portType name="PAY_ELEMENT_ENTRY_API_PortType"> <operation name="CREATE_ELEMENT_ENTRY"> <input message="tns:CREATE_ELEMENT_ENTRY_Input_Msg"/> <output message="tns:CREATE_ELEMENT_ENTRY_Output_Msg"/> </operation> <operation name="DELETE_ELEMENT_ENTRY"> <input message="tns:DELETE_ELEMENT_ENTRY_Input_Msg"/> <output message="tns:DELETE_ELEMENT_ENTRY_Output_Msg"/> </operation> <operation name="UPDATE_ELEMENT_ENTRY"> <input message="tns:UPDATE_ELEMENT_ENTRY_Input_Msg"/> <output message="tns:UPDATE_ELEMENT_ENTRY_Output_Msg"/> </operation> </portType> <binding name="PAY_ELEMENT_ENTRY_API_Binding" type="tns:PAY_ELEMENT_ENTRY_API_PortType"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="CREATE_ELEMENT_ENTRY"> <soap:operation soapAction="http:// sdra01.sdr.rotterdam.nl:8001/webservices/SOAProvider/plsql/pay_element_entry_api/"/> <input> <soap:header message="tns:CREATE_ELEMENT_ENTRY_Input_Msg" part="header" use="literal"/> <soap:body parts="body" use="literal"/> </input> <output> <soap:body use="literal"/> </output> </operation> <operation name="DELETE_ELEMENT_ENTRY"> <soap:operation soapAction="http://sdra01.sdr.rotterdam.nl:8001/webservices/SOAProvider/plsql/pay_element_entry_api/"/> <input> <soap:header message="tns:DELETE_ELEMENT_ENTRY_Input_Msg" part="header" use="literal"/> <soap:body parts="body" use="literal"/> </input> <output> <soap:body use="literal"/> </output> </operation> <operation name="UPDATE_ELEMENT_ENTRY"> <soap:operation soapAction="http://sdra01.sdr.rotterdam.nl:8001/webservices/ SOAProvider/plsql/pay_element_entry_api/"/> <input> <soap:header message="tns:UPDATE_ELEMENT_ENTRY_Input_Msg" part="header" use="literal"/> <soap:body parts="body" use="literal"/> </input> <output> <soap:body use="literal"/> </output> </operation> </binding> <service name="PAY_ELEMENT_ENTRY_API_Service"> <port name="PAY_ELEMENT_ENTRY_API_Port" binding="tns:PAY_ELEMENT_ENTRY_API_Binding"> <soap:address location="http://sdra01.sdr.rotterdam.nl:8001/webservices/SOAProvider/ plsql/pay_element_entry_api/"/> </port> </service></definitions>
  21. 21. 21  |  28   Case | Use the Web Service SQLJUTL ●  Boolean (PL/SQL) is translated to an int (1 = true), see Oracle Application Server Adapters for Files, FTP, Databases and Enterprise Messaging User’s Guide ●  Long list of flex fields, not clear which are used <element name="P_VALIDATE" type="int" db:index="1" db:type="INTEGER" minOccurs="0" nillable="true" /> … <element name="P_ATTRIBUTE1" type="string" db:index="19" db:type="VARCHAR2" minOccurs="0" nillable="true" /> <element name="P_ATTRIBUTE2" type="string" db:index="20" db:type="VARCHAR2" minOccurs="0" nillable="true" /> <element name="P_ATTRIBUTE3" type="string" db:index="21" db:type="VARCHAR2" minOccurs="0" nillable="true" /> <element name="P_ATTRIBUTE4" type="string" db:index="22" db:type="VARCHAR2" minOccurs="0" nillable="true" />
  22. 22. 22  |  28   Case | Using the Web Service HRM features (API xsd) ●  Assignment id ●  Elelement_link_id ●  Date tracking EBS features (header) ●  Responsibility ●  RespApplication ●  SecurityGroup
  23. 23. 23  |  28   Conclusion | design decisions 1.  Using integrated SOA Gateway 2.  WS-Security 3.  Importing HR data 4.  Using seeded API versus creating custom API
  24. 24. 24  |  28   Conclusion | Knowledge needed HR ●  Knowledge of the current configuration ●  Installation and configuration (Integrated SOA Gateway) EBS ●  Knowledge of PL/SQL specifics (Generated WSDL) ●  EBS Header Web Service ●  OC4J ●  WSDL/SOAP/ etc
  25. 25. 25  |  28   Conclusion | Advantages of Approach Integration repository ●  List of APIs that are exposed as Web Service ●  No knowledge of Web Services needed to generate them •  But you need that knowledge to troubleshoot! •  But you need that knowledge to test them! •  But you need that knowledge to use them! ●  Control access (with grants) ●  WS – Security is built in
  26. 26. 26  |  28   Developments | EBS 12.2 WebLogic Server ●  Part of Fusion Middleware 11g SOA Suite 11g instead of SOA Suite 10g ●  All web services are run with Oracle SOA Suite 11g ●  Support for asynchronous PL/SQL Web Services
  27. 27. 27  |  28   Future Developments | EBS 12.2
  28. 28. 28  |  28   Future Developments | Fusion Apps ●  No SOA Integrated gateway ●  SOA Suite part of Apps
  29. 29. 29  |  28   Report from the trenches: Using SOA integrated gateway at the city of Rotterdam Lonneke Dikmans October 15th 2013 | UKOUG Apps

×