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 : 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! 


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.


Popular posts from this blog

Stop using validations for checking constraints !

 If you run your APEX application - like a Form based on the EMP table - and test if you can change the value of Department to something else then the standard values of 10, 20, 30 or 40, you'll get a nice error message like this: But it isn't really nice, is it? So what do a lot of developers do? They create a validation (just) in order to show a nicer, better worded, error message like "This is not a valid department".  And what you then just did is writing code twice : Once in the database as a (foreign key) check constraint and once as a sql statement in your validation. And we all know : writing code twice is usually not a good idea - and executing the same query twice is not enhancing your performance! So how can we transform that ugly error message into something nice? By combining two APEX features: the Error Handling Function and the Text Messages! Start with copying the example of an Error Handling Function from the APEX documentation. Create this function

Filtering in the APEX Interactive Grid

Remember Oracle Forms? One of the nice features of Forms was the use of GLOBAL items. More or less comparable to Application Items in APEX. These GLOBALS where often used to pre-query data. For example you queried Employee 200 in Form A, then opened Form B and on opening that Form the Employee field is filled with that (GLOBAL) value of 200 and the query was executed. So without additional keys strokes or entering data, when switching to another Form a user would immediately see the data in the same context. And they loved that. In APEX you can create a similar experience using Application Items (or an Item on the Global Page) for Classic Reports (by setting a Default Value to a Search Item) and Interactive Reports (using the  APEX_IR.ADD_FILTER  procedure). But what about the Interactive Grid? There is no APEX_IG package ... so the first thing we have to figure out is how can we set a filter programmatically? Start with creating an Interactive Grid based upon the good old Employ

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