Tải bản đầy đủ (.pdf) (644 trang)

Oracle Application Express 3.2 The Essentials and More potx

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (13.43 MB, 644 trang )

Oracle Application Express 3.2
The Essentials and More
Develop Native Oracle database-centric web
applications quickly and easily with Oracle APEX
Arie Geller
Matthew Lyon



P U B L I S H I N G
professional expertise distilled
BIRMINGHAM - MUMBAI
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 ()
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 eld 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 Certied Masters in the world ( />technology/ocm/aagarwal.html
). He is also a certied Project Management
Professional from PMI, USA & Oracle Certied 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
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 .
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 nancial 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.
Table of Contents
Preface 1
Chapter 1:
An Introduction to APEX 7

Web-based 7
Native Web based 8
Data Centric 9
A declarative development tool 9
RAD tool 10
Application Builder 10
Utilities 11
Globalization, localization, and NLS 11
APEX architecture 12
Summary 14
Chapter 2: What we need to know to effectively use APEX 15
SQL and PL/SQL 16
HTML and CSS 16
JavaScript 16
HTML 17
The DOM (Document Object Model) 17
DOM walking 19
DOM methods 19
DOM events 20
The APEX context 21
CSS 21
The cascading effect 22
The style sheets 22
CSS properties 24
CSS selectors 24
Table of Contents
[ ii ]
The !important keyword 27
The APEX angle 28
Where to store our external CSS file? 28

How to load our CSS code? 29
Globalization and NLS 29
JavaScript 30
JavaScript features 30
Object-Oriented 30
Case sensitive 31
JavaScript variables 31
JavaScript arrays 32
JavaScript operators 32
Blocks of code 34
JavaScript functions 35
The APEX angle 35
Where to store our external JavaScript file? 36
How to load our external JavaScript file? 36
Globalization and NLS 37
PL/SQL and JavaScript (advanced) 38
JavaScript and server-side resources (advanced) 38
The APEX JavaScript API 39
Summary 41
Chapter 3: APEX Basic Concepts 43
Session state 44
Session state firing points 44
Session state and the application page life cycle 45
Session state and the page rendering phase 45
Session state and the page processing phase 48
Manually saving to session state 48
Using the APEX_UTIL.SET_SESSION_STATE API procedure 48
Session state and AJAX 49
Using the f?p URL notation 50
Referencing persistence session state 50

Session state and stored procedures 51
Session state scope and persistence 53
Reviewing session state from the application builder 54
Substitution strings 55
APEX engine built-in substitution strings 55
Substitution strings that contain data 56
Substitution strings that contain HTML code 58
Application substitution strings 58
Application or page items 59
Referencing substitution strings 59
Using the #ITEM# notation 59
Using the &ITEM. notation 60
Referencing substitution strings in SQL and PL/SQL code 61
Table of Contents
[ iii ]
Shortcuts 62
Defining a shortcut 63
The name field 64
The type field 64
The shortcut field 64
Shortcuts availability 65
Themes and templates 66
Themes 66
Templates 68
Page templates 68
Region templates 69
Reports templates 70
Breadcrumbs templates 70
List templates 70
Calendar templates 70

Label templates 70
Button templates 70
Popup List Of Values template 70
Templates and the APEX upgrade process 71
Theme, templates, and good practice 71
The f?p URL notation 71
The p segments 71
1—App 72
2—Page 72
3—Session 73
4—Request 73
5—Debug 74
6—CC (Clear Cache) 74
7—itemName 75
8—itemValue 75
9—PR (Printer friendly) 76
Item values including the colon character 76
APEX multi-lingual support 77
The APEX built-in translation mechanism 77
Single language applications 77
Single application with Multi-lingual user interface 78
National Language Support (NLS) in this book 78
Summary 78
Chapter 4: The Application Builder Basic Concepts and
Building Blocks 79
The APEX Workspace 79
Start working with APEX 82
Logging in to the APEX IDE 83
Table of Contents
[ iv ]

The APEX IDE home page 84
The APEX Application Builder 85
The Application Builder home page 85
The Import button 86
The Create button 87
The Application IDE home page 88
The Pull Down menu section 89
The application pages section 90
The Page component 92
The Page Rendering column 94
The Hide/Show icon bar 94
The Page Processing column 95
The Hide/Show icon bar 95
The Shared Components column 95
The Hide/Show icon bar 96
The Action Bar 96
Creating an application page 97
Editing the Page Definition page 99
The Page section 99
A page region 102
Creating a page region 102
Editing a page region 104
Summary 107
Chapter 5: APEX Items 109
Naming conventions and rules 109
Oracle Identifiers naming rules 109
Case sensitive APEX item names 110
Application items 110
Application items and security issues 111
Referencing application items 112

Application items and JavaScript 112
Page items 112
The Name section 113
The Name field 113
The Display As field 113
The Displayed section 114
The Sequence field 114
The Region field 114
The layout fields 114
The Label section 118
The Label field 118
The Horizontal / Vertical Alignment field 118
The Template field 119
The HTML Table Cell Attributes field 119
Table of Contents
[ v ]
The Element section 120
The item dimension fields 120
The HTML Form Element Attributes field 121
The Form Element Option Attributes field 121
The Pre/Post Element Text fields 121
The Source section 122
The Source Used field 122
The Source Type field 123
Maintain session state 124
Source value or expression 125
Post Calculation Computation 125
Format Mask 125
The Default section 126
The List of Values section 127

Static LOV 127
Dynamic LOV 129
Defines LOV 130
The Security section 131
The Conditions section 132
The Condition Type field 132
The Expression 1 / Expression 2 fields 133
The Read Only section 134
The Help text section 135
The Configuration section 135
The Comments section 135
APEX pre-defined item types 135
Text based items 135
Multi-option based items 138
Special functionality items 144
Creating APEX items programmatically 147
Summary 147
Chapter 6: APEX Buttons 149
Button styles 149
HTML Button 150
Image based button 150
Template Driven button 151
Button positioning 152
Create new button(s) 153
Button position 154
Create a button in a region position 155
Button attributes 155
Image attributes or template (not for HTML) 157
Table of Contents
[ vi ]

Display properties 157
Branching (optional) 158
Conditional display 158
Create a button displayed among this region's items 159
Edit a button 160
The REQUEST feature 160
The REQUEST scope 160
Referencing REQUEST 161
Condition by REQUEST 162
Using JavaScript with "among this region's items" buttons 162
Re-visit the Buttons section 164
Summary 165
Chapter 7: APEX Computations 167
Create a page level computation 167
Compute item 168
Sequence 168
Computation point 168
Page Rendering computation points 168
Page Processing computation point 169
Computation type 169
Computation 171
Condition 171
Create an application level computation 172
Computation item 172
Frequency 172
Edit computations 173
Computations and Session State 173
Summary 174
Chapter 8: APEX Validations 175
Data validation 175

How APEX validation works? 176
Creating a new validation 177
Validation level 178
Create multiple not null validations 178
Item 179
Validation method 179
SQL 180
PL/SQL 181
Item Not Null 184
Item string comparison 184
Regular Expression 185
Table of Contents
[ vii ]
Sequence and Name 186
Sequence and Validation Name 186
Error Display Location 186
Validation 188
Conditions 189
Page level validation 190
Edit validations 190
Client-side validation 191
Implementing client-side validation 191
Client-side versus server-side validations 192
Summary 192
Chapter 9: APEX Processes 193
Application Processes 194
Creating a new Application Process 194
Name 195
Sequence 195
Point 195

Source 196
Error message 197
Conditionality 198
Edit Application Processes 198
Localization and Application Processes 199
Page level processes 200
Creating a new page level process 200
Process Type 201
PL/SQL 201
Reset Pagination 202
On Demand 204
Session State 204
Data manipulation 205
Web Services 209
Form Pagination 210
Close pop-up window 210
Edit page level process 211
Source: Automatic Row Processing (DML) 211
On Demand processes 213
Summary 213
Chapter 10: APEX Branches 215
Application flow 216
Creating a new branch 216
Branch point 217
Table of Contents
[ viii ]
Branch type 218
Branch to Function Returning a Page 218
Branch to Function Returning a URL 219
Branch to PL/SQL procedure 219

Branch to page 220
Branch to page accept processing (not common) 221
Branch to Page Identified by Item (Use item name) 221
Branch to page or URL 222
Branch to URL identified by item (Use item name) 224
Sequence and branch conditioning 224
Edit branch 225
Other ways to control the application flow 226
Branch with Buttons 226
Branch with PL/SQL 226
Branch with JavaScript 226
Branch with an item 227
Navigational aids 227
Summary 227
Chapter 11: APEX SQL Workshop 229
Navigating around the SQL workshop 230
Object Browser 232
Exploring the database with the Object Browser 232
Creating new database objects 234
UI defaults 238
Creating a package 239
SQL Commands 239
The SQL Commands code area 240
The SQL Commands results area (Display Pane) 242
SQL Scripts 244
Query Builder 245
The Query Builder working area (Design Pane) 246
The Query Builder results area (Output Pane) 248
Summary 249
Chapter 12: APEX Forms 251

Sources for creating a form 252
Creating a new form 254
The form primary key 255
The form items 257
The form DML options 258
The form branches 259
Table of Contents
[ ix ]
A new form has been created 259
The Page Rendering phase 260
The items section 261
The Page Rendering Processes section 263
The Page Processing phase 263
The Validations section 264
The Page Processing Processes section 264
The Branches section 266
Manually creating an APEX form 266
Summary 267
Chapter 13: APEX Reports 269
Report regions 269
Creating a simple report using a wizard 270
Start the report region wizard 271
Region type 271
Report implementation 272
Display attributes 272
SQL source 273
Query Builder 274
Report attributes 274
Conditional display 276
Wizard completion 276

Modifying a report manually 277
Editing a Region Definition 278
The identification section 278
The user interface section 278
The source section 279
The caching section 280
The header and footer section 280
Editing Report Attributes 281
The column attributes section 281
The layout and pagination section 283
The messages section 284
The report export section 284
The break formatting section 285
The external processing section 286
Editing Column attributes 287
The column definition section 287
The column formatting section 287
The tabular form element section 289
The column link section 290
Conditional display 290
Table of Contents
[ x ]
Editing print attributes 290
The printing section 291
The page attributes section 292
The page header section 292
The column heading section 292
The report columns section 292
The page footer section 293
Enabling PDF printing 293

Building a custom report row layout template 294
Building a parameterized report 295
Charts 296
Summary 297
Chapter 14: Tabular Forms 299
What is a Tabular Form? 299
Using a wizard to create a Tabular Form 300
Start the Report Region Wizard 300
Region type 300
Form implementation 301
Identify Table/View Owner 301
Identify Table/View Name 302
Identify columns to display 302
Identify Primary Key 304
Primary key source 304
Updateable columns 306
Page and region attributes 306
Button labels 307
Branching 308
Confirmation 308
Wizard completion 309
Show me the Tabular Form 310
What does the Tabular Form wizard add to my page? 310
Advanced note on the Update process 312
How does the Tabular Form wizard organize the data on a page? 313
The client side 314
The server side 316
Report regions revisited 317
Validating the Tabular Form 319
Enhancing Validation Errors Messages 321

Manually building a Tabular Form 331
Displaying the Tabular Form 332
APEX_ITEM API 333
Rendering the Tabular Form 335
Table of Contents
[ xi ]
Referencing and validating Tabular Form items 337
Using checkboxes 338
DML on the Tabular Form 341
Delete 341
Update 342
Insert 345
Summary 347
Chapter 15: Calendars 349
Calendar region 349
Using a wizard to create a calendar 350
Start the calendar region wizard 350
Region type 350
Calendar implementation 351
Region attributes 352
Calendar source 353
Define columns 354
Viewing the calendar 354
Modifying a calendar manually 355
Region Definition 356
Region Source 356
Calendar Attributes 357
The Calendar Display section 357
The Display Attributes section 358
The Column Link section 359

The Day Link section 359
Summary 360
Chapter 16: Interactive Reports 361
Interactive Report Regions 361
Select Columns 363
Filter 363
Sort 365
Control break 365
Highlight 366
Compute 367
Aggregate 368
Chart 368
Flashback 369
Save report 370
Reset 370
Download 370
Converting an Existing Report Region 371
Table of Contents
[ xii ]
Create an Interactive Report using a wizard 371
Start the Interactive Report Region Wizard 372
Region Type 372
Report Implementation 372
Display attributes 373
Source 374
Conditional Display 374
Wizard completion 375
Manually modifying an Interactive Report 375
Report Attributes 376
Column Attributes 376

Column Groups 377
Default Report Settings 377
Pagination 378
Search Bar 378
Download 379
Link Column 380
Advanced Attributes 381
Column attributes 381
Linking to Interactive Reports 383
Summary 384
Chapter 17: AJAX with APEX 385
The AJAX technology 386
The XMLHttpRequest object 386
Communication 386
Data format 387
AJAX implementation in APEX 387
AJAX support on the client side 388
The htmldb_Get object 388
1—obj 388
2—flow 389
3—req 390
4—page 390
5—instance 390
6—proc 391
7—queryString 392
Code examples 392
The htmldb_Get methods 394
.Add(name,val) 394
.AddParam(name,val) 395
General remarks 396

.get(mode, startTag, endTag) 397
.GetAsync(pVar) 402
Table of Contents
[ xiii ]
Namespace for the APEX AJAX framework 404
AJAX support on the server side 405
Application on-demand PL/SQL process 405
Stored (packaged) procedure 406
Handling errors in the AJAX process 407
Debugging a failed AJAX process 407
Examples of using AJAX in APEX 408
Multiple calendars on a single application page 408
The calendar main page (page xx) 409
The small calendars page (page yy) 411
Checkbox persistence in Tabular Forms (Reports) 413
Report on CUSTOMERS 414
The AJAX client-side JavaScript functions 416
The AJAX server-side processes 421
Summary 423
Chapter 18: Globalization and Localization With
APEX Applications 425
A brief introduction to Globalization and Localization 426
Globalization 426
Localization 427
Native IDE support of multiple languages 427
Loading another language into APEX IDE 428
Unloading the APEX IDE translated language 429
Loading another language into APEX Runtime Environment 430
Multi-language support 430
How do we start Globalization support? 431

Setting the APEX application language 431
Date format 433
Adding or editing Globalization 434
Load Data—Localization 436
Translating Text Messages 437
The Text Messages translation wizard 438
Manage the Text Messages repository 440
Using APEX Shortcut with Text Messages 442
Dynamic Translations 444
Using the Dynamic Translations repository 445
Using the APEX_LANG APIs 446
APEX_LANG.MESSAGE 446
APEX_LANG.LANG 449
Multi-lingual applications 451
The translation mechanism home page 452
1—Application Language Mapping 452
2—Seed and export 455
Table of Contents
[ xiv ]
3—Translating the text 458
4—Import and publish the translation 460
Editing the Translatable Text repository 462
Running translated applications 463
Deploying translated applications 463
Summary 465
Chapter 19: Right-To-Left Support in APEX 467
Why we need special Right-To-Left support 467
Basic Right-To-Left scenarios 469
Right-To-Left as a single language 470
Right-To-Left as a translation language 470

APEX templates with Right-To-Left support 471
Page templates 471
The Header section 471
The Body and Footer sections 474
Tab attributes sections 475
Button templates 475
Popup List of Values Template 476
All the other template types 478
The APEX Shuttle item 478
Labels and input fields alignment 482
Date and time 483
Summary 483
Chapter 20: Deploying APEX Applications 485
What do we need to deploy? 485
Supporting Objects 486
Messages 488
Prerequisites 490
Substitutions 492
Build Options 492
Validations 492
Create/Update a Validation 493
Install 494
Create Script 494
Script Attributes 495
Define Script 496
Create Scripts to Install Files 496
Upgrade 497
Deinstallation 498
Export 498
Exporting an Application 498

Exporting a page 500
Table of Contents
[ xv ]
Exporting components 500
Components 501
Components by Page 502
Application Attributes 503
Build Option Status 504
Export Components 504
Importing an application 505
Start the Import Wizard 505
Specify File 505
File Import Confirmation 506
Install 506
Supporting Objects installation 507
Command line export utility 508
Summary 509
Chapter 21: The APEX Runtime Environment 511
What is the APEX Runtime Environment? 511
Setting up a Runtime Environment 512
Managing the APEX Runtime Environment 512
Installing applications 512
APEX_INSTANCE_ADMIN API 513
Viewing APEX reports 514
Oracle SQL Developer 514
Summary 516
Chapter 22: Security 517
APEX security features overview 517
Authentication Schemes 518
Adding an Authentication Scheme 520

Creation method 521
Selecting a pre-built Authentication Scheme 521
Adding a login page 522
Specifying LDAP settings 522
Authentication Scheme name 523
Changing the current Authentication Scheme 523
Custom Authentication Scheme 524
Authentication reports 526
Authorization Schemes 527
Create an Authorization Scheme 527
Creation method 528
Authorization Scheme details 528
Table of Contents
[ xvi ]
Assigning Authorization Scheme to pages, regions, and items 530
Resetting Authorization Scheme results 531
Authorization Reports 531
Session state protection 531
Security Attributes 534
Authentication 534
Authorization 535
Database Schema 535
Session Timeout 535
Session State Protection 536
Virtual Private Database 536
Summary 536
Chapter 23: Application Conversion 537
APEX application conversion 537
Planning and understanding the application 538
APEX Application Migrations 538

Creating an APEX workspace 539
Converting Microsoft Access applications 540
Exporting Microsoft Access metadata 540
Migrating the Access database to Oracle 542
Creating a repository 543
Capturing Microsoft Access exported XML 543
Converting to an Oracle Model 544
Generating schema 545
Creating an Oracle database 546
Creating a Migration Project 546
The Migration Project page 547
Generating the application 549
Select Application Objects 549
User Interface 551
Confirmation 552
Converting Oracle Forms applications 552
Converting Oracle Forms to XML 553
Database 553
APEX Migration Project 554
Reviewing and editing application metadata 555
Annotations 557
Including objects in conversion 558
Generating the application 558
Application name 559
Create Pages 559
Table of Contents
[ xvii ]
User Interface 562
Confirmation 562
What's left to do? 563

Summary 564
Chapter 24: APEX Best Practices 565
Don't re-invent the wheel 566
Be innovative when necessary 567
Learn the APEX IDE 567
The Drag and Drop Layout wizard 567
The Action Bar 568
The Page Definition view options 568
Setting up workspaces 570
Application ID 571
Page numbering and page groups 572
Use Oracle naming conventions 573
Use bind variables 573
Don't hardcode, use Substitution Strings 574
Use PL/SQL packages 574
Protect your business logic secrets 574
Re-useable code 575
Shared Components 575
Page Zero 575
Pre-defined and built-in resources 575
User Interface Defaults 576
Never change the provided APEX resources 576
Themes and Templates 576
JavaScript and CSS 577
Never trust the end user 578
Client-side validation 578
Don't rely on database constraints 578
Create your own restore point 578
Multi-user environment 579
Multi-lingual environment 580

Team development 580
Lock your pages 580
Version control 581
Document development standards 581
Thou shall enter comments 582
APEX views (APEX dictionary) 583
Table of Contents
[ xviii ]
APEX Application Reports 583
APEX Runtime-only version 585
Backup, backup, and more backup 585
Summary 586
Appendix: APEX Installation, Upgrade, and Configuration Tips 587
Obtaining APEX 587
Reading the relevant documentation 587
Back up your database and APEX applications 588
Use AL32UTF8 in your DAD 588
PL/SQL Web Toolkit 589
EPG – Embbeded PL/SQL Gateway 590
Enabling FTP on EPG 590
Enabling remote access to EPG 590
EPG versus OHS 591
Utilizing static files caching 591
Obfuscate your DAD file 592
Upgrading an APEX Instance 592
Copy the new images directory 594
Themes and Templates in the Upgrade process 594
Summary 597
Index 599

×