Friday, June 07, 2013

The Winds of Change....for Oracle Application Express 5.0

A few changes are planned for Oracle Application Express 5.0.

Beginning with Oracle Application Express 5.0, the minimum database version for Oracle Application Express will be Oracle Database 11.1.0.7.  Extended Support for Oracle Database 11.1.0.7 ends in August 2015, per the Lifetime Support Policy, and while only roughly 10% of our APEX customers are still using Oracle Database 11.1, this is still considered a supported product for those customers on Extended Support.

Also beginning with Oracle Application Express 5.0, running APEX-built applications using Internet Explorer 6 will no longer be supported.  This was primarily precipitated by the inclusion of jQuery UI 1.10.3 in Oracle Application Express 5.0, but quite honestly, the rest of the world is moving on, and so must Oracle Application Express.

We are also considering dropping support for Internet Explorer 7 to develop applications in the Application Builder, but this is still being evaluated and no final determination has been made.  Feel free to sound off if you believe this would cause you or your customers any significant pain.

Friday, May 24, 2013

Image Prefix changes in Oracle Application Express 4.2.2

Most often, patch sets for Oracle Application Express are used to correct defects (i.e., fix bugs) identified in a release.  It's rare for features to be introduced or behavior to change.  But in the case of Oracle Application Express 4.2.2 and later, there is a change in behavior that is worth discussing, namely, the change in behavior to the Image Prefix application attribute.  This has been raised by Oracle Support three times in the past couple weeks, so we have certainly created some confusion amongst our customers.


In a Nutshell

  • In Application Express 4.2.2, if your image prefix application attribute equals the instance-wide image prefix attribute, it will be set to null in your application.
  • At runtime, if the image prefix application attribute is null, the APEX engine will use the instance-wide image prefix attribute as your application's image prefix.
  • This was done to facilitate ease of movement of applications across varying instances.


Background

Every instance of Oracle Application Express has an instance-wide image prefix.  This image prefix is used by Oracle Application Express to specify the directory location of the Application Express images directory.  This image prefix ultimately correlates to a virtual directory or equivalent on the Web server, and this virtual directory directly maps to the 'images' directory shipped with an APEX distribution and staged on the Web server.  This image prefix is specified at APEX installation time, but it can be adjusted later if necessary.  This image prefix is usually always /i/.

For example, if you go to the Login page of apex.oracle.com and look at the source of that page, you'll see numerous references to images and files of the form /i/...  The HTML for the logo in the upper left is:

<img alt="Application Express" height="20" src="/i/apex_ui/apexlogo.png" width="280" />


There is a virtual directory on the Web server of apex.oracle.com, which maps /i/ to a virtual directory.  This virtual directory maps to a physical directory on the Web server, which contains the entire 'apex/images' directory from the APEX distribution.

The 'apex/images' directory changes from release to release.  The 'apex/images' directory from an APEX 4.1 release is only usable with APEX 4.1.  The 'apex/images' directory fron an APEX 4.2 release is only usable with APEX 4.2.  You can try and use it with APEX 4.1, but you'll definitely see odd results, if anything at all.

The image prefix is also an attribute of the user interface of an application.  This image prefix is used during the runtime of the APEX application, and is used to determine the image prefix for that application.  99% of the time, this image prefix application attribute equals the instance-wide image prefix (typically, /i/), but it could be different too.  It could even be wrong!  If you change your image prefix attribute to '/foobar/' and then run your application, you'll see that all the references to images and static files in the HTML source of your application all reference '/foobar/'.  I suspect you'd get a page with broken images and references everywhere, and in the worst case, you may get what appears to be a blank page.


Using the Image Prefix

Now here's where it gets interesting.  Even though the documentation recommends an image prefix of /i/, it isn't absolutely mandatory.  So let's say that for my APEX 4.1 instance, I use an image prefix of /i_old/, and for my APEX 4.2.2 instance, I use an image prefix of /i_new/.  And also let's assume that these instances use totally distinct Web servers.  If I export an application from my APEX 4.1 instance and import it into my APEX 4.2.2 instance, I will need to update the image prefix application attribute before I can run it in the APEX 4.2.2 instance.  Why is that?  Because my application image prefix is /i_old/, and that isn't defined on the Web server for my APEX 4.2.2 instance.

For those who have participated in the Application Express Early Adopter program before, you'll remember that the image prefix was /i_ea/ or something like that.  When you imported your existing APEX application into the Early Adopter instance, you had to adjust the image prefix of your application to be equal to the instance-wide image prefix, /i_ea/.

For enterprises which host multiple APEX instances via one Web server, they have an equally difficult problem.  They may have image prefixes of /i40/, /i41/, /i42, and wish to freely move and test applications without having to adjust the image prefix attribute every time they import an application.  It's cumbersome and unnecessary.


What has changed in APEX 4.2.2 and Later

Upon upgrade to Application Express 4.2.2 or application of the 4.2.2 patch set, the image prefix attribute of applications will be set to null if their value is equal to the instance-wide image prefix.  In the simplest example, if the instance-wide image prefix is /i/ and your application's image prefix attribute is /i/, the application attribute will be set to null in 4.2.2.

If you try to edit the image prefix application attribute and set it to the instance-wide image prefix (e.g., /i/), it won't be saved and it will be null.  Only if you change it to something other than the instance-wide image prefix will a non-null value be saved.

The utility script to adjust the image prefix instance-wide setting, apex/utilities/reset_image_prefix.sql, now only adjusts the instance setting and nothing more.  No image prefix application attributes are touched.  It's unnecessary, because a null image prefix application attribute means "use the setting of the APEX instance".

Now, if you use a non-standard image prefix for your APEX instance, you can import your application into any other instance without having to be aware of what the image prefix is on the target instance.


Now with that said.....I wish you a nice Memorial Day.

Friday, April 26, 2013

Oracle Application Express 4.2.2 now available


Oracle Application Express 4.2.2 is now released and available for download.  If you wish to download the full release of Oracle Application Express 4.2.2, you can get it from the Downloads page on OTN.  If you have Application Express 4.2 or 4.2.1 already installed, then you need to download the APEX 4.2.2 patch set from My Oracle Support.  Look up patch number 16277995.

As is stated in the patch set note that accompanies the Oracle Application Express 4.2.2 patch set:

  • If you have Oracle Application Express release 4.2 or 4.2.1 installed, download the Oracle Application Express 4.2.2 patch set from My Oracle Support and apply it.  Remember - patch number 16277995.
  • If you have Oracle Application Express release 4.1.1 or earlier installed (including Oracle HTML DB release 1.5), download and install the entire Oracle Application Express 4.2.2 release from the Oracle Technology Network (OTN).
  • If you do not have Oracle Application Express installed, download and install the entire Oracle Application Express 4.2.2 release from the Oracle Technology Network (OTN).

As usual, there are a large number of issues corrected in the Application Express 4.2.2 patch set.  You can see the full list in the patch set note.

Like all patch sets for Oracle Application Express, there are a large number of functional issues corrected in this release.  But also with the APEX 4.2.2 patch set are a large number of updates to the packaged applications - improved user interface, improved layout and functionality, improved accessibility, improved security, and a fair number of functional bugs corrected.  Also in APEX 4.2.2 is a new often-requested application called Survey Builder.  This application was architected by John Snyders, who did a masterful job in its creation.  I truly think Survey Builder has the potential to be a "killer" APEX application.


Tuesday, April 09, 2013

Great Lakes Oracle Conference - May 14/15, 2013

The Great Lakes Oracle Conference will be held on May 14/15, 2013 at the Cleveland State University campus.  Registration includes two full days of training with more than 30 sessions to choose from, vendor exhibits to peruse, lunches, and a networking reception.  And if that weren't enough, there will be keynote presentations from Chris Date and Tom Kyte.

There are actually three pre-conference workshops (at additional nominal cost) on three totally distinct topics - All About Binding from Tom Kyte, Oracle Performance Research Seminar from Craig Shallahamer, and Oracle Application Express - I Never Knew It Was So Easy! from me.  If you've wanted to get your feet wet with Oracle Application Express, this may be the workshop for you - completely hands on - building, tuning, debugging and monitoring APEX applications.  This is geared toward the beginner/intermediate developer - no knowledge of APEX is assumed.

I reviewed the list of presentations and presenters, and I'm convinced this is one of the highest quality events available in the Midwest (U.S.).  The early registration rate for the conference is $250 until April 12.

Friday, March 08, 2013

Invalid database objects on apex.oracle.com?

Most people are aware of apex.oracle.com, the demonstration instance of Oracle Application Express.  It's primarily used for people to "kick the tires" of APEX.  Last week alone, there were 810 new workspaces approved on this instance.

Changes are coming to apex.oracle.com - it's going to be consolidated onto other hardware and also Oracle Database Vault will be installed and implemented.  Part of the process of installing Oracle Database Vault includes running the script $ORACLE_HOME/rdbms/admin/utlrp.sql.  This script will attempt to recompile all invalid objects in the database.

As of today, 08-MAR-2013, there are 62,197 invalid database objects across all of the workspaces on apex.oracle.com - not that bad, considering there are 17,447 APEX workspaces and 17,984 workspace schemas.  However, it takes a long time to attempt to recompile 62,197 invalid database objects.  And this will only serve to dramatically increase the outage time for this instance.

Thus:

  1. A listing of all invalid database objects in the workspace schemas was computed today, 08-MAR-2013.
  2. A second listing of all invalid database objects in the workspace schemas will be computed again on 13-MAR-2013.
  3. All invalid objects contained in both reports will be immediately dropped with no chance of recovery (as the Recycle Bin will be purged).

Update March 12, 2013:  This drop and purge will no longer occur on 13-MAR-2013, nor at any time in the future.  We were able to make significant progress in the reduction in the number of invalid objects (reduced by 85%).  Thus, we're going to live with the additional outage time cause by this recompilation instead of dropping objects in workspace schemas.

Wednesday, January 23, 2013

Dude, Where Are My Buttons?

An interesting bug was reported the other day on the Oracle Technology Network discussion forum for Oracle Application Express.  The scenario is as follows:

1)  Download and install Oracle Application Express 4.2.1 anew.
2)  Install a translated version of Oracle Application Express
3)  Login to a workspace and navigate to SQL Workshop.

What should look like:



is actually displayed as:



Unfortunately, the buttons of SQL Workshop are not displayed when you install a translated version of Oracle Application Express 4.2.1.  [If you had Oracle Application Express 4.2 installed and downloaded/installed the Oracle Application Express 4.2.1 patch set from My Oracle Support, you would not encounter this issue.]

This problem can be remedied by downloading the patch set exception for Bug 16191354 from My Oracle Support and applying it to your APEX 4.2.1 instance.

Note - if you choose to install additional translated versions, it's safe to re-run the patch 16191354 after you've installed all translations.

Update:  As of January 29, 2013, the APEX 4.2.1 download was updated to correct this problem.  So if you download the apex_4.2.1.zip file (full distribution) after January 29, 2013, you should not encounter this problem and you can safely ignore this blog post.

Friday, December 14, 2012

Oracle Application Express 4.2.1 now available


Oracle Application Express 4.2.1 is now released and available for download.  If you wish to download the full release of Oracle Application Express 4.2.1, you can get it from the Downloads page on OTN.  If you have Application Express 4.2 already installed, then you need to download the APEX 4.2.1 patch set from My Oracle Support.  Look up patch number 14732511.

As is stated in the patch set note that accompanies the Oracle Application Express 4.2.1 patch set:

  • If you have Oracle Application Express release 4.2 installed, download the Oracle Application Express 4.2.1 patch set from My Oracle Support and apply it.  Remember - patch number 14732511.
  • If you have Oracle Application Express release 4.1.1 or earlier installed (including Oracle HTML DB release 1.5), download and install the entire Oracle Application Express 4.2.1 release from the Oracle Technology Network (OTN).
  • If you do not have Oracle Application Express installed, download and install the entire Oracle Application Express 4.2.1 release from the Oracle Technology Network (OTN).

As usual, there are a large number of issues corrected in the Application Express 4.2.1 patch set.  You can see the full list in the patch set note.

P.S.  Don't be alarmed when the patch set note refers to file p14732511_421_GENERIC.zip and the file you actually download from My Oracle Support is p14732511_420_Generic.zip.  These are the same file and this version number will be corrected over the weekend.

Monday, November 05, 2012

APEX 4.2 and Textareas

There is a change in behavior in Oracle Application Express 4.2.0.00.27 that I thought was worth making special mention of.

Most page items have a property named "Maximum Width".  The purpose of this attribute, as the item-level help states, is to "specify the maximum number of character users are allowed to type into this form element."  Thus, if you were to specify a value of 255, then end users theoretically would not be able to enter more than 255 characters for the item value.

Prior to Oracle Application Express 4.2.0.00.27, this attribute for Maximum Width was not emitted in the HTML for Textarea page items.  You could have had a Maximum Width of 255 or 4000 or 32000 - it didn't matter.  The amount of text that could be entered by your users was essentially unconstrained (up to the 32,000 limit that can be POSTed).  In Oracle Application Express 4.2.0.00.27, Textarea page items are now properly including this attribute in the HTML for the page item.

Prior to APEX 4.2.0.00.27, my Textarea named P2_RESUME, with a Maximum Width of 2000, might be rendered like this:



But in APEX 4.2.0.00.27, my Textarea named P2_RESUME, with a Maximum Width of 2000, will now render like this:


A number of internal and external customers have rightfully complained about Oracle Application Express 4.2.0.00.27 breaking functionality in their existing applications.  Previously, end users were able to enter a large amount of text in textareas, but now "APEX limits what can be entered by end users."  And this directly relates to the Maximum Width attribute, which most developers were able to safely ignore for textareas in the past, but in 4.2.0.00.27, it is very relevant.

I can offer the following suggestions and direction:

1) If you wish to query the APEX data dictionary for all items in your application(s) which may be impacted by this change, you can issue the query:

select application_id, page_id, page_name, item_name, item_element_max_length
  from apex_application_page_items
 where display_as_code = 'NATIVE_TEXTAREA'
 order by 1,2,3,4

2)  In the forthcoming Oracle Application Express 4.2.1 patch set, this Maximum Width property of textarea items will only be emitted when the application-level attribute Compatibility Mode is 4.2 or later.  Thus, if you are upgrading from Oracle Application Express 4.1.1 or earlier, the Compatibility Mode will not be set to 4.2 and your application behavior will remain the same.

3)  There is a patch set exception on My Oracle Support, Patch ID 15829665, which implements the above-mentioned "Compatibility Mode" behavior.  You can download this PSE (i.e., "one-off patch") and apply it to Oracle Application Express 4.2.0.00.27 today.

Note that this "maxlength" attribute for textareas is not enforced by Internet Explorer.

Saturday, October 13, 2012

Oracle Application Express 4.2 released


Oracle Application Express 4.2 was officially released today and is available for download from the Oracle Technology Network.

The main goal of Oracle Application Express 4.2 is to enable the easy development of mobile applications, using the same declarative infrastructure and methodology of APEX.  As detailed here, the marquee features of Oracle Application Express 4.2 include:

  • Application Builder for Mobile
  • Both mobile and responsive themes
  • HTML5 Charts
  • HTML5 Item Types
  • Packaged Applications
  • RESTful Web Services
  • and many more...

As we do for every release, we offer our gratitude to the countless people who participated in the Application Express 4.2 Early Adopter program and provided feedback, suggestions and bug reports.

Wednesday, September 12, 2012

Application Express 4.2 Early Adopter instance going away...

It was just 3 short months ago that Application Express 4.2 Early Adopter was made available.  As of September 21, 2012, the Application Express 4.2 Early Adopter site will no longer be available.  The database will be permanently removed.  If you need to export anything, please do it well before September 21, 2012.  There will be no hope of restoration or recovery after this day.

The Application Express demonstration instance at http://apex.oracle.com has been upgraded to a pre-production version of Application Express 4.2.  This effectively replaces the Early Adopter instance.

We have received a tremendous amount of feedback, suggestions and bug reports.  The participation by over two thousand users was the the most we've ever had.  Once again, we are grateful to the APEX community for their interest, participation and support.


Tuesday, August 28, 2012

apex.oracle.com to be upgraded to Oracle Application Express 4.2

On the evening of Saturday, September 1, 2012 at 1800 PDT (0100 UTC), http://apex.oracle.com will be upgraded to a pre-release version of Oracle Application Express 4.2.

I know that apex.oracle.com is used by numerous people to host their sample APEX applications and sample plug-ins.  I simply wanted to give people ample opportunity to export whatever they wished before the upgrade.

After the upgrade, the applications on apex.oracle.com cannot be imported into an APEX 4.1.1 or earlier instance.

For any issues you believe are directly related to the upgrade, please feel free to post on the OTN discussion forum (preferred) or send an email to oracle-application-express_ww@oracle.com.

Monday, August 06, 2012

RESTful Services now available on Oracle Application Express 4.2 Early Adopter



Last week, on August 3, 2012, the Oracle APEX Listener 2.0 Early Adopter was made available for download from OTN.  And also this past weekend, the Oracle Application Express 4.2 Early Adopter 2 site was switched from Oracle HTTP Server/mod_plsql to the Oracle APEX Listener 2.0 Early Adopter (thanks goes to Colm from the APEX Listener team, Hilary from the APEX team, and Wei from PDIT for making this happen).

One area of functionality which is now exposed and available for testing on the Oracle Application Express 4.2 Early Adopter 2 site is RESTful Services.  These can now be easily created and tested within the Oracle Application Express RESTful Services module.

A very rich example of a RESTful Service is created within each workspace.  To test this yourself:

  1. Login to your workspace (register for one, if you havent' done so already)
  2. Click "SQL Workshop"
  3. Click RESTful Services
  4. Click oracle.example.hr
  5. Click the "GET" resource handler under the "empinfo/" resource template, in the hierarchy on the left
  6. Scroll down and click the "Test" button

In my JOEL workspace on the Application Express 4.2 Early Adopter 2 site, with the JOEL path prefix for my workspace, this resulted in a URL like:

https://apexea.oracle.com/pls/apex/joel/hr/empinfo/

[Note - after APEX 4.2 is eventually released and the APEX 4.2 Early Adopter site is extinguished, the above URL will no longer function]


Show your (ā'pěks)

In 2009, I responded in a blog post to the question of how to properly pronounce the abbreviation for Oracle Application Express.  Since then, Chet Justice (*the* oraclenerd) has taken special delight in mispronouncing it to me at every opportunity, at every conference.  But I have to give Chet credit - he has helped the correct pronunciation cause by designing a shirt which will remove all ambiguity and doubt.  Get yours today!


Wednesday, July 25, 2012

ODTUG APEXposed 2012!



Three important questions for you:

  1. Did you want to go to the ODTUG Kscope12 conference but couldn't make it because of "[insert excuse here]"?
  2. Do you have an interest in learning about Oracle Application Express 4.2, APEX Listener 2.0, HTML 5, jQuery, plug-ins and more?
  3. Have you always wanted to visit the beautiful city of Montreal, Quebec, but never had a good reason?

Well...have I got the conference for you!  ODTUG is sponsoring another APEXposed conference.  The next one is scheduled for September 11/12 2012 in Montreal, Quebec.  If you've been around Oracle Application Express for even a short period of time, you'll surely recognize the names of these presenters.  And the content for this conference is very strong (as is the case for all of the ODTUG conferences that I've been to).

I thoroughly enjoy the ODTUG conferences for Oracle Application Express - very little fluff, all worthwhile technical content and education.  Until August 15, 2012, registration is 399 USD.

Monday, July 23, 2012

Application Express 4.2 Early Adopter 2 now available

Oracle Application Express 4.2 Early Adopter 2 is now available at https://apexea.oracle.com.  If you previously participated in Application Express 4.2 Early Adopter 1, you'll need to sign up for a new workspace.

You can get the updated feature list at http://apex.oracle.com/pls/apex/f?p=38997:1:0, but some notable introductions in APEX 4.2 EA2:

  • You can now create multiple user interfaces in the same application
  • You can unlock and download Packaged Applications
  • Team Development now supports file attachments for bugs, features and todo's.
  • You can define a "Global Page" per user interface, instead of relying upon page 0
  • You can "grid edit" the translation repository
  • The User Interface of the Application Express applications has been further improved.  Note - if you used EA1 previously, you may need to clear your browser cache or Shift-Reload on many of the pages in the Application Express applications
  • You can enable cascading LOVs for Select Lists, Checkboxes and Radio groups in mobile user interfaces
  • There are two new application-level Globalization attributes to control character value comparison (for those wishing to do accent-insensitive searching).  For now, this applies only to classic reports and Interactive Reports.
  • Existing item types were modified so they work with jQuery Mobile when used with dynamic actions
  • And many more....

The response for Oracle Application Express 4.2 Early Adopter 1 was overwhelming.  We are completely appreciative of the time and effort spent by over 1,000 people, helping to improve this release of Oracle Application Express.  You'll see that a large number of the great suggestions from the APEX community have been added to Application Express 4.2 Early Adopter 2.  Thank you for all of your invaluable feedback.

Tuesday, July 17, 2012

Partners Being Contacted


A number of partners have been receiving letters from a company named Advanced Dynamic Interfaces LLC.  Although Advanced Dynamic Interfaces LLC has not contacted Oracle, we are aware of, and are currently investigating, this matter.   Letters received from ADI can be forwarded to the following address:

Oracle Legal Department
Patent, Trademark & Copyright Group
500 Oracle Parkway, M/S 5OP7
Redwood Shores, CA 94065

Monday, July 16, 2012

APEX 4.2 EA2 coming, APEX 4.2 EA1 going away

Within approximately the next 5 - 10 days, the instance of Application Express 4.2 Early Adopter 1 (https://apexea.oracle.com) will be decommissioned.  It will be replaced by the second Early Adopter release of Application Express 4.2.

Nothing will be migrated from APEX 4.2 EA1 to APEX 4.2 EA2.  The entire database will be recreated, and all workspaces will be removed.  Additionally, there is a strong likelihood that anything exported from EA1 may not be import-able into APEX 4.2 EA2 or APEX 4.2 production.

As always, the APEX community has been extraordinarily helpful with the review and feedback of this early release.  There are over 1,100 workspaces participating in EA1 and the feedback has proven invaluable.

Thursday, June 21, 2012

Application Express 4.2 Early Adopter 1 available


Just in time for the ODTUG KScope12, the Early Adopter 1 version of Oracle Application Express 4.2 is now available at https://apexea.oracle.com.  Feel free to sign up for a workspace and kick the tires. We welcome your feedback (via the Feedback link from within APEX) at any time.

A few important points about Early Adopter 1 of Oracle Application Express 4.2:

  • Click the "What's New" link to get an overview of the new features in Application Express 4.2.  This has been a pretty aggressive release, as you'll see.

  • The application to view all feedback that has been filed is available via the Public Feedback application.  You'll need to login to your workspace to view this, so ensure you've signed up first.

  • We will refresh https://apexea.oracle.com in roughly 30 days with APEX 4.2 Early Adopter 2.  No information/data/workspaces will be migrated.  We'll scrap the database and start over again.  And there's also no guarantee that what you export from APEX 4.2 Early Adopter 1 can even be imported into a later Early Adopter release or APEX 4.2 production.

  • This is evaluation software. You cannot contact Oracle Support about any issues on apexea.oracle.com. They won't have any idea what you're talking about.  It's highly recommended to provide your feedback via the Feedback link from within Application Express itself.  This way, your information gets fed back into our development process and the rest of the community can also see what's been reported.

  • The RESTful Web Services functionality (through the APEX Listener) is not exposed in Early Adopter 1.  We will strive to enable this for Early Adopter 2.

  • This site is all SSL all the time.

  • When you get your link to the provisioned workspace and you have to choose a new password,  there are some password restrictions in place:
    • Minimum Password Length: 8
    • Minimum Password Differences: 2
    • Must Contain At Least One Alphabetic Character: Yes
    • Must Contain At Least One Numeric Character: Yes
    • Must Contain At Least One Upper Case Character: Yes
    • Must Not Contain Username: Yes
    • Must Not Contain Workspace Name: Yes

We average between 1,000 and 2,000 participants for each Early Adopter cycle.  I expect even more for this release.  I wish to extend my thanks in advance to the APEX Community for your participation in the Early Adopter program.  Everyone is so gracious with their time, not only in trying to learn about what's coming with Application Express, but also in helping to dramatically improve the quality, functionality and usability of the APEX framework.

Wednesday, May 09, 2012

APEX - it's only good for CRUD applications?

The views expressed on this blog are my own and do not necessarily reflect the views of Oracle.

Rather than ignore a potentially damaging report about Oracle Application Express and hope no one notices it, I wish to expose it to the light of day.

I read a blog post the other day on the offical Oracle blog site.  This blog post referenced a paper from an industry analyst.  The majority of the paper is about Oracle Forms, the current offering, the road map and planned longevity of Oracle Forms, and a listing of numerous new features being added to Oracle Forms which customers can use to capitalize upon and further extend their investment in Oracle Forms.

A very small portion of the paper mentions Oracle Application Express - 202 words, to be exact.  However, in these 202 words, the author seems to conclude that:

  • APEX is only good for simple CRUD applications
  • APEX is not well-suited for applications with complex business logic

To address both points, all I can offer is empirical evidence.  I guess the author was never informed about the Oracle customer who has implemented their entire call-center interface in Oracle Application Express, supporting nearly 700 call center employees.  Perhaps they were not made aware of the multi-billion dollar clothing retailer who has their entire ordering, fulfillment and shipping system front-ended by Oracle Application Express.  How about the American pharmaceutical company who wrote a custom CRM system for their 600+ member sales force, all in Application Express?  Maybe he should have been informed about the multinational chemical corporation which has more than 200 applications in production - one of those APEX applications providing rich functionality on top of an SAP system.  Perhaps we can share with him the story of a large cruise-line company that has rewritten their customer embarkation application in APEX and is in production today?  Shall I go on?

After reading this paper, though, I'm not sure what I find more bothersome - a) the conclusion by an analyst who was fed incorrect and/or misleading information about Oracle Application Express and believes it to be Oracle WebDB from 1998, or b) an Oracle blog would highlight a white paper that basically says "if you wish to move from Oracle Forms and you're not interested in Oracle Fusion Middleware, then please use .NET."  An odd direction, indeed, to suggest to customers who have invested heavily in SQL and PL/SQL.

I will let the successes of our customers be all the evidence that is needed to prove both of them wrong.

Thursday, April 19, 2012

Page protection violation in APEX 4.1.1

Earlier this week, Tom contacted me with an issue with the AskTom application.  When he was replying to a question in the AskTom application, he would occasionally encounter the error:

Page protection violation: This may be caused by manual alteration of protected page items. If you are unsure what caused this error, please contact the application administrator for assistance.  Contact your application administrator.


What made this problem even more interesting was that Tom could reproduce it only occasionally and I could not reproduce it.  The application logic in AskTom has remained essentially unchanged for a number of years.  The only thing that this could be related to was a bug in Application Express 4.1.1, right?  Since AskTom runs on apex.oracle.com (much to the chagrin of some), and apex.oracle.com was upgraded to Application Express 4.1.1 in February 2012, this must be the source of the problem.

Well...the answer is yes and no.  Certainly, in February 2012, apex.oracle.com was upgraded to Oracle Application Express 4.1.1.  And it is this changed behavior that Tom was running into.  But the reason for it is enhanced functionality in Application Express 4.1.1.

If you look at the source of a page from Application Express 4.1.1, towards the bottom of the page you'll see something like

<input name="p_page_checksum" type="hidden" value="577060F3783D7C8508474077662A80DE" />

This occurs right before the closing </form> tag.  This is a checksum value computed against selected items on a page.  When the page is submitted, APEX compares the checksum value to confirm the integrity of the page and these selected items on it.  In Tom's case, he was 1) in London on business travel, not on a super fast network, and 2) he was editing a relatively large page (792 KB).  The fundamental problem - he was submitting the page before the page had fully rendered, meaning the page_checksum_value was absent from the page.  The temporary workaround I suggested to Tom was "wait a few seconds" - at least for large pages like this one.  Fortunately, large pages like this are the exception for him.  We could get fancy by disabling the buttons until the page had fully rendered, via a dynamic action.

I have also seen a similar issue crop up for customers who were lacking the #FORM_CLOSE# substitution in their page template.  Since this page_checksum_value is anchored to the tag, if there is no #FORM_CLOSE#, then there is no page checksum value either.