Wednesday, August 27, 2014

APEX 5 New Column Link Features

In the current version of Oracle Application Express you could use up to three items in a Column Link.
Most of the times that is enough. But there were always some use cases where you needed four or even five. And of course, just like with all limitations, you can figure out a work around. But wouldn't it be just awesome if APEX offers us more items out of the box.

And in APEX 5 they do! The number of items you can use in a Column Link isn't restricted anymore. So you don't get four. Or five. Or even six. You get "unlimited" (between " because there's probably some 32k sizing limit somewhere.. but you'll get the point).

But wait ... there's more!
The "Target Type" isn't limited to "URL" or "Page in this Application". You can now - declaratively ! - link to Pages in other Applications as well as you can see below.
So one more reason to add to the already long lists of reasons to upgrade to APEX 5 as soon as we can ... maybe general availability will be announced at OOW ?? 

Tuesday, August 26, 2014

APEX 5 New Supporting Objects Features

In the current version of APEX the Supporting Objects feature is undervalued. You can create (sort of) self installing applications with it, but it is not widely used. Why? Because people don't realy know the feature or people do and experience lack of functionality. In both cases : Check out the functionality of APEX 5!
When you have scripts for creating tables, packages etc., in the current version you have to manually keep those install scripts in sync with "reality". You have to do it manually - so it'll go wrong sooner or later. But in APEX 5 you can sync your scripts with the click of a button. Well, in fact two clicks: one for the check box and one for the button. See the animation below.
So when you click "Refresh Checked" your script will be recreated, reflecting the current situation of your database.
Well how does that work? If you click on the pencil icon and then navigate to the "Script Editor' tab, you'll see that the script is associated with objects. You can add objects here or remove the association - your script will be recreated automagically. Please notice you can't add your own code in these scripts because it'll be overwritten.
And to make it even easier for you - and eliminating the need to run APEX in Developer Mode in the target environment - you can now enable "auto install" of Supporting Objects. Thus Supporting Objects will be installed even from withing SQL*Plus or SQLDeveloper!
When you export an application you can set the corresponding preference like below.
One nice enhancement request maybe: I would like to have a "Refresh Checked" option on export as well! So I can refresh all my source code upon export ....

 So these are a few more reasons to use Supporting Objects in your next APEX5-project!

Friday, August 22, 2014

APEX 5 New Calendar Features

While playing around in the APEX 5 EA2 environment I discovered a few neat little features for Calendar regions.

First of all you can export the data of the calendar - only the data that's currently visible - to four types of format. Especially the iCal format is new and interesting as this is readable by most calendar applications. Right now, in EA2, the PDF option doesn't seem to work yet. And alas, the iCal format is not readable by the Apple Calendar - but I hope that'll be fixed when the product becomes available! It is promising nevertheless....

Another cool feature is the Google URL. You can enter a URL of a public Gcalendar (or your private calendar if you want to) and your appointments will show up in your APEX application (see the green entries in the screenshot below)!

And last but not least : You can add your own (or someone else's) RESTful webservice feed to the calendar as well. By defining your own Resource Handler using a query to return a JSON string, you can add even more data sources to your calendar. The purple entry below is created by the SQL statement:

select 'Presentation APEX5 Hidden Features' as "title"
,      sysdate - 0.5/24 as "start"
,      sysdate + 0.5/24 as "end"
from dual


The JSON format is fixed, so we have to embed the columns in quotes to get a proper SQL statement (otherwise we are using reserved words and return uppercase attribute names).


Thursday, June 26, 2014

Kscope Wednesday

Also today is packed with excellent sessions. The first one, "Cookie Monster", by Tim St.Hillaire covered the different type of cookies and how you can set and read them from within your APEX application. For a lot of purposes you could nowadays use local storage as well, but there's still a case for cookies - and that's not a jar ;-)
The second one, "Single Sign On", by Anton Nielsen was excellent as well. He made clear that just Authentication is not enough: In most cases we need to get back our previous session state as well. A feature that will be included in APEX 5: Session joining. Only in a multi-tenant infrastructure it is not a good idea to enable this as this might open up the possibility to hijack a session. He also explained that from a security point of view, it is important that the APEX authentication is based on both the cookie and the sessionID in the URL.
In session number three, "Pins, Polygons and Perspective", Christoph Ruepprich showed how you can add very nice - and rather easy - geo information to your APEX application. Especially LeafletJS is something to check out, as it is perfect for mobile devices and can use different layers.
After a long break I attended "Production Level Trouble Shooting", especially because I have done sessions on that same subject as well. The key take away is that it is a good idea to instrument your code in a way that you can switch on debugging in a production environment for a single user, a single page and/or a period of time. You can do that - even when debugging is disabled, as it should be - issuing a (conditional) apex_debug.enable command before both page rendering and page processing.
Then, my personal highlight of the day, John Scott did his NodeJS presentation. With some great examples / use cases he made clear that this is something we definitely should check out. With just a few lines of NodeJS code you can create a webserver, a proxy server, create a REST server, create an APEX exporter or a mail reader and websockets server.
The final presentation about APEX URLs by Christian Rokitta gave insight why your URLs should be (more) readable by the user and search engines and some great options and tips how to accomplish this: using intelligent rewrite by either PL/SQL, the ORDS (APEX Listener) and/or by changing the Listener configuration. 

A long, but very interesting day, And now it's time for the big event....

Wednesday, June 25, 2014

Kscope Tuesday

This day was quite busy: I had two presentations and a panel session, more or less back to back. My first presentation "Intro into Mobile APEX Development" went ok, but I was especially pleased with the way my second presentation "Creating Hybrid APEX Applications" did go. I think I got the message across that it is not that hard to create APEX Applications with native iOS (or Android) functionality, like accessing the Contacts on the phone and use the native Twitter app (or Facebook, Mail, etc) to send a message straight from your APEX application. And I received some very positive feedback, either via Twitter or directly ..


And - also important - I had really fun while presenting as this pic (by Jorge Rimblas) proves.


In the evening we had a great ACE Dinner at a local brewery. So that included good food. And beer. And more beer ....
And a poker game concluded another awesome day (although I didn't win) !

Kscope Monday

The Monday started off with the general session. The most awaited announcement was: Where will Kscope have it's residence in 2015? The answer can be found on www.kscope15.com (in short: in an awesome resort in Florida).
After that, the selection begins ... which session should I attend... I picked two interesting sessions about the APEX Listener / Oracle Rest Data Service. This product is growing fast in functionality and will get more important in the Oracle infrastructure soon!
My favorite session of the day was the one from John Scott, called "Removing the boring from testing". A maybe slightly misleading title, as he was covering utterly cool "headless browsers". Apart from NodeJs, which is a headless server, you can also have an headless browser: a browser without a screen output. Using these tools you can programmatically - using JavaScript - call webpages and examine the result. So using this technique you can write test scripts - in an easy and familiar language - that can run without a browser. But it seems they can do way more than that. So it's time to check out and play around with SlimerJS, TrifleJS, PhantomJS and / or  CasperJS!
Later the traditional APEX Open Mic Night was a blast - as usual. The two hours where easily filled with 5-minute-no-Powerpoint-only-demo presentations. I think we could had gone on for one or two hours more ...
Another successful day in the books!

Tuesday, June 24, 2014

Kscope is awesome ....

As a tradition, this Sunday Kscope kicked off with a full day of presentations by Oracle's APEX Development Team. And of course it was all about "5.0". Joel started with the "Awesome revolution of APEX" - the term "awesome" (and the associated song) seems the be the conference team this year. After that the Page Designer, Interactive Reports, Mobile development all got the special attention they deserve. But the best part - or at least the most surprising part - was the "UI" presentation by Shakeeb. He introduced the new Universal Theme (number 42) with the Template Options feature - so you need less templates because special settings are driven by the options.


But - with a great "one more thing", he surprised everyone with the demo of the Universal Theme Roller. Similar to http://themeroller.jquerymobile.com/ but it looked better. So you can "live style" the look and feel of your application. CSS knowledge becomes less necessary. The only fear is: what will it do in the hands of a developer - i.c. not a graphic designer ....


All in all a great day - and the conference had not even (officially) started yet!

Friday, June 13, 2014

Building a Kscope14 schedule ...

Building a schedule for Kscope seems to get harder and harder every year. The number of interesting sessions per time slot is usually more than 3, so it's very hard to pick one - because you're pretty sure you are missing a few other good ones. And via Twitter you'll find out pretty soon whether you picked the right one or not.
A complicating factor is the World Cup that's organized simultaneously - just like four years ago in Washington. Luckily the Dutch team is scheduled only once in that week: on Monday morning at 9AM. So that means ... I have to skip the opening ceremony.
For the rest of the week it's just packed. Some people think attending conferences is a holiday. Once you've done Kscope you know better. It's work. Hard work. And it is so much fun!
But in the end I managed to create a schedule (see below if you actually do mind). There's still a few slots with two sessions in it. So I have to split myself now and then.
I'm doing two sessions on Tuesday myself. Both on APEX Mobile. One is a beginners session, the other one is about creating native (or hybrid) applications with APEX.
Really looking forward to it. Especially meeting all the old friends and making new ones! See you in Seattle!!!