Oracle Application Express 3.2: The Essentials and More
By Arie Geller and Matthew Lyon
()
About this ebook
Developing data-centric web applications can be a real challenge as it is a multi-disciplinary process. There are many technologies involved in the client side (HTML, CSS, JavaScript, and so on); the interaction with the database, on the server side; the typeless nature of the web environment; and above all, the need to put it all together. This needs to be done in a manner that will allow the end users to do their job in the simplest and most efficient way, while enriching their user experience. How often have you wished that developing such applications could be uncomplicated and straightforward? This book will show you that it's possible, and teaches you how to do it, using Oracle Application Express (APEX).
With this practical guide to APEX, you'll learn how to easily develop data-centric web applications for the Oracle environment. The book covers the development cycle of an APEX application, reviewing the major APEX principles and building blocks chapter by chapter. It starts with the basic skills you need to get going when developing with APEX. Later, you will learn advanced issues, such as how to build tailor-made forms and reports, using APEX APIs, AJAX, and so on. It not only deals with the "How" but also with the "Why", and before long you will be able to understand APEX concepts, and use them to expand and enhance the built-in features, wizards, and tools.
The book starts with the design phase, including building the necessary database objects infrastructure; continues with ways to implement the application logic (on the server side) and the User Interface (on the client side), whilst showing you how to enhance your applications' features and functionality according to your specific needs; and it ends with application deployment.
The book emphasizes and clearly documents areas such as Globalization, Localization, and developing multi-lingual applications, and includes a special discussion about Right-To-Left (RTL) support for APEX applications, documented here for the first time.
Throughout the book, there are many screenshots and snippets of code, taken from working APEX applications. The book is accompanied by demo APEX applications that you can download and install in your APEX environment, thoroughly analyze, and learn from as you read the book.
A practical tutorial for developing applications using Oracle Application Express
ApproachThis book is a practical guide that not only shows you how to do things, but also makes you understand how things really work, so you'll be able to develop your own applications. It uses many screenshots, examples, and real-time "APEX code", some of which is documented for the first time.
Who this book is forThis book is for developers, in general, and web developers, in particular, who wish to learn how to develop data-centric web applications in the Oracle environment. It is also for novice APEX developers, who wish to learn how to use and best utilize the APEX environment, as well as for more experience APEX developers who wish to improve their knowledge and understanding of APEX and its capabilities, and learn from the experience of others.
It assumes basic knowledge of HTML, SQL, and PL/SQL. Basic JavaScript understanding is an advantage, and in general can make your life much easier as an APEX developer.
Arie Geller
Arie Geller is an independent IT consultant, with more than 30 years of experience with systems analysis, software development, IT infrastructure, etc. He started to use HTML DB 1.6 (the former name of APEX) to develop data centric Web applications in the Oracle environment, and continue doing so, with all the following versions, until today. Arie has specialized in developing Right-To-Left-oriented applications, and he brings his expertise and experience in this field into the book. Arie is also an active member of the APEX community on OTN, where he assists other members and shares his knowledge and experience as much as he can.
Related to Oracle Application Express 3.2
Related ebooks
Oracle APEX Tips and Tricks Rating: 0 out of 5 stars0 ratingsProgramming Microsoft Dynamics® NAV 2013 Rating: 0 out of 5 stars0 ratingsADempiere 3.4 ERP Solutions Rating: 0 out of 5 stars0 ratingsNoSQL Essentials: Navigating the World of Non-Relational Databases Rating: 0 out of 5 stars0 ratingsASP.NET 3.5 CMS Development Rating: 0 out of 5 stars0 ratingsExpert Oracle RAC 12c Rating: 0 out of 5 stars0 ratingsAlfresco 4 Enterprise Content Management Implementation Rating: 3 out of 5 stars3/5Jump Start Sass: Get Up to Speed With Sass in a Weekend Rating: 0 out of 5 stars0 ratingsOracle APEX Reporting Tips & Tricks Rating: 2 out of 5 stars2/5SQL for Data Analysis Rating: 0 out of 5 stars0 ratingsGetting Started with Greenplum for Big Data Analytics Rating: 0 out of 5 stars0 ratingsWeb Programming with Go: Building and Scaling Interactive Web Applications with Go's Robust Ecosystem Rating: 0 out of 5 stars0 ratingsHands-On Software Engineering with Golang: Move beyond basic programming to design and build reliable software with clean code Rating: 0 out of 5 stars0 ratingsComplex Binary Number System: Algorithms and Circuits Rating: 0 out of 5 stars0 ratingsSQL Functions Programmer's Reference Rating: 5 out of 5 stars5/5jQuery UI Cookbook Rating: 0 out of 5 stars0 ratingsIBM Lotus Notes 8.5 User Guide Rating: 0 out of 5 stars0 ratingsResponsible Data Science Rating: 0 out of 5 stars0 ratingsBeginning DotNetNuke Skinning and Design Rating: 0 out of 5 stars0 ratingsApache Solr PHP Integration Rating: 0 out of 5 stars0 ratingsData Normalization A Complete Guide - 2020 Edition Rating: 0 out of 5 stars0 ratingsStart Concurrent: An Introduction to Problem Solving in Java with a Focus on Concurrency, 2014 Rating: 0 out of 5 stars0 ratingsManaging Multimedia and Unstructured Data in the Oracle Database Rating: 0 out of 5 stars0 ratingsCSS Mastery: Styling Web Pages Like a Pro Rating: 0 out of 5 stars0 ratingsPHP Web 2.0 Mashup Projects: Practical PHP Mashups with Google Maps, Flickr, Amazon, YouTube, MSN Search, Yahoo! Rating: 0 out of 5 stars0 ratings
Information Technology For You
Summary of Super-Intelligence From Nick Bostrom Rating: 4 out of 5 stars4/5An Ultimate Guide to Kali Linux for Beginners Rating: 3 out of 5 stars3/5Cybersecurity for Beginners : Learn the Fundamentals of Cybersecurity in an Easy, Step-by-Step Guide: 1 Rating: 0 out of 5 stars0 ratingsSupercommunicator: Explaining the Complicated So Anyone Can Understand Rating: 3 out of 5 stars3/5CompTia Security 701: Fundamentals of Security Rating: 0 out of 5 stars0 ratingsData Analytics for Beginners: Introduction to Data Analytics Rating: 4 out of 5 stars4/5Creating Online Courses with ChatGPT | A Step-by-Step Guide with Prompt Templates Rating: 4 out of 5 stars4/5How to Find a Wolf in Siberia (or, How to Troubleshoot Almost Anything) Rating: 0 out of 5 stars0 ratingsLearning Microsoft Endpoint Manager: Unified Endpoint Management with Intune and the Enterprise Mobility + Security Suite Rating: 0 out of 5 stars0 ratingsCompTIA ITF+ CertMike: Prepare. Practice. Pass the Test! Get Certified!: Exam FC0-U61 Rating: 5 out of 5 stars5/5The Design Inference Rating: 5 out of 5 stars5/5ChatGPT: The Future of Intelligent Conversation Rating: 4 out of 5 stars4/5The Programmer's Brain: What every programmer needs to know about cognition Rating: 5 out of 5 stars5/5Spreadsheets To Cubes (Advanced Data Analytics for Small Medium Business): Data Science Rating: 0 out of 5 stars0 ratingsCOMPUTER SCIENCE FOR ROOKIES Rating: 0 out of 5 stars0 ratingsCyber Security Consultants Playbook Rating: 0 out of 5 stars0 ratingsCompTIA A+ CertMike: Prepare. Practice. Pass the Test! Get Certified!: Core 1 Exam 220-1101 Rating: 0 out of 5 stars0 ratingsHow to Write Effective Emails at Work Rating: 4 out of 5 stars4/5Microsoft Access for Beginners and Intermediates Rating: 0 out of 5 stars0 ratingsLinux Command Line and Shell Scripting Bible Rating: 3 out of 5 stars3/5CODING INTERVIEW: Advanced Methods to Learn and Excel in Coding Interview Rating: 0 out of 5 stars0 ratingsHow To Use Chatgpt: Using Chatgpt To Make Money Online Has Never Been This Simple Rating: 0 out of 5 stars0 ratingsUnderstanding TCP/IP Rating: 4 out of 5 stars4/5The iPadOS 17: The Complete User Manual to Quick Set Up and Mastering the iPadOS 17 with New Features, Pictures, Tips, and Tricks Rating: 0 out of 5 stars0 ratingsPractical Ethical Hacking from Scratch Rating: 5 out of 5 stars5/5JasperReports 3.5 for Java Developers Rating: 0 out of 5 stars0 ratings
Reviews for Oracle Application Express 3.2
0 ratings0 reviews
Book preview
Oracle Application Express 3.2 - Arie Geller
Table of Contents
Oracle Application Express 3.2
Credits
About the Authors
About the Reviewers
Preface
What is the aim of the book
Who this book is for
What this book covers
Standards and assumptions
Conventions
Reader feedback
Customer support
Errata
Piracy
Questions
1. An Introduction to APEX
Web-based
Native Web based
Data Centric
A declarative development tool
RAD tool
Application Builder
SQL Workshop
Utilities
Globalization, localization, and NLS
APEX architecture
Summary
2. What we need to know to effectively use APEX
SQL and PL/SQL
HTML and CSS
JavaScript
HTML
The DOM (Document Object Model)
DOM walking
DOM methods
DOM events
The APEX context
CSS
The cascading effect
The style sheets
CSS properties
CSS selectors
HTML tags selectors:
Pseudo-class selectors:
HTML ID selectors:
Class selectors
Compound (nested) class selectors:
Contextual selectors:
The !important keyword
The APEX angle
Where to store our external CSS file?
How to load our CSS code?
Globalization and NLS
JavaScript
JavaScript features
Object-Oriented
Case sensitive
JavaScript variables
JavaScript arrays
JavaScript operators
Blocks of code
Conditional blocks of code:
Repetitive (loop) blocks of code:
JavaScript functions
The APEX angle
Where to store our external JavaScript file?
How to load our external JavaScript file?
Globalization and NLS
PL/SQL and JavaScript (advanced)
JavaScript and server-side resources (advanced)
The APEX JavaScript API
$x(pItemId)
$v(pItemId)
$s(pItemId, pValue)
$x_UpTill(pItemId, tagName, className)
$x_Show(pItemId) , $x_Hide(pItemId)
redirect (location)
Summary
3. APEX Basic Concepts
Session state
Session state firing points
Session state and the application page life cycle
Session state and the page rendering phase
Using computations in the page rendering phase
Using processes in the page rendering phase
Special session state processes
Session state and the page processing phase
Computations and processes in the page processing phase
Manually saving to session state
Using the APEX_UTIL.SET_SESSION_STATE API procedure
Session state and AJAX
Using the f?p URL notation
Referencing persistence session state
Session state and stored procedures
Using the v() and nv() functions wisely
Session state scope and persistence
Reviewing session state from the application builder
Substitution strings
APEX engine built-in substitution strings
Substitution strings that contain data
Substitution strings that contain HTML code
Application substitution strings
Application or page items
Referencing substitution strings
Using the #ITEM# notation
Using the &ITEM. notation
Referencing substitution strings in SQL and PL/SQL code
The bind variable notation
The APEX built-in v() and nv() functions
Shortcuts
Defining a shortcut
The name field
The type field
The shortcut field
Shortcuts availability
Themes and templates
Themes
Templates
Page templates
Region templates
Reports templates
Breadcrumbs templates
List templates
Calendar templates
Label templates
Button templates
Popup List Of Values template
Templates and the APEX upgrade process
Theme, templates, and good practice
The f?p URL notation
The p segments
1—App
2—Page
3—Session
4—Request
5—Debug
6—CC (Clear Cache)
7—itemName
8 itemValue
9—PR (Printer friendly)
Item values including the colon character
APEX multi-lingual support
The APEX built-in translation mechanism
Single language applications
Single application with Multi-lingual user interface
National Language Support (NLS) in this book
Summary
4. The Application Builder Basic Concepts and Building Blocks
The APEX Workspace
Start working with APEX
Logging in to the APEX IDE
The APEX IDE home page
The APEX Application Builder
The Application Builder home page
The Import button
The Create button
The Application IDE home page
The Pull Down menu section
The application pages section
The detailed list of application pages
The Download link
The Page component
The Page Rendering column
The Hide/Show icon bar
The Page Processing column
The Hide/Show icon bar
The Shared Components column
The Hide/Show icon bar
The Action Bar
Creating an application page
Editing the Page Definition page
The Page section
A page region
Creating a page region
Editing a page region
Region identification
Caching
Summary
5. APEX Items
Naming conventions and rules
Oracle Identifiers naming rules
Case sensitive APEX item names
Application items
Application items and security issues
Referencing application items
Application items and JavaScript
Page items
The Name section
The Name field
The Display As field
The Displayed section
The Sequence field
The Region field
The layout fields
The Drag and drop wizard
The Label section
The Label field
The Horizontal / Vertical Alignment field
The Template field
The HTML Table Cell Attributes field
The Element section
The item dimension fields
The HTML Form Element Attributes field
The Form Element Option Attributes field
The Pre/Post Element Text fields
The Source section
The Source Used field
Only when current value in session state is null
Always, replacing any existing value in session state
The Source Type field
Maintain session state
Source value or expression
Post Calculation Computation
Format Mask
The Default section
The List of Values section
Static LOV
Dynamic LOV
Defines LOV
LOV related wizards
The Security section
The Conditions section
The Condition Type field
The Expression 1 / Expression 2 fields
The Read Only section
The Help text section
The Configuration section
The Comments section
APEX pre-defined item types
Text based items
Multi-option based items
Special functionality items
Creating APEX items programmatically
Summary
6. APEX Buttons
Button styles
HTML Button
Image based button
Template Driven button
Button positioning
Create new button(s)
Button position
Create a button in a region position
Button attributes
Image attributes or template (not for HTML)
Display properties
Position
Sequence
Branching (optional)
Conditional display
Create a button displayed among this region's items
Edit a button
The REQUEST feature
The REQUEST scope
Referencing REQUEST
Condition by REQUEST
Using JavaScript with among this region's items
buttons
Re-visit the Buttons section
Summary
7. APEX Computations
Create a page level computation
Compute item
Sequence
Computation point
Page Rendering computation points
Page Processing computation point
Computation type
Computation
Condition
Create an application level computation
Computation item
Frequency
Edit computations
Computations and Session State
Summary
8. APEX Validations
Data validation
How APEX validation works?
Creating a new validation
Validation level
Create multiple not null validations
Item
Validation method
SQL
Exists
Not Exists
SQL Expression
PL/SQL
PL/SQL Expression
PL/SQL Error
Function Returning Boolean
Function Returning Error Text
Multi-lingual support for error messages
Item Not Null
Item string comparison
Item specified is a valid date
Regular Expression
Sequence and Name
Sequence and Validation Name
Error Display Location
On Error Page
Inline
Validation
Conditions
Page level validation
Edit validations
Client-side validation
Implementing client-side validation
Client-side versus server-side validations
Summary
9. APEX Processes
Application Processes
Creating a new Application Process
Name
Sequence
Point
Source
Error message
Conditionality
Edit Application Processes
Localization and Application Processes
Page level processes
Creating a new page level process
Process Type
PL/SQL
Reset Pagination
On Demand
Session State
Data manipulation
Automatic Row Fetch
Automatic Row Processing (DML)
Multi Row Update, Multi Row Delete, and Add rows to tabular form
Web Services
Form Pagination
Close pop-up window
Edit page level process
Source: Automatic Row Processing (DML)
On Demand processes
Summary
10. APEX Branches
Application flow
Creating a new branch
Branch point
Branch type
Branch to Function Returning a Page
Branch to Function Returning a URL
Branch to PL/SQL procedure
Branch to page
Branch to page accept processing (not common)
Branch to Page Identified by Item (Use item name)
Branch to page or URL
Save state before branching
Branches URL and JavaScript
Branch to URL identified by item (Use item name)
Sequence and branch conditioning
Edit branch
Other ways to control the application flow
Branch with Buttons
Branch with PL/SQL
Branch with JavaScript
Branch with an item
Navigational aids
Summary
11. APEX SQL Workshop
Navigating around the SQL workshop
Object Browser
Exploring the database with the Object Browser
Creating new database objects
UI defaults
Creating a package
SQL Commands
The SQL Commands code area
The SQL Commands results area (Display Pane)
SQL Scripts
Query Builder
The Query Builder working area (Design Pane)
The Query Builder results area (Output Pane)
Summary
12. APEX Forms
Sources for creating a form
Creating a new form
The form primary key
The form items
The form DML options
The form branches
A new form has been created
The Page Rendering phase
The items section
The Page Rendering Processes section
The Page Processing phase
The Validations section
The Page Processing Processes section
The Branches section
Manually creating an APEX form
Summary
13. APEX Reports
Report regions
Creating a simple report using a wizard
Start the report region wizard
Region type
Report implementation
Display attributes
SQL source
Query Builder
Report attributes
Conditional display
Wizard completion
Modifying a report manually
Editing a Region Definition
The identification section
The user interface section
The source section
The caching section
The header and footer section
Editing Report Attributes
The column attributes section
The layout and pagination section
The messages section
The report export section
The break formatting section
The external processing section
Editing Column attributes
The column definition section
The column formatting section
The tabular form element section
The column link section
Conditional display
Editing print attributes
The printing section
The page attributes section
The page header section
The column heading section
The report columns section
The page footer section
Enabling PDF printing
Building a custom report row layout template
Building a parameterized report
Charts
Summary
14. Tabular Forms
What is a Tabular Form?
Using a wizard to create a Tabular Form
Start the Report Region Wizard
Region type
Form implementation
Identify Table/View Owner
Identify Table/View Name
Identify columns to display
Identify Primary Key
Primary key source
Updateable columns
Page and region attributes
Button labels
Branching
Confirmation
Wizard completion
Show me the Tabular Form
What does the Tabular Form wizard add to my page?
Advanced note on the Update process
How does the Tabular Form wizard organize the data on a page?
The client side
The server side
Report regions revisited
Validating the Tabular Form
Enhancing Validation Errors Messages
Changing the default error message phrase
Add row number column
Using Page Error for the Validation error message(s)
Using JavaScript and AJAX
Manually building a Tabular Form
Displaying the Tabular Form
APEX_ITEM API
Rendering the Tabular Form
Referencing and validating Tabular Form items
Using checkboxes
DML on the Tabular Form
Delete
Update
Insert
Summary
15. Calendars
Calendar region
Using a wizard to create a calendar
Start the calendar region wizard
Region type
Calendar implementation
Region attributes
Calendar source
Define columns
Viewing the calendar
Modifying a calendar manually
Region Definition
Region Source
Calendar Attributes
The Calendar Display section
The Display Attributes section
The Column Link section
The Day Link section
Summary
16. Interactive Reports
Interactive Report Regions
Select Columns
Filter
Sort
Control break
Highlight
Compute
Aggregate
Chart
Flashback
Save report
Reset
Download
Converting an Existing Report Region
Create an Interactive Report using a wizard
Start the Interactive Report Region Wizard
Region Type
Report Implementation
Display attributes
Source
Conditional Display
Wizard completion
Manually modifying an Interactive Report
Report Attributes
Column Attributes
Column Groups
Default Report Settings
Pagination
Search Bar
Download
Link Column
Advanced Attributes
Column attributes
Column Definition
List of Values
Column Link
Linking to Interactive Reports
Summary
17. AJAX with APEX
The AJAX technology
The XMLHttpRequest object
Communication
Data format
AJAX implementation in APEX
AJAX support on the client side
The htmldb_Get object
1—obj
2—flow
3—req
4—page
5—instance
6—proc
7—queryString
Code examples
The htmldb_Get methods
.Add(name,val)
.AddParam(name,val)
General remarks
.get(mode, startTag, endTag)
The mode parameter
The startTag and endTag parameters
Code examples
Restrictions with AJAX pulling content
Pulling report with pagination
.GetAsync(pVar)
The pVar function
Namespace for the APEX AJAX framework
AJAX support on the server side
Application on-demand PL/SQL process
Stored (packaged) procedure
Handling errors in the AJAX process
Debugging a failed AJAX process
Examples of using AJAX in APEX
Multiple calendars on a single application page
The calendar main page (page xx)
The 'Previous/Next Month' region
The 'Main Calendar' region
The small calendars page (page yy)
Checkbox persistence in Tabular Forms (Reports)
Report on CUSTOMERS
The report SQL query
The report headers
The AJAX client-side JavaScript functions
The updateCB() JavaScript function
The toggleAllCB() JavaScript function
The header_CB_Status() JavaScript function
The AJAX server-side processes
update_CB
updateCB_all
Summary
18. Globalization and Localization With APEX Applications
A brief introduction to Globalization and Localization
Globalization
Localization
Native IDE support of multiple languages
Loading another language into APEX IDE
Unloading the APEX IDE translated language
Loading another language into APEX Runtime Environment
Multi-language support
How do we start Globalization support?
Setting the APEX application language
Date format
Using the APEX Date Picker
Adding or editing Globalization
Load Data—Localization
Translating Text Messages
The Text Messages translation wizard
Manage the Text Messages repository
Using APEX Shortcut with Text Messages
Dynamic Translations
Using the Dynamic Translations repository
Using the APEX_LANG APIs
APEX_LANG.MESSAGE
APEX_LANG.LANG
Multi-lingual applications
The translation mechanism home page
1—Application Language Mapping
2—Seed and export
3—Translating the text
4—Import and publish the translation
Editing the Translatable Text repository
Running translated applications
Deploying translated applications
Summary
19. Right-To-Left Support in APEX
Why we need special Right-To-Left support
Basic Right-To-Left scenarios
Right-To-Left as a single language
Right-To-Left as a translation language
APEX templates with Right-To-Left support
Page templates
The Header section
Right-To-Left as a single language
Right-To-Left as a translation language
The Body and Footer sections
Tab attributes sections
Button templates
Popup List of Values Template
All the other template types
The APEX Shuttle item
Labels and input fields alignment
Date and time
Summary
20. Deploying APEX Applications
What do we need to deploy?
Supporting Objects
Messages
Prerequisites
Substitutions
Build Options
Validations
Create/Update a Validation
Install
Create Script
Script Attributes
Define Script
Create Scripts to Install Files
Upgrade
Deinstallation
Export
Exporting an Application
Exporting a page
Exporting components
Components
Components by Page
Application Attributes
Build Option Status
Export Components
Importing an application
Start the Import Wizard
Specify File
File Import Confirmation
Install
Supporting Objects installation
Command line export utility
Summary
21. The APEX Runtime Environment
What is the APEX Runtime Environment?
Setting up a Runtime Environment
Managing the APEX Runtime Environment
Installing applications
APEX_INSTANCE_ADMIN API
Viewing APEX reports
Oracle SQL Developer
Summary
22. Security
APEX security features overview
Authentication Schemes
Adding an Authentication Scheme
Creation method
Selecting a pre-built Authentication Scheme
Adding a login page
Specifying LDAP settings
Authentication Scheme name
Changing the current Authentication Scheme
Custom Authentication Scheme
Authentication reports
Authorization Schemes
Create an Authorization Scheme
Creation method
Authorization Scheme details
Assigning Authorization Scheme to pages, regions, and items
Resetting Authorization Scheme results
Authorization Reports
Session state protection
Security Attributes
Authentication
Authorization
Database Schema
Session Timeout
Session State Protection
Virtual Private Database
Summary
23. Application Conversion
APEX application conversion
Planning and understanding the application
APEX Application Migrations
Creating an APEX workspace
Converting Microsoft Access applications
Exporting Microsoft Access metadata
Migrating the Access database to Oracle
Creating a repository
Capturing Microsoft Access exported XML
Converting to an Oracle Model
Generating schema
Creating an Oracle database
Creating a Migration Project
The Migration Project page
Generating the application
Select Application Objects
Page Definition
User Interface
Confirmation
Converting Oracle Forms applications
Converting Oracle Forms to XML
Database
APEX Migration Project
Reviewing and editing application metadata
Annotations
Including objects in conversion
Generating the application
Application name
Create Pages
Page Definition
User Interface
Confirmation
What's left to do?
Summary
24. APEX Best Practices
Don't re-invent the wheel
Be innovative when necessary
Learn the APEX IDE
The Drag and Drop Layout wizard
The Action Bar
The Page Definition view options
Setting up workspaces
Application ID
Page numbering and page groups
Use Oracle naming conventions
Use bind variables
Don't hardcode, use Substitution Strings
Use PL/SQL packages
Protect your business logic secrets
Re-useable code
Shared Components
Page Zero
Pre-defined and built-in resources
User Interface Defaults
Never change the provided APEX resources
Themes and Templates
JavaScript and CSS
Never trust the end user
Client-side validation
Don't rely on database constraints
Create your own restore point
Multi-user environment
Multi-lingual environment
Team development
Lock your pages
Version control
Document development standards
Thou shall enter comments
APEX views (APEX dictionary)
APEX Application Reports
APEX Runtime-only version
Backup, backup, and more backup
Summary
A. APEX Installation, Upgrade, and Configuration Tips
Obtaining APEX
Reading the relevant documentation
Back up your database and APEX applications
Use AL32UTF8 in your DAD
PL/SQL Web Toolkit
EPG—Embbeded PL/SQL Gateway
Enabling FTP on EPG
Enabling remote access to EPG
EPG versus OHS
Utilizing static files caching
Obfuscate your DAD file
Upgrading an APEX Instance
Copy the new images directory
Themes and Templates in the Upgrade process
Summary
Index
Oracle Application Express 3.2
Arie Geller
Matthew Lyon
Oracle Application Express 3.2
The Essentials and More
Copyright © 2010 Packt Publishing
All rights reserved. No part of this book may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, without the prior written permission of the publisher, except in the case of brief quotations embedded in critical articles or reviews.
Every effort has been made in the preparation of this book to ensure the accuracy of the information presented. However, the information contained in this book is sold without warranty, either express or implied. Neither the authors, nor Packt Publishing, and its dealers and distributors will be held liable for any damages caused or alleged to be caused directly or indirectly by this book.
Packt Publishing has endeavored to provide trademark information about all of the companies and products mentioned in this book by the appropriate use of capitals. However, Packt Publishing cannot guarantee the accuracy of this information.
First published: June 2010
Production Reference: 1250510
Published by Packt Publishing Ltd. 32 Lincoln Road Olton Birmingham, B27 6PA, UK.
ISBN 978-1-847194-52-7
www.packtpub.com
Cover Image by Vinayak Chittar (<vinayak.chittar@gmail.com>)
Credits
Authors
Arie Geller
Matthew Lyon
Reviewers
Ashish Agarwal
Ben Burrell
Katie McLaughlin
Penny Cookson
Acquisition Editor
James Lumsden
Development Editors
Dhiraj Chandiramani
Rakesh Shejwal
Technical Editor
Pallavi Kachare
Copy Editor
Leonard D'Silva
Editorial Team Leader
Akshara Aware
Project Team Leader
Priya Mukherji
Project Coordinator
Zainab Bagasrawala
Proofreaders
Aaron Nash
Jeff Orloff
Indexer
Hemangini Bari
Graphics
Geetanjali Sawant
Production Coordinator
Aparna Bhagat
Cover Work
Aparna Bhagat
About the Authors
Arie Geller is an independent IT consultant, with more than 30 years of experience with systems analysis, software development, IT infrastructure, etc. He started to use HTML DB 1.6 (the former name of APEX) to develop data centric Web applications in the Oracle environment, and continue doing so, with all the following versions, until today.
Arie has specialized in developing Right-To-Left-oriented applications, and he brings his expertise and experience in this field into the book. Arie is also an active member of the APEX community on OTN, where he assists other members and shares his knowledge and experience as much as he can.
I would like to thank my surrounding family for their great patient and support, and also to my friends and customers for their understanding, during the very demanding period of writing this book.
I would also like to thank Joel Kallman and Scott Spadafore (RIP) from the APEX development team, for their invaluable help and insight on APEX, over the years.
Matthew Lyon is a Senior Consultant at SRA Information Technology in Adelaide, South Australia. His involvement in enterprise software development extends across analysis, design, development, architecture, and project management, giving him a deep appreciation of the effective use of software technology. He has experience with a wide variety of technologies but has a passion for Oracle APEX and Java. Matthew runs APEX training courses for clients and is active in the Oracle community as a presenter and as a committee member of the South Australian Oracle User Group. Matthew has more than 10 years experience in software development and has been using APEX since HTMLDB version 1.6.
I would like to thank my lovely wife Zoe and beautiful baby girl Rose for their help and support while writing this book.
About the Reviewers
Ashish Agarwal has the distinct privilege of being one of the less than a few hundred Oracle Certified Masters in the world (http://www.oracle.com/technology/ocm/aagarwal.html). He is also a certified Project Management Professional from PMI, USA & Oracle Certified Professional in Oracle 10g, 9i, 8i, and 8. With a total industry experience of more than 12 years in Information Technology Field, exhaustive experience and Knowledge in Managing Oracle Databases and Oracle Applications (ERP and CRM Suites), administration is his expertise. Participating in the design of Infrastructure Architecture for Oracle Products and managing data centre kind of environment with multiple databases and servers are some of his other experience areas.
Ashish has worked with companies like Panasonic, Oracle, Sapient, and Mercer across the geographies of India, Singapore, Malaysia, Canada, and the UK, and is now currently running DBCON - a Database & Oracle APEX consulting company based in Singapore. DBCON leverages on the power of the Internet to provide live online training, application development, management and maintenance, support, and troubleshooting in Oracle technologies to anyone in the world. DBCON also leverages on the power of the Internet to engage the best people in their respective areas from across the globe.
Attracted to Oracle Application Express because of its simplicity and productivity, Ashish regularly conducts live online training in Oracle Application Express through his company DBCON. Anyone from anywhere in the world can attend this training with just a PC and internet connection. To learn more about live online training in Oracle Application Express please visit http://www.dbcon.com or e-mail at
Ben Burell is an Oracle developer currently based in the Isle of Man. He is an active contributor to the Oracle APEX forum as 'Munky' and sporadically blogs about APEX related tips and tricks at http://munkyben.wordpress.com.
He enjoys problem solving while listening to music, meaning that he quite enjoys his job!
Katie McLaughlin is a software developer and consultant who has been working with Oracle Apex for many years, developing enterprise applications as well as for smaller business requirements. She currently works for an international software house, developing financial applications for some of the largest companies in the world.
I'd like to thank my partner, Karl, for all his kindness and for bringing many a cup of tea during the time I worked on this book.
Penny Cookson has been working with Oracle products since 1987. Penny is the Managing Director and Principal Consultant for SAGE Computing Services, an Australian company which specializes in providing Oracle education and consulting services. She has written and conducted training courses and provided expert advice in a wide range of products, including Application Express, and is a regular presenter at Oracle and User Group conferences. She was Oracle Magazine's Educator of the Year in 2004 and is an Oracle ACE.
Preface
Oracle Application Express — APEX for short, or by its former name, HTML DB, is a declarative, Web-based RAD (Rapid Application Development) tool. APEX runs inside an Oracle database, tightly integrated with its internal resources, and utilize them optimally. Using a Web browser, it allows us to develop, test, and deploy a Web based, data-centric application in a declarative manner, but on the same time it doesn't limit our abilities to manually enter specific and tailored code, both on the client and server side, that will answer our most specific needs and demands.
Developing data centric Web applications can be a real challenge as it's a multi-disciplinary process. There are many technologies involved in the client side (HTML, CSS, JavaScript, etc.); the interaction with the database, in the server side; the typless nature of the Web environment; and above all, the need to put it all together, in a manner that will allow the end users to do their job, in the simplest and most efficient way, while enriching their user experience. If you are working in the Oracle environment, APEX can be your best solution.
What is the aim of the book
With this book, you'll learn how to easily develop data centric Web applications for the Oracle environment, using the APEX RAD tool.
This book is not a recipes book, although it includes many working examples. You will learn to understand the basic principles behind the APEX building blocks, and how they operate. It will allow you to take advantage of existing APEX recipes
but more importantly to create your own.
The book covers the development cycle of an APEX application. It starts with the design phase, including building your necessary database objects infrastructure; continue with ways to implement the application logic (on the server side) and the User Interface (on the client side), whilst showing you how to enhance your applications features and functionality, according to your specific needs; and it ends with application deployment.
The book includes dedicated chapters that deal with the Globalization and Localization aspects of developing APEX applications, with dedicated chapter for developing Right-To-Left oriented applications.
Who this book is for
This book is for developers, in general, and web developers, in particular, who wish to learn how to develop data-centric web applications in the Oracle environment. It is also for novice APEX developers, who wish to learn how to use and best utilize the APEX environment, as well as for more experience APEX developers who wish to improve their knowledge and understanding of APEX and its capabilities and learn from the experiences of others.
Developers who work in a multi-lingual environment, in general, and in a Right-To-Left environment, in particular, will be most beneficial from the dedicated chapters on these subjects, which include issues that we believe are documented for the first time.
The book assumes basic knowledge of HTML, SQL, and PL/SQL. Basic JavaScript understanding is an advantage, and in general, can make your life much easier as an APEX developer. The book includes a dedicated chapter which gives a general review of these issues.
What this book covers
Chapter 1, An Introduction to APEX gives an introduction of APEX architecture and technology, while explains some of the above-mentioned terms in the APEX context.
Chapter 2, What we need to know to effectively use APEX reviews. Some of the basic skills we should have in order to better utilize the Web development aspects of APEX. It talks about HTML, the DOM, CSS, and JavaScript.
Chapter 3, APEX Basic Concepts discusses some of the major APEX concepts and explains how they can help us in our developmental efforts.
Chapter 4, The Application Builder Basic Concepts and Building Blocks explains the major building blocks of the APEX application, and how to create them using the APEX Application Builder.
Chapter 5, APEX Items discusses the major building blocks of the application page — the application items. We'll review application items and page items and learn how they can serve us in our applications.
Chapter 6, APEX Buttons explains different types of buttons that a developer can place on an APEX page, creating/editing them, assigning attributes and using the REQUEST feature
Chapter 7, APEX Computations reviews the computation mechanism and sees how we can use it in our applications.
Chapter 8, APEX Validations discusses APEX validations, which help us to maintain the integrity and consistency of our data by making sure that only correct and consistent data will be used and saved into the database.
Chapter 9, APEX Processes reviews the main concepts of APEX processes and how they can help us to implement our application logic. It includes discussions on application level processes (including on-demand processes), page level processes, and the various types and options APEX provides us with to implement them.
Chapter 10, APEX Branches discusses APEX Branches, which are responsible for the flow of the application.
Chapter 11, APEX SQL Workshop reviews some APEX IDE built-in utilities that will help us define our application database infrastructure, either declaratively or by using DDL commands and scripts.
Chapter 12, APEX Forms reviews the various sources that we can use to create an APEX form. How to use the APEX Create Form wizard to generate a new form and manually create an APEX form.
Chapter 13, APEX Reports discusses how we can create and modify reports in APEX applications.
Chapter 14, Tabular Forms describe the APEX tabular form concept, with a very detailed discussion on how to generate one using an APEX wizard, or in more complex scenarios, doing it manually, using specific APEX APIs.
Chapter 15, Calendars looks at how we can use calendar components in our applications.
Chapter 16, Interactive Reports looks at how we can use Interactive Reports in our applications.
Chapter 17, AJAX with APEX looks at how we can utilize the APEX AJAX framework, both on the client and server side, to integrate and support this important technology in our APEX applications.
Chapter 18, Globalization and Localization With APEX Applications deals with the Globalization and Localization aspects of APEX applications. It include detailed discussion about the APEX built-in translation mechanism and sees how we can develop multi-lingual APEX applications.
Chapter 19, Right-To-Left Support in APEX review the specific actions we need to take in order to generate and support APEX Right-To-Left applications.
Chapter 20, Deploying APEX Applications discuss the means APEX provides us to deploy our developed applications.
Chapter 21, The APEX Runtime Environment explains what the APEX Runtime Environment is all about and how we can manage it.
Chapter 22, Security looks at APEX Security and how it can be used in our applications.
Chapter 23, Application Conversion looks at how we can convert Microsoft Access and Oracle Forms applications to APEX.
Chapter 24, APEX Best Practices looks at the best practices for developing APEX applications.
Appendix deals with APEX installation, upgradation, and configuration issues.
Standards and assumptions
This book assumes basic knowledge in the main technologies and programming languages that we are using while working in APEX. These include, for the client side, HTML/XHTML, CSS, and JavaScript; and for the server side SQL and PL/SQL.
You can practice developing APEX application using the Oracle hosted site on apex.oracle.com. APEX is also included in the free ORACLE XE database version, which can be downloaded from the Oracle OTN site (http://otn.oracle.com). You can also download the latest version of APEX, and use it to upgrade the built-in version in the Oracle XE.
Conventions
In this book, you will find a number of styles of text that distinguish between different kinds of information. Here are some examples of these styles, and an explanation of their meaning.
Code words in text are shown as follows: On a page level, we define the
A block of code is set as follows:
. . .
stylesheet type=text/css
href=myCSS.css
/>
. . .
When we wish to draw your attention to a particular part of a code block, the relevant lines or items are set in bold:
select * from emp t
where t.deptno = v('P1_DEPTNO')
and t.hiredate = (select max(hiredate) hiredate
from emp t1
where deptno = v('P1_DEPTNO'))
New terms and important words are shown in bold. Words that you see on the screen, in menus or dialog boxes for example, appear in the text like this: APEX includes some wizards and tools, such as the Wizard Report and Query Builder.
Note
Warnings or important notes appear in a box like this.
Tip
Tips and tricks appear like this.
Reader feedback
Feedback from our readers is always welcome. Let us know what you think about this book — what you liked or may have disliked. Reader feedback is important for us to develop titles that you really get the most out of.
To send us general feedback, simply send an e-mail to <feedback@packtpub.com>, and mention the book title via the subject of your message.
If there is a book that you need and would like to see us publish, please send us a note in the SUGGEST A TITLE form on www.packtpub.com or e-mail
If there is a topic that you have expertise in and you are interested in either writing or contributing to a book on, see our author guide on www.packtpub.com/authors.
Customer support
Now that you are the proud owner of a Packt book, we have a number of things to help you to get the most from your purchase.
Tip
Downloading the example code for the book
Visit https://www.packtpub.com//sites/default/files/downloads/4527_Code.zip to directly download the example code.
The downloadable files contain instructions on how to use them.
Errata
Although we have taken every care to ensure the accuracy of our content, mistakes do happen. If you find a mistake in one of our books — maybe a mistake in the text or the code — we would be grateful if you would report this to us. By doing so, you can save other readers from frustration and help us improve subsequent versions of this book. If you find any errata, please report them by visiting http://www.packtpub.com/support, selecting your book, clicking on the let us know link, and entering the details of your errata. Once your errata are verified, your submission will be accepted and the errata will be uploaded on our website, or added to any list of existing errata, under the Errata section of that title. Any existing errata can be viewed by selecting your title from http://www.packtpub.com/support.
Piracy
Piracy of copyright material on the Internet is an ongoing problem across all media. At Packt, we take the protection of our copyright and licenses very seriously. If you come across any illegal copies of our works, in any form, on the Internet, please provide us with the location address or website name immediately so that we can pursue a remedy.
Please contact us at <copyright@packtpub.com> with a link to the suspected pirated material.
We appreciate your help in protecting our authors, and our ability to bring you valuable content.
Questions
You can contact us at <questions@packtpub.com> if you are having a problem with any aspect of the book, and we will do our best to address it.
Chapter 1. An Introduction to APEX
Oracle Application Express — APEX for short, or by its former name HTML DB is a declarative, Web-based RAD (Rapid Application development) tool. It is used to develop native Web-based, data centric applications.
Let's clarify some of these terms, and understand what they mean in the APEX context.
Web-based
The term Web-based appears in the description of both the development tool and its product — the APEX application. We are using a Web browser to both develop and run our applications. The advantages are obvious. Web browsers are installed, almost by default, on most of the workstations we are using, independently of the workstation hardware or operating system. It means that on the client side, we don't need anything else to start developing with APEX, or to run APEX applications. Moreover, it means very easy access to our applications, both internally — using Intranet — or externally, using the Internet If we add all the modern smart phones and other PDAs on the market today, which include built-in Web browsers, we'll come to the conclusion that the range of options to access our APEX applications is very wide.
Another important advantage when using a Web browser is the ability to free us from hardware and local operating system dependencies. As the APEX Application Builder actually generates HTML code, we (as developers) don't have to worry about the hardware specifications, or the local operating system our end users will be using, to run our APEX application. As long as they have access to an HTML supporting Web browser, we are covered.
However, Web based application development can also be a drawback. Unfortunately, not all Web browser manufacturers have fully adopted all the international standards in this field. As a result, there are cases in which different Web browsers will display the same code page differently. The variety of Web browsers in the market today, like Internet Explorer, Firefox, Chrome, Opera and Safari, just to name a few, support and implement HTML, XHTML, CSS and JavaScript versions and levels, in different ways and styles. There are known cases where even the same Web browser brand, but in different versions, or across local operating systems, delivers different results with the same code. We need to be aware of this, and take actions to resolve it — if we want to ensure cross-browser compatibility code for our applications (which will apply to greater numbers of potential users). Sometimes we need to take hard decisions and waive the support of certain web browsers in order to keep our code simple and maintainable.
A list of supported Web browsers can be found in the APEX release notes. For version 3.2, which is the latest APEX version at the time of writing this book, it can be found at http://download.oracle.com/docs/cd/E14373_01/relnotes.32/e13365/toc.htm#BGBCEGBI
Native Web based
APEX, in all its previous forms, was always designed to operate in the Web environment. The final product of the APEX Application Builder is HTML code that can be run directly on any Web browser that supports the HTML 4.0 and above standard. APEX Application Builder also incorporates special features into generated applications, as a direct result of operating in the Web environment. Further on, we will discuss APEX architecture and its main features, but for now we will mention session state and Optimistic Locking, as distinguished Web environment features which help us overcome the stateless nature of this environment.
The APEX Application Builder fully supports CSS (Cascading Style Sheets) and JavaScript, as integrated components of APEX applications. That includes built-in CSS files as part of a wider page layout and format mechanism, which we'll address later in the book, and a JavaScript library. The JavaScript library also includes, among a variety of general and APEX related functions, an AJAX (Asynchronous JavaScript and XML) framework. This allows even novice developers to utilize this advanced technology, and produce high quality applications, compatible with the latest trends in the market like Web 2.0, etc.
Data Centric
APEX was designed to produce applications that store, retrieve, manipulate, and display data, from Oracle Databases. This means that if your application's main logic doesn't revolve around data manipulation, it may be that APEX is not your optimal application development tool. However, if data manipulation is at the heart of your application, APEX could be your best bet.
APEX is actually a collection of PL/SQL packages, which live
inside the Oracle database. It means that APEX automatically inherits all the outstanding features, often mentioned with regards to the Oracle database environment: high performance, robustness, reliability, enhanced security, scalability, and more. In addition, APEX can natively utilize the very rich SQL and PL/SQL environment, including the built-in packages that the Oracle database has to offer, and use them to manipulate the data in the optimal ways a RDBMS can offer.
Moreover, APEX can utilize special functionality features that are included in the various database versions and editions, like Oracle XML DB, Oracle Text, and Oracle Multimedia.
Another advantage in this context is that, like the client side which relies on Web browsers to gain hardware independence, (alongside operating system independence), the APEX engine relies on the database platform for the same purpose. As long as we have a proper running version of an Oracle database, starting with Oracle database 9.2.0.3 and above (including the free version, Oracle XE), we can ignore the hardware and operating systems aspects of the server.
A declarative development tool
APEX is a declarative tool. It means that we, as developers, concentrate more on the What needs to be done
, and less on the How to do it
. Think, for example, about SQL. In a SELECT statement, when we are using the ORDER BY clause, we are actually telling the database what we need — a sorted data result set, but we don't tell it how to actually do the sorting. In fact, the entire SELECT statement, just like SQL itself, is a declarative statement. In APEX, we are telling the Application builder that we need to lay out an HTML item on the page, or retrieve certain records from the database, and the APEX engine generates the proper code for doing that, both on the server side and the client side.
Working declaratively in APEX means that we are not generating traditional (3 GL) program code. Instead, we are working with a series of wizards and property sheets, which allows us to define all the metadata we need in order to generate an application page's code. APEX includes sets of pre-defined wizards, supported HTML objects, supported database objects and data types, page rendering options and procedures, after submit processes and DML options, navigation and branching options, and more. We can use all of these to declare our application page's forms, reports, charts, etc., with their layouts and application/business logic. The APEX engine translates it all into an HTML code for the client side, and SQL and PL/SQL code for the server side. Whenever the predefined options don't give us the exact solution we need, APEX allows us to use our own SQL and PL/SQL code for the server side, and HTML/XHTML, CSS, and JavaScript code, for the client side. As mentioned before, it also allows us the use of AJAX technology, within a built-in framework, to query the server side, while running on the client side without submitting the page.
RAD tool
APEX provides us with a full development environment, allowing us to develop, test, and deploy our applications. APEX includes three modules: Application Builder, SQL Workshop, and Utilities.
Application Builder
The Application Builder allows us to develop and test our applications, without leaving the development environment. While working in the Application Builder, it automatically adds a dedicated developer toolbar to every page in our application, making it very easy to toggle between the running page and its code within the Application Builder. The developer toolbar also provides the developer with more options to assist in the development process, like checking session state, running in debug mode, etc. Moreover, the Application Builder allows us to manage, monitor, and control all the application's shared components, supporting objects, and deployment scripts. In addition, the Application Builder includes tools for exporting and importing applications and application components.
Note
Some of these terms might be unfamiliar to you at this stage, but don't be alarmed as we'll cover them all further down this book.
SQL Workshop
The SQL Workshop includes a series of tools which allow us to create, manage, and inspect our application data infrastructure. This including wizards to create and manipulate database objects, scripts and queries, and the SQL Commands facility, which allows us to run SQL and PL/SQL code in the context of APEX. This can be very useful, as some of the APEX features and APIs are not available outside the APEX context (e.g. SQL*Plus) for security reasons.
Utilities
The Utilities module includes a number of tools to help us manage the APEX development-surrounding environment, especially regarding the database. It includes tools for the import and export of data into and out of the database, the APEX data dictionary, and several database monitoring and reporting tools.
The APEX environment also includes a special administration module, which allows us to define the APEX working environment, developers, and users.
All these modules include declarative, wizard-based tools, which makes the application development cycle a very rapid one. These development environment allows us to quickly define a prototype of our application, and then expand it with all the finer details.
Globalization, localization, and NLS
APEX was designed with globalization, localization, and NLS (National Language Support) in mind. To begin with, the APEX interface is translated into nine languages, other than English. The languages are German, Spanish, French, Italian, Japanese, Korean, Brazilian Portuguese, Simplified Chinese, and Traditional Chinese.
APEX can utilize all the globalization, localization, and NLS features that the Oracle database has to offer, and add some of its own. The Application Builder Shared Components module includes a Globalization section, which allows us to define relevant parameters for globalization, localization, and NLS. It also includes a wizard to guide us through the process of translating our entire application into secondary languages.
APEX takes into account the client side NLS settings when dealing with the import and export of data into and out of the database. It also takes into account the database NLS settings, in order to properly sort data, display dates, number format (e.g. decimal point or comma) and the local currency, among others.
APEX supports the XLIFF (XML Localization Interchange File Format) standard, which allows us to translate an entire APEX application into any language we need, without re-writing the application code. APEX provides a built-in mechanism to simultaneously run the same application in multi language User Interfaces, giving us several options to determine the application language, including the option of matching the APEX application language to the end user's browser language preferences. Moreover, if we need to support a language which is not included in the native supported languages list, this mechanism will allow us to specifically translate the built-in APEX engine strings and messages into that language, allowing us to develop and support APEX application in any language that our database can support.
Tip
Since version 2.0, the client side communicates with the server side, using the AL32UTF8 character set, regardless of the database character set. Due to some of the advanced technologies APEX is using (like AJAX), this setting is mandatory. If you are going to work in a multi-language environment, it would be optimal to set your database character set to AL32UFT8. This will ensure a true multi-language environment, while eliminating the need to employ any character set conversions between the client and the server. Oracle is advising users to use AL32UTF8 as their default choice for the database character set.
Throughout this book, we will devote special attention to globalization, localization, and NLS issues in the APEX environment, including RTL (Right-To-Left) support examples.
APEX architecture
The core of APEX is a collection of PL/SQL packages, written using the PL/SQL Web Toolkit, and several hundred database tables, in which all the metadata regarding developed applications are stored.
The PL/SQL Web Toolkit is a collection of Oracle supplied database packages, which allow us to produce Web page code, directly in the database, using PL/SQL stored procedures. During run-time, and in real-time, the APEX engine queries the metadata tables and retrieves all the relevant information for a specific application page. Next, it uses the PL/SQL Web Toolkit to generate the application page's HTML code. This page's code also includes the proper linkage to the CSS and JavaScript resources that support proper page functionality, layout, and styles. Some internal tests run by the APEX development team, showed that the APEX engine performs all the real-time rendering processes, with an average overhead of less than 0.04 seconds per page. Pretty impressive in my opinion, and the APEX engine includes a server side caching mechanism, that can help us reduce that further.
It is important to understand that although the final product of APEX Application Builder is an HTML page code, no static files with any related HTML file extensions, are stored on the server. Each page is created upon demand a specific URI request. That, of course, gives us considerable flexibility with constructing the pages, e.g. the same page can be displayed somewhat differently for various users, or include conditioned components, depending on the user's security privileges, or role in the company, etc.
So, on one side we have the APEX engine, a collection of PL/SQL packages, running inside an Oracle database, and on the other side we have the application user, using a Web browser. How can we connect, and communicate between the sides? As we are in a Web environment, we are going to use the HTTP protocol, implemented in two technologies.
The first way is by using the Oracle HTTP Server (OHS) technology. OHS is based on the well-known (open source) Apache HTTP server, in its 1.3 or 2.0 versions. What interests us, for the APEX environment, is the Oracle plug-in module for this HTTP server, called mod_plsql.
OHS, with the mod_plsql module, is located between the client's Web browser and the Oracle database server. The mod_plsql module communicates with the database by mapping the Web browser request into PL/SQL stored procedures in the database.