Skip to main content

APEX 4.2 Reporting - Book Review

Recently I was asked by someone from Packt Publishing to review the new book "Oracle APEX 4.2 Reporting" - in exchange for a free e-copy.

When I saw the table of contents, I already thought: "This is covering a lot...". And that turns out to be true - and one of the main points of criticism I have. It starts off with a whole chapter about Installation and Configuration. The title of the chapter doesn't say that, because it's called "Know your horse before you ride it". Thats one of the other points of criticism: The author is now and then to be trying to be funny and entertaining (in his own way). Another example: after a paragraph about installing the APEX Listener he writes: "APEX now has ears". And there are much more examples - to me it's annoying and distracting. But the major part of that chapter is very well covered by the installation documents that come with the different products. Another remarkable note is that the author suggest to use Internet Explorer 9 - something most developers try to keep away from as far as possible (please use Firefox and/or Chrome to develop ... just use IE when you have to do some end-user-like testing).

The second chapter, Conventional Reporting in APEX, is mostly about the Classic Reports. But before he covers that, there are some paragraphs about Authentication, the USERENV namespace and the CGI environment variables. Those paragraphs shouldn't be there (and they only cover those subjects very shallow). Then it immediately jumps into deep - so no easy start and building it up from simple to more complex per paragraph. Searching, Sorting and Grouping of classic reports are next. The author uses some very interesting and powerful SQL features, like "grouping sets", but they could be introduced more gently. Formatting the results, matrix reporting and pivoting are next. Again very nice stuff, but not very well introduced. Templating, hierarchical queries (with and without the recursive with clause), Trees, everything is in there. And apart from that, some JavaScript wizardry to change or style the outcome of the reports. Uploading (not very report-related imho) and different ways of downloading files are discussed. Also deleting records (from within a report) is covered - although the way the author does it, is overly complex (using a Dynamic Action with a JavaScript and PL/SQL part should do the trick as well). For the Ajax calls the author uses the old school, and undocumented, htmldb_get function, instead of the newer and better apex.server.process
Of course Tabular Forms are covered as well. But instead on how to handle checkboxes (or radio buttons) in a Tabular Form (always a pain) and the use of the APEX_ITEM API, he shows some (nifty) JavaScript function to change the item type (which could be solved more elegantly by using APEX_ITEM in the query itself). Also Master-detail reporting is covered - but too briefly.
Next are time series, using partitioning and some analytic functions. As these functions are so powerful, they deserve way more attention than just the two pages. And one page about the MODEL clause is also very very short....
VPD is also covered - but only the, real, EE-only variant. No mention of "poor man's VPD": sys_context.
All in all, a chapter about Classic Reports that covers more than just that (some parts belong in a separate SQL and/or Analytics chapter) - and doesn't cover all the real important stuff. 

Chapter 3, In the APEX Mansion - Interactive Reports, starts out with explaining the features under the Action menu. After explaining all this (and some side steps), the Icon View and Detail View is briefly discussed - I would love to see more about that here! Changing the Action menu with JavaScript and - especially - changing the looks of an IT using CSS are worthwhile to read. Also a good piece on how to get multiple IR's on a page is a good read. Then it goes over to pipelined-table functions (not very IR-related) and into what's seems to be a hobby of the author: the ODCITable interface. Such a very specialised a hardly-ever-used functionality, it should be better of in an appendix.
After that Collections are covered (these are way more important than the obscure ODCI stuff). But also too shallow.
So this chapter does cover some neat IR features, but some of the paragraphs are better of in a different SQL chapter or appendix. And also Collections deserve their own chapter.

Then it goes off with The Fairy Tale Begins - Advanced Reporting (although we already did some fairly advanced stuff). It starts with LDAP Authentication .... what does that have to do with this chapter is totally unclear. The next paragraph is about sparkline reports - so that's quite a change from the LDAP paragraph, but very cool and well written. The same applies to the slider column in a report. HTML charts is next - but what is missing is CSS charts....
Next is how to use XMLTYPE for reporting - not the most obvious choice - and why you would do this is not explained (because you can?). Just a small paragraph on Google Visualisations is next - describing not more than "it's there, you can use it". Some of the Anycharts Flash charts (not the HTML variants) are discussed briefly as well. I would suspect a whole chapter on charting in this kind of book...
A drag and drop calendar gets just a few lines - no examples, no code (apart from in the sample app), no explanation. 
How to show images in your report is discussed and how to show a detail report in a modal dialog box (there are more elegant ways doing that, i.e. using a plugin...). A short paragraph about wizards and hierarchical queries and regular expressions concludes this chapter - explaining next to nothing.
Conclusion: The sparkline and slider stuff was relevant to this chapter; Charts deserve more; the rest is so shallow covered it's next to useless.

Chapter 5, with the "exciting" title "Flight to Space Station: Advanced APEX" grabs a lot of (mostly unrelated) stuff into one chapter - all very briefly touched: PSP, Java in the DB, FusionCharts (why here, why not with Google Visualisations and Anycharts e.a. in a separate chapter?) , tag cloud, creating plugins (there is a whole book on that...), websheets (could be covered in depth in a separate chapter), mail configuration, APEXExport utility, OLAP Cubes (interesting, but no explanation how to actually use them in APEX Reporting), Advanced Queueing, "Other APEX Features" (APEX Views, Page locking , Advisor , etc), the APEX API (but you get more info from the documentation), some database API's (also here: you're better off reading the docs). 
So this chapter covers a lot of totally unrelated stuff, and so shallow, the book would be better without it.

Next, Using PL/SQL Reporting Packages, Jasper and Eclipse BIRT,  makes more sense. PL_PDF is mentioned, FOP and Cocoon as well, but most attention goes to Jasper and BIRT.
So this chapter isn't too bad, although as it's all about printing that might have been in the title - and the most obvious one, BI Publisher, is missing here (but magically returns in a later(!) chapter).

Integrating APEX with OBIEE shows the authors background: he's obviously an OBIEE expert. A lot of information about how to use OBIEE (might be more detailed books out there, but you'll get the hang of it) and how to integrate it with APEX. And then there's the (long awaited) BI Publisher paragraph. Described is how to create a report just using BIP and how to integrate it with APEX using web services - and very briefly using a direct link to the BIP report. Although that last part is useful, the "standard" way of integration (using Report Queries and Templates in APEX) isn't even mentioned....
If you know nothing about OBIEE and want to know more, this is your chapter. IMHO, the BI Publisher stuff should be in the same chapter as the other printing options....

Chapter 8, All About Web Services and Integrations, starts with how to extract data in a readable format from an XML document returned by a web service. Demoing the standard APEX features on using web services might be a better start...
The APEX Listener's Resource Templates is old stuff nowadays (not on the time of writing though), you'd better check out the built-in RESTful web services feature.
A long paragraph bout BPEL (also author's expertise) follows, but without any real connection with APEX - apart from the fact you can call a BPEL web service from within APEX. Next paragraph is about SAP Crystal Reports - very briefly - and this should be in the same chapter as the other printing solutions - if at all...
A few other strange paragraphs, Migrating from MS Access and Migrating from Forms/Reports, are thrown in as well (the relation with the chapter title is missing I think). Integrating with the Google API is an interesting piece and definitely worth a read. Integrating with Oracle R Enterprise concludes this chapter. Also somewhat obscure, but maybe it's interesting to you.
Although the title is promising, I am missing a lot of (web services related) content and I am getting a lot of stuff I didn't expect here - or in this book.

The final chapter, Performance Analysis, does point out some possible "performance bottlenecks", but not deeply. The parts about different indexes is way to shallow to be of any value at all. Performance enhancements on the web server side are also discussed - but not in depth either. The available database tools for performance monitoring are mentioned, but just enough to get into a conversation at coffee-machine-level. 
So alas nothing really worthwhile in this chapter. 

The appendices contain some info on SQL Injection Cross Site Scripting - which deserve a real chapter in their own - listener configuration and auditing. Nothing mind blowing....

So, it has been quite a long review. And what is my overall conclusion? First of all, the author is very knowledgable: he knows a lot detail stuff about a lot of different subjects. Second, the order of the chapters and paragraphs could be way better. "Printing Reports" should have it's own chapter with all the options in it - and the same holds for Charting. I think that's especially the publisher / editor to blame. And I am missing report-related stuff and getting a lot of stuff I wouldn't expect in a book called "APEX 4.2 Reporting".

All in all, there are some valuable pieces of information in this book, but it's not the best book ever written... In (a combination of) other books you'll find better and more well structured information.


Popular posts from this blog

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 Employees tab…

Adding items to your Interactive Grid Toolbar

The APEX Interactive Grid uses the Toolbar widget to create the default Toolbar showing the Search box, Actions menu, Save button etc. And since quite a while there is a nice Plugin "Extend IG Toolbar" by Marko Goricki that makes it very easy to add additional buttons to the Toolbar.

But what if you need more than a button? 
Inspecting the contents of widget.toolbar.js, you can easily spot there can be added more to the Toolbar than just a button: The type of control, available values:
The first example will show a way to easily switch from one filter to another. Of course we could use the standard functionality and create two different Report views, but using a Radio Group on the Toolbar gives a more "Tab" like user experience.

So how can we create a Radio Group that looks like a switch in the Toolbar?
In the Javascript Code …

Using Static Files in APEX has never been easier !

Almost every APEX Developer knows that JavaScript and CSS belongs in separate files and (in 99% of the use cases) not somewhere in your Page properties. If you have this code in separate files it is easier to use them in a Version Control System (SVN or Git) - if the files are outside of APEX. And the code you store in these files can be reused, in contrast to the stuff you store on Page level.In a lot of environments it is harder to use external files, because deployment of these files to the appropriate location on a webserver requires special privileges that not everybody has. In those cases storing these files as Static Application Files or Static Workspace Files might be a better solution. It makes deployment easier, because these files will be exported and imported as part of the application. You can't accidentally forget about them. But working with these files is quite a pain. When you need to edit something you have to download that file, make the changes, upload it again …