Skip to main content

OGH APEX Day 2011

Yesterday it the Dutch Oracle User Group (OGH) organized a full day APEX-only event. And what a day it was! With 250 attendees it was completely sold out. And I guess, if there had been more room, there might have been even close to 300 people there. So APEX gaines more and more interest - and faster and faster... 
And where did all those people came for?

Before lunch there were three general sessions. The first was by Tony Andrews and Nigel Blair of Northgate, talking about their 1500 Forms-to-APEX conversion project. They succeeded and therewith proved (again) that APEX is capable of running enterprise / large scale / mission critical applications. But as they started some years ago, they couldn't use all the new cool stuff, like Dynamic Actions, and therefor build an own framework. And that might require "some" work to bring it into the APEX 4 world. But that's the disadvantage of being ahead of the curve!

Then Hilary went on stage to tell - and show! - us the new APEX 4.1 stuff. There is a list of the things you might expect for 4.1 (see Statement of Direction), but to actually see (some of) it is always better. The new Themes/Templates using jQuery Mobile delivers an awesome result on a smart phone. Another good thing is that 4.1 will support not only Static Lists - as we know nowadays - but also Dynamic Lists! So it will be a lot easier to generate your menu's etc from a database table.
The validations and processes for Tabular Forms are improved. For instance, you can define validations for each row or once per page - using SQL or PL/SQL. And you can also trigger these validations for only updated and new rows or for all rows.
Also the Dynamic Actions are enhanced: you can use conditions within Dynamic Actions, so you don't need to create multiple similar ones.
The  number of Plug-in attributes will be raised up to 15 (still not enough, according to some). But even better, there will be new types of Plug-ins: for items in a tabular form, for Authentication and Authorization Schemes. Regarding the regular Forms: The use of ROWID will be supported and also using primary keys with more than 2 columns isn't a problem anymore. 
Also Websheets are revamped. The look-and-feel and navigation is improved. A thing that came rather strange to me is that sections within a page can also be based upon PL/SQL. And I thought that Websheets was aimed at the (experienced) end-user. But my end-users don't write PL/SQL code. Not even the experienced ones. I hope...
And of course someone asked the usual question - and the answer was "Calendar year 2011". (All things said/shown with the usual Oracle disclaimer).

Next John and Dimitri shared the stage. Doing a presentation (or an act?) about their newest idea: FoogleTwit. Within a few years, "The Social Network, part 2" will shine a light on this!  But it seems, that that name is first mentioned in a comment on a blogpost on Feb 10 this year. So there might be some law suits coming up...
The content was great though: They showed how APEX Evangelists run their projects.

After lunch there were three parallel tracks: Core APEX, APEX and ?, APEX at Work. The first one I attended was by Peter Raganitsch about the Translation Mechanism. In short: it works, but takes a lot of work and maintenance is not so simple. So if you can stay away from multi-lingual applications, you should. Otherwise, the best tip: Do your translations as far in the end as possible. So after running in production for a fair amount of time (so most bugs will be fixed by then).

Then it was my turn. I presented about "Charts and Dashboards". I showed a lot of Charts: First the regular once, then the slightly adjusted one and the completely revamped one. Some of the charts and dashboards demoed might require an additional Anycharts license (as Hilary pointed out). This was my first presentation where the demo and the presentation were tightly integrated: it was one and the same APEX application. You can see it here : apex.oracle.com/pls/apex/f?p=oghapexdag. You can click through the "slides" using the Next and Previous buttons at the bottom. And open up the Hide/Show regions where ever they pop up. Only the part that uses the APEX Listener Templates won't work...

The last presentation I attended was Dimitri's one about APEX and Locator / Spatial. The solution and demo he did was very impressive. This spatial stuff is even more powerful than I thought. But not so easy to comprehend though... It will take some time to get to know this stuff.

They day was concluded with some drinks and a nice dinner. It was a long day, but worth every minute! And, of course, a special thanks to the organizing committee. They did a hard job very well! 

Comments

Learco Brizzi said…
Nice coverage of the OGh Day!
Anonymous said…
Leuk om te lezen wat ik gemist heb ;-).

Kees Vlek.
Richard Martens said…
Learco, I agree.. I forwarded it to the members of Warp11
Joel R. Kallman said…
Translations "takes a lot of work and maintenance is not so simple" - really? What takes a lot of work? Performing the actual translations?
Roel said…
The translating itself too, but especially maintenance: repopulating the translation tables deletes your translations. (that's what Peter says).
Joel R. Kallman said…
"repopulating the translation tables deletes your translations. " - Hmmm...that's not been my experience, nor am I aware of this ever being my experience. There's a 3-step process of "seed, translate, publish", but that's it. But to classify this as "takes a lot of work and maintenance is not so simple" does not seem accurate.

Joel

Popular posts from this blog

Refresh selected row(s) in an Interactive Grid

In my previous post I blogged about pushing changed rows from the dabatase into an Interactive Grid. The use case I'll cover right here is probably more common - and therefore more useful!

Until we had the IG, we showed the data in a report (Interactive or Classic). Changes to the data where made by popping up a form page, making changes, saving and refreshing the report upon closing the dialog. Or by clicking an icon / button / link in your report that makes some changes to the data (like changing a status) and ... refresh the report.  That all works fine, but the downsides are: The whole dataset is returned from the server to the client - again and again. And if your pagination size is large, that does lead to more and more network traffic, more interpretation by the browser and more waiting time for the end user.The "current record" might be out of focus after the refresh, especially by larger pagination sizes, as the first rows will be shown. Or (even worse) while you…

Dockerize your APEX development environment

Nowadays Docker is everywhere. It is one of the main components of Continuous Integration / Continuous Development environments. That alone indicates Docker has to be seen more as a Software Delivery Platform than as a replacement of a virtual machine.

However ...

If you are running an Oracle database using Docker on your local machine to develop some APEX application, you will probably not move that container is a whole to test and production environments. Because in that case you would not only deliver a new APEX application to the production environment - which is a good thing - but also overwrite the data in production with the data from your development environment. And that won't make your users very excited.
So in this set up you will be using Docker as a replacement of a Virtual Machine and not as a Delivery Platform.
And that's exactly the way Martin is using it as he described in this recent blog post. It is an ideal way to get up and running with an Oracle database …

apex_application.g_f0x array processing in Oracle 12

If you created your own "updatable reports" or your custom version of tabular forms in Oracle Application Express, you'll end up with a query that looks similar to this one:
then you disable the "Escape special characters" property and the result is an updatable multirecord form.
That was easy, right? But now we need to process the changes in the Ename column when the form is submitted, but only if the checkbox is checked. All the columns are submitted as separated arrays, named apex_application.g_f0x - where the "x" is the value of the "p_idx" parameter you specified in the apex_item calls. So we have apex_application.g_f01, g_f02 and g_f03. But then you discover APEX has the oddity that the "checkbox" array only contains values for the checked rows. Thus if you just check "Jones", the length of g_f02 is 1 and it contains only the empno of Jones - while the other two arrays will contain all (14) rows. So for processing y…