Wednesday, April 02, 2014

Oracle APEX Cookbook [Second Edition] - Book Review

Recently the second edition of the APEX Cookbook has seen the light. As I haven’t read the first edition - I know, shame on me - I can’t exactly point out what the differences are, but that doesn’t really matter anyway. I guess no one will buy both versions anyway…

The book follows a different approach than most of the tech books I read (and wrote): Every issue is attacked with a recipe, existing of these steps:
1. Getting ready : Buy the groceries, get the pots and pans; or in APEX terms, do the necessary preparation like create a page or download a JavaScript file.
2. How to do it … : A step-by-step walk through to create the solution.
3. How it works … : A, usually short, explanation of the new or remarkable things you’ve just done when following the steps in the previous paragraph.

So if you don’t like this approach, you can skip te book - and the rest of the review as well. In my opinion, it might work when you’re looking to solve a specific problem - like including Google Maps in your application - but it doesn’t quite read as a novel. There’s no building up in complexity or an increase of tension in the book. It makes it somewhat “dry”…

But, as I said, if you’re looking for a step-by-step approaches of a lot of totally different problems: this is your book of choice! It’s written well, the steps are easy to follow and the code samples are all downloadable.
One thing that’s really stands out because it isn’t covered in a lot of books (if at all), is Websheets. There’s a complete chapter in this one covering all necessary information. There are also chapters on plugins and mobile, but of course these can’t compete with the whole books that are written on these subjects. But if you just want to get to first base, it’s excellent.

In general the book is aimed at beginner to intermediate developers. And even (more) experienced ones might find something useful, like a different approach to a problem, in this book.

So a four star rating f(out of five) rom my side !
Link to publisher's site
Link to Amazon

Saturday, February 15, 2014

Why do I attend Kscope?

Kscope14 will be my 6th Kscope event. After New Orleans, Monterey, Washington, Long Beach and New Orleans again (yes, I missed San Antonio), this year Seattle will be the place to be at the end of June.

So why do I spent quite a lot of time and money to visit this event? That's because of two reasons: the content and the fellow attendees. Without any doubt the content of Kscope is best you can get in one conference. And it doesn't matter whether your interested in database development, APEX or Hyperion, there's only one conference with that much awesome presentations. And that draws a certain type of people: your fellow attendees. The size of the event and the location (usually) offers an unique opportunity to meet and greet whoever you want. You don't have to make an appointment to talk to someone, as there is a huge chance you'll run into each other at a presentation, during lunch or at the bar. Speaking of lunch ... there is no conference or event that serves better food than Kscope!

During Kscope14 I will do two presentations myself. One in the beginners track about "Starting mobile development with APEX" and one about "Creating hybrid APEX applications".

As the APEX Content Lead, I am looking forward to all (APEX) presentations. Especially all the planned APEX 5 presentations will have my attention. Apart from those I planned to attend the "Pins, Polygons, and Perspectives: Visualizing Geographic Data in APEX" by Christoph Ruepprich and "Oracle APEX + Node.JS A Primer" by John Scott.
Another thing I also like (and has been requested during previous conferences), is the "intro track". So the first two days of the conference we do have one (out of three) complete track 100% dedicated to APEX beginners. And another thing I'm fond of are our "newbie slots". In order to prevent an unequal competition between newbie presenters and well known APEX rock stars, we planned the presentations of the Kscope newbies against each other. So they all get an equal chance to get a full room!

So, right now you understand I am looking forward to Kscope14 a lot. And I hope I'll meet you there in June. Visit http://kscope14.com for all details, abstracts, location and registration.

Tuesday, February 11, 2014

The evolution of APEX Evangelists

Every year we at APEX Evangelists come together to discuss the past and the future of the company. In the past 7 years a lot has changed; the APEX market changed, the community changed, we personally changed, etc ...
We really like APEX, we are all passionate about it, we love to have technical discussions with each other and come together to share our thoughts, but we also like our independence and make our own trade-offs company wise.
So we decided to go a different route with "APEX Evangelists". And that’s why we’re now in the midst of transforming APEX Evangelists from a company to a network.
A network of APEX experts. A network without any financial incentive behind it. A network of independent people that are passionate about APEX. A network of recognised experts in the Oracle community. A network with members that can rely on each other and trust each other.


You can also become part of this network, but only by invitation and acceptance by the other members.
We love to compare us with the Oaktable network, which is a network of experts for the Oracle database. We hope that the "APEX Evangelists network" will be the same for Oracle Application Express.
The first addition to the APEX Evangelists network is Martin Giffy D’Souza and we hope to grow the network further in the next months.

The new website of APEX Evangelists - which reflects the network now - is live, you find it at http://www.apex-evangelists.com.

If you wondering what else the future will bring me, I changed the name of my company to APEX Consulting. You can find the new website on http://www.apexconsulting.nl.

Tuesday, February 04, 2014

Where's Wally? Or upcoming conferences for the first half of 2014 ....

Conference season has started as usual with RMOUG - where I've never been and still would love to go once. The conferences for the first half of the year where I will be presenting are listed below.

February 13, ODTUG online webinar
Together with Mia Urman I will be presenting "Running Oracle Forms from an APEX Application". About five years ago I wrote an article and presented about how to integrate Forms and APEX and this is another option in that area. You can join, for free, without travelling at the ODTUG site.

March 11, OUG Ireland, Dublin
Just like last year, I'll be attending Dublin early March. It's a very well organized conference in a beautiful venue. You can see all the presentations and all other information here. I'll be presenting "Best of both worlds: Create hybrid mobile applications with Oracle Application Express" - and "Finding the Needle in the Haystack or How to Troubleshoot an APEX Issue".

March 25, APEX World, Zeist
Officially the largest APEX-only conference in the world with an expected attendance of about 300 APEX enthousiasts. The complete - and impressive - agenda can be found here. I'll be doing the "hybrid" presentation again.

April 3-5, OUG Norway, Oslo - Kiel - Oslo
As most people know by now, this conference is on a cruise ship. So there's no escape ;-)
The agenda is awesome, with speakers from all over the world. Check this out. I'll be doing "An introduction into APEX" and "APEX and BI Publisher - a match made in heaven?"

April 29, APEX Usergroup, Düsseldorf
I've been invited to do a presentation at this event. Don't know which one yet...

June 5-6, OUG Finland, Helsinki
This will be my first visit to Finland. Really looking forward to this as the conference is somewhere outside of the city. I'll be doing the "BI Publisher" and the "hybrid" ones over there. The full agenda is not on line yet.

June 22-26, Kscope, Seattle
Last in the first half of 2014, but definitely not least, is Kscope. All information and the superb agenda can be found online. Apart from the stunning APEX agenda with three parallel tracks (I have to admit, I am biased, being the content lead) also the Developer Toolbox and Database tracks are very appealing to me. And then I didn't even mention the other tracks (Essbase, Hyperion, ADF & Fusion, EPM, BI & DWH) - until now that is...
Oh yeah, I'll be presenting the "hybrid" one again and "My first mobi - Starting mobile web development with APEX".

Hope to see you in one - or more - of these events!

Most presentations are sponsored by the Oracle ACE Program, extremely well organized by Vikki and Lillian.

Tuesday, January 28, 2014

How to reset an APEX process

While I was setting up a demo the other day, I ran into the following issue: My main start page contains a list of customers and that list is created by a call to a (remote) web service. Due to the nature of this service, it takes a few seconds to get a result back - not very slow but slow enough to annoy me. So I looked at ways of caching the web service results as I noticed that in the process definition I could choose for either "Run every page visit" (default) or "Once per session or When reset". And I would like to reset the results when I entered a new customer - so it would show up after a new web service call. So the only thing I had to do is "reset the process". But wherever I looked - especially in the apex_util package - nothing that would do that trick. Searching the OTN Forum or old fashioned Googling neither added to a solution. A "cry for help" on Twitter resulted in a work around - "accidentally" the same one I had thought off: Add a copy of that process to that page and fire that on request only.
But after a day Patrick replied, unveiling there is an (undocumented) procedure apex_application.reset_page_process (with the internal Process ID as the parameter) or apex_application.reset_page_processes (with the Page ID as a parameter). So I tried the second one - because it's easier to figure out what page ID I need than the process ID - and that worked flawless.
So maybe you can use this more fine-grained caching mechanism in your application as well - but be warned: it's undocumented so it can change in a future version!
Another alternative solution would have been: enable caching of the page and programmatically reset it using the apex_util.clear_page_cache procedure.




Friday, December 06, 2013

Oracle APEX Reporting Tips & Tricks - Book Review

Just after my not-so-positive previous book review, another author dared to ask me for my review. I asked him whether he was sure, and he - confidently - answered positive. This book, written by George Bara from Romania, is called "Oracle APEX Reporting Tips & Tricks", so - from the title -  it seems to be covering similar subjects as the previous one. 
Chapter 1, "Introducing APEX", covers the install of APEX and the creation of a first application. The good thing here is that the author doesn't rewrite the docs, but just links to them. Right after that he introduces the two main report types: the Classic Report and the Interactive Report.
Chapter 2, "Interactive Reports Basics", covers the cool options from the Action menu as well how a developer can dis- or enable these options. Also the Alternate and Icon view is explained, followed by a brief example on styling an IR using CSS. After that multiple download options are covered, including an extensive custom download format.
Chapter 3, "Advanced Interactive Reports", dives a little bit deeper (as you could expect with a title like that). Reports based on APEX collection as well as some neat tricks to get the current filtering settings from the APEX dictionary are explained.
Chapter 4, "Beyond Interactive Reports",  dives even deeper on the subject. Adding and managing checkboxes in reports and how you can use Dynamic Actions on these checkboxes is explained. This is followed by a few paragraphs on dynamic filtering (using the APEX_UTIL.IR_FILTER procedure). The last paragraph covers how you could show images in your report. In this chapter I am missing two things: The first is the option of filtering through URL parameters, as described here. The second one is the alternative for showing images, using the APEX Listener, as described in Kris' blog.    
Chapter 5, "Reporting on Web Services Results", explains how to create web services references and how to create a report on the results of a web service call.
Chapter 6, "PDF Report Printing", dives deep into Apache FOP with a lot of XLS-FO examples. Obviously the author has a lot of experience in this matter. As the final chapter, Chapter 7, "Complex Report PDF Printing", goes even deeper than that. Alas, other options for printing, like PL-PDF or even BI Publisher are not covered at the same depth. Also the more modern alternative (or replacement) for Apache FOP - using the APEX Listener for PDF printing - is not covered. In my opinion the book should get an update on that (as I never used all the XLS-FO tricks mentioned here myself)!

So as a conclusion, the book covers what it promises. Reporting and printing. Nothing more, nothing less. It is aimed at beginner to intermediate developers.
One (more) remark though. While reading you notice the book has lacked a proper editor review (it is self published). The author is not a native english speaker and that now and then that is noticeable - sort of similar when reading this blog ;-). There are some errors and sentences that don't flow smoothly. But if you go over that, it is a good book for a starting APEX developers (and for some parts for intermediate ones as well), who wants to know more about the reporting solution APEX offers.

Friday, October 18, 2013

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.