Skip to main content

APEX 5.0 Impressions

I had the opportunity to sit through two APEX 5.0 presentations yesterday at APEXposed in Montreal - one by Joel Kallman, and the other by David Peake.

By far, the most anticipated feature is the new page layout UI.  This interface is designed to do two things: make arranging regions and items easier, and allowing for batch updating of common item attributes.  While the demonstrations were a bit rough and the UI is clearly not finished, this direction represents a lot of promise for APEX developers, as it is the one area that APEX has been lacking since day one.

Speaking of interfaces, there will be a new User Interface - Tablet - added to all applications.  This will help bridge the gap between Desktop and Phone-based browsers, should a developer feel the need to do so.

One of the smaller yet more impressive features was the ability to add CSS/JS files as a ZIP files.  The APEX listener will automatically unzip those files and even cooler - preserve the paths.  This way, you can easily upload a set of related JS files and ensure that they will still function as intended.  It also has a cool way of versioning these files.  The URL that is uses for them will have a path like this: /v212/  As these files are modified and/or re-uploaded, the version will change, ensuring that the files do not become cached on user's devices.

While we didn't see it, the new tabular forms replacement - called Multi-Row Edit Region - seems promising.  Also, the ability to add multiple IRs to a single page will also become reality. IRs are getting a little bit of a makeover, with modal dialogs replacing the traditional menu and the ability to freeze columns are added.

Another feature that has been long anticipated will be the ability to authenticate to the Application Builder et. all with a custom authentication scheme.  This feature probably has more political impact than technical, since it allows APEX developers to be a part of an organization's identity management infrastructure.  It will also make it a heck of a lot easier to remember your credentials for any workspace, since they can all be the same.

Speaking of security, it looks like there is some planned integration with Oracle Real Application Security, or RAS.  RAS is a no-cost feature of the enterprise edition of the database, and is very similar to VPD.  With it, you can define roles, users and privileges that can be used with any technology.  Not too many more details were available about this, but it also seems promising.

Autocomplete in PL/SQL regions (or at least Application Processes! :) ) is also a part of APEX 5.  When typing in code, you can hit control+space and autocomplete things like item names, APEX APIs, and database objects.  To compliment this, a new code editor - very similar to that included with ApexLib - is baked into APEX 5.

Overall, it looks like there's a lot of interesting features to come in APEX 5.  While there's definitely a lot of work to be done, each time I see it, more and more of the features are working better and better.  It will be interesting to see how much progress can be made between now and OpenWorld.

Comments

Patrick Wolf said…
Hi Scott,

UNZIP support is not limited to APEX listener, it works with mod_plsql and EPG as well. Actually it's a database package which is doing all the work. APEX_ZIP will be exposed as public package.

Regards
Patrick
Scott said…
Thanks for pointing that out, Patrick!

- Scott -
Pat Miller said…
I am glad to see your note about ability to use a custom authentication for developers. I had not seen this before as a feature of 5.0. This will make our Identity Mgt. folks much happier. Universities are standardizing on CAS and Shibboleth as preferred authentication for all users.

Pat M.

Popular posts from this blog

Custom Export to CSV

It's been a while since I've updated my blog. I've been quite busy lately, and just have not had the time that I used to. We're expecting our 1st child in just a few short weeks now, so most of my free time has been spent learning Lamaze breathing, making the weekly run to Babies R Us, and relocating my office from the larger room upstairs to the smaller one downstairs - which I do happen to like MUCH more than I had anticipated. I have everything I need within a short walk - a bathroom, beer fridge, and 52" HD TV. I only need to go upstairs to eat and sleep now, but alas, this will all change soon... Recently, I was asked if you could change the way Export to CSV in ApEx works. The short answer is, of course, no. But it's not too difficult to "roll your own" CSV export procedure. Why would you want to do this? Well, the customer's requirement was to manipulate some data when the Export link was clicked, and then export it to CSV in a forma

Refreshing PL/SQL Regions in APEX

If you've been using APEX long enough, you've probably used a PL/SQL Region to render some sort of HTML that the APEX built-in components simply can't handle. Perhaps a complex chart or region that has a lot of custom content and/or layout. While best practices may be to use an APEX component, or if not, build a plugin, we all know that sometimes reality doesn't give us that kind of time or flexibility. While the PL/SQL Region is quite powerful, it still lacks a key feature: the ability to be refreshed by a Dynamic Action. This is true even in APEX 5. Fortunately, there's a simple workaround that only requires a small change to your code: change your procedure to a function and call it from a Classic Report region. In changing your procedure to a function, you'll likely only need to make one type of change: converting and htp.prn calls to instead populate and return a variable at the end of the function. Most, if not all of the rest of the code can rem

Logging APEX Report Downloads

A customer recently asked how APEX could track who clicked “download” from an Interactive Grid.  After some quick searching of the logs, I realized that APEX simply does not record this type of activity, aside from a simple page view type of “AJAX” entry.  This was not specific enough, and of course, led to the next question - can we prevent users from downloading data from a grid entirely? I knew that any Javascript-based solution would fall short of their security requirements, since it is trivial to reconstruct the URL pattern required to initiate a download, even if the Javascript had removed the option from the menu.  Thus, I had to consider a PL/SQL-based approach - one that could not be bypassed by a malicious end user. To solve this problem, I turned to APEX’s Initialization PL/SQL Code parameter.  Any PL/SQL code entered in this region will be executed before any other APEX-related process.  Thus, it is literally the first place that a developer can interact with an APEX p