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.


Tuesday, February 21, 2012

Too Many Redirects When Cookies Are Not Enabled

A person (Wouter Verkuijl) was kind enough to post on my blog, not only the problem he encountered when accessing Oracle Learning Library mobile from his iPad, but also the actual problem.  If you access Oracle Learning Library (or any APEX 4.1 application) from a browser which does not accept cookies, you'll see the URL changing in the browser a number of times and then you'll get some nice message similar to:



Of course, the Oracle Learning Library team then asked me "Any ideas on how we can trap the 310 HTTP error code (too many redirects) and provide a user-friendly message (e.g. Enable cookies) on how to resolve the problem?"  As it turns out, it's actually quite easy.

  1. The first step is ensuring that the page that is being accessed has the page attribute 'Authentication' set to 'Page is Public' instead of 'Page Requires Authentication' (thanks Christian).  Even if you are using an application which has an authentication scheme of "No Authentication (using DAD)", the specific page attribute 'Authentication' must still be set to 'Page is Public'.  This will stop APEX from doing a wild number of redirects if cookies are not enabled.
  2. Detecting if Cookies are Enabled in the Browser
    • Our preferred approach (thanks Anthony) is to do this via a dynamic action on the public page with the following attributes:
      • Advanced
      • Name: Cookies not enabled
      • Event: Page Load
      • Condition: JavaScript expression
      • Value: !navigator.cookieEnabled
      • True Action: Alert
      • Text: Cookies are not enabled! 
      • No False Action, leave blank.
    • Alternatively, you could solve this via JavaScript in the page header, with something as simple as the following code in the page attribute "Execute when Page Loads":
if (!(navigator.cookieEnabled)) {alert('Cookies are not enabled');}

By doing this via a dynamic action, you get the benefit of not only having the alert message be translatable, but this is also much easier to find and maintain in your application instead of having JavaScript sprinkled around your application.

I have to point out that you will need Application Express 4.1.1 to achieve this.  Application Express 4.1.1 was released on February 21, 2012.  The Oracle Learning Library team has already updated their application to take advantage of this.

Oracle Application Express 4.1.1 now available

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

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

  • If you have Oracle Application Express release 4.1 installed, download the Oracle Application Express 4.1.1 patch set from My Oracle Support and apply it.  Remember - patch number 13331096.
  • If you have Oracle Application Express release 4.0 or earlier installed (including Oracle HTML DB release 1.5), download and install the entire Oracle Application Express 4.1.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.1.1 release from the Oracle Technology Network (OTN).

There are a large number of issues corrected in the Application Express 4.1.1 patch set.  You can see the full list in the patch set note.  Equally important, the Oracle Application Express 4.1.1 release has incorporated much of the infrastructure necessary for the Oracle Database Cloud service, coming sometime later.

For those of you (like my friend Dietmar Aust) who wait until the first patch set is released, this is your opportunity.

Thursday, January 26, 2012

Oracle Learning Library Mobile

The Oracle Learning Library team recently rolled out their new mobile application.  If you go to http://www.oracle.com/oll, you should see a mobile icon in the upper left.  Or you can simply bookmark this link on your mobile device.



As I discussed in the past, the Oracle Learning Library isn't just about Oracle Application Express or the Oracle Database.  There is content there for virtually every Oracle product offered - JD Edwards, NetBeans, Solaris, Java, Oracle Business Intelligence, Fusion Middleware, Oracle E-Business Suite, etc.  There are tutorials, white papers, Oracle By Examples, demonstrations, data sheets, and more.

And at the risk of being criticized (again), I can proudly proclaim that this is all running entirely on Oracle Application Express at http://apex.oracle.com - the same hosted instance of Oracle Application Express that gets over 10 million page views a week and between 600 - 700 new workspace requests every week.

Thursday, December 15, 2011

Oracle Learning Library Advertisement Video

The Oracle Learning Library team just published a new advertisement video, promoting the Oracle Learning Library.  OLL is a great, free source for a lot of technical content on virtually every Oracle product.  Just be sure you turn your volume down before playing this video - the music is quite loud.




You may ask why I'm promoting this on an APEX blog.  Well, it's because:
  1. The Oracle Learning Library application itself is written in Oracle Application Express.
  2. There is a wealth of Oracle Application Express content available in the OLL.
  3. It's yet one more application that runs successfully on apex.oracle.com.  This application alone accounts for over 2M page views/events per week on apex.oracle.com

Wednesday, December 14, 2011

High CPU Usage and APEX (again)

A couple months ago, I wrote about a customer who was experiencing High CPU Waits presumably from Oracle Application Express.  Well, earlier this week I was at another customer site with exactly the same problem.

This was a case of "the business users" using Oracle Application Express to build an application.  The application was built in short order and well received by the end users.  The application became popular, they expanded the application and grew the user base, and after moving it to a different and faster environment, they hit a wall.  The DBA's performed some analysis on the application, and based upon the Active Session History reports, they concluded that the statements using the most CPU were all from Application Express and of the form:

declare
   rc__ number; 
   simple_list__ owa_util.vc_arr; 
    complex_list__ owa_util.vc_arr; 
begin
owa.init_cgi_env(:n__, :nm__, :v__); 
htp.HTBUF_LEN := 63; 
null;  null; 
simple_list__(1) := 'sys.%'; 
simple_list__(2) := 'dbms\_%'; 
simple_list__(3) := 'utl\_%'; 
simple_list__(4) := 'owa\_%'; 
simple_list__(5) := 'owa.%'; 
simple_list__(6) := 'htp.%'; 
simple_list__(7) := 'htf.%'; 
simple_list__(8) := 'wpg_docload.%'; 
simple_list__(9) := 'ctxsys.%'; 
simple_list__(10) := 'mdsys.%'; 
if ((owa_match.match_pattern(p_string => 'f' /* */, p_simple_pattern => simple_list__ , p_complex_pattern => complex_list__ , p_use_special_chars => false))) then
    rc__ := 2; 
else
    null; null; f(p=>:p); 
if (wpg_docload.is_file_download) then
   rc__ := 1; 
   wpg_docload.get_download_file(:doc_info); 
   null;  null;   null; 
   commit; 
else
  rc__ := 0;  null;      null;   null;  commit; 
   owa.get_page(:data__, :ndata__); 
end if; 
end if; 
:rc__ := rc__; 
end;


The problem was, as I tried to explain to the DBA's, this PL/SQL block merely reflected the execution of a page view in Application Express. The ASH report will aggregate the "top" sections by top-level call, but the problem really lies within these calls, with what the application developers coded in their application.  For all practical purposes, the overhead of the APEX engine is fixed, and anything else beyond that is what is coded inside of the application by the application developer.  The DBA's asked a very reasonable question, namely "what do we do next?"

We started the process by analyzing the activity log of Oracle Application Express for the particular time window, to identify what was consuming the vast majority of time.  And we were able to produce a nice listing of applications and pages, sorted by average execution time (really no differently than what I posted earlier).  But once we did this, the DBA's wanted to be able to drill down into what was executing on those pages so they could analyze it and tune it.  Given that the vast majority of this customer's primary application used SQL Reports and Interactive Reports, we joined the activity log with the APEX view which contained the SQL statements for the reporting regions on those pages (APEX_APPLICATION_PAGE_REGIONS).  We ended up with the following query:

select sum(elapsed_time), count(*), 
       to_char(avg(elapsed_time),'9999.99') avg_elap, 
       a.application_id||':'||a.page_id app_and_page,
       dbms_lob.substr(b.region_source,2000,1)
  from apex_workspace_activity_log a
  join apex_application_page_regions b 
    on a.application_id = b.application_id and a.page_id = b.page_id
 where a.view_date between to_date('201112142100','RRRRMMDDHH24MI') 
                       and to_date('201112142105','RRRRMMDDHH24MI')
   and a.page_id is not null
   and b.source_type like '%Report%'
 group by a.application_id||':'||a.page_id, dbms_lob.substr(b.region_source,2000,1)
having count(*) > 10
 order by 3 desc


This query can also be issued directly from SQL*Plus by the DBA's.  If they connect as SYS or as a user who has been granted the database role APEX_ADMINISTRATOR_ROLE, in Application Express 4.1, they will be able to query across all workspaces and APEX applications on the instance.

Understand that there are many places in an application which could be causing performance issues.  There could be slow queries in an authorization scheme that is used in multiple places on a page.  There could be processes or validations or elements on page 0 or a slow page sentry or a host of other things that could be causing degraded performance and which would become apparent when debugging a page.  But to identify the report queries on pages and associate those with the activity log and slowest performing pages, the above query is a great place to start.

Monday, November 21, 2011

Oracle Application Express / Oracle Access Manager Integration White Paper now available

David Peake, the product manager of Oracle Application Express, recently published on the APEX OTN site a white paper describing how to integrate Oracle Application Express 4.1 with Oracle Access Manager 11g. If you go to the Learn More section on the Application Express site on OTN, look for it in the bottom section entitled "Technical Information and White Papers". It's the one with the (obvious) title of Integrating Oracle Application Express with Oracle Access Manager.

Many thanks to Christian Neumueller from the Application Express team and Ramana Turlapati from the Access Manager team for all their efforts in this integration and white paper.

Tuesday, November 08, 2011

Adjusting the Width of an Interactive Report Filter Textbox

I learn something new every day.

Today, Oracle Support sent the following customer question my way:

"We have columns with long data value but the filter (while running a Interactive report) in action menu is of fixed width and hence difficult for us to view the complete data. Is there a possibility for increasing the size of the filter dialog ? (which contains Columns, Operator and Expressions)."

When I asked for clarification, I received the following picture:




I'll never claim to know it all. But I will claim to know the people who collectively do know it all. Shakeeb Rahman from the Application Express development team replied with a simple solution. As Shakeeb stated:

"We can target the expression field and its drop down menu using the IDs that are assigned to these items. Here is the style that you would put into your page header to give these two items a fixed width:"


<style>
#apexir_EXPR, #apexir_col_values_drop { width: 300px; }
</style>


And that's all there is to it. If you want to adjust the width of the expression field and the associated drop down menu, simply add this inline style to the page header attribute on the page where your Interactive Report is defined.

Wednesday, October 26, 2011

High CPU Waits and SQL from Oracle APEX

I was recently at a customer site helping one of the DBAs diagnose a performance issue on their rather large Oracle Application Express instance (over 800 production applications on the one instance). This gentleman self-admittedly didn't know all that much about APEX but he was adept at producing and analyzing ASH (Active Session History) and AWR (Active Workload Repository) reports.

He showed me the extraordinarily high CPU times between 0900 and 1100 his time, and he traced it to the following PL/SQL block that "comes from APEX":

declare 
rc__ number;
simple_list__ owa_util.vc_arr;
complex_list__ owa_util.vc_arr;
begin
owa.init_cgi_env(:n__, :nm__, :v__);
htp.HTBUF_LEN := 63;
null; null;
simple_list__(1) := 'sys.%';
simple_list__(2) := 'dbms\_%';
simple_list__(3) := 'utl\_%';
simple_list__(4) := 'owa\_%';
simple_list__(5) := 'owa.%';
simple_list__(6) := 'htp.%';
simple_list__(7) := 'htf.%';
simple_list__(8) := 'wpg_docload.%';
simple_list__(9) := 'ctxsys.%';
simple_list__(10) := 'mdsys.%';
if ((owa_match.match_pattern(p_string => 'f' /* */, p_simple_pattern => simple_list__ , p_complex_pattern => complex_list__ , p_use_special_chars => false))) then
rc__ := 2;
else
null; null; f(p=>:p);
if (wpg_docload.is_file_download) then
rc__ := 1;
wpg_docload.get_download_file(:doc_info);
null; null; null;
commit;
else
rc__ := 0; null; null; null; commit;
owa.get_page(:data__, :ndata__);
end if;
end if;
:rc__ := rc__;
end;

I've worked with Oracle Support on issues exactly like this from other customers too, so it seems to be a common problem "with APEX".

As I explained to this customer:

  1. The engine of Oracle Application Express is written in SQL and PL/SQL.
  2. When someone performs a page request from their browser to the Application Express engine, they are ultimately calling a PL/SQL procedure which is the entry point into APEX.
  3. Oracle Application Express is front-ended by a Web server which has some facility to map requests in the URL to execution of the APEX engine - this is usually either Apache & mod_plsql or the APEX Listener or the XDB HTTP Protocol Server & embedded PL/SQL Gateway.
  4. This "agent" on the Web server prepares an anonymous PL/SQL block for each and every request into the APEX engine. The PL/SQL he was showing me was exactly this anonymous PL/SQL block.

To state this succinctly and in more lucid terms, the PL/SQL block he was showing me wasn't anything out of the ordinary. I saw an anonymous PL/SQL block which was ultimately calling the APEX engine (via the code in the block: f(p=>:p); ). And since he showed me that this specific PL/SQL block executed about 800K times in an hour, I said that this directly correlated to the number of page events on his system, e.g., the number of times a page was rendered or posted or report paginated. He needed to drill down into the APEX instance and see what was consuming the vasty majority of execution time within APEX.

While there are nice instance administration reports in APEX to convey this type of information, this DBA didn't have instance administration access - poor guy. So we did some very basic queries against the APEX views to return the necessary information.

One of the most relevant views for him was APEX_WORKSPACE_ACTIVITY_LOG. Connecting as SYS (or in APEX 4.1 or later, connecting as SYS or a database user granted the APEX_ADMINISTRATOR_ROLE database role), we are able to see all information across all applications and workspaces. So we came up with a very easy query to pinpoint the slowest pages on the system during his time window:

select workspace, application_name, application_id, page_id, count(*) total_page_events, avg(elapsed_time) avg_elapsed_time, sum(elapsed_time) elapsed_time
from apex_workspace_activity_log
where view_date between to_date('201110260900','RRRRMMDDHH24MISS') and to_date('201110261100','RRRRMMDDHH24MISS')
group by workspace, application_name, application_id, page_id
order by 6, 7 asc

Thus, using this query, I was then able to tell him which application and page was consuming, on average, the most time on his system. Then, using this information along with other APEX views, we were able to identify the workspace names, applications, pages, report queries and eventually the administrators of these workspaces and applications so they could begin their own analysis and tuning exercise.

Sunday, August 28, 2011

Who uses apex.oracle.com (as of August 28, 2011)?

I was recently browsing a blog post over at ApexNinjas.com, where they showed the breakdown of visitors by country to their site, and found that most developers visiting their site came from the U.S. and Germany and asked the "guys who manage apex.oracle.com" if they could confirm this. From time to time, I like to post the Google Analytics report for apex.oracle.com, so people can see where users are coming from.

Note that I only capture the Google Analytics information from the apex.oracle.com login page and nowhere else.

Here is the map overlay and table by country of visitors to the login page.



apex.oracle.com - Google Analytics - 20110828

My interpretation of this report:

  • This report should not be used to determine the primary geographies of Application Express developers. There are countless developers who happily use APEX yet never visit the login page of apex.oracle.com.
  • The U.S. consistently has more visits than any other country.
  • Since I did this same exercise in 2008, there has been a significant increase from India.
  • Canada has also climbed into the top 5.
  • Poland and Brazil have vaulted into the top 10. Three years ago, Brazil was 23rd, now they are 7th. Impressive.

Friday, August 26, 2011

Where did the online help go in APEX 4.1?

This morning, I responded to an inquiry from Oracle Support (on behalf of a customer) about the lack of "online help" in Application Express 4.1. There is also a current thread on the Oracle Technology Network discussion forum that is asking the question "where did the help go?"

This is not an oversight. This was intentional by design and for the following reasons:

  • This gives our documentation team greater flexibility in correcting documentation and online help issues. Here is a great example of why this is beneficial to us and our customers.
  • Many customers would never use the online help and use Google Search instead.
  • The online documentation is searchable.
  • This dramatically reduces the overall distribution size of APEX 4.1 as well as the size of the content loaded into the XDB repository (if you're using the embedded PL/SQL gateway).
  • This removes the complexity associated with indexing the online help files, especially if your instance is accessed over SSL and/or the database is behind a firewall that cannot get to the Web server.
And what about a customer who cannot get to the Internet, if they are disconnected or at a facility (like a military customer or government intelligence) where access to the Internet is blocked? Well, this customer can download the entire documentation, stage it somewhere, and then adjust the URL that is used when clicking the 'Help' link from within Oracle Application Express.

So....is this "improvement on the wrong side" as one customer suggests? I personally don't think so.

Thursday, August 25, 2011

Error in Installation Guide for Oracle Application Express 4.1

The new release of Oracle Application Express 4.1 will be installed into a new schema in your database. The name of this schema is 'APEX_040100'. Unfortunately, the Installation Guide for Oracle Application Express 4.1 references a schema name of 'APEX_041000'. This is incorrect. For any example code (e.g., creation of Network ACL) which references APEX_041000, simply replace it first with APEX_040100.

Hopefully this error is short-lived, as I have reported this error to our documentation team and requested that they correct this in the hosted documentation. If you're reading this blog post a month from now and you don't see any reference to the incorrect APEX_041000, then the problem has been resolved.

Thanks to Dimitri Gielis of APEX Evangelists for finding and reporting this error.


Important Update: As of August 26, 2011, this problem is now resolved. This is the beauty and flexibility of online help and documentation.

Wednesday, August 24, 2011

Oracle Application Express 4.1 released

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


  • Data Upload - add functionality to your application so your end users can upload CSV data (similar to what you can use in Application Express SQL Workshop)

  • Error Handling - Dramatically improved error handling, where you can define how exceptions are handled in your application instead of being constrained by the APEX engine itself. Patrick discussed this in detail here and here.

  • ROWID - Instead of being constrained by one or two element primary keys, you can simply use ROWID as the unique identifier for Automatic DML forms and tabular forms.

  • Websheets - Websheets have undergone a complete overhaul of the user interface, as well as some interesting new features, like the ability to create reports on SQL queries against DataGrid data.

  • Tabular Forms - Many new features with tabular forms, including tabular forms processes and tabular form validations.

  • Plug-Ins - Support for Authentication and Authorization plug-ins

  • Calendars - Enable editing of data directly from links in a calendar, and also support drag-and-drop to move rows from one day/time to another.

  • Dynamic Actions - Support added for dynamic actions against buttons, and other enhancements.

  • Accessibility - Numerous accessibility improvements have been made in the templates and HTML produced by Application Express.

  • Translations - Complete overhaul of the user interface, previously discussed here.

One obvious question is going to be "where is mobile support?" When jQuery Mobile becomes production software, we will include it in the very next patch set of Oracle Application Express. The infrastructure is there in APEX 4.1 to support it. And Marc Sewtz has promised to blog about how you can drop in the jQuery Mobile Beta into an APEX 4.1 installation. The jQuery Mobile Beta portion can't be supported by Oracle Support, obviously.

Our many thanks to the countless people who participated in the Application Express 4.1 Early Adopter program and provided feedback, suggestions and bug reports. We also owe a special thanks to the many Oracle employees who run their mission critical applications on apex.oraclecorp.com (an internal instance of Application Express, but for production applications, used by virtually every business unit in the company). They reported many issues and endured some outages while we rectified flaws in the upgrade process and Application Express engine itself. It is thanks to their patience and problem reporting that we were able to avoid embarrassing and reputation-breaking occasions for our customers.

Thursday, August 11, 2011

UK Ministry of Justice, Zippy Zebra and Oracle Application Express

An Oracle partner, Zippy Zebra, has recently published a case study of one of their most recent engagements. The system is for the Ministry of Justice in the United Kingdom. Zippy Zebra was commissioned by Capita and HP on this program, and their efforts were part of a modernization program for a system called OASys, which is the abbreviated term for the Offender Assessment System.

I received a personal demonstration of the Web interface of OASsys (written in Oracle Application Express) from Jonathan Rhind of Zippy Zebra. I was impressed not only with their expert knowledge of Oracle Application Express, but also their competence in Web technologies and user interface design. Most Web applications are "okay"; this system was beautiful.

You can read the full details in the case study on the Zippy Zebra site. Please note that the system is targeted to support a user population of 30,000, all running on Oracle Real Application Clusters (Oracle RAC), with Oracle Database 11g Enterprise Edition.

And who said APEX is only good for Access or Excel replacement?

tryapexnow.com for APEX 4.1 Early Adopter going away

This may be a late blog posting, but for those who haven't noticed, on the login page of http://tryapexnow.com there is the following message:

"This instance will be turned off on 12-AUG-2011."

After this Friday, August 12, 2011, we will be extinguishing the tryapexnow.com database instance and server. It has served its purpose. If you want anything from there, please go grab it now.

Thanks to the 1,411 customers who signed up to kick the tires of Application Express 4.1 Early Adopter. Your time spent is appreciated and your feedback has been invaluable.




Wednesday, August 03, 2011

Need Your Support

Firstly, this post has nothing to do with Oracle nor Oracle Application Express. So you can stop reading now, if you wish. Also, this is a shameless request for financial donations. So, again, you can stop reading now. As our friend Carl Backstrom said so many years ago, "Hey it's my blog I can post what I want ! :)"

In a few weeks, I will be participating in a bike tour with the sole purpose of raising money for cancer research. Last year, I rode with a group of guys for 43 miles. This year, I am doing the full 180 mile (289.6 km) tour over two days. I get nothing out of this endeavor other than tired legs and sore arms. My goals are to to raise awareness of this dreadful disease and help solicit donations which will help fund cancer research.

The tour is called Pelotonia. 100% of every donation will fund essential research at The Ohio State University Comprehensive Cancer Center - James Cancer Hospital and Solove Research Institute. I am simply asking you to help me reach my fundraising goal. Large or small, every donation makes a difference. Even a $5 donation is relevant - every contribution is important. In 2010, over 4,000 riders and volunteers participated to raise $7,846,705 for cancer research.

My ride this year has extra meaning for me. I am dedicating my 180 mile ride in honor of my father, Robert R. Kallman, a prostate cancer survivor, who passed away on July 22, 2011. He handled his disease and old age with both grace and zeal.

If you're interested, my Pelotonia profile is at: http://www.mypelotonia.org/riders_profile.jsp?MemberID=64498. Look for the "Donate To My Ride" link in red. And I know that you can be on the opposite side of the planet and still make a donation, as my good friend Arie Geller from Israel has already proven.

I am grateful for your support in this cause, no matter how large or small. Thank you.

Wednesday, July 06, 2011

Oracle APEX on Facebook

Today, an email was sent out to everyone who subscribes to the Oracle Database Insider newsletter. In this email were 3 links:


This announcement isn't going to move mountains, but the important thing to note is that Oracle APEX on Facebook is created and run by Oracle Product Marketing. For all those people who ask "where's the marketing for APEX from Oracle?", here's just the start of it. And with more to come.

Monday, July 04, 2011

You shouldn't use Oracle Application Express because...


I always revel at the myriad of untruths and misinformation given about Oracle Application Express and the reasons why you shouldn't use it. Some of the most common and my favorites are:

  • It can't scale. Most people know this is my favorite to refute.

  • It's only suitable for Access and Excel replacement.

  • With the Sun acquisition, it's going to be all Java all the time. And APEX is not Java. (An Oracle partner told me this, not aware that I work for Oracle).

  • It's written in SQL and PL/SQL. It can't really be all that extensible. It's in SQL, after all. (This gem came to me from Oracle's own Siebel CRM team).

Well, I have a new one to add to the list. At the recent ODTUG Kscope conference in Long Beach, CA, I met with two partners who have been building an elegant application for use by the United Nations (yes, those United Nations). In their presentation, one of the attendees raised the issue of Oracle's commitment to APEX. He raised the point of how most Oracle products are labeled as 11 release whereas APEX has its own release numbers. For him this must be a sure sign of long term non-commitment and preference to ADF.

Let me state a few things:

  1. The difference in APEX version number has zero (as in nil) bearing on any direct or indirect commitment by Oracle for APEX

  2. We have a major revision of Oracle Application Express at least once a year. The database does not release that frequently. It's beneficial to not have the same version number, otherwise, we'd have to sit and cool our heels between 11gR1 and 11gR2, or 11gR2 and Database 12.

  3. The Oracle Database ships with Oracle Application Express, and has done so since Database 10gR1 - all the way through 10gR2, 11gR1, 11gR2 and Database 12.

  4. With respect to the forthcoming Database Express Edition (XE), to reduce the size of the download and size of on-disk distribution, the early decision was to not include Oracle Application Express. But the Senior VP of Server Technologies responsible for all of Oracle Database asked for APEX to be put back in and included with XE.

Oracle Application Express was first started in 1999. Oracle HTML DB and Oracle Application Express have been in constant development since the first supported production release in 2004. The versions and year of release are:

HTML DB 1.52004
HTML DB 1.62005
HTML DB 2.02005
Application Express 2.12006
Application Express 2.22006
Application Express 3.02007
Application Express 3.12008
Application Express 3.22009
Application Express 4.02010
Application Express 4.12011*



I think there's only one thing to safely conclude about this person who doubted Oracle's commitment to APEX solely because of the difference in version numbers....he has no idea what he's talking about.