SlideShare uma empresa Scribd logo
1 de 115
Baixar para ler offline
APEX Behind the Scenes
Scott Spendolini
Executive Director
1
WELCOME
2
— Scott Spendolini
— scott.spendolini@enkitec.com
— @sspendol
— Ex-Oracle Employee of 10 years
— Senior Product Manager for Oracle APEX
from 2002 through 2005
— Founded Sumner Technologies
in October 2005
— Co-Founded Sumneva in January 2010
— Joined Enkitec in June 2012
— Oracle Ace Director
— Author, Expert Oracle Application Express Security
— Co-Author, Pro Oracle Application Express
— “Scott” on OTN Forums
About the Presenter
3
About Enkitec
— Oracle Platinum Partner
— Established in 2004
— Headquartered in Dallas, TX
— Locations throughout the US & EMEA
— Specialties include
— Exadata Implementations
— Development Services
— PL/SQL / Java / APEX
— DBA/Data Warehouse/RAC
— Business Intelligence
4
Agenda
— Overview
— Primer
— Behind the Scenes
— Summary
5
OVERVIEW
6
Overview
7
— APEX is an amazing development environment
— Few others are as fast & as robust
— But, do you really know what happens once you
click submit?
— APEX is not magic
— There’s a method to everything that goes on
— Most of which is more basic
than you may think
— We’ll dispel some of the
“magic” today, so that
you truly understand
how this amazing
technology works
Behind the Curtain
8
KISS: Keep It Simple, Stupid!
— For this session, we’re going to focus on the
internals of APEX, not the complexity of the
application
— This, our example will be extremely simple
— 2 Pages
— Login Page
— Blank Page
9
PRIMER
10
Primer
11
— Before we begin, let’s review a couple of basic
concepts
— Terminology
— HTML Form Basics
— wwv_flow Overview
TERMINOLOGY
12
Terminology
13
— Much of APEX’s internal APIs and variables still
use the older names
— Most of which is based on
Oracle Flows terminology
— Subsequent versions of APEX
include APIs & variables that start
with the APEX_ prefix
— Thus, to understand the internals
of APEX, you need to be able
to map legacy term to
modern ones
Terminology
14
Legacy Name Modern Name
Company Workspace
Flow Application
Step Page
Plug Region
Instance Session
Request Request
Debug Debug
HTML FORM BASICS
15
HTML Form Basics
16
— HTML Forms are used to pass data to a server
— Used by all web pages on the internet
— Regardless of the underlying technology
— Forms contain items which are passed as
parameters to the form action
— Text Field
— Radio Group
— Select List
— And so on...
— Each HTML Form has to have a form tag and a
way to submit it
— Can optionally have input tags; most have several
— The form tag will have the following attributes:
— Name
— Action
— Method
— ID
HTML Form Basics
17
HTML Form Basics
— All HTML forms start like this:
18
<form action="form_action.asp" method="post"
name="my_form" id="myForm">
Procedure
Name
HTTP
Method
Form Name Form ID
Get vs. Post
19
— All HTTP & HTTPS transactions for every web site
ever fall into one of two categories:
— GET
— POST
Get
— Typically involves passing parameters over the URL to a
procedure
— More “usable” than POST
— Can be:
— Bookmarked
— Cached
— Remain in browser history
— Distributed & shared
— Hacked
— In APEX-speak, this is also known as Page Rendering
and handled by wwv_flow.show
20
Post
— When a web page “sends” form data to the server
directly
— Using the attributes of the form to determine which
server process to execute
— Item names will also map to the form process’s input
parameters
— Typically used to change or update data on the
server
— Thus, POST requests are never cached
— In APEX-speak, this is also known as Page
Processing and handled by wwv_flow.accept
21
WWV_FLOW OVERVIEW
22
Question
23
— What does “WWV” stand for?
WebView
wwv_flow
24
— wwv_flow is essentially APEX
— Contains many global variables, as well as
several functions & procedures
— Some of which you can use, other which are internal only
— We’ll focus on just a couple of them:
— accept
— show
Basic HTML Form
25
<form action="form_action.asp" method="post"
name="my_form" id="myForm">
Procedure
Name
HTTP
Method
Form Name Form ID
APEX HTML Form
26
<form action="wwv_flow.accept" method="post"
name="wwv_flow" id="wwvFlowForm">
Procedure
Name
HTTP
Method
Form Name Form ID
wwv_flow.accept
— PL/SQL package.procedure that APEX calls when
POSTing pages
— Called for every APEX page that’s submitted
— Contains a number of parameters which are populated
based on a combination of system-defined variables and
what the user enters into the form items
27
APEX_040200 Schema
— A lot can be learned about the internals of APEX
by browsing the APEX_040200 schema
— However, NEVER, EVER, EVER make any changes to
anything here!
— If you want to explore this schema,
its best done on an isolated,
private instance of APEX
— Oracle XE
— VMWare/Virtual Box/etc.
28
THE F PROCEDURE
29
The f Procedure
30
— Let’s start by navigating to our URL:
— http://vm/apex/f?p=134:1
The f Procedure
— The string 134:1 is passed to the p parameter of
the f procedure
31
PROCEDURE f
Argument Name Type In/Out Default?
------------------ --------- ------ ---------------
P VARCHAR2! IN DEFAULT
P_SEP VARCHAR2! IN DEFAULT
P_TRACE VARCHAR2! IN DEFAULT
C VARCHAR2! IN DEFAULT
PG_MIN_ROW! VARCHAR2! IN DEFAULT
PG_MAX_ROWS! VARCHAR2! IN DEFAULT
PG_ROWS_FETCHED! VARCHAR2! IN DEFAULT
FSP_REGION_ID! VARCHAR2! IN DEFAULT
SUCCESS_MSG! VARCHAR2! IN DEFAULT
NOTIFICATION_MSG! VARCHAR2! IN DEFAULT
CS VARCHAR2! IN DEFAULT
S VARCHAR2! IN DEFAULT
TZ VARCHAR2! IN DEFAULT
P_LANG VARCHAR2! IN DEFAULT
P_TERRITORY VARCHAR2! IN DEFAULT
134:1
The f Procedure
— The f procedure will then tokenize the p
parameter into its component parts and call the
wwv_flow.show procedure
32
PROCEDURE SHOW
Argument Name! Type! ! ! In/Out Default?
--------------------------------------------------------------
P_REQUEST VARCHAR2 IN DEFAULT
P_INSTANCE VARCHAR2 IN DEFAULT
P_FLOW_ID VARCHAR2 IN DEFAULT
P_FLOW_STEP_ID VARCHAR2 IN DEFAULT
P_DEBUG VARCHAR2 IN DEFAULT
P_ARG_NAMES TABLE OF VARCHAR2(32767) IN DEFAULT
P_ARG_VALUES TABLE OF VARCHAR2(32767) IN DEFAULT
P_CLEAR_CACHE TABLE OF VARCHAR2(32767) IN DEFAULT
P_BOX_BORDER VARCHAR2 IN DEFAULT
P_PRINTER_FRIENDLY VARCHAR2 IN DEFAULT
P_TRACE VARCHAR2 IN DEFAULT
P_COMPANY NUMBER IN DEFAULT
P_MD5_CHECKSUM VARCHAR2 IN DEFAULT
P_LAST_BUTTON_PRESSED VARCHAR2 IN DEFAULT
P_ARG_NAME VARCHAR2 IN DEFAULT
P_ARG_VALUE VARCHAR2 IN DEFAULT
134
1
WWV_FLOW.SHOW
33
wwv_flow.show
34
— Procedure that handles all APEX page rendering
or GETs
— Called most often by the f?p procedure in the
URL
— Also used in Ajax transactions
— The f procedure will decompose p= to its
component parameters and then call
wwv_flow.show
wwv_flow.show Parameters
— p_flow_id
— Application ID
— p_flow_step_id
— Page ID
— p_instance
— Session ID
— p_request
— Request
35
wwv_flow.show Parameters
— p_debug
— Debug Mode
— “YES” to enable; “NO” or NULL to disable
— p_clear_cache
— Clear Cache & Reset Pagination
36
wwv_flow.show Parameters
— p_arg_names
— p_arg_name used when passing a single item
— p_arg_values
— p_arg_value used when passing a single value
— p_printer_friendly
— Printer Friendly mode
— “YES” to enable; “NO” or NULL to disable
37
wwv_flow.show Parameters
— p_trace
— When passed “YES”, APEX will generate a SQL trace file
based on the current page view
— Done in the background so that it does not slow down processing
— A SQL trace file will be generated in $ORACLE_BASE/
admin/SID/udump
— The SQL trace file can then be analyzed with TKPROF,
Profiler, SQL Developer or any number of other tools
— Note: You will need filesystem access to get to the trace
file; thus you may need to seek help from your DBA/
system admin
38
Same Thing
39
http://localhost/apex/wwv_flow.show?
p_flow_id=134
&p_flow_step_id=2
&p_instance=292381000
&p_arg_names=P2_EMPNO
&p_arg_values=7499
http://localhost/apex/f?
p=134:2:292381000::::P2_EMPNO:7499
D E M O N S T R A T I O N
WWV_FLOW.SHOW
40
PAGE RENDERING
41
Page Rendering
— APEX will render a page
first by display/render
position
— Multiple components within the
same display/render position
can be sequenced accordingly
— At any point, any component
can be conditional and may
or may not render
42
NLS PARAMETERS
43
NLS Parameters
— National Language Settings (NLS) parameters
must be set for each and every page view
— Seems inefficient, but there is no way to guarantee that
an APEX session will be linked to the same database
session from page view to page view
— Thus, we need to set these each and every time
44
NLS Parameters
— Some NLS settings can be managed from within
an APEX application
— Shared Components > Globalization
— All can be set from the value of an APEX item
— Allowing for
flexibility
between users of
the same
application
45
NLS Parameters
— Built-in NLS settings will show up in the APEX
Debug mode report at the very top of the report
— If needed, you can also manually set additional
NLS Parameters
46
D E M O N S T R A T I O N
NLS PARAMETERS
47
SESSION MANAGEMENT
48
Session management
— After NLS Parameters are set, APEX checks to see
if you are logged in or not
— APEX will also check to see if you are also logged in a
developer in the same workspace as the application
which you are running
— If so, then you will also see the developer’s toolbar:
49
— Debug log of an unauthenticated session vs. an
authenticated session
Session management
50
Unauthenticated Session
Authenticated Session
Session management
51
— By default, this functionality is built in to APEX
and does not need to be enabled
— You can override APEX’s session management, but you
better know what you are doing!
— If you choose to implement your own Page Session
Management, it is controlled via either the Page
Sentry Function or Session Verify Function in
the Authorization Scheme
Session management
— When a session is not valid, APEX will redirect to
one of three places:
— Login Page
— Built In Login Page
— URL
52
D E M O N S T R A T I O N
SESSION NOT VALID
53
Page Sentry & Session Verify
54
— APEX provides the ability to take over session
management entirely
— Page Sentry Function
— Executed before EVERY APEX page view
— Can check any criteria to determine if the session is valid
— Session Verify Function
— Determines whether or not a valid session exists
— Can only use one of these, not both
Session management
55
Page Sentry
Function
Session Verify
Function
D E M O N S T R A T I O N
PAGE SENTRY FUNCTION
56
AUTHENTICATION
57
Authentication Scheme
— What happens next depends on whether the user
is authenticated or not
58
Authenticated:
Continue to Display Page Requested
Unauthenticated:
Redirect to Login Page defined in the
Authentication Scheme
Authentication Scheme
— Since we are not yet authenticated, APEX will
redirect to the Login Page
— Which will run through the Page Rendering phase
— NLS Parameters
— Page Session Management
— Which will pass this time, as the Login Page will display to an
unauthenticated user
— Computations
— Processes
— Regions
59
PAGE COMPONENTS
60
Get Username Cookie Process
— Process that will check to see if there is an APEX
username stored in the APEX session cookie
— If so, it will set the default value of P101_USERNAME to
this value
61
:P101_USERNAME :=
apex_authentication.get_login_username_cookie;
LOGIN_USERNAME_COOKIE
62
Username
Hostname
DAD
Expiration
Require SSL
Cookie Name
HTTP Only
D E M O N S T R A T I O N
APEX USER COOKIE
63
Display Regions
64
— After attempting to set the cookie, APEX will
render the regions & items on the page in their
corresponding order
PAGE PROCESSING
65
Page Processing
— APEX will process a page first by
process position
— Multiple components within the same
display/render position can be sequenced
accordingly
— At any point, any component can be
conditional and may or may not render
66
Page Processing
— Let’s enter our username & password and click
Login to start processing our page
67
Page Processing
— When the Login button is clicked, APEX will POST
a transaction to the server
— We can use Web Developer to see the
parameters it will pass to wwv_flow.accept
68
Display Form Details
69
APP_ID APP_PAGE_IDSESSION_ID
Form Name
WWV_FLOW.ACCEPT
70
wwv_flow.accept
71
— Procedure that handles all APEX page processing
or POSTs
— Have likely seen this before in error messages
wwv_flow.accept Parameters
— p_request
— Typically set by the button clicked on a POST
— Can be passed via the URL in a GET
— But it will only be good for the next page phase
— Can not get the value of p_request in Page Rendering if
the page is submitted/POSTed
72
wwv_flow.accept Parameters
— p_instance
— Session ID
— Also referred to as :APP_SESSION or :SESSION_ID
— Automatically maintained by APEX
— Can not alter programmatically
73
wwv_flow.accept Parameters
— p_flow_id
— Application ID
— Also referred to as :APP_ID
— Automatically set by APEX based on which application
you’re running
— Can not alter programmatically
74
wwv_flow.accept Parameters
— p_company
— Workspace ID
— Also referred to as :WORKSPACE_ID
— Not typically present in the HTML rendered by APEX
— But is calculated inside the wwv_flow.accept procedure
— Can not alter programmatically
75
wwv_flow.accept Parameters
— p_flow_step_id
— Page ID
— Also referred to as :APP_PAGE_ID
— Returns the current Page ID
— Can not be altered otherwise
76
wwv_flow.accept Parameters
— p_arg_names
— Array used to store the corresponding APEX Item IDs from
an APEX page
— Appears before each and every APEX page item
77
wwv_flow.accept Parameters
— p_arg_values
— Used to protect hidden items from being manipulated via
JavaScript
— When a hidden & protected item is rendered, there will
be a corresponding p_arg_values item rendered as well
78
<input type="hidden" id="P2_EMPNO" name="p_t01" value="7369" />
<input type="hidden" name="p_arg_values" value="9DDE9C18F8337D..." />
wwv_flow.accept Parameters
— p_t01 ... p_t200
— Set of VARCHAR parameters used to receive APEX page
item values
— This is where the “200 item per page” limit comes from
— Which is not accurate, since it’s really 200 enabled items per page
79
<input type="text" id="P1_ITEM" name="p_t01" value="" size="30"
maxlength="4000" class="text_field" />
APEX Item
Parameter
Item
wwv_flow.accept Parameters
— p_v01 ... p_v200
— Set of 200 arrays used to store results from items that
return potentially more than one value
— Multi-select Lists, Shuttle Regions, etc.
80
<select name="p_v01" id="P1_ITEM" size="1" multiple="multiple"
class="multi_selectlist">
Array Item APEX Item
wwv_flow.accept Parameters
— f01 ... f50
— Group of 50 arrays, typically used in conjunction with
g_f01 ... g_f50
— Most often used with tabular forms & APEX_ITEM API calls
— Name used for PL/SQL; ID used for JavaScript
81
<input type="text" name="f03" size="12" value="" id="f03_0001" />
<input type="text" name="f03" size="12" value="" id="f03_0002" />
<input type="text" name="f03" size="12" value="" id="f03_0003" />
Array Name Array
Element ID
wwv_flow.accept Parameters
— x01 ... x20
— Group of 20 VARCHARs, typically used in conjunction with
the global variables g_x01 ... g_x10
— Difference between the parameter count & global variable count can
be attributed to APEX itself needing extras
— Most often used with Ajax transactions to pass
parameters
82
wwv_flow.accept Parameters
— p_debug
— When passed “YES”, APEX will run in DEBUG mode
— No value or “NO” will disable DEBUG mode
83
wwv_flow.accept Parameters
— p_trace
— When passed “YES”, APEX will generate a SQL trace file
based on the current page view
— Done in the background so that it does not slow down processing
— A SQL trace file will be generated in $ORACLE_BASE/
admin/SID/udump
— The SQL trace file can then be analyzed with TKPROF,
Profiler, SQL Developer or any number of other tools
— Note: You will need filesystem access to get to the trace
file; thus you may need to seek help from your DBA/
system admin
84
ITEM MAPPING
85
Items
86
— APEX Page Items are named p_t01 through
p_t200
— The PX_ITEM_NAME is never directly sent back to the
database
— Used for client-side JavaScript interactions
— Thus, if all APEX pages items are named the
same, then how does it map them to the
corresponding page item in an application when
submitting a page?
Item Mapping
— Each APEX page item will have a corresponding
p_arg_names entry:
87
<input type="hidden" name="p_arg_names"
value="8295929934913911" />
<input type="text" id="P101_USERNAME" name="p_t01"
value="admin" size="40" maxlength="100" class="text_field" />
...
<input type="hidden" name="p_arg_names"
value="8296003745913912" />
<input type="password" name="p_t02" size="40" maxlength="100"
value="" id="P101_PASSWORD" class="password"
onkeypress="return submitEnter(this,event)" />
Item Mapping
— p_arg_names values will map back to the
internal item ID in the wwv_flow_step_items
table:
88
Item Mapping
— The ID of an input element does not get
submitted back to the server
— Thus, the need for the p_arg_names array
— It provides the mapping from the p_txx elements
to the corresponding APEX page items
89
Parameter
p_t01
p_t02
ID p_arg_name Item Name
1 8295929934913911 P101_USERNAME
2 8296003745913912 P101_PASSWORD
D E M O N S T R A T I O N
ITEM MAPPING
90
VALIDATIONS, COMPUTATIONS
& PROCESSES
91
Validations, Computations & Processes
92
— After validating that the session is still valid,
APEX will process all Validations, Computations
& Processes according to their execution point
and corresponding sequence
— Nothing in this phase will ever be output to the screen
— All “Built In” APEX Processes are merely calls to
underlying PL/SQL procedures
— Application Builder abstracts this concept to keep things simple
Set Username Cookie
— Sets the LOGIN_USERNAME_COOKIE based on the
value of the username entered
— Regardless of whether it successfully authenticated or not
— Can be disabled for security purposes
93
apex_authentication.send_login_username_cookie
(
p_username => lower(:P101_USERNAME)
);
Login
— APEX API Call to the standard login procedure:
apex_authentication.login
— Will use the current authentication scheme and
determine whether or not a user should be logged
in
94
apex_authentication.login(
p_username => :P101_USERNAME,
p_password => :P101_PASSWORD );
AUTHENTICATION SCHEMES
95
Authentication Scheme
— APEX can use a number of different
Authentication Schemes
— APEX Credentials
— Custom
— SSO
— LDAP
— Database Schema Users
— Open Door
— HTTP Header Variable
— None
96
Authentication Scheme
— Regardless of which one you choose, the method
which APEX uses to validate credentials is largely
the same
— Pre-Authentication Procedure
— Authentication Function
— Post-Authentication Procedure
97
Authentication Scheme
— Pre-Authentication Procedure
— Executes just before credentials are verified
98
Authentication Scheme
— Authentication Function
— Can be one of the following:
— -BUILTIN-
— APEX User Credentials
— -DBACCOUNT-
— Database Credentials
— -LDAP-
— LDAP using parameters defined in LDAP section
— Custom
— Custom PL/SQL Function returning Boolean
99
Authentication Scheme
— Post-Authentication Procedure
— Executes just after credentials are verified
100
ORA_WWV_APP Cookie
— Upon successful authentication, APEX will send
another cookie to the client
— This cookie’s sole purpose is to map your browser to your
APEX session
101
Breaking It Down
wwv_flow_sessions$
wwv_flow_companies
Clear Page Cache
— Clears the page cache for Page 101
— Thus, removing the username from the APEX session state
103
LOGGING OUT
104
Logging Out
105
— There’s several ways to “log out” of an APEX
application
— Click the Logout link
— Close the Browser Tab/Window
— Quit the Browser
— Let the session expire
— Not all of these truly logs you out
Logging Out
— Close the Browser Tab/Window
— Does NOTHING to log you out
— Quit the Browser
— Expires the Session Cookie
— Let the session expire
— Expires the Session Cookie
— Click the Logout link
— Expires the Session Cookie
— Deletes the Session from wwv_flow_sessions$
106
Logging Out
— APEX automatically schedules a job -
ORACLE_APEX_PURGE_SESSIONS - which will
remove stale session data
— By default, it is set to run hourly
— You can alter the duration to make it run more or less
frequently
107
Logging Out - APEX 4.0
— The Logout URL is specified in the Authentication
Scheme
— When clicked, it will expire the session cookie and also
purge the session state from the database
108
wwv_flow_custom_auth_std.logout?
p_this_flow=&APP_ID.&amp;p_next_flow_page_sess=&APP_ID.:1
The Current Application Which Application to Run Next
Logging Out - APEX 4.1 & 4.2
— The Logout URL is specified in the Authentication
Scheme, but is much simpler
— When clicked, it will expire the session cookie and also
purge the session state from the database
109
D E M O N S T R A T I O N
LOGGING OUT
110
SUMMARY
111
Summary
112
— There are a LOT of things that go on when
rendering or processing an APEX page
— Fortunately, APEX abstracts most of the complexity,
making it easy & efficient to use
— Understanding the discrete steps will help make
you a better and more secure APEX developer
Download
— This and all other Enkitec presentations can be
downloaded for free from:
http://enkitec.com/presentations
113
Lunch
— Right around the corner in the restaurant
114
http://www.enkitec.com
115

Mais conteúdo relacionado

Mais procurados

Olm implementation steps
Olm implementation stepsOlm implementation steps
Olm implementation stepsFeras Ahmad
 
How to make APEX print through Node.js
How to make APEX print through Node.jsHow to make APEX print through Node.js
How to make APEX print through Node.jsDimitri Gielis
 
Oracle APEX Social Login
Oracle APEX Social LoginOracle APEX Social Login
Oracle APEX Social Loginmsewtz
 
Reporting with Oracle Application Express (APEX)
Reporting with Oracle Application Express (APEX)Reporting with Oracle Application Express (APEX)
Reporting with Oracle Application Express (APEX)Dimitri Gielis
 
Batch Apex in Salesforce
Batch Apex in SalesforceBatch Apex in Salesforce
Batch Apex in SalesforceDavid Helgerson
 
Oracle HRMS Payroll Table Overview
Oracle HRMS Payroll Table OverviewOracle HRMS Payroll Table Overview
Oracle HRMS Payroll Table OverviewChris Martin
 
Oracle APEX Interactive Grid Essentials
Oracle APEX Interactive Grid EssentialsOracle APEX Interactive Grid Essentials
Oracle APEX Interactive Grid EssentialsKaren Cannell
 
Oracle APEX Performance
Oracle APEX PerformanceOracle APEX Performance
Oracle APEX PerformanceScott Wesley
 
How to create payslip through self service
How to create payslip through self serviceHow to create payslip through self service
How to create payslip through self serviceFeras Ahmad
 
Turbocharge SQL Performance in PL/SQL with Bulk Processing
Turbocharge SQL Performance in PL/SQL with Bulk ProcessingTurbocharge SQL Performance in PL/SQL with Bulk Processing
Turbocharge SQL Performance in PL/SQL with Bulk ProcessingSteven Feuerstein
 
Batchable vs @future vs Queueable
Batchable vs @future vs QueueableBatchable vs @future vs Queueable
Batchable vs @future vs QueueableBoris Bachovski
 
REST APIs with Spring
REST APIs with SpringREST APIs with Spring
REST APIs with SpringJoshua Long
 
Hr profile option
Hr profile optionHr profile option
Hr profile optionFeras Ahmad
 
Best Practices for RESTful Web Services
Best Practices for RESTful Web ServicesBest Practices for RESTful Web Services
Best Practices for RESTful Web ServicesSalesforce Developers
 
Take a load off! Load testing your Oracle APEX or JDeveloper web applications
Take a load off! Load testing your Oracle APEX or JDeveloper web applicationsTake a load off! Load testing your Oracle APEX or JDeveloper web applications
Take a load off! Load testing your Oracle APEX or JDeveloper web applicationsSage Computing Services
 
Apex Enterprise Patterns: Building Strong Foundations
Apex Enterprise Patterns: Building Strong FoundationsApex Enterprise Patterns: Building Strong Foundations
Apex Enterprise Patterns: Building Strong FoundationsSalesforce Developers
 
Tweaking the interactive grid
Tweaking the interactive gridTweaking the interactive grid
Tweaking the interactive gridRoel Hartman
 
Oracle APEX Introduction (release 18.1)
Oracle APEX Introduction (release 18.1)Oracle APEX Introduction (release 18.1)
Oracle APEX Introduction (release 18.1)Michael Hichwa
 
Oracle Application Express 20.2 New Features
Oracle Application Express 20.2 New FeaturesOracle Application Express 20.2 New Features
Oracle Application Express 20.2 New Featuresmsewtz
 

Mais procurados (20)

Olm implementation steps
Olm implementation stepsOlm implementation steps
Olm implementation steps
 
How to make APEX print through Node.js
How to make APEX print through Node.jsHow to make APEX print through Node.js
How to make APEX print through Node.js
 
Oracle APEX Social Login
Oracle APEX Social LoginOracle APEX Social Login
Oracle APEX Social Login
 
Reporting with Oracle Application Express (APEX)
Reporting with Oracle Application Express (APEX)Reporting with Oracle Application Express (APEX)
Reporting with Oracle Application Express (APEX)
 
Apex Design Patterns
Apex Design PatternsApex Design Patterns
Apex Design Patterns
 
Batch Apex in Salesforce
Batch Apex in SalesforceBatch Apex in Salesforce
Batch Apex in Salesforce
 
Oracle HRMS Payroll Table Overview
Oracle HRMS Payroll Table OverviewOracle HRMS Payroll Table Overview
Oracle HRMS Payroll Table Overview
 
Oracle APEX Interactive Grid Essentials
Oracle APEX Interactive Grid EssentialsOracle APEX Interactive Grid Essentials
Oracle APEX Interactive Grid Essentials
 
Oracle APEX Performance
Oracle APEX PerformanceOracle APEX Performance
Oracle APEX Performance
 
How to create payslip through self service
How to create payslip through self serviceHow to create payslip through self service
How to create payslip through self service
 
Turbocharge SQL Performance in PL/SQL with Bulk Processing
Turbocharge SQL Performance in PL/SQL with Bulk ProcessingTurbocharge SQL Performance in PL/SQL with Bulk Processing
Turbocharge SQL Performance in PL/SQL with Bulk Processing
 
Batchable vs @future vs Queueable
Batchable vs @future vs QueueableBatchable vs @future vs Queueable
Batchable vs @future vs Queueable
 
REST APIs with Spring
REST APIs with SpringREST APIs with Spring
REST APIs with Spring
 
Hr profile option
Hr profile optionHr profile option
Hr profile option
 
Best Practices for RESTful Web Services
Best Practices for RESTful Web ServicesBest Practices for RESTful Web Services
Best Practices for RESTful Web Services
 
Take a load off! Load testing your Oracle APEX or JDeveloper web applications
Take a load off! Load testing your Oracle APEX or JDeveloper web applicationsTake a load off! Load testing your Oracle APEX or JDeveloper web applications
Take a load off! Load testing your Oracle APEX or JDeveloper web applications
 
Apex Enterprise Patterns: Building Strong Foundations
Apex Enterprise Patterns: Building Strong FoundationsApex Enterprise Patterns: Building Strong Foundations
Apex Enterprise Patterns: Building Strong Foundations
 
Tweaking the interactive grid
Tweaking the interactive gridTweaking the interactive grid
Tweaking the interactive grid
 
Oracle APEX Introduction (release 18.1)
Oracle APEX Introduction (release 18.1)Oracle APEX Introduction (release 18.1)
Oracle APEX Introduction (release 18.1)
 
Oracle Application Express 20.2 New Features
Oracle Application Express 20.2 New FeaturesOracle Application Express 20.2 New Features
Oracle Application Express 20.2 New Features
 

Destaque

Making Sense of APEX Security by Christoph Ruepprich
Making Sense of APEX Security by Christoph RuepprichMaking Sense of APEX Security by Christoph Ruepprich
Making Sense of APEX Security by Christoph RuepprichEnkitec
 
Oracle APEX URLs Untangled & SEOptimized
Oracle APEX URLs Untangled & SEOptimizedOracle APEX URLs Untangled & SEOptimized
Oracle APEX URLs Untangled & SEOptimizedChristian Rokitta
 
OOW16 - Oracle Database 12c - The Best Oracle Database 12c New Features for D...
OOW16 - Oracle Database 12c - The Best Oracle Database 12c New Features for D...OOW16 - Oracle Database 12c - The Best Oracle Database 12c New Features for D...
OOW16 - Oracle Database 12c - The Best Oracle Database 12c New Features for D...Alex Zaballa
 
Get the Look and Feel You Want in Oracle APEX
Get the Look and Feel You Want in Oracle APEXGet the Look and Feel You Want in Oracle APEX
Get the Look and Feel You Want in Oracle APEXJorge Rimblas
 
Pretius Oracle Apex Primer
Pretius Oracle Apex PrimerPretius Oracle Apex Primer
Pretius Oracle Apex PrimerPretius
 
5 Cool Things you can do with HTML5 and APEX
5 Cool Things you can do with HTML5 and APEX5 Cool Things you can do with HTML5 and APEX
5 Cool Things you can do with HTML5 and APEXRoel Hartman
 
Oracle database - Get external data via HTTP, FTP and Web Services
Oracle database - Get external data via HTTP, FTP and Web ServicesOracle database - Get external data via HTTP, FTP and Web Services
Oracle database - Get external data via HTTP, FTP and Web ServicesKim Berg Hansen
 
APEX 5 Demo and Best Practices
APEX 5 Demo and Best PracticesAPEX 5 Demo and Best Practices
APEX 5 Demo and Best PracticesDimitri Gielis
 
Oracle APEX or ADF? From Requirements to Tool Choice
Oracle APEX or ADF? From Requirements to Tool ChoiceOracle APEX or ADF? From Requirements to Tool Choice
Oracle APEX or ADF? From Requirements to Tool ChoiceSten Vesterli
 

Destaque (9)

Making Sense of APEX Security by Christoph Ruepprich
Making Sense of APEX Security by Christoph RuepprichMaking Sense of APEX Security by Christoph Ruepprich
Making Sense of APEX Security by Christoph Ruepprich
 
Oracle APEX URLs Untangled & SEOptimized
Oracle APEX URLs Untangled & SEOptimizedOracle APEX URLs Untangled & SEOptimized
Oracle APEX URLs Untangled & SEOptimized
 
OOW16 - Oracle Database 12c - The Best Oracle Database 12c New Features for D...
OOW16 - Oracle Database 12c - The Best Oracle Database 12c New Features for D...OOW16 - Oracle Database 12c - The Best Oracle Database 12c New Features for D...
OOW16 - Oracle Database 12c - The Best Oracle Database 12c New Features for D...
 
Get the Look and Feel You Want in Oracle APEX
Get the Look and Feel You Want in Oracle APEXGet the Look and Feel You Want in Oracle APEX
Get the Look and Feel You Want in Oracle APEX
 
Pretius Oracle Apex Primer
Pretius Oracle Apex PrimerPretius Oracle Apex Primer
Pretius Oracle Apex Primer
 
5 Cool Things you can do with HTML5 and APEX
5 Cool Things you can do with HTML5 and APEX5 Cool Things you can do with HTML5 and APEX
5 Cool Things you can do with HTML5 and APEX
 
Oracle database - Get external data via HTTP, FTP and Web Services
Oracle database - Get external data via HTTP, FTP and Web ServicesOracle database - Get external data via HTTP, FTP and Web Services
Oracle database - Get external data via HTTP, FTP and Web Services
 
APEX 5 Demo and Best Practices
APEX 5 Demo and Best PracticesAPEX 5 Demo and Best Practices
APEX 5 Demo and Best Practices
 
Oracle APEX or ADF? From Requirements to Tool Choice
Oracle APEX or ADF? From Requirements to Tool ChoiceOracle APEX or ADF? From Requirements to Tool Choice
Oracle APEX or ADF? From Requirements to Tool Choice
 

Semelhante a Apex behind the scenes

St Hilaire Ajax Start Odtug Nov 2009
St Hilaire   Ajax Start Odtug Nov 2009St Hilaire   Ajax Start Odtug Nov 2009
St Hilaire Ajax Start Odtug Nov 2009ruiruitang
 
Mike Taulty MIX10 Silverlight Frameworks and Patterns
Mike Taulty MIX10 Silverlight Frameworks and PatternsMike Taulty MIX10 Silverlight Frameworks and Patterns
Mike Taulty MIX10 Silverlight Frameworks and Patternsukdpe
 
Introduction To Mvc
Introduction To MvcIntroduction To Mvc
Introduction To MvcVolkan Uzun
 
Primavera integration possibilities Technical overview - Oracle Primavera Col...
Primavera integration possibilities Technical overview - Oracle Primavera Col...Primavera integration possibilities Technical overview - Oracle Primavera Col...
Primavera integration possibilities Technical overview - Oracle Primavera Col...p6academy
 
Webservices in SalesForce (part 1)
Webservices in SalesForce (part 1)Webservices in SalesForce (part 1)
Webservices in SalesForce (part 1)Mindfire Solutions
 
Hands-On Workshop: Introduction to Development on Force.com for Developers
Hands-On Workshop: Introduction to Development on Force.com for DevelopersHands-On Workshop: Introduction to Development on Force.com for Developers
Hands-On Workshop: Introduction to Development on Force.com for DevelopersSalesforce Developers
 
APEX Security Primer
APEX Security PrimerAPEX Security Primer
APEX Security PrimerEnkitec
 
Windows Server AppFabric Caching - What it is & when you should use it?
Windows Server AppFabric Caching - What it is & when you should use it?Windows Server AppFabric Caching - What it is & when you should use it?
Windows Server AppFabric Caching - What it is & when you should use it?Robert MacLean
 
SharePoint 2010 Application Development Overview
SharePoint 2010 Application Development OverviewSharePoint 2010 Application Development Overview
SharePoint 2010 Application Development OverviewRob Windsor
 
Introduction to ASP.NET MVC
Introduction to ASP.NET MVCIntroduction to ASP.NET MVC
Introduction to ASP.NET MVCMaarten Balliauw
 
CTTDNUG ASP.NET MVC
CTTDNUG ASP.NET MVCCTTDNUG ASP.NET MVC
CTTDNUG ASP.NET MVCBarry Gervin
 
Entity framework and how to use it
Entity framework and how to use itEntity framework and how to use it
Entity framework and how to use itnspyre_net
 
Getting Started with Zend Framework
Getting Started with Zend FrameworkGetting Started with Zend Framework
Getting Started with Zend FrameworkJuan Antonio
 
Webinar Oracle adf12c EN
Webinar Oracle adf12c ENWebinar Oracle adf12c EN
Webinar Oracle adf12c ENatSistemas
 
Build your website with angularjs and web apis
Build your website with angularjs and web apisBuild your website with angularjs and web apis
Build your website with angularjs and web apisChalermpon Areepong
 

Semelhante a Apex behind the scenes (20)

St Hilaire Ajax Start Odtug Nov 2009
St Hilaire   Ajax Start Odtug Nov 2009St Hilaire   Ajax Start Odtug Nov 2009
St Hilaire Ajax Start Odtug Nov 2009
 
Mike Taulty MIX10 Silverlight Frameworks and Patterns
Mike Taulty MIX10 Silverlight Frameworks and PatternsMike Taulty MIX10 Silverlight Frameworks and Patterns
Mike Taulty MIX10 Silverlight Frameworks and Patterns
 
Introduction To Mvc
Introduction To MvcIntroduction To Mvc
Introduction To Mvc
 
My Saminar On Php
My Saminar On PhpMy Saminar On Php
My Saminar On Php
 
Primavera integration possibilities Technical overview - Oracle Primavera Col...
Primavera integration possibilities Technical overview - Oracle Primavera Col...Primavera integration possibilities Technical overview - Oracle Primavera Col...
Primavera integration possibilities Technical overview - Oracle Primavera Col...
 
cakephp UDUYKTHA (1)
cakephp UDUYKTHA (1)cakephp UDUYKTHA (1)
cakephp UDUYKTHA (1)
 
Webservices in SalesForce (part 1)
Webservices in SalesForce (part 1)Webservices in SalesForce (part 1)
Webservices in SalesForce (part 1)
 
Hands-On Workshop: Introduction to Development on Force.com for Developers
Hands-On Workshop: Introduction to Development on Force.com for DevelopersHands-On Workshop: Introduction to Development on Force.com for Developers
Hands-On Workshop: Introduction to Development on Force.com for Developers
 
APEX Security Primer
APEX Security PrimerAPEX Security Primer
APEX Security Primer
 
FLossEd-BK Tequila Framework3.2.1
FLossEd-BK Tequila Framework3.2.1FLossEd-BK Tequila Framework3.2.1
FLossEd-BK Tequila Framework3.2.1
 
Intro to Application Express
Intro to Application ExpressIntro to Application Express
Intro to Application Express
 
Windows Server AppFabric Caching - What it is & when you should use it?
Windows Server AppFabric Caching - What it is & when you should use it?Windows Server AppFabric Caching - What it is & when you should use it?
Windows Server AppFabric Caching - What it is & when you should use it?
 
SharePoint 2010 Application Development Overview
SharePoint 2010 Application Development OverviewSharePoint 2010 Application Development Overview
SharePoint 2010 Application Development Overview
 
Introduction to ASP.NET MVC
Introduction to ASP.NET MVCIntroduction to ASP.NET MVC
Introduction to ASP.NET MVC
 
CTTDNUG ASP.NET MVC
CTTDNUG ASP.NET MVCCTTDNUG ASP.NET MVC
CTTDNUG ASP.NET MVC
 
Entity framework and how to use it
Entity framework and how to use itEntity framework and how to use it
Entity framework and how to use it
 
Web api
Web apiWeb api
Web api
 
Getting Started with Zend Framework
Getting Started with Zend FrameworkGetting Started with Zend Framework
Getting Started with Zend Framework
 
Webinar Oracle adf12c EN
Webinar Oracle adf12c ENWebinar Oracle adf12c EN
Webinar Oracle adf12c EN
 
Build your website with angularjs and web apis
Build your website with angularjs and web apisBuild your website with angularjs and web apis
Build your website with angularjs and web apis
 

Mais de Enkitec

Using Angular JS in APEX
Using Angular JS in APEXUsing Angular JS in APEX
Using Angular JS in APEXEnkitec
 
Controlling execution plans 2014
Controlling execution plans   2014Controlling execution plans   2014
Controlling execution plans 2014Enkitec
 
Engineered Systems: Environment-as-a-Service Demonstration
Engineered Systems: Environment-as-a-Service DemonstrationEngineered Systems: Environment-as-a-Service Demonstration
Engineered Systems: Environment-as-a-Service DemonstrationEnkitec
 
Think Exa!
Think Exa!Think Exa!
Think Exa!Enkitec
 
In Memory Database In Action by Tanel Poder and Kerry Osborne
In Memory Database In Action by Tanel Poder and Kerry OsborneIn Memory Database In Action by Tanel Poder and Kerry Osborne
In Memory Database In Action by Tanel Poder and Kerry OsborneEnkitec
 
In Search of Plan Stability - Part 1
In Search of Plan Stability - Part 1In Search of Plan Stability - Part 1
In Search of Plan Stability - Part 1Enkitec
 
Mini Session - Using GDB for Profiling
Mini Session - Using GDB for ProfilingMini Session - Using GDB for Profiling
Mini Session - Using GDB for ProfilingEnkitec
 
Profiling Oracle with GDB
Profiling Oracle with GDBProfiling Oracle with GDB
Profiling Oracle with GDBEnkitec
 
Oracle Performance Tools of the Trade
Oracle Performance Tools of the TradeOracle Performance Tools of the Trade
Oracle Performance Tools of the TradeEnkitec
 
Oracle Performance Tuning Fundamentals
Oracle Performance Tuning FundamentalsOracle Performance Tuning Fundamentals
Oracle Performance Tuning FundamentalsEnkitec
 
SQL Tuning Tools of the Trade
SQL Tuning Tools of the TradeSQL Tuning Tools of the Trade
SQL Tuning Tools of the TradeEnkitec
 
Using SQL Plan Management (SPM) to Balance Plan Flexibility and Plan Stability
Using SQL Plan Management (SPM) to Balance Plan Flexibility and Plan StabilityUsing SQL Plan Management (SPM) to Balance Plan Flexibility and Plan Stability
Using SQL Plan Management (SPM) to Balance Plan Flexibility and Plan StabilityEnkitec
 
Oracle GoldenGate Architecture Performance
Oracle GoldenGate Architecture PerformanceOracle GoldenGate Architecture Performance
Oracle GoldenGate Architecture PerformanceEnkitec
 
OGG Architecture Performance
OGG Architecture PerformanceOGG Architecture Performance
OGG Architecture PerformanceEnkitec
 
How Many Ways Can I Manage Oracle GoldenGate?
How Many Ways Can I Manage Oracle GoldenGate?How Many Ways Can I Manage Oracle GoldenGate?
How Many Ways Can I Manage Oracle GoldenGate?Enkitec
 
Understanding how is that adaptive cursor sharing (acs) produces multiple opt...
Understanding how is that adaptive cursor sharing (acs) produces multiple opt...Understanding how is that adaptive cursor sharing (acs) produces multiple opt...
Understanding how is that adaptive cursor sharing (acs) produces multiple opt...Enkitec
 
Sql tuning made easier with sqltxplain (sqlt)
Sql tuning made easier with sqltxplain (sqlt)Sql tuning made easier with sqltxplain (sqlt)
Sql tuning made easier with sqltxplain (sqlt)Enkitec
 
Profiling the logwriter and database writer
Profiling the logwriter and database writerProfiling the logwriter and database writer
Profiling the logwriter and database writerEnkitec
 
Fatkulin hotsos 2014
Fatkulin hotsos 2014Fatkulin hotsos 2014
Fatkulin hotsos 2014Enkitec
 
Combining ACS Flexibility with SPM Stability
Combining ACS Flexibility with SPM StabilityCombining ACS Flexibility with SPM Stability
Combining ACS Flexibility with SPM StabilityEnkitec
 

Mais de Enkitec (20)

Using Angular JS in APEX
Using Angular JS in APEXUsing Angular JS in APEX
Using Angular JS in APEX
 
Controlling execution plans 2014
Controlling execution plans   2014Controlling execution plans   2014
Controlling execution plans 2014
 
Engineered Systems: Environment-as-a-Service Demonstration
Engineered Systems: Environment-as-a-Service DemonstrationEngineered Systems: Environment-as-a-Service Demonstration
Engineered Systems: Environment-as-a-Service Demonstration
 
Think Exa!
Think Exa!Think Exa!
Think Exa!
 
In Memory Database In Action by Tanel Poder and Kerry Osborne
In Memory Database In Action by Tanel Poder and Kerry OsborneIn Memory Database In Action by Tanel Poder and Kerry Osborne
In Memory Database In Action by Tanel Poder and Kerry Osborne
 
In Search of Plan Stability - Part 1
In Search of Plan Stability - Part 1In Search of Plan Stability - Part 1
In Search of Plan Stability - Part 1
 
Mini Session - Using GDB for Profiling
Mini Session - Using GDB for ProfilingMini Session - Using GDB for Profiling
Mini Session - Using GDB for Profiling
 
Profiling Oracle with GDB
Profiling Oracle with GDBProfiling Oracle with GDB
Profiling Oracle with GDB
 
Oracle Performance Tools of the Trade
Oracle Performance Tools of the TradeOracle Performance Tools of the Trade
Oracle Performance Tools of the Trade
 
Oracle Performance Tuning Fundamentals
Oracle Performance Tuning FundamentalsOracle Performance Tuning Fundamentals
Oracle Performance Tuning Fundamentals
 
SQL Tuning Tools of the Trade
SQL Tuning Tools of the TradeSQL Tuning Tools of the Trade
SQL Tuning Tools of the Trade
 
Using SQL Plan Management (SPM) to Balance Plan Flexibility and Plan Stability
Using SQL Plan Management (SPM) to Balance Plan Flexibility and Plan StabilityUsing SQL Plan Management (SPM) to Balance Plan Flexibility and Plan Stability
Using SQL Plan Management (SPM) to Balance Plan Flexibility and Plan Stability
 
Oracle GoldenGate Architecture Performance
Oracle GoldenGate Architecture PerformanceOracle GoldenGate Architecture Performance
Oracle GoldenGate Architecture Performance
 
OGG Architecture Performance
OGG Architecture PerformanceOGG Architecture Performance
OGG Architecture Performance
 
How Many Ways Can I Manage Oracle GoldenGate?
How Many Ways Can I Manage Oracle GoldenGate?How Many Ways Can I Manage Oracle GoldenGate?
How Many Ways Can I Manage Oracle GoldenGate?
 
Understanding how is that adaptive cursor sharing (acs) produces multiple opt...
Understanding how is that adaptive cursor sharing (acs) produces multiple opt...Understanding how is that adaptive cursor sharing (acs) produces multiple opt...
Understanding how is that adaptive cursor sharing (acs) produces multiple opt...
 
Sql tuning made easier with sqltxplain (sqlt)
Sql tuning made easier with sqltxplain (sqlt)Sql tuning made easier with sqltxplain (sqlt)
Sql tuning made easier with sqltxplain (sqlt)
 
Profiling the logwriter and database writer
Profiling the logwriter and database writerProfiling the logwriter and database writer
Profiling the logwriter and database writer
 
Fatkulin hotsos 2014
Fatkulin hotsos 2014Fatkulin hotsos 2014
Fatkulin hotsos 2014
 
Combining ACS Flexibility with SPM Stability
Combining ACS Flexibility with SPM StabilityCombining ACS Flexibility with SPM Stability
Combining ACS Flexibility with SPM Stability
 

Último

ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDEADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDELiveplex
 
Bird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystemBird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystemAsko Soukka
 
UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8DianaGray10
 
Comparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and IstioComparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and IstioChristian Posta
 
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfJamie (Taka) Wang
 
Videogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdfVideogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdfinfogdgmi
 
Designing A Time bound resource download URL
Designing A Time bound resource download URLDesigning A Time bound resource download URL
Designing A Time bound resource download URLRuncy Oommen
 
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...DianaGray10
 
UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6DianaGray10
 
How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?IES VE
 
Empowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintEmpowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintMahmoud Rabie
 
AI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just MinutesAI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just MinutesMd Hossain Ali
 
COMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a WebsiteCOMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a Websitedgelyza
 
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...UbiTrack UK
 
Building AI-Driven Apps Using Semantic Kernel.pptx
Building AI-Driven Apps Using Semantic Kernel.pptxBuilding AI-Driven Apps Using Semantic Kernel.pptx
Building AI-Driven Apps Using Semantic Kernel.pptxUdaiappa Ramachandran
 
Igniting Next Level Productivity with AI-Infused Data Integration Workflows
Igniting Next Level Productivity with AI-Infused Data Integration WorkflowsIgniting Next Level Productivity with AI-Infused Data Integration Workflows
Igniting Next Level Productivity with AI-Infused Data Integration WorkflowsSafe Software
 
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCostKubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCostMatt Ray
 

Último (20)

ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDEADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
ADOPTING WEB 3 FOR YOUR BUSINESS: A STEP-BY-STEP GUIDE
 
Bird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystemBird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystem
 
UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8UiPath Studio Web workshop series - Day 8
UiPath Studio Web workshop series - Day 8
 
Comparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and IstioComparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and Istio
 
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
 
Videogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdfVideogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdf
 
Designing A Time bound resource download URL
Designing A Time bound resource download URLDesigning A Time bound resource download URL
Designing A Time bound resource download URL
 
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
 
UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6UiPath Studio Web workshop series - Day 6
UiPath Studio Web workshop series - Day 6
 
How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?How Accurate are Carbon Emissions Projections?
How Accurate are Carbon Emissions Projections?
 
20150722 - AGV
20150722 - AGV20150722 - AGV
20150722 - AGV
 
Empowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintEmpowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership Blueprint
 
AI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just MinutesAI Fame Rush Review – Virtual Influencer Creation In Just Minutes
AI Fame Rush Review – Virtual Influencer Creation In Just Minutes
 
COMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a WebsiteCOMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a Website
 
201610817 - edge part1
201610817 - edge part1201610817 - edge part1
201610817 - edge part1
 
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
 
Building AI-Driven Apps Using Semantic Kernel.pptx
Building AI-Driven Apps Using Semantic Kernel.pptxBuilding AI-Driven Apps Using Semantic Kernel.pptx
Building AI-Driven Apps Using Semantic Kernel.pptx
 
Igniting Next Level Productivity with AI-Infused Data Integration Workflows
Igniting Next Level Productivity with AI-Infused Data Integration WorkflowsIgniting Next Level Productivity with AI-Infused Data Integration Workflows
Igniting Next Level Productivity with AI-Infused Data Integration Workflows
 
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCostKubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
 
20230104 - machine vision
20230104 - machine vision20230104 - machine vision
20230104 - machine vision
 

Apex behind the scenes

  • 1. APEX Behind the Scenes Scott Spendolini Executive Director 1
  • 3. — Scott Spendolini — scott.spendolini@enkitec.com — @sspendol — Ex-Oracle Employee of 10 years — Senior Product Manager for Oracle APEX from 2002 through 2005 — Founded Sumner Technologies in October 2005 — Co-Founded Sumneva in January 2010 — Joined Enkitec in June 2012 — Oracle Ace Director — Author, Expert Oracle Application Express Security — Co-Author, Pro Oracle Application Express — “Scott” on OTN Forums About the Presenter 3
  • 4. About Enkitec — Oracle Platinum Partner — Established in 2004 — Headquartered in Dallas, TX — Locations throughout the US & EMEA — Specialties include — Exadata Implementations — Development Services — PL/SQL / Java / APEX — DBA/Data Warehouse/RAC — Business Intelligence 4
  • 5. Agenda — Overview — Primer — Behind the Scenes — Summary 5
  • 7. Overview 7 — APEX is an amazing development environment — Few others are as fast & as robust — But, do you really know what happens once you click submit?
  • 8. — APEX is not magic — There’s a method to everything that goes on — Most of which is more basic than you may think — We’ll dispel some of the “magic” today, so that you truly understand how this amazing technology works Behind the Curtain 8
  • 9. KISS: Keep It Simple, Stupid! — For this session, we’re going to focus on the internals of APEX, not the complexity of the application — This, our example will be extremely simple — 2 Pages — Login Page — Blank Page 9
  • 11. Primer 11 — Before we begin, let’s review a couple of basic concepts — Terminology — HTML Form Basics — wwv_flow Overview
  • 13. Terminology 13 — Much of APEX’s internal APIs and variables still use the older names — Most of which is based on Oracle Flows terminology — Subsequent versions of APEX include APIs & variables that start with the APEX_ prefix — Thus, to understand the internals of APEX, you need to be able to map legacy term to modern ones
  • 14. Terminology 14 Legacy Name Modern Name Company Workspace Flow Application Step Page Plug Region Instance Session Request Request Debug Debug
  • 16. HTML Form Basics 16 — HTML Forms are used to pass data to a server — Used by all web pages on the internet — Regardless of the underlying technology — Forms contain items which are passed as parameters to the form action — Text Field — Radio Group — Select List — And so on...
  • 17. — Each HTML Form has to have a form tag and a way to submit it — Can optionally have input tags; most have several — The form tag will have the following attributes: — Name — Action — Method — ID HTML Form Basics 17
  • 18. HTML Form Basics — All HTML forms start like this: 18 <form action="form_action.asp" method="post" name="my_form" id="myForm"> Procedure Name HTTP Method Form Name Form ID
  • 19. Get vs. Post 19 — All HTTP & HTTPS transactions for every web site ever fall into one of two categories: — GET — POST
  • 20. Get — Typically involves passing parameters over the URL to a procedure — More “usable” than POST — Can be: — Bookmarked — Cached — Remain in browser history — Distributed & shared — Hacked — In APEX-speak, this is also known as Page Rendering and handled by wwv_flow.show 20
  • 21. Post — When a web page “sends” form data to the server directly — Using the attributes of the form to determine which server process to execute — Item names will also map to the form process’s input parameters — Typically used to change or update data on the server — Thus, POST requests are never cached — In APEX-speak, this is also known as Page Processing and handled by wwv_flow.accept 21
  • 23. Question 23 — What does “WWV” stand for? WebView
  • 24. wwv_flow 24 — wwv_flow is essentially APEX — Contains many global variables, as well as several functions & procedures — Some of which you can use, other which are internal only — We’ll focus on just a couple of them: — accept — show
  • 25. Basic HTML Form 25 <form action="form_action.asp" method="post" name="my_form" id="myForm"> Procedure Name HTTP Method Form Name Form ID
  • 26. APEX HTML Form 26 <form action="wwv_flow.accept" method="post" name="wwv_flow" id="wwvFlowForm"> Procedure Name HTTP Method Form Name Form ID
  • 27. wwv_flow.accept — PL/SQL package.procedure that APEX calls when POSTing pages — Called for every APEX page that’s submitted — Contains a number of parameters which are populated based on a combination of system-defined variables and what the user enters into the form items 27
  • 28. APEX_040200 Schema — A lot can be learned about the internals of APEX by browsing the APEX_040200 schema — However, NEVER, EVER, EVER make any changes to anything here! — If you want to explore this schema, its best done on an isolated, private instance of APEX — Oracle XE — VMWare/Virtual Box/etc. 28
  • 30. The f Procedure 30 — Let’s start by navigating to our URL: — http://vm/apex/f?p=134:1
  • 31. The f Procedure — The string 134:1 is passed to the p parameter of the f procedure 31 PROCEDURE f Argument Name Type In/Out Default? ------------------ --------- ------ --------------- P VARCHAR2! IN DEFAULT P_SEP VARCHAR2! IN DEFAULT P_TRACE VARCHAR2! IN DEFAULT C VARCHAR2! IN DEFAULT PG_MIN_ROW! VARCHAR2! IN DEFAULT PG_MAX_ROWS! VARCHAR2! IN DEFAULT PG_ROWS_FETCHED! VARCHAR2! IN DEFAULT FSP_REGION_ID! VARCHAR2! IN DEFAULT SUCCESS_MSG! VARCHAR2! IN DEFAULT NOTIFICATION_MSG! VARCHAR2! IN DEFAULT CS VARCHAR2! IN DEFAULT S VARCHAR2! IN DEFAULT TZ VARCHAR2! IN DEFAULT P_LANG VARCHAR2! IN DEFAULT P_TERRITORY VARCHAR2! IN DEFAULT 134:1
  • 32. The f Procedure — The f procedure will then tokenize the p parameter into its component parts and call the wwv_flow.show procedure 32 PROCEDURE SHOW Argument Name! Type! ! ! In/Out Default? -------------------------------------------------------------- P_REQUEST VARCHAR2 IN DEFAULT P_INSTANCE VARCHAR2 IN DEFAULT P_FLOW_ID VARCHAR2 IN DEFAULT P_FLOW_STEP_ID VARCHAR2 IN DEFAULT P_DEBUG VARCHAR2 IN DEFAULT P_ARG_NAMES TABLE OF VARCHAR2(32767) IN DEFAULT P_ARG_VALUES TABLE OF VARCHAR2(32767) IN DEFAULT P_CLEAR_CACHE TABLE OF VARCHAR2(32767) IN DEFAULT P_BOX_BORDER VARCHAR2 IN DEFAULT P_PRINTER_FRIENDLY VARCHAR2 IN DEFAULT P_TRACE VARCHAR2 IN DEFAULT P_COMPANY NUMBER IN DEFAULT P_MD5_CHECKSUM VARCHAR2 IN DEFAULT P_LAST_BUTTON_PRESSED VARCHAR2 IN DEFAULT P_ARG_NAME VARCHAR2 IN DEFAULT P_ARG_VALUE VARCHAR2 IN DEFAULT 134 1
  • 34. wwv_flow.show 34 — Procedure that handles all APEX page rendering or GETs — Called most often by the f?p procedure in the URL — Also used in Ajax transactions — The f procedure will decompose p= to its component parameters and then call wwv_flow.show
  • 35. wwv_flow.show Parameters — p_flow_id — Application ID — p_flow_step_id — Page ID — p_instance — Session ID — p_request — Request 35
  • 36. wwv_flow.show Parameters — p_debug — Debug Mode — “YES” to enable; “NO” or NULL to disable — p_clear_cache — Clear Cache & Reset Pagination 36
  • 37. wwv_flow.show Parameters — p_arg_names — p_arg_name used when passing a single item — p_arg_values — p_arg_value used when passing a single value — p_printer_friendly — Printer Friendly mode — “YES” to enable; “NO” or NULL to disable 37
  • 38. wwv_flow.show Parameters — p_trace — When passed “YES”, APEX will generate a SQL trace file based on the current page view — Done in the background so that it does not slow down processing — A SQL trace file will be generated in $ORACLE_BASE/ admin/SID/udump — The SQL trace file can then be analyzed with TKPROF, Profiler, SQL Developer or any number of other tools — Note: You will need filesystem access to get to the trace file; thus you may need to seek help from your DBA/ system admin 38
  • 40. D E M O N S T R A T I O N WWV_FLOW.SHOW 40
  • 42. Page Rendering — APEX will render a page first by display/render position — Multiple components within the same display/render position can be sequenced accordingly — At any point, any component can be conditional and may or may not render 42
  • 44. NLS Parameters — National Language Settings (NLS) parameters must be set for each and every page view — Seems inefficient, but there is no way to guarantee that an APEX session will be linked to the same database session from page view to page view — Thus, we need to set these each and every time 44
  • 45. NLS Parameters — Some NLS settings can be managed from within an APEX application — Shared Components > Globalization — All can be set from the value of an APEX item — Allowing for flexibility between users of the same application 45
  • 46. NLS Parameters — Built-in NLS settings will show up in the APEX Debug mode report at the very top of the report — If needed, you can also manually set additional NLS Parameters 46
  • 47. D E M O N S T R A T I O N NLS PARAMETERS 47
  • 49. Session management — After NLS Parameters are set, APEX checks to see if you are logged in or not — APEX will also check to see if you are also logged in a developer in the same workspace as the application which you are running — If so, then you will also see the developer’s toolbar: 49
  • 50. — Debug log of an unauthenticated session vs. an authenticated session Session management 50 Unauthenticated Session Authenticated Session
  • 51. Session management 51 — By default, this functionality is built in to APEX and does not need to be enabled — You can override APEX’s session management, but you better know what you are doing! — If you choose to implement your own Page Session Management, it is controlled via either the Page Sentry Function or Session Verify Function in the Authorization Scheme
  • 52. Session management — When a session is not valid, APEX will redirect to one of three places: — Login Page — Built In Login Page — URL 52
  • 53. D E M O N S T R A T I O N SESSION NOT VALID 53
  • 54. Page Sentry & Session Verify 54 — APEX provides the ability to take over session management entirely — Page Sentry Function — Executed before EVERY APEX page view — Can check any criteria to determine if the session is valid — Session Verify Function — Determines whether or not a valid session exists — Can only use one of these, not both
  • 56. D E M O N S T R A T I O N PAGE SENTRY FUNCTION 56
  • 58. Authentication Scheme — What happens next depends on whether the user is authenticated or not 58 Authenticated: Continue to Display Page Requested Unauthenticated: Redirect to Login Page defined in the Authentication Scheme
  • 59. Authentication Scheme — Since we are not yet authenticated, APEX will redirect to the Login Page — Which will run through the Page Rendering phase — NLS Parameters — Page Session Management — Which will pass this time, as the Login Page will display to an unauthenticated user — Computations — Processes — Regions 59
  • 61. Get Username Cookie Process — Process that will check to see if there is an APEX username stored in the APEX session cookie — If so, it will set the default value of P101_USERNAME to this value 61 :P101_USERNAME := apex_authentication.get_login_username_cookie;
  • 63. D E M O N S T R A T I O N APEX USER COOKIE 63
  • 64. Display Regions 64 — After attempting to set the cookie, APEX will render the regions & items on the page in their corresponding order
  • 66. Page Processing — APEX will process a page first by process position — Multiple components within the same display/render position can be sequenced accordingly — At any point, any component can be conditional and may or may not render 66
  • 67. Page Processing — Let’s enter our username & password and click Login to start processing our page 67
  • 68. Page Processing — When the Login button is clicked, APEX will POST a transaction to the server — We can use Web Developer to see the parameters it will pass to wwv_flow.accept 68
  • 69. Display Form Details 69 APP_ID APP_PAGE_IDSESSION_ID Form Name
  • 71. wwv_flow.accept 71 — Procedure that handles all APEX page processing or POSTs — Have likely seen this before in error messages
  • 72. wwv_flow.accept Parameters — p_request — Typically set by the button clicked on a POST — Can be passed via the URL in a GET — But it will only be good for the next page phase — Can not get the value of p_request in Page Rendering if the page is submitted/POSTed 72
  • 73. wwv_flow.accept Parameters — p_instance — Session ID — Also referred to as :APP_SESSION or :SESSION_ID — Automatically maintained by APEX — Can not alter programmatically 73
  • 74. wwv_flow.accept Parameters — p_flow_id — Application ID — Also referred to as :APP_ID — Automatically set by APEX based on which application you’re running — Can not alter programmatically 74
  • 75. wwv_flow.accept Parameters — p_company — Workspace ID — Also referred to as :WORKSPACE_ID — Not typically present in the HTML rendered by APEX — But is calculated inside the wwv_flow.accept procedure — Can not alter programmatically 75
  • 76. wwv_flow.accept Parameters — p_flow_step_id — Page ID — Also referred to as :APP_PAGE_ID — Returns the current Page ID — Can not be altered otherwise 76
  • 77. wwv_flow.accept Parameters — p_arg_names — Array used to store the corresponding APEX Item IDs from an APEX page — Appears before each and every APEX page item 77
  • 78. wwv_flow.accept Parameters — p_arg_values — Used to protect hidden items from being manipulated via JavaScript — When a hidden & protected item is rendered, there will be a corresponding p_arg_values item rendered as well 78 <input type="hidden" id="P2_EMPNO" name="p_t01" value="7369" /> <input type="hidden" name="p_arg_values" value="9DDE9C18F8337D..." />
  • 79. wwv_flow.accept Parameters — p_t01 ... p_t200 — Set of VARCHAR parameters used to receive APEX page item values — This is where the “200 item per page” limit comes from — Which is not accurate, since it’s really 200 enabled items per page 79 <input type="text" id="P1_ITEM" name="p_t01" value="" size="30" maxlength="4000" class="text_field" /> APEX Item Parameter Item
  • 80. wwv_flow.accept Parameters — p_v01 ... p_v200 — Set of 200 arrays used to store results from items that return potentially more than one value — Multi-select Lists, Shuttle Regions, etc. 80 <select name="p_v01" id="P1_ITEM" size="1" multiple="multiple" class="multi_selectlist"> Array Item APEX Item
  • 81. wwv_flow.accept Parameters — f01 ... f50 — Group of 50 arrays, typically used in conjunction with g_f01 ... g_f50 — Most often used with tabular forms & APEX_ITEM API calls — Name used for PL/SQL; ID used for JavaScript 81 <input type="text" name="f03" size="12" value="" id="f03_0001" /> <input type="text" name="f03" size="12" value="" id="f03_0002" /> <input type="text" name="f03" size="12" value="" id="f03_0003" /> Array Name Array Element ID
  • 82. wwv_flow.accept Parameters — x01 ... x20 — Group of 20 VARCHARs, typically used in conjunction with the global variables g_x01 ... g_x10 — Difference between the parameter count & global variable count can be attributed to APEX itself needing extras — Most often used with Ajax transactions to pass parameters 82
  • 83. wwv_flow.accept Parameters — p_debug — When passed “YES”, APEX will run in DEBUG mode — No value or “NO” will disable DEBUG mode 83
  • 84. wwv_flow.accept Parameters — p_trace — When passed “YES”, APEX will generate a SQL trace file based on the current page view — Done in the background so that it does not slow down processing — A SQL trace file will be generated in $ORACLE_BASE/ admin/SID/udump — The SQL trace file can then be analyzed with TKPROF, Profiler, SQL Developer or any number of other tools — Note: You will need filesystem access to get to the trace file; thus you may need to seek help from your DBA/ system admin 84
  • 86. Items 86 — APEX Page Items are named p_t01 through p_t200 — The PX_ITEM_NAME is never directly sent back to the database — Used for client-side JavaScript interactions — Thus, if all APEX pages items are named the same, then how does it map them to the corresponding page item in an application when submitting a page?
  • 87. Item Mapping — Each APEX page item will have a corresponding p_arg_names entry: 87 <input type="hidden" name="p_arg_names" value="8295929934913911" /> <input type="text" id="P101_USERNAME" name="p_t01" value="admin" size="40" maxlength="100" class="text_field" /> ... <input type="hidden" name="p_arg_names" value="8296003745913912" /> <input type="password" name="p_t02" size="40" maxlength="100" value="" id="P101_PASSWORD" class="password" onkeypress="return submitEnter(this,event)" />
  • 88. Item Mapping — p_arg_names values will map back to the internal item ID in the wwv_flow_step_items table: 88
  • 89. Item Mapping — The ID of an input element does not get submitted back to the server — Thus, the need for the p_arg_names array — It provides the mapping from the p_txx elements to the corresponding APEX page items 89 Parameter p_t01 p_t02 ID p_arg_name Item Name 1 8295929934913911 P101_USERNAME 2 8296003745913912 P101_PASSWORD
  • 90. D E M O N S T R A T I O N ITEM MAPPING 90
  • 92. Validations, Computations & Processes 92 — After validating that the session is still valid, APEX will process all Validations, Computations & Processes according to their execution point and corresponding sequence — Nothing in this phase will ever be output to the screen — All “Built In” APEX Processes are merely calls to underlying PL/SQL procedures — Application Builder abstracts this concept to keep things simple
  • 93. Set Username Cookie — Sets the LOGIN_USERNAME_COOKIE based on the value of the username entered — Regardless of whether it successfully authenticated or not — Can be disabled for security purposes 93 apex_authentication.send_login_username_cookie ( p_username => lower(:P101_USERNAME) );
  • 94. Login — APEX API Call to the standard login procedure: apex_authentication.login — Will use the current authentication scheme and determine whether or not a user should be logged in 94 apex_authentication.login( p_username => :P101_USERNAME, p_password => :P101_PASSWORD );
  • 96. Authentication Scheme — APEX can use a number of different Authentication Schemes — APEX Credentials — Custom — SSO — LDAP — Database Schema Users — Open Door — HTTP Header Variable — None 96
  • 97. Authentication Scheme — Regardless of which one you choose, the method which APEX uses to validate credentials is largely the same — Pre-Authentication Procedure — Authentication Function — Post-Authentication Procedure 97
  • 98. Authentication Scheme — Pre-Authentication Procedure — Executes just before credentials are verified 98
  • 99. Authentication Scheme — Authentication Function — Can be one of the following: — -BUILTIN- — APEX User Credentials — -DBACCOUNT- — Database Credentials — -LDAP- — LDAP using parameters defined in LDAP section — Custom — Custom PL/SQL Function returning Boolean 99
  • 100. Authentication Scheme — Post-Authentication Procedure — Executes just after credentials are verified 100
  • 101. ORA_WWV_APP Cookie — Upon successful authentication, APEX will send another cookie to the client — This cookie’s sole purpose is to map your browser to your APEX session 101
  • 103. Clear Page Cache — Clears the page cache for Page 101 — Thus, removing the username from the APEX session state 103
  • 105. Logging Out 105 — There’s several ways to “log out” of an APEX application — Click the Logout link — Close the Browser Tab/Window — Quit the Browser — Let the session expire — Not all of these truly logs you out
  • 106. Logging Out — Close the Browser Tab/Window — Does NOTHING to log you out — Quit the Browser — Expires the Session Cookie — Let the session expire — Expires the Session Cookie — Click the Logout link — Expires the Session Cookie — Deletes the Session from wwv_flow_sessions$ 106
  • 107. Logging Out — APEX automatically schedules a job - ORACLE_APEX_PURGE_SESSIONS - which will remove stale session data — By default, it is set to run hourly — You can alter the duration to make it run more or less frequently 107
  • 108. Logging Out - APEX 4.0 — The Logout URL is specified in the Authentication Scheme — When clicked, it will expire the session cookie and also purge the session state from the database 108 wwv_flow_custom_auth_std.logout? p_this_flow=&APP_ID.&amp;p_next_flow_page_sess=&APP_ID.:1 The Current Application Which Application to Run Next
  • 109. Logging Out - APEX 4.1 & 4.2 — The Logout URL is specified in the Authentication Scheme, but is much simpler — When clicked, it will expire the session cookie and also purge the session state from the database 109
  • 110. D E M O N S T R A T I O N LOGGING OUT 110
  • 112. Summary 112 — There are a LOT of things that go on when rendering or processing an APEX page — Fortunately, APEX abstracts most of the complexity, making it easy & efficient to use — Understanding the discrete steps will help make you a better and more secure APEX developer
  • 113. Download — This and all other Enkitec presentations can be downloaded for free from: http://enkitec.com/presentations 113
  • 114. Lunch — Right around the corner in the restaurant 114