extending ebs
DESCRIPTION
Extend EBSTRANSCRIPT
Extending the E-Business Suite
with Application Express
(APEX)
OR
Finding joy in our job
Why APEX?
■ Rapid Application Development
▪ Shorter learning curve than OAF, ADF, MAF
■ Avoid customizations
■ No impact on patching and upgrading
■ Fun and Free! But check with Oracle
▪ EBS limited use license does NOT allow for an
additional schema
■ Fully supported by Oracle
Possible Use Cases
� Real time access to EBS data
� Additional reporting and analysis
� Simple and customized export of data
� Deliver new business functionality
� Custom ordering system
� Searchable personnel directory
� Custom data collection
� Personalization of complex EBS workflows
� APEX can NOT be used to customize EBS
pages or forms
Possible Use Cases
White Paper
Extending Oracle E-Business Suite Release 12.1
and above using Oracle Application Express
Revision 2.01, Dated March, 2015
http://www.oracle.com/technetwork/developer-
tools/apex/learnmore/apex-ebs-extension-white-paper-345780.pdf
MOS Note 1306563.1 provides the scripts but links to an older version of the White Paper (Revision 1,
dated December, 2012)
Prerequisites for the White Paper Sample
� Oracle E-Business Suite (≥ 12.1.3)
� Fully licensed Oracle Database (≥ 10.2.0.3)
� Oracle Application Express (≥ 4.2)
� Oracle REST Data Services (≥ 2.0)
� Oracle WebLogic Server (≥ 12c)
� Can use Oracle Glassfish Server or Apache Tomcat
� For Oracle E-Business Suite Release 12.1, patch 9659153:R12.FND.B is required
� Need patch 12316083
30,000 ft Overview
Create an APEX Application
Configure APEX Login Process
Define APEX Authorizations
Define EBS Profile Option and Functions
Link Functions to Menu and Responsibility
What is APEX?
� Rapid Application Development tool
� Similar to Microsoft Access� Flows – Oracle Platform – Project Marvel -
HTML DB – Application Express (APEX)
� Tightly coupled with the Oracle database
� Declarative (what to do rather than how to do it)
� Use Wizards and Templates to create applications
� The applications created by APEX are accessed
through a web browser
Architecture
� Applications are stored as meta-data in the database (Not the APPS server)
� Procedures generate HTML
� The meta-data is used to render pages and processing
� Can be installed on 10gR2 and above
� Development and runtime access is 100 % browser based (no client software - ever)
Architecture
• E-Business Suite Database
APPS
SchemaCUSTOM
Schema
Grant Select
EBS APIs
APEX
Engine
The ‘f’ Procedure and the URL
http://myserver.com:8080/ords/dev/f?p=XXX:Y:zzz
F is a PL/SQL procedure that generates APEX pages“f” is from “flow”, APEX was once called “Project Flows.”
SELECT owner, object_type
FROM dba_objectsWHERE object_name = ‘F’;
The ‘f’ Procedure and the URL
DESC F;
Changes in R12
� In 11i, access to APEX apps was processed via mod_plsql in Application Server
� In R12, enabling mod_plsql is not supported and
can put your support at risk
� For R12, use Apache, Oracle REST Data Services
within Oracle Glassfish or WebLogic, or Embedded PL/SQL Gateway
� APEX will use JSP but wizards make it simple
Options for the HTTP Listener
Embedded PL/SQL GatewayPossible problem with scalability
ApacheHighly scalable
Doesn’t support some APEX 4 features
Oracle REST Data Services (formerly the APEX Listener)
Generally recommended
Implementation options
Embedded PL/SQL Gateway
Very easy to use
Requires Shared Server
Cannot separate the listener tier from the database
tier (less secure)
Possible issues with session management
Apache
� Very scalable
� Proven technology
� Licensing may be an issue
� Doesn’t support some newer APEX functions
� RESTful web services
� PDF printing
Oracle REST Data Services(replaces the APEX Listener)
� Generally recommended as best choice
� Supports latest APEX features
� Redirects call to APEX applications to the APEX run-time engine
� Accepts RESTful Web Service call URIs
� Can marshal data from SQL to .csv or JSON
formats
� Deployment options
� Glassfish (free)� Weblogic (extra license)
� Third party container
Key Terms
• Representational State Transfer (REST) is an architectural
style that specifies constraints, such as the uniform interface,
that if applied to a web service induce desirable properties,
such as performance, scalability, and modifiability, that
enable services to work best on the Web. -Whew!
• A RESTful service provides access to resources (web pages,
pictures, videos, information, etc.) in a lightweight,
maintainable and scalable manner.
Bottom line difference for most developers:myserver.com:8080:/apex/f?p=400:103
myserver.com:8080:/ords/f?p=400:103
Key Terms
• Schema (database):
– Collection of database objects owned by a user
– Parse As Schema – the default schema of the user/app
� Workspace (APEX):
– Logical container for one or more application(s)
– Separate, self contained development
environment
– Contains applications, users, and schemas
Key Terms
■ Users:
▪ Instance Administrator
▪ Workspace Administrator
▪ Developer
▪ End User
Key Terms
Session: a series of related browser requests
Session State: variables representing APEX items and their values, maintained on the server
Submit: an operation that saves the values of the
items in the corresponding session state variable before rendering a target page
Redirect: an operation that renders a target page without saving values to the session state
Potential Gotchas
• LOV – List of Values to be selected
• Can allow multiple selections
• Source: Static List or SQL query
List – a navigation aid
Can use images or text
Overview
Suggest you create an APEX application before starting the White Paper’s application.
Get familiar with newer screens in the wizards and
with the location of development items.
Some steps have been combined in newer
versions
Plenty of good books, websites, and blogs.
Differences in 4.2
Differences in 5.0
• Grid Layout is a paradigm shift
Differences in 5.0
• Multi-item editing
Differences in 5.0
Page 28: Create a region “Type of Region HTML”
IN 5.0 the Type is “Static Content”
Under Attributes, you can find“Output As” which is set to HTML
In White Paper, this field is called
“Item Containing Primary Key Column Value”
Free Workspace
https://apex.oracle.com/
Good place to learn APEX fundamentals
No E-Business Suite
Install APEX
� Download APEX (5.0) and Installation Guide from OTN
� Install APEX (in database)
� Download and install Glassfish
� Download and register Oracle REST Data Services with Glassfish (war file)
Install APEX
Configure database for APEX
� Create a user/schema in the database (APEX_USER)
� Create views and instead-of triggers in APPS
� Grant select on views to APEX_USER
Configure APEX
Within APEX
� Create a workspace
� Create users
� Developer(s) to create app
� End User(s) to test
� Create the application
Installation Best Practices
• Create custom applications in a separate schema
• Create the custom tables, views, triggers, sequences in custom schema
• Create views on APPS tables
• Grant select privileges on APPS views to APEX
user as necessary
Programming Best Practices
• Do NOT perform direct updates to seeded tables!
• Will bypass Oracle’s validation and referential
integrity
– Use published APIs
– with instead-of triggers
– direct calls from the APEX code
• Can use FND_SUBMIT for intensive updates
Programming Best PracticesDirect Update = Bad
INSERT INTO FND_USER ( USER_ID , USER_NAME , PASSWORD , START_DATE , EMPLOYEE_ID) VALUES ( fnd_user_seq.nextval , ‘[email protected]’
, ‘oracle12’
, sysdate , 1234 );
Programming Best PracticesAPI = Good
DECLARE v_user_id number; BEGIN
v_user_id := fnd_user_pkg.createuserid ( x_user_name => ‘[email protected]’
, x_unencrypted_password => ‘oracle12’
, x_start_date => sysdate), employee_id => 1234;
COMMIT; END;
Problem with EBS Public APIs
ORA-00942: table or view does not exist
Per Service Request - Users should:
Grant SELECT, INSERT, UPDATE and DELETE privileges
to your non-APPS schema for all tables owned by APPS
set pages 0spool grantem.sql
SELECT 'grant select, insert, update, delete on '||owner||'.'||table_name||' to polk_apex_sand;' FROM dba_tables WHERE owner = 'APPS';
spool off
Better Solution to Public API Problem
create or replace procedure polk_create_irec_user
( v_user_name IN varchar2,
v_password IN varchar2,v_email IN varchar2,v_last_name IN varchar2,v_first_name IN varchar2 )
authid definer
ASBEGINapps.irc_party_api.create_user
(p_user_name => v_user_name,p_password => ‘Thursday123'
,p_start_date => ‘16-APR-2015',p_responsibility_id => 23350,p_resp_appl_id => 800,p_security_group_id => 0,p_email => v_email
,p_last_name => v_last_name,p_first_name => v_first_name );
commit;dbms_output.put_line ('User:'||v_user_name||'Created Successfully');
EXCEPTION
when others then dbms_output.put_line (‘Cant create User due to'||SQLCODE||' '||SUBSTR(SQLERRM, 1, 100));rollback;
END;
Definer = author
Not current user
Compile as APPS
Grant execute to apex_userCall from apex_user
Programming Best Practices
� APEX wizards (used to) require primary keys
� Wizards make life simple, but need primary keys
� Create views on seeded tables with an arbitrary
primary key (2 columns at most)
� Modify APEX pages’ row processing (created by
the wizards) to call APIs
� Or call APIs via INSTEAD OF triggers on views
Install APEX
Apexins.sql Parameters
� APEX tablespace - APEX application user Not SYSAUX!
� Files tablespace - APEX files
Not SYSAUX!
� Temporary tablespace
� Images - /i/ - virtual directory for APEX images
* SYSAUX belongs to Oracle
Install APEX
■ Change Admin password apxchpwd.sql
■ Alter User APEX_PUBLIC_USER Account Unlock
■ Alter User APEX_PUBLIC_USER Identified by <password>;
Install APEX
■ Password Expiration in 11gIn 11g default profile PASSWORD_LIFE_TIME is 180 days. At expiration the APEX instance will be
unusable until the password is reset.
Consider creating separate profile for APEX:
CREATE PROFILE APEX_PROFILE LIMIT
PASSWORD_LIFE_TIME UNLIMITED;
ALTER USER APEX_PUBLIC_USER PROFILE APEX_PROFILE;
� Apply Patch 12726556 – Launching APEX From Forms Navigator
Install APEX on R12.2
■ Must update the custom schema to enable Edition-Based Redefinition (EBR)
■ Register the schema within E-Business Suite
■ See “Registering an Oracle Schema” Chapter 6
of the E-Business R12.2 Suite Maintenance Guide
� Apply Patch 12726556 – Launching APEX From
Forms Navigator AFTER enabling EBR
Deploy to Glassfish
Oracle® REST Data ServicesInstallation, Configuration, and Development Guide Release 3.0
Chapters on:1. Configuring ORDS
2. Deploying ORDS to: GlassfishWeblogic
Apache Tomcat
Configure ORDS
• PL/SQL Gateway is not Embedded PL/SQL Gateway!
• If you plan to use APEX with ORDS you MUST configure the
PL/SQL Gateway.
• The PL/SQL Gateway is what provides the mod_plsql like
functionality to invoke PL/SQL procedures in the database
• This step creates the apex.xml file. Without an apex.xml file APEX
will not be accessible (or any other PL/SQL procedures).
Bottom line – when configuring ORDS, be sure to reply with 1
to:
Enter 1 if you want to use PL/SQL Gateway or 2 to skip this step [1]:
Security
• Authentication
– Who are you?
– Controls access to application (the doorman)
• Authorization
– What are you allowed to do? (the bartender)
– Controls access to forms, pages, buttons, etc. and to data
Authentication (the doorman)
■ Preconfigured schemes
—Single Sign On
—Oracle Access Manager
■ Custom Scheme
▪ In APP - PL/SQL function to validate user based on username and password
▪ In APEX – define an authorization scheme to use the function
Authorization (the bartender)
Apply Authorization to all non-public pages, not just menus.
Can be applied to almost any component of an application (i.e. pages, regions, buttons, items)
Session State Protection
The URLs can be manipulated to circumvent security
Managing Application Security – Understanding Session State Protection
Session State Protection
Session State Protection uses the Page Access Protection attributes and the Session State Protection item attributes with checksums
positioned in f?p= URLs to prevent URL tampering and unauthorized access to and alteration of
session state.
--Oracle® Application Express Application Builder User's Guide Release 4.2
Think changing …f?p=200:1… to …f?p=300:12 …
Custom Authorization
Note: There is a typo in Revision 1 of the White Paper.
The last RETURN statement should read “…function_test” not
“…function.test” (underscore, not period)
--Included in apexebs_apps_setup.sql
Custom Authorization
Edit the Page
Double click the page title
On the Security tab, assign the custom scheme and set the page to require authentication
Create the List
List Region (not in white paper)
By selecting “Do not create list regions(s)” we can add a List Region to the Global Page or to any page
we choose later.
Terminology Gotchas
■ Page 0 is now the Global Page
▪ One Global Page per application, per interface
— Desktop UI
— Mobile UI
Install Sample Application
• apexebs_apps_setup.sql
As APPS
• apexebs_apex_setup.sqlAs apex_ebs schema
• apexebs_apex_application_rev2.sqlWithin the application builder (creates the app if you don’t
want to do it manually)
Be sure to download the “_rev2” file from the White Paper,
not the version in Note 1306563.1 as of February 2015
Manually Create Application
Create A Form
Create a Form
• Forms perform insert, update and delete operations on table rows in the database. The rows are identified using either a Primary Key
defined on the table, or the ROWID pseudo column, which uniquely identifies a row in a table.
• Select "Managed by Database" if you would like to
use the ROWID. Otherwise select the Primary Key column(s) defined for your table or view.
• Forms support up to two columns in the Primary
Key. For tables using Primary Keys with more than two columns, the ROWID option should be used
Create a Form
Create a Form
Processing Code in a Page
PL/SQL Page Process
apps.apex_integration_sample_apis.apex_update_email
( p_username => :APP_USER
, p_owner => :APP_USER
, p_email_address => :P2_EMAIL_ADDRESS
);
Profile Option
In 11i, a mod_plsql procedure could redirect the user to APEX
In R12, a JSP is used. This is configured by setting a Profile Option and defining functions to point to
the APEX pages
Call APEX from APPS Menus
• Create form function with type : SSWA jsp function
– An HTML call to the APEX app
– Application number, Page number, and parameters
• Add the form function to an APPS menu
• Assign the menu to a responsibility
• Assign the responsibility to a user
Define Function
Define Function Without Responsibilities
GWY.jsp?targetAppType=APEX&p=105:1
Application ID = 105, Page 1
Define Function With ResponsibilitiesPassing Parameters
GWY.jsp?targetAppType=APEX&p=105:3:::::
EBS_RESP_ID, EBS_APP_ID,
EBS_SEC_GROUP:[RESPONSIBILITY_ID],
[RESP_APPL_ID], [SECURITY_GROUP_ID]
Application Items in APEX
GWY.jsp?targetAppType=APEX&p=105:3:::::
------------------------------ APEX “Application Items” -----------------------------------------
EBS_APP_ID, EBS_RESP_ID, EBS_SEC_GROUP:
[RESP_APPL_ID], [RESPONSIBILITY_ID], [SECURITY_GROUP_ID]
--------------------------- EBS Values -------------------------------------------------------
Menu
Add the functions to a menu
Responsibility
User
APEX User Home Page
Security
� Easy to deploy to production
� Export the application (generates a SQL script)
� Provide script to DBA
� DBA executes the script
� Use DEV – TEST – PROD model
� Security configuration in TEST should be identical to PROD
� In PROD, run APEX in ‘run only’ mode
Mobile Apps with APEX
� Responsive Design
� Techniques to create content that can dynamically adapt to
fit screens on phones, tablets, and computers
� Page items resize and realign to conform to different screen sizes
� APEX 4.2 introduced Theme 25
� Templates for responsive design
� Not automatic – it is the developer’s responsibility to use the templates and arrange content to achieve truly responsive interface
� Not a “native” app – no access to GPS or camera
References
� Extending Oracle E-Business Suite Release 12.1 and above using
Oracle Application Express – Revision 2.0 March 2015
� MOS Note 1306563.1 Extending Oracle E-Business Suite Release
12 using Oracle Application Express
� Beginning Oracle Application Express 4.2 (NOT 4)
Gault, Cannell, Cimolini, D’Souza, St. Hilaire
� Oracle Application Express for Mobile Web Applications
Hartman, Rokitta, Peake
� Understanding APEX 4.2 Application Development
Edward Sciore
� Oracle Application Express 5 For BeginnersRiaz Ahmed
� Blogs: David Peake, Dimitri Gielis, Martin D’Souza