Upload
lonneke-dikmans
View
304
Download
2
Embed Size (px)
DESCRIPTION
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.
Citation preview
1 | 28
Report from the trenches: Using SOA integrated gateway at the city of Rotterdam
Lonneke Dikmans
October 15th 2013 | UKOUG Apps
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 | 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 | 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 | 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 | 28
Integrating with Oracle EBS | Web Services
Components Integrated SOA Gateway ● Integration Repository (IREP) ● Service Provider ● Service Invocation Framework (SIF) ● Service Monitor
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 | 28
Integrated SOA Gateway | Overview
9 | 28
Integrated SOA Gateway | Design time
10 | 28
Integrated SOA Gateway | Runtime
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 | 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 | 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 | 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 | 28
Analysis | Preparation
16 | 28
Case | Create Web Service
17 | 28
Case | Deploying the Web Service
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 | 28
Case | Using the service
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 | 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 | 28
Case | Using the Web Service
HRM features (API xsd) ● Assignment id ● Elelement_link_id ● Date tracking
EBS features (header) ● Responsibility ● RespApplication ● SecurityGroup
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 | 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 | 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 | 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 | 28
Future Developments | EBS 12.2
28 | 28
Future Developments | Fusion Apps
● No SOA Integrated gateway
● SOA Suite part of Apps
29 | 28
Report from the trenches: Using SOA integrated gateway at the city of Rotterdam
Lonneke Dikmans
October 15th 2013 | UKOUG Apps