X

An Oracle blog about BI Publisher

Bursting Tip

This is one for those of you bursting with the standalone release - for the rest of you, I'll try to make it interesting.



I have to admit I was not going to blog today, too much other stuff on that needed my attention. The ever present Oracle Messenger window on my laptop has been blinking most of the day with questions and comments. I guess I chose for it to be ever present but working remote you need to try and be available through all channels. Klaus (DevMgr) will disagree here as we can never find the right moment to share a 'catch up phone call'.



One of the blinking windows caught my eye, Kevin, from our support organization had a question on our internal mailing list and was pinging me for a followup. Kevin, like Pieter, in my opinion is worth his weight in gold  - those of you that made it to the demo booth at OOW07 and found Kevin, I hoped pumped him for as much information as possible. He is a proverbial gold mine of all things XMLP/BIP - the guy remembers specific patch numbers for heavens sake. These maybe burned into his brain because its our fault for some stoopid bug and every one of you logging SRs has hit the same problem. Nevertheless, if you happen to meet or interact with Kevin in an SR, once more you have hit gold. I could not think of another word for 'pay dirt'- that's reserved for Pieter. I dont think its really a 'UK' english expression and I could not think of an equivalent ... moving on.



 So, Kevin was getting a null pointer exception with his bursting run - no matter what he did. One of those great error messages we sometimes dump.

oracle.apps.xdo.servlet.scheduler.ProcessingException: java.lang.NullPointerException 
at oracle.apps.xdo.servlet.scheduler.XDOJob.runBurstingReport(XDOJob.java:2012)
at oracle.apps.xdo.servlet.scheduler.XDOJob.execute(XDOJob.java:315)
at org.quartz.core.JobRunShell.run(JobRunShell.java:195)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:520)
Caused by: java.lang.NullPointerException


A bit of digging around on his system and a neat trick to get a look at the burst sql result and I found the problem. First the trick - once you have your bursting sql or even want to test it while developing. Just create a new Data Model and paste in your bursting sql



BurstingAnalysis1:



Now you have the main sql and the bursting sql - just get a Concatenated Data Source



BurstingAnalysis2:



When you run the report (not in Bursting mode) you'll get the bursting sql result too.



This is how I found the issue, Kevin's result set had an anomaly.



BurstingAnalysis3:



Notice we have null values for the KEY element - we cant handle that - and I dont think we should do. I'll accept we should fall over more gracefully but how should we handle the null values for the KEY value to match on? Thats up to you to handle - I got around it with an NVL value to avoid the null KEY value and thus the falling over. 

select  nvl(NOMINEE,'Kevin McDermott') KEY,
'Award1'  TEMPLATE,
'RTF' TEMPLATE_FORMAT,
'en-US' LOCALE,
...




Now back to work ...

Join the discussion

Comments ( 3 )
  • Jim O'Connor Wednesday, December 23, 2009
    Do you happen to know how to format an e-mail message so that the full name is displayed.
    Example: 'Kevin McDermott'
    I can not seem to get it to work for bursting.
  • Emil Cumming Wednesday, July 28, 2010
    Seriously!, i thought this was a top-notch superior blog post. The theory is that I'd like to write this way as well - spending time and authentic effort to generate a great posting... on the contrary what can I say... I procrastinate an awful lot and not seem to get something succesfully done
  • Federico Kirley Thursday, August 5, 2010
    You raise the right points, but nonetheless , I do think all your analysis is most probably off base, great stuff though, congrats. Cath
Please enter your name.Please provide a valid email address.Please enter a comment.CAPTCHA challenge response provided was incorrect. Please try again.