Jul 8, 2010

My week at ODTUG Kaleidoscope 2010

During the week of June 27 2010, I went to ODTUG Kaleidoscope in Washington DC.

This conference is THE conference to be at if you want to meet with technical people and get involved in the Oracle community, and more especially with the APEX community.

It was a pleasure to meet everyone again.

On Sunday, I was part of the APEX track during the Symposium. The whole day was about building an APEX application from A to Z.

Here is what we did :

  • Data Model - John Scott
  • Application Development - Dimitri Gielis
  • Dynamic Actions/Plug-ins - Dan McGhan
  • Tuning - Doug Gault
  • User Interface - Scott Spendolini
  • Printing - Dietmar Aust
  • Security - Anton Nielsen
  • Globalization - Francis Mignault  (Me)

I think that the prensentations went pretty well. We had a nice crowd of about 250 people. I got only good comments. I hope that we we were able to demonstrate that you can easily create applications collectively and that APEX covers all the aspects of web development.

For the rest of the week I attended many session on Oracle Application Express.

As you probably already know, Oracle Application Expres 4.0 is now officially released. So the week was mostly about new features in APEX 4.0 

I even did my first APEX Plug-in (more on that in another blog post).

Here are some of the things that I learned :

  • You can integrate Jasper reports with APEX.More on Dietmar Blog.
  • To Design you applications and do the functional specifications with the user, you can use Balsamiq instead of building a real application. This way, the user will concentrate on his requirements and not on APEX functionalities.

  • Attending Jonathan Lewis presentation about How to write efficient SQL, I learned a new way of tuning a SQL. You basically draw the tables and analyse the data, the indexes, the volume and the relation between the tables. Very interesting. I kinda already do it that way but this was a well defined and documented approach.

  • I saw the APEX Websheets in a different angle during the keynote by Joel Kallman and Mike Hichwa . I now see it more as a collaborative tool (like a Wiki) than an Easy Apex application builder for super users.

  • Martin D'Souza showed a new way of doing VPN without having to install VPN by using views and using USER_CONTEXT.
  • Patrick Wolf talked about Plug-ins and Dynamic Actions. Those two new features of APEX 4 are really impressive. With Plug-ins you can now build new items and new regions and reuse them in all you applications and even share them with the community. Dynamic Actions, are built-in AJAX controls that you can easily use in your application and there is even advanced dynamic actions !

  • Dan McGhan did a presentation on javascript for PL/SQL Developers. This presentation was very good and explained very clearly how we can "Query" the content of an HTML page.

  • Jason Straub talked about Restful webservices in APEX 4.0 and did a demo using APEX accessing AMAZON S3. 
  • I also attended a presentation on FORMS to APEX conversion. At the end of the day, if you want to convert from Forms to APEX, there is no magic solution. APEX has a tool that help you with the migration process but there is a lot of manual work to convert a Client Server application to a web application. Luckily APEX 4.0 have a lot of new features that will make APEX applications closer to Forms Applications. For example new tabular forms with in-line validations , Plug-ins and Dynamic Actions.
And so many other presentations about security, tuning, plug-ins, Application Lifecycles, JQuery, Google Visualizations plug-ins etc...

Overall , it was a great week and a very well Organized conference. I did learned a lot and had the chance to meet with the APEX community. We even had our second ODTUG Kaleidoscope Texas Hold'em Tournament , Thanks to Ron and Rick. ;) Before leaving, I also had the chance to visit the Smithsonian Zoo that was at a walking distance from the Hotel and saw two great Pandas.


Jun 17, 2010

Oracle Application Express 3.2 The essential and more.

A new book on APEX 3.2 just got out.

I am reading it and I will give you some feedback on the content.

So far, it looks like it covers Oracle Application Express very well. I saw that there is a chapter on AJAX and APEX and there is also a whole chapter on globalization and localization with APEX. 

For more detail , check it out the Packt Publishing site.

May 11, 2010

APEX Interactive Reports and :REQUEST

We just found a problem with APEX, :REQUEST and Interactive Reports.

If you use REQUEST in the Conditional Display of a Region that contains an Interactive Report, the filter and other IR functionalities will hang. Probably because Interactive Reports uses the REQUEST variable...

See a demo here and try to create a filter, you will see that the IR hangs. (If you look at the URL you will see 123  in the REQUEST  : http://apex.oracle.com/pls/apex/f?p=33429:1:1104406850817908:123::::)

The workaround is to add a computation that sets a page item depending on the REQUEST value and use that page item in the conditional display of the Interactive Report Region.

It does not work in APEX 4.0 also (for now) : http://tryapexnow.com/apex/f?p=686:1:3857853599891690:123::::

May 5, 2010

APEX will Rock Kaleidoscope 2010

Again this year, ODTUG Kaleidoscope is THE conference to attend if you are looking for information about APEX.

I will be part of the Sunday Symposia where an APEX application will be built from A to Z.

Also check this Article from Oracle about APEX at Kaleidoscope. APEX 4.0 Will definitely be the attraction.

See you there.

Apr 1, 2010

APEX 4.0 - Language Derived from session

In APEX we have different ways of setting the language of our applications.  :

  • Browser language
             Use the language of the browser to determine the language of the application

              Use the APEX preference FSP_LANGUAGE_PREFERENCE to set the language of the application

             Create an application item called FSP_LANGUAGE_PREFERENCE and set the language of the application by assigning the language value to this item.

To select the Application Language Derived From , go in the Shared Components - Edit Globalization Attributes.

FSP_LANGUAGE_PREFERENCE item is the option that we use the most. With that option you can create a button with a process to set the value of FSP_LANGUAGE_PREFERENCE to the language of your choice. We also use it to display the data in the correct language using v('FSP_LANGUAGE_PREFERENCE') in views.

When you use this method, there is a small problem. If you want to access a page directly via an URL (or create a bookmark) you end up in the application in the primary language on the first page view.

ex: http://host/apex/f?p=12870:1:0::::FSP_LANGUAGE_PREFERENCE:fr-ca
Doing so, brings you to the application and sets FSP_LANGUAGE_PREFERENCE but the page displays in the primary language (en-us in this case). That is because APEX sets the language of the application before it assign the value to the item FSP_LANGUAGE_PREFERENCE.
After the first page load, if the user navigates or submit the page, the application gets displayed in the language of the item FSP_LANGUAGE_PREFERENCE.

In APEX 4.0, there is a new way of setting the language of your application : SESSION

Using this option in "Application Language Derived From" , will let you specify the language of your application directly in the URL using &P_LANG  (Same principle as turning the Trace On by adding &P_TRACE=YES at the end of the URL).

To access the application in french : http://tryapexnow.com/apex/f?p=12870:1:0&P_LANG=fr-ca
To access the application in english : http://tryapexnow.com/apex/f?p=12870:1:0&P_LANG=en-us 

There are also three new procedures  :
  • APEX_UTIL.SET_SESSION_LANG( p_lang in varchar2 )
  • APEX_UTIL.GET_SESSION_LANG return varchar2
Note that those procedures will work only when you use "SESSION" in the Application Language Derived From. APEX_UTIL.GET_SESSION_LANG won't return the language value of other language derivation methods.

If you want to get the session lang, you can also use the v('BROWSER_LANGUAGE') variable. It will show the APEX application language (Not the browser language). 

In my demo application, to switch from one language to another, I created a button "Switch Lang" that calls a PL/SQL process that does :

if nvl(apex_util.get_session_lang,'en-us') = 'en-us'
    then apex_util.set_session_lang('fr-ca');
    else apex_util.set_session_lang('en-us');
end if;

This is a great new feature in APEX 4.0 if you use the globalization a lot like we do. Thanks to Joel for helping me out on this blog post.

Mar 22, 2010

Scott Spadafore

I was very sad to learn today that Scott Spadafore passed away last night. (See Joel Kallman blog)

I had the chance to meet with him multiple times at different APEX conferences and he was always happy to answer my technical questions.

I would like to offer my condolences to his family , colleagues and friends.

Feb 25, 2010

APEX Import ERR-3331

If your applications gets big , you may encounter this error "ERR-3331 This page was already submitted and can not be re-submitted while importing your application." while importing into APEX.

This is caused by the OHS (Oracle HTTP Server / Apache ) timing out.

Even if you get this error, the Oracle process that imports your application will continue until it ends successfully, so your application will be imported correctly.

To avoid having this error, simply change the OHS configuration. In the httpd.conf file located in your Apache/conf directory and increase the Timeout parameter.

# Timeout: The number of seconds before receives and sends time out.
Timeout 300
#Timeout 60

You can find more information in this thread in the APEX forum.