Category: APEX

September 23rd, 2010 by Mathias

Wednesday starts off with a presentation about a new feature in APEX 4.0 that I have not had a chance to look into. It is how you use and develop plugins. The presentation was held by Patrick Wolf who is also the developer of the plugin feature.

Scott began by showing how a plugin is used (that is using a plugin compared to developing it).

You install a plugin by selecting plugins in the shared components section, and then it is just a standard APEX import.

Using a plugin has the benefit that it is declarative while using javascript directly requires codechanges and explicit inclusion of necessary code on every page it is used on.

Once installed, the use of it is identical to using other supplied item types in APEX. It is like the plugin was part of the product.

The productivity is much better than it is with just using javascript as once you have the plug in it is just a matter of selecting it to be used and not having to change code to match what you need.

There are already many plugins available and more are added all the time.

Patrick recommends starting with finding a JQueryplugin that performs the action you want and then truing it out on a static html page. When that works, you're ready to create an APEX plugin for it.

When developing an APEX plugin, you need to follow certain API guidelines to make sure your functions has the signature they are expected to accept.

Patrick them moved on to showing how a plugin is developed.

You create your plugin in shared components and then it is a matter of providing calls to the plsql code you write to generate the html and other things that are needed.

Patrick finished up with some recommendations for developing plugins and they are similar to what you would expect in any weboriented technology.

Always escape all data, both from the database and from the browser. Not doing that opens a risk of criss site scripting attacks. There is a function available for this, I believe it is sys.htf_escape_cs (possible typo as I wrote it from memory after he moved on to his next slide).

Reference apex.jquery in the code to make sure the apex supplied version of jquery is used.

Do not trust client side checks on data as the can easily be overridden. The same checks has to be performed on the server side also.

Look at Oracles Best Practice plugins to get a feeling for what to do and how to do it. They have lots of comments to guide you.

Use the packages apex_plugin_util, apex_javascript, apex_css.

Test your pliugins with more than one item using it on a page.

Patrick recommends avoiding inline css and javascript when it becomes a lot to make sure the page loads faster.

Patrick finished up with reminding us to share plugins when it is possible to do so.

The only other presentation for the morning was a handson allowing the participants to repeat the steps that Patrick had just done. As with many handson exercises it was too much of following a set of steps with instruction to click here or there and to type this or that into different places. Though useful it is not creative enough to allow me to fully understand the process. That can however be done some other time when I have a need to develop a real plugin.

Posted in APEX, OOW, Oracle

September 22nd, 2010 by Mathias

The afternoon was kicked off with a presentation on using APEX in large projects by Dimitri Gielis. These re my notes for what Dimitri told us.

Many people feels that APEX cannot be used for anything larger than a singe developers app. 

Sumneva uses EC2 for both demo and development work with their clients.

They have readymade scripts to create new projects that sets up filesystem directories, APEX application, and subversion.

They're finding that the agile project methodology works very well for APEX-projects.

To automate testing, they're using Selenium. I find the number of times this product mentioned at OOW interesting. It is a product we have on the list of technologies to know/learn at work, but most people I've talked with have not been aware of it. I guess it differs between markets and it may also be a tool that more advanced web-developers are more familiar with.

To check consistency in a large projects with many developers, they recommend to use the APEX advisor to get a report on things to look into.

Sumneva has created their own PM tool to track tickets with. It is aware of APEX specific things such as the url to the app and the alias of the app.

Using the feedback features to collect data from the users works very well for them in their projects. They use the provided features when possible, and a custom version when they cannot access production environments that allos the users to log data into an application on their servers.

Tools they find useful includes:

  • Selenium
  • Firebug
  • SQL Developer
  • Subversion
  • Jira or other ticketing system
  • Reusable APEX components
  • Publish defaults to apps via a master app
  • Use interface defaults

While the presentation didn't really tell me what it takes on the technical side to run a large project, it was clear that it is very possible. But, as with all large projects it requires planning for both functional and technical aspects of the project.

The next presentation was moving from mod_plsql in Oracle E-Business suite to APEX. The reason it is needed is that mod_plsql is not supported in the latest version of ebiz.

Unfortunately the presentation focused so much on the solution they had and the specifics of what they needed that it was hard to extract any APEX specific knowledge from the presentation. Most of the presentation was centered on the fact that they wanted to have SSO between ebiz and the APEX application and how they needed links to go from ebiz to the apex application so it felt like one application for the end-users. They succeeded with that, but the presentation did not provide enough details for what they did or even what they main hurdles they encountered was.

Posted in APEX, OOW, Oracle

September 21st, 2010 by Mathias

This will be a APEX only day. The day starts with two APEX 4.0 presentations.

First up was a presentations about dynamic actions in APEX held by Anthony Raynor.

Dynamic acttions is a declarative way (in 4.0) to use javascript to enhance clientside behavior of an APEX application. It is used for things such as disabling some fields on the page in some situations.

Using it is done by defining four things:

  • When
  • Condition
  • Action
  • Affected elements

For example it coould be used on pageload to disable fields it a checkbox is nog checked and then it could be applied to any number on items.

The presentations wrapped up with showing some nice demos on how the dynamic actions can be used from display to setting items to values in sosme conditions. One neat way to use it was to use it to delete rows in a alist without having to do a pagerefresh for everey delete.

Anthony has a nice sample application that I think are available on OTN that shows how to use dynamic actions.

The next session was on tabular forms in apex.

Tabular forms are used to make updates to multiple rows shown in a list/grid. The presentations was a fairly basic review of what can be done with tabular forms.

Some new features were shown. One of the nicer is that errors on multiple rows are now highlighted and an error per row is dispslayed on top of the page.

Other improvements are that radio and checkboxes are better supported. FMAP arrays have been introduced to make it easay to map a columnname in a form with the name eof the array containing the values in that columnname. It is alsos possible to make a call in pl_sql to find the array holding the data for a columnname (such as EMPNO).

That was the end of the mornings presentations, more apex fun to look forward to after lunch.

Posted in APEX, OOW, Oracle

September 20th, 2010 by Mathias

I arrived to San Francisco yesterday and OOW kicked off today. The efficiency at the registration alone was impressive. The lines we're very long, but it probably took less than 15 minutes to get through it.

This post will essentially be a dump of notes from the sessions I attended.

The first session was the start of the APEX symposium. It was supposed to feature Scott Spendolini and an overview of APEx 4.0. He had been delayed so the presentation was held by Tim st Hilaire and Doug Gault. It was a nice review of focusing on userinterfaces. Technology is nice, but in the end it is all about how productive the end-user is.

They looked closely at the interface netflix has for managing the movies you want to see and used their own version of it for a troubleticket system. There was quite a bit of discussion about the problem with getting the business involved in prioritizing and how they built the solution to make it easy to get the busines side involved in making the right things prioritized.

The technical solution uses JQuery which is now part of APEX out of the box. They have placed their work in a plugin that can be downloaded from

The next session was SQL Developer Best practices. It went through the presenters favorite things with SQl Developer.

It covered a lot of things, the following are the ones I feel I need to use more.

Creating code templates and adding a hot key for activating it would eliminate rewtiting similar code over and over.

There is a way do generate documentation for a schema in HTM and other formats.

It includes a function for monitoring SQL and sessions that will reduce work with querying v$session and related tables to see what is going on in a system.

Unit testing is included in version 2.1. You create a repository and define tests that can be executed both from SQL Developer and from the commandline (ututil).

The third session of the day was "Messed up Applications" with Carly Millsap. It was an interesting session that wasn't very technical for a Millspa presnetation. He reviewed three systems that had been designed to perform poorly. Of course neither was designed that way on purpose, but they were all bult in a way where tuning would not help.

I missed the first whoch was about something he had built himself. The next was a ticket reservation system that spent over a minue to bring back all possible trips a user could go on, when the user almost always chooses the first one. The interface presented him with 2136 trips to choose from. This can of course not be fixed without adjusting how the system interface works.

The last was a ramp anti-pattern for a company that had a system that ended up printing every invoice since day one. So day one it printed all invoices for day one, day two it printed all invoices for day ane and two and so forth. This of course wasted lots of paper and lots of resources very soon.

The last presentation was about trending performance and capacity through using AWR data. The presenter had reverse engineered the SQL in AWS and then used that to bring out data for different times for the same execution or the same SQL over time. It takes some work to do, but it increases the value of AWS significantly.

After that was the keynote, but that will be in its own post.

Posted in APEX, OOW, Performance

June 6th, 2010 by Mathias

In case you haven't noticed already, David Peake's blog just announced that APEX 4.0 moves one step closer to become available for download. It is now the release that powers

This is good news as it shows that the release is getting close to be completed. Upgrading is usually one of the last public steps before a release becomes available to download.

Posted in APEX, Oracle

February 25th, 2009 by Mathias

The excellent book Pro Oracle Application Express book by John Scott builds an application through the book and it starts with a sample spreadsheet showing a set of reported bugs. I was not able to find a downloadable version of this so I created it. Not much work and very easy to do, but also not very enjoyable.

Since I created it with google docs it is easy to share it, so I figured I'd post a link here that I can refer to in the future when someone asks for it. You can find it here. Just choose file->export and export it as a csv file. You can then use this to create the application the book starts with and modifies.

Post corrections here so I can update the document for future readers of the book.

If you like APEX and you have not yet bough this book, you should buy it today. It is very good and very well written.

Posted in APEX