Monday, December 21, 2009

Merry Christmas and Happy New Year!

It's time for a break for me and spend some time with family.

Thank you all for reading this blog, thanks to the APEX development team for the exiting Christmas present and thanks to all of you for a great year.


I wish you all a Merry Christmas and Happy New Year! See you in 2010...

APEX 4.0: My thoughts after first round of playing

In the last two days I developed with APEX 4.0 EA. Although I already played a bit during OOW it's different when you have some more time.

As I already mentioned earlier... it's the best APEX version so far. It looks good, feels smooth and there are many new features. Although this is not yet the "full" version of APEX 4.0 I would already be happy to just get this.

The blog posts I did so far:
- APEX 4.0: writing higher quality applications by using the Advisor
- APEX 4.0: new public packages
- APEX 4.0: dictionary views
- APEX 4.0: Tree View vs Component View
- APEX 4.0 EA available
- APEX 4.0 Screenshots and first impression
- APEX 4.0 Highlights and Video

I'm going to hold a little pause in doing blog posting on APEX 4.0...
There is a lot more to discover, so you might play with it and check other new features out.

I plan to write more about APEX 4.0 in January. These are in my drafts:
- APEX 4.0 Charts, Maps and Gantts
- APEX 4.0 Dynamic Actions
- APEX 4.0 My first plugin
- APEX 4.0 Team Development

Sunday, December 20, 2009

APEX 4.0: writing higher quality applications by using the Advisor

APEX 4.0 includes so many nice features out-of-the-box now, that you can't stop smiling ;-)

I'm doing these series of blog posts more from the perspective from what has changed and how your development effort will change by using APEX 4.0.

The community build things around APEX (2.2, 3.x) to help us e.g. Patrick Wolf made some great things (already some time ago now) like his APEXLib framework and the APEX Advisor. Now that Patrick is in the APEX Development team it's nice to see a lot of this coming back as build-in components.

This post is about the build-in Advisor, which you find in the Utilities section in APEX 4.0.
I'm sure it will help to write higher quality of code.

Before (APEX 3.x days and prior) the flow was like; create database objects (tables, views etc), create application, pages, add validations, create shared components, make sure security and performance are good by manually checking things.
A change came in; adapt database objects, adapt pages etc. hoping you changed everything correctly...
Some of us build a QA tool to check things by running a package/query or by using the Advisor Patrick build, but I think a lot of people didn't do that.

So how does this process look like in APEX 4.0?

- Create database objects
- Create application
- Create page and check directly if it's "good" (see screenshot)
- Create shared components etc


Change is coming in
- Change database objects
- Run the Advisor and see directly which items you need to change or where things fail
- Change pages and check your pages directly
- When all done, run the Advisor again for the entire application (see screenshot) and you are good to go


It's amazing if you upload an existing application how many things the Advisor might suggest you have a look at ;-)

Having this feature build in is awesome. I used Patrick's Advisor (for APEX 3.x) before but sometimes I forgot to run it etc. now that it's build in it's so much easier.

While I was discussing with John Scott he had a really good suggestion; it would be nice if we could schedule a run of the Advisor (e.g. every night). Also adding our own checks would be nice, but we could get around that already if we could just call the advisor from pl/sql.
We would then email the results or store it in our QA repository.

APEX 4.0: new public packages

I looked at the package we would be able to use in APEX 4.0 and saw some new ones.

Packages make it possible to do things in your own PL/SQL code which APEX does for you in the wizard. E.g. If you want to call a webservice, you can use the APEX Wizard to set this up, but it might be useful to do that from your own PL/SQL procedure or from a process in your APEX app.

On APEXBlogs.info I had to write a lot of custom code to read the different rss feeds. If the APEX development team opens up the packages they use behind the scenes you can just leverage these and don't need to write your own.

Another good example which happened in APEX 3; everybody wanted to send mails with attachments, so we all wrote our own package to do that, in APEX 3 (if I remember correctly) the APEX Dev team provided a new package called apex_mail which did that, so you could just use it to send emails without having to write your own anymore.

The same with APEX 4.0, the more package they provide, the better. So here are the new ones I found so far (it's hard to research them without SQL Developer or having access at the code):

  • APEX_JAVASCRIPT
  • APEX_PLUGIN
  • APEX_REST
  • APEX_UI_DEFAULT
  • APEX_WEB_SERVICE
The packages speak for themselves I guess ;-)

Let me give you two examples, you can just do desc apex_javascript yourself in SQL Commands to review the full definition.

SQL> desc apex_javascript


So it looks like we can add attributes, add onload events etc directly from a PL/SQL package. You probably want to use this package a lot when you write your own plugins.

SQL> desc apex_web_service


This is a really cool package. It's the same (as far as I can see) as the flex-ws-api Jason Straub wrote. If you need that already in APEX 3.x you can download it from the sample code website.

Doing research on APEX 4.0 is so much fun ;-)

APEX 4.0: dictionary views

It looks like there are 19 new APEX Views (compared to APEX 3.1.2).

  • APEX_APPLICATION_PAGE_DA
  • APEX_APPLICATION_PAGE_DA_ACTS
  • APEX_APPLICATION_PAGE_FLASH5
  • APEX_APPLICATION_PAGE_FLASH5_S
  • APEX_APPLICATION_PAGE_IR_COMP
  • APEX_APPLICATION_PAGE_IR_GRPBY
  • APEX_APPLICATION_PAGE_IR_NTFY
  • APEX_APPLICATION_TRANS_MAP
  • APEX_APPL_PLUGINS
  • APEX_APPL_PLUGIN_ATTRIBUTES
  • APEX_APPL_PLUGIN_ATTR_VALUES
  • APEX_APPL_PLUGIN_EVENTS
  • APEX_APPL_PLUGIN_FILES
  • APEX_TEAM_BUGS
  • APEX_TEAM_FEEDBACK
  • APEX_TEAM_MILESTONES
  • APEX_TEAM_TODOS
  • APEX_UI_DEFAULTS_ATTR_DICT
  • APEX_UI_DEFAULTS_GROUPS
If you go to Application Builder and select from the right hand Tasks the "APEX Views" link you see a description of all views. For the new views this is the description:


For some reason the Team Development views are not listed in this report.

It's always interesting to review these views as they give you more insight into your application or to use them to have a look at the application behind the scenes. We have been using them for reporting an application or send automated QA feedback.

APEX 4.0: Tree View vs Component View

The Application Builder and more in particular the Page View has two modes in APEX 4.0.

You can view your page as you know from earlier APEX releases, the Component View:


Or from APEX 4.0 onwards you have the possibility to view your page in a Tree View:


This is my view on it;

- With the component view you to see everything on the page at once. You can just click on a link and it brings you to where you need to be. But you might have to scroll and especially for big pages with lot of conditions and different branches it might be harder to follow the logic.
The component view also works on your mobile device (nice if you have to do a quick update through your mobile phone).

- The tree view is a new view on an APEX page. It's structured more logic (a bit like the events view in APEX 3.x). It's also more condensed, it give you a ton of extra possibilities and ways to develop faster. E.g. if you want to put one item before another, you can just drag-drop.
By hovering items you get extra information (e.g. conditions), you can right click on the items of the tree and depending what you clicked you get the possibilities of that item. Double clicking on an item brings you to the details.
The more I use the tree the more I like it and I'm starting to become a huge fan of it. The only two drawbacks I see is that when I don't have a mouse with me, it's harder to develop (e.g. on my Mac I need to click the CTRL button to mimic a right click), the other drawback is that it won't work on a mobile device.

Conclusion

My first choice will probably become the tree view. I think in this view of the page you will make less "mistakes" and develop higher quality pages, just because of the structure. You'll also develop faster, which is a big thing for me.
But I do think the APEX Dev team should keep the Component View as well, as occasionally I probably want to go back there (develop mobile or if I don't have a mouse).

Saturday, December 19, 2009

APEX 4.0 EA available

You can evaluate Oracle Application Express 4.0 now yourself. Oracle released the Early Adopter version http://tryapexnow.com/ ... just got access to the new version and it looks cool so far ...


Not all features are available yet (e.g. Websheets) but there are so many other nice things in there that it's definitely worth to have already a look now.

So try it out yourself and give feedback to the APEX Development team. The more feedback the better the production release ;-)

Monday, December 07, 2009

Accessibility in APEX

One of my highlights at UKOUG was the presentation of Anthony Rayner about Accessibility in APEX. It remembered me at my youth where my mother (she's a professor) had to guide a blind person. From that time onwards I really started to appreciate and admire the disabled people and the people around them.

Anthony's presentation was all about how we can make our websites and applications better, so disabled people can better understand and visualize what is going on on there.

I got a real shock when Anthony started a screen reader (JAWS) and showed us what these people "see" (or better hear). He also explained what the lacks are in the current version of APEX and what they have been doing in APEX 4.0 to better support accessibility. Anthony also explained what you need to look for in your own application so screen readers have an easier job e.g. use divs, give meaning full names to regions, pictures, tags etc.

I'll try to do my best in the applications I write to better support accessibility as I think it's really important and as Anthony said, 15% of the people on the internet are disabled, so don't ignore them...

Sunday, November 29, 2009

APEX SIG at OBUG

On Thursday I had a final meeting with the directors of OBUG (Oracle BeNeLux User Group) about setting up an APEX SIG.

Oracle Application Express is getting more popular in Belgium, the Netherlands and Luxembourg, so it made sense to bring all these people together and talk about it.

So from Thursday onwards in the diagrams of the OBUG you'll see an APEX SIG now. The OBUG has a big one-day event in March called "Benelux Connect", so probably on that day we'll do some APEX sessions there. Next to that, the goal is to have at least two meetings a year with the APEX SIG. Next to the technical presentations, the Use Cases and sharing knowledge, the networking and having fun is an important part.

We are working on a new website for OBUG, which will go live in January and on there you will find more information about the APEX SIG.

We have many more ideas and I hope all of the APEX enthusiasts and people working with this wonderful tool in the BeNeLux will join.

While we wait for the official website to be launched you can register your interest in the APEX SIG here. All registered people will be kept informed... so register now!

PS: For the people thinking the current OBUG site is made in ASP, you are right, but the register section is an iFrame to an APEX app ;-)

Monday, November 23, 2009

Twitter messages on APEXBlogs.info

I extended the APEX Blogs aggregator to also include Twitter messages.

A few years ago blogs were hot to exchange knowledge, but writing blog posts takes time. These days people use Twitter messages to post very short messages. But I find it very useful as you know what people are doing e.g. Patrick Wolf tweeted he was working on a Required Flag for an item in APEX 4.0.

As I think a lot of people miss out on these short (but interesting) messages I decided to include it on the site.


If you want to appear on the site you only need to put #apexblogs in your twitter message and in real-time your message will appear on the site.

I used some code of OraTweet to make this happen. Thanks to Noel Portugal to share that nice app.

Have fun with the tweets! Hope you like it.

Thursday, November 19, 2009

RSS of APEXBlogs.info

A couple of days ago the RSS feed of APEXBlogs.info started to behave weird. Although you could still read the message, the link at the bottom to redirect to the website suddenly didn't work anymore.

I didn't change anything but Feedburner is now under the Google flag and apparently that added statistics to the url.
e.g. &utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+OracleApexBlogAggregator+%28Oracle+APEX+Blog+Aggregator+%28by+AE%29%29

If you took that bit off it worked just fine.

I found the answer in the FeedBurner forum. You can disable all the statistics (not sure why they got enabled suddenly) so the url should become "normal" again, so that is what I did. Let's hope the new posts through RSS are correct again.

I've some new ideas for the website to include also the APEX related twitter messages and do a general update of the site to make it cleaner, but I didn't find the time to finish it yet.

If you have other ideas or recommendations for the site, feel free to add a comment. I'll take it into consideration for the new release.

Tuesday, November 10, 2009

APEX Meetup @ UKOUG

As on every Oracle conference, also this time we organize an APEX Meetup.
Last year we went for a pizza and some drinks and it was great fun!


For this year, I propose we come together on Monday 30th November at the Community Focus Pubs - 20.00 - 21.30. There should be an APEX table as well. We can already have some drinks there and then leave for another place and see what the night brings us...

Time is flying... See you in 2,5 weeks!

Wednesday, November 04, 2009

Accordion in APEX

*** This post uses SyntaxHighlighter to show code, if you are on an RSS-reader you might not see the code ***

The last weeks it seemed that more people were having the same question "how to integrate an Accordion in APEX".

I've been using an Accordion for a while, an online example is on the Anychart Integration kit website. The left-hand menu is an Accordion.

I think on all my projects of the last year I've been including JQuery and JQuery UI as a standard in the template. The Accordion I use is part of JQuery UI.

You can implement the different JQuery components and plugins in a lot of different ways in APEX; using a template, a shortcut, a region etc. but the principle is the same for any way you chose; you need to load the necessary javascript and have some html that works with it.

My standard philosophy is "if you can make things reusable, you should do it". (with this note: if time and effort allows)
APEX has a Shared Components section and Page zero which can help you with sharing your most common used code. APEX 4.0 will go a step further and provides a plugin mechanism, so you don't need to put the code in different places anymore, instead it will handle everything for you.

So to implement my Accordion, I used a List Template to change any List into an Accordion. Here's how the APEX list template looks like:

List Template Before Rows





List Template Current

#TEXT#




List Template Noncurrent

#TEXT#




Between List Elements



Sub List Template Current



Sub List Template Noncurrent



List Template After Rows




Update; apparently SyntaxHighlighter can't show the script tags (javascript).

The List is a normal list as you can see in the below screenshot.


In the List itself you need to add the pages in "List Entry Current for Pages Type" in order to leave the Accordion open for a child. e.g. 2D Column is page 10 and that should be in the List Entry Current for Page 5.

So in every other project you can just use this template for a list and you have an Accordion in place.
javascript:void(0)

Tuesday, November 03, 2009

Testing Syntax highlighting

I found following blog post which explains how to include SyntaxHighligther (v2) in blogger.

So lets give it a try for the languages I use most.

SQL


SELECT ename, empno
FROM emp
WHERE empno = 7654;

PL/SQL (same highlighting as SQL)

BEGIN
FOR r in (SELECT ename, empno
FROM emp)
LOOP
htp.p(r.ename);
END LOOP;
END;

JavaScript

$(document).ready(function() {
$(".btn-download").click(function(){
callMyFunction();
});
});

XML





















Friday, October 30, 2009

ODTUG 2010 submission deadline

Every year the Oracle conferences are a place to meet other fellow Oracle people and hear the latest and greatest in Oracle world.

Normally these are the conferences I go to: IOUG Collaborate, ODTUG Kaleidoscope, Oracle Open World, UKOUG and some smaller local ones.

One of the ways to get a free pass to these conferences is to present. ODTUG was the biggest APEX conference last year and for 2010 it will be no different. Especially with the release of APEX 4.0 it will be interesting to see these new presentations. The submission deadline for ODTUG just got extended, so now there are another 10 days left to submit an abstract for the ODTUG conference...


It will be nice for me personally to go back to Washington as that was the place I went to on my first visit to the States.

Good luck with the submission!

Wednesday, October 28, 2009

APEX 4.0 Screenshots and first impression

At the demo grounds of OOW09 the APEX Development team showcased APEX 4.0.

I spend quiet some time at the demo ground to play a bit with APEX 4.0 and have a real feeling about this new version. I liked it a lot, but to be fair not all wizards were finished/polished yet and while I was testing I wanted even more features. There are so many enhancement requests they can put in, so it will be a challenge to define the final list of which will be included and which will be postponed to APEX 4.1.

I took some screenshots to show you how things look like and commented a bit on it.

All the screenshots might look different when APEX 4.0 hits the roads, so don't take it for granted it will be like that in the final version.

I already wrote some other blog post and posted a video over a year ago (!) about Websheets. It will be "separate" from APEX e.g. you create a Websheet or an APEX app. I see Websheets as "APEX lite" or "APEX for business people". It's even easier and faster to create a Websheet than it is to create an APEX application. Everything is in meta-data, so Websheets are not based on real tables, but the tables will be defined in meta-data. This allows people to change the structure of the table on the fly (e.g. add columns).
It has some other nice features like inline editing, sharing of your data (security build in), flashback capabilities and so much more... definitely one of the reasons to go with APEX 4.0.


When you login into APEX 4.0 you see that the Application Builder got a nicer look and feel. The new color is blue instead of green and it looks like an enhanced version of Theme 20 is used.


Drilling down into an Application gives you the next screenshot. The quick links which I use a lot (edit page, wheel to access shared components, ...) got extended. The search functionality there will save everybody a lot of time.


At the last conferences I gave a presentation about "Mastering an APEX page". It looks like I should redo that presentation when APEX 4.0 comes out. Although the Page Layout already changed a bit (e.g. you have now a Dynamic Actions section) insiders told me that it's likely to change more.


If you don't like to touch javascript yourself, but you need things to happen on the client (cascading lovs, hide/show items and regions) the APEX dev team build Dynamic Actions for you. It allows you to build these things in a declarative way.


The different actions in Dynamic Actions through the wizard


If you edit the Dynamic Actions you can change it even more.


The Utilities section got revamped with more features and more logical organized items.


One of the new items is the Advisor. Before you could find that in Patrick Wolf's APEX Essentials. So now it will be build-in and it got more enhanced as well. This will definitely mean everybody can do easier Quality checks of their applications.


Team Development will be another nice feature. It allows the people on the project to work more closely together and all throughout the APEX interface. New features, bugs and to-do's can be logged and be assigned to people. This is an example of something we build ourselves too to make our live easier, but as a lot of the things we did before in our own way, APEX 4.0 will give you everything (or at least a lot) build-in.


The new Shared Components section got some more features, the most important one I would say is the access to the Plugins.


I'm expecting a lot of the ability to have Plugins in APEX 4.0. I've certainly a couple in my head I'd like to write, but it's just the fact that it opens up APEX in every way. If you do something in many projects and you can't use Shared Components for it, it makes sense to write a plugin, so it makes it easy to reuse.


As a frequent reader of this blog you probably know by now that Anychart 5 will be integrated in APEX 4.0. The new wizard looks a lot cleaner. You see which chart you want and select that from the start in the wizard. There are also other types of charts available now e.g. Gauges and Gantts.


The below screenshot shows the new wizard for creating Maps.


The next screenshot shows you the Enhanced Interactive Reports with a Map on the same page. As you can see the Interactive Report got some new features like Group By.


I think APEX 4.0 will change the way we write applications. APEX 4.0 brings us again to another level of web development in a declarative way. You'll be able to do things in an easier and faster way than ever before. I already look forward to next year when we can develop with it...

Sunday, October 18, 2009

OOW09 - APEX Meetup

As an annual tradition, also this year we had an APEX Meetup at the 4th Street Bar & Deli during Oracle Open World.

Every year the numbers of people coming to this meetup is increasing. People from all over the world talk about APEX and make fun. The APEX Development team was also present.

And this year we had some sponsors too: ODTUG, OTN and Oracle APEX team were so nice to pay for our drinks. So a special thanks to the complete ODTUG board, Justin and Lillian of OTN and Joel of the APEX Development team!

Below you find some pictures...





A lovely evening with all nice people, a day to keep in memory...

OOW09 - Dashboards in APEX

One of the presentations I did at OOW09 was Impress Your Clients with Interactive Dashboards in Oracle Application Express.


The session was booked in the Franciscan A and B room of the Hilton Hotel. So the room was pretty big (around 200 people I think) as two rooms were put together. I like to do interactive presentations, but in such a room e.g. there were two project (one at every side of the room) that is not that easy.

In this presentation I first explained which charting capabilities you get out-of-the-box with APEX, followed by how you can transform these charts into nicer ones. If you really want to impress your clients, Interactive Dashboards are the way to go. Basically a dashboards is one big chart which consist out of different views who have all an own chart.


Having only one swf and one data feed makes it faster than when you would create three separate charts. Anychart 5 provides a nice API to generate these dashboards.

You have different possibilities to feed the chart with data, one of them is creating an Application Process that generates the XML for the dashboard. e.g.


If you want to add Interactivity to your chart, you will need to use JavaScript.

In the presentation I covered all steps in detail. At OOW the presentation got recorded as well so when they release the audio streams, you can hear it there too. I'm also giving this presentation again at UKOUG.

You find the example I explained in the presentation here.

In APEX 4.0 the creation of dashboards will become easier as there will be a wizard in. So far I didn't see a demo of that yet, so I'm not sure how and what features they will include.

At the end of my presentation I also showed a preview of the new chart engine Anychart is working on, called Stock Charts. They are not released yet, but I'm working with them to make the integration with APEX easy. I'm really exited about these new charts! If you need financial charts or charts that are based on dates, these new charts rock!

Pics of Oracle Ace's dinner - Oracle Nerd

I'm a bit behind with blogging about Oracle Open World 2009, but I promised to post some pictures of the ACE's dinner of Monday.

It was my first ACE dinner and I liked it very much. I had some nice food and drinks with all the other ACE's at OOW. Thanks to Vikki, Lillian and Duncan for the organization.

Mark Rittman and John Scott tasting some beer ;-)


Before OOW there was a whole story/thread about getting Oracle Nerd aka Chet Justice to OOW, one of them was to buy special Oracle Nerd shirts... so Chet, here are some pics of the ACE's wearing the shirts! Vikki and myself, showing the Oracle Nerd shirt.


Lillian M. Buziak, Steven Feuerstein and Andreas Chatziantoniou.

Tuesday, October 13, 2009

APEX Developer of the Year 2009

I just saw the Oracle Magazine for November/December edition... I already knew it a bit before, but now it's official; I got the "APEX Developer of the Year 2009" award.


Of course I find it a real honor and I appreciate the recognition. Thank you Oracle Magazine and APEX Development team!

Sunday, October 11, 2009

OOW09 APEX popular at OOW?

Every year the APEX presentations get more attended... but this year at OOW it's a bit extreme...

Have a look at the below pictures:


Indeed queues of people for the APEX 4.0 session of Mike Hichwa and David Peake.

*** APEX 4.0 will be hot for sure ***