tag:blogger.com,1999:blog-54061077935301266502024-03-04T20:04:33.507-08:00BI Publisher BlogYour one stop shop for tips & tricks!Ike Wigginshttp://www.blogger.com/profile/03629933955296401382noreply@blogger.comBlogger45125tag:blogger.com,1999:blog-5406107793530126650.post-62278585971887626082012-02-13T11:03:00.002-08:002012-02-22T14:23:31.821-08:00BI Publisher XDO_TOP - MSword DebuggingIn several of my previous posts over the years, I've highlighted quite a few ways to turn on debugging for the Oracle BI Publisher APIs. I really haven't gone to much into depth on how to turn on debugging for the MSword template builder. I've outlined an approach below that I have used with great success. In my opinion it's the easiest way to configure BI Publisher and debug the BI Publisher APIs.<br />
<br />
1. Create a directory on your C: drive called xdo_top<br />
2. Create a sub-directory called temp: C:\xdo_top\temp<br />
Create a sub-directory called resource: C:\xdo_top\resource <br />
3. Create a xdodebug.cfg file in the resource directory with the following 2 lines:<br />
LogLevel=STATEMENT<br />
LogDir=C:\xdo_top\temp<br />
4. Optionally copy an existing version xdo.cfg file if you need it for barcodes, micr fonts, etc. Note: You can find this in one of the oracle bi publisher template builder directory's.<br />
5. In MSWord goto the Add-ins menu for BIP, Click on -> tools->options->java options, Add the following: <b>-DXDO_TOP=C:\\xdo_top</b><br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjaQegVqma9J2-itR4soQGbUMxVInXCD_k-93nVPEfW6imcRR0iZQORGAZYMc_bUUUZJ3G0GzDBmfwj974mdaHtPvLCyUYFYAmdDv9rN4kkJCHp871IOcB-kbym3m9IhoIJ_t8Yo5_tIZgk/s1600/xdo_cfg.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="243" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjaQegVqma9J2-itR4soQGbUMxVInXCD_k-93nVPEfW6imcRR0iZQORGAZYMc_bUUUZJ3G0GzDBmfwj974mdaHtPvLCyUYFYAmdDv9rN4kkJCHp871IOcB-kbym3m9IhoIJ_t8Yo5_tIZgk/s320/xdo_cfg.png" width="320" /></a></div><span style="font-family: "Calibri","sans-serif"; font-size: 11pt;"></span> <br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<i>Note: The screen shot also has a memory parameter, you do not need the memory option -Xmx256M</i><br />
<br />
6. Restart msword* Not really needed but a good idea<br />
<br />
When you start bi publisher and preview a template from MSword the following should happen:<br />
<ul><li>xdo.log should be created under c:\xdo_top\temp. </li>
<li>The log file should contain rich debugging information to help you with your troubleshooting. </li>
</ul><br />
<b>When would I need to use debugging? </b><br />
As an example, let say you wanted to use the xdo.cfg file to configure a font, but that insolent micr font isn't working in your template. You can review the log to see if it's indeed being pulled in.Ike Wigginshttp://www.blogger.com/profile/03629933955296401382noreply@blogger.com36tag:blogger.com,1999:blog-5406107793530126650.post-70281779105853990042012-01-21T06:37:00.000-08:002012-01-21T06:37:04.621-08:00BI Publisher Blog News<b> Source Code Link Changes</b><br />
I wanted to give everyone who views this blog a heads-up that some of the links to my source code and home grown apps will be changing in the next couple of months to a new server. My apple mobile me account is being transitioned and I will no longer have server space so I have to do it :-) In the event a link is dead, do me a solid and send me an e-mail or post a comment that it's dead! <br />
<br />
<br />
<b> BI Publisher Toolbox Updates</b><br />
In dec 2010, I stated I would be releasing a standalone version of the toolbox for windows. This will be rolled into the link change and I wanted to apologize for the long delay. Also, going forward if you have any suggestions or improvements for the tool please let me know!Ike Wigginshttp://www.blogger.com/profile/03629933955296401382noreply@blogger.com2tag:blogger.com,1999:blog-5406107793530126650.post-6505523383220255312010-04-23T20:45:00.000-07:002012-06-16T12:40:42.644-07:00BI Publisher Toolbox 4.5<span style="font-size: 130%; font-weight: bold;">BI Publisher Toolbox Development Suite Fixes Part III</span><br />
<br />
Last series of updates!!!<br />
<br />
A new version of the BI Publisher Toolbox has been released. The following things are fixed in version 4.5<br />
<ul>
<li>Bursting Designer randomly crashes when bursting</li>
</ul>
There are several reasons why the Bursting Designer crashes. It mainly has to do with incorrect or blank data. So, I've coded so more validation to catch these problems before a control file is run. You will still be able to enter invalid file paths (just not in the bursting designer). The following error messages will be displayed if you have incorrectly keyed data in your control file:<br />
<ol>
<li>Document output type cannot be null. See deliveries: [ something]</li>
<li>Document key cannot be null. See deliveries: [ something]</li>
<li>Document Delivery Id must be assigned!</li>
<li>Template type must be populated!</li>
<li>Template Location file-path is invalid</li>
</ol>
If the Bursting Designer still crashes please let me know and I'll fix it.<br />
<br />
<span style="font-weight: bold;">Download</span><br />
The BI Publisher Toolbox can be downloaded <a href="http://bethwphoto.com/ike/bipublisher/BIPublisherToolBoxDist/launch.html">here</a>. I'm still working on the standalone version of the application. Should be available for download in the next couple of days. I'll update the blog when it's out there!<span style="font-size: 130%;"><br /></span><span style="font-size: 78%;"><http: com=""></http:></span>Ike Wigginshttp://www.blogger.com/profile/03629933955296401382noreply@blogger.com2tag:blogger.com,1999:blog-5406107793530126650.post-53641432389685377782010-04-22T17:16:00.001-07:002012-06-16T12:42:03.541-07:00BI Publisher Toolbox 4.2.3<span style="font-size: 130%; font-weight: bold;">BI Publisher Toolbox Development Suite Fixes Part II</span><br />
<br />
Once, again....<br />
A new version of the BI Publisher Toolbox has been released. The following things are fixed:<br />
<ul>
<li> BI Publisher Toolbox fail to email reports when running burst control files</li>
<li>Bursting Designer fails to e-mail reports, there are no errors</li>
<li>Delivery Designer does nothing when the run button is pushed for email</li>
</ul>
The reason the output files were not being emailed is simple. The javamail-1.4.3.zip is required to make this functionality work. If you don't have these jar files you should see the following error message: <span style="font-weight: bold;">Unable to locate provider for protocol: smtp</span>. Below is some sample output from the delivery designer....Also, that's how I was able to fix this issue. The Delivery Designer is a great utility for bursting troubleshooting....<br />
<br />
<span style="font-weight: bold;">Known Issues</span><br />
There is still an outstanding issue with the Bursting Designer crashing. This is caused by a space or an invalid location to a format template. Be sure to verify the template location is valid. I should have another patch out this week for this issue.<br />
<span style="font-size: 130%;"><br /></span><span style="font-weight: bold;">Download</span><br />
The BI Publisher Toolbox can be downloaded <a href="http://bethwphoto.com/ike/bipublisher/BIPublisherToolBoxDist/launch.html">here</a>. I'm still working on the standalone version of the application. Should be available for download in the next couple of days. I'll update the blog when it's out there!<br />
<span style="font-size: 130%;"><br /><span style="font-weight: bold;">Sample output from the Delivery Designer</span></span><span style="font-size: 78%;"><br />[042210_050359941][][STATEMENT] XDO_CFG Location: null<br />[042210_050359941][oracle.apps.xdo.delivery.smtp.SMTPDeliveryRequest][STATEMENT] submit(DeliveryResponseListener): Called<br />[042210_050359941][oracle.apps.xdo.delivery.smtp.SMTPDeliveryRequest][STATEMENT] submit(DeliveryResponseListener): Starting status checking thread.<br />[042210_050400004][oracle.apps.xdo.delivery.AbstractDeliveryRequest$RequestChecker][STATEMENT] Constructor called. [Check interval : 10000 ms][Timeout : 86400000 ms][Retry : 0][Retry interval : 60000]<br />[042210_050400020][oracle.apps.xdo.delivery.AbstractDeliveryRequest$RequestChecker][STATEMENT] run(): Called. Start the request checking thread for request id #1<br />[042210_050400020][oracle.apps.xdo.delivery.AbstractDeliveryRequest$RequestChecker][STATEMENT] run(): Begin retry loop : 0<br />[042210_050400020][oracle.apps.xdo.delivery.AbstractDeliveryRequest$RequestChecker][STATEMENT] run(): Calling submit()<br />[042210_050400020][oracle.apps.xdo.delivery.smtp.SMTPDeliveryRequest][STATEMENT] submit(): Called<br />[042210_050400066][oracle.apps.xdo.delivery.smtp.SMTPDeliveryRequest][STATEMENT] setDefaultServerProperties(): No properties for the server '' were found.<br />[042210_050400066][oracle.apps.xdo.delivery.smtp.SMTPDeliveryRequest][STATEMENT] setDefaultServerProperties(): properties defined in this request.<br />----<br />[PORT:Integer] [25]<br />[SMTP_FROM:String] [Ike_Wiggins@starkey.com]<br />[SMTP_CHARSET:String] [UTF-8]<br />[SMTP_CHARACTER_ENCODING:String] [UTF-8]<br />[SMTP_CONTENT_TYPE:String] [application/pdf]<br />[ASYNC_TIMEOUT:Integer] [86400000]<br />[SMTP_ENCODING:String] [B]<br />[HOST:String] [mail.starkey.com <http: com=""> ]<br />[RETRY:Integer] [0]<br />[ASYNC_CHECK_INTERVAL:Integer] [10000]<br />[SMTP_TO_RECIPIENTS:String] [Ike_Wiggins@starkey.com]<br />[TEMP_FILE_SUFFIX:String] [.tmp]<br />[BUFFERING_MODE:Boolean] [true]<br />[SMTP_ATTACHMENT_FIRST:Boolean] [false]<br />[SMTP_SUBJECT:String] [This is a converison test!]<br />[TEMP_FILE_PREFIX:String] [dlvr]<br />[RETRY_INTERVAL:Integer] [60000]<br />----<br /><br />[042210_050400066][oracle.apps.xdo.delivery.smtp.SMTPDeliveryRequest][STATEMENT] submit(): BUFFERING_MODE is ON.<br />[042210_050400066][oracle.apps.xdo.delivery.smtp.SMTPDeliveryRequest][STATEMENT] submit(): TEMP_DIR not found. Turn off the BUFFERING_MODE.<br />[042210_050400066][oracle.apps.xdo.delivery.smtp.SMTPDeliveryRequest][STATEMENT] submit(): Start reading the document file. : C:\SALES.pdf<br />[042210_050400066][oracle.apps.xdo.delivery.smtp.SMTPDeliveryRequest][STATEMENT] submit(): Calling DeliveryRequestHandler.submitRequest()<br />[042210_050400066][oracle.apps.xdo.delivery.smtp.SMTPDeliveryRequestHandler][STATEMENT] submitRequest(): called<br />[042210_050400113][oracle.apps.xdo.delivery.smtp.SMTPDeliveryRequestHandler][STATEMENT] submitRequest(): This request has never been submitted before.<br />[042210_050400145][oracle.apps.xdo.delivery.smtp.Attachment][STATEMENT] addAttachment(): Adding an attachment ...[filename]=[null], [content-type]=[application/pdf], [index]=[0], [disposition]=[inline]<br />[042210_050400145][oracle.apps.xdo.delivery.smtp.Attachment][STATEMENT] addAttachment(): Character set for MIME headers : UTF-8<br />[042210_050400145][oracle.apps.xdo.delivery.smtp.Attachment][STATEMENT] addAttachment(): Character encoding for MIME headers : B<br />[042210_050400145][oracle.apps.xdo.delivery.smtp.Attachment][STATEMENT] addAttachment(): Exiting addAttachment()<br />[042210_050400160][oracle.apps.xdo.delivery.smtp.SMTPDeliveryRequestHandler][STATEMENT] submitRequest(): Character set for MIME headers : UTF-8<br />[042210_050400160][oracle.apps.xdo.delivery.smtp.SMTPDeliveryRequestHandler][STATEMENT] submitRequest(): Character encoding for MIME headers : B<br />[042210_050400176][oracle.apps.xdo.delivery.AbstractDeliveryRequest$RequestChecker][STATEMENT] run(): Calling Thread.sleep() before checking status : 10000<br />[042210_050410176][oracle.apps.xdo.delivery.AbstractDeliveryRequest$RequestChecker][STATEMENT] run(): Checking request status. (10172 millisec passed since thread started.<br />[042210_050410176][oracle.apps.xdo.delivery.AbstractDeliveryRequest$RequestChecker][STATEMENT] run(): Got request status. (Status id : 19)<br />[042210_050410176][oracle.apps.xdo.delivery.AbstractDeliveryRequest$RequestChecker][STATEMENT] run(): Calling callback - DeliveryResponseListener.responseReceived()<br />[042210_050410176][][STATEMENT] Request done!<br />[042210_050410176][][STATEMENT] Request status id : 19<br /><span style="color: red; font-weight: bold;">[042210_050410176][][STATEMENT] Request status msg: Unable to locate provider for protocol: smtp</span><br />[042210_050410176][][STATEMENT] Request body: null</http:></span>Ike Wigginshttp://www.blogger.com/profile/03629933955296401382noreply@blogger.com1tag:blogger.com,1999:blog-5406107793530126650.post-38286888877933262652010-04-20T19:33:00.000-07:002012-06-16T12:42:25.555-07:00BI Publisher Toolbox 4.2.1<span style="font-size: 130%; font-weight: bold;">BI Publisher Toolbox Development Suite</span><br />
<br />
A new version of the BI Publisher Toolbox has been released. The following things are fixed:<br />
<ul>
<li>Toolbox configuration fails to save or load</li>
<li>Adhoc PL/SQL attempts to execute when the field is blank or null</li>
<li>Parameters dialog doesn't open when you click on the button in cell and error is displayed</li>
<li>Data Template fails to execute and errors out</li>
</ul>
The BI Publisher Toolbox can be downloaded <a href="http://bethwphoto.com/ike/bipublisher/BIPublisherToolBoxDist/launch.html">here</a>. On a side-note, there will be standalone version of the application that will be available for download in the next couple of days. I'll update this post when it's available.<span style="font-size: 130%;"><br /></span>Ike Wigginshttp://www.blogger.com/profile/03629933955296401382noreply@blogger.com0tag:blogger.com,1999:blog-5406107793530126650.post-36946269051427959272010-02-22T19:05:00.000-08:002012-06-16T12:43:44.632-07:00BI Publisher: BI Publisher Toolbox Development Suite<span style="font-size: 130%; font-weight: bold;">BI Publisher Toolbox Development Suite</span><br />
<br />
<span style="font-weight: bold;">What’s new in the BI Publisher Toolbox</span><br />
The toolbox is back and packed with more features! Every wanted to convert a report6i report, build a Burst control file or test the Delivery APIs? You now can do that with the Toolbox. Haven’t heard about the toolbox, click <a href="http://www.oracle.com/technetwork/articles/wiggins-bipublisher-085427.html">here</a>.<br />
<br />
Besides, the new tools, the toolbox is also faster, easier to use and has a new look and feel. Below is a list of the all the new features.<br />
<br />
<span style="font-weight: bold;">New features and updates</span><br />
<ul>
<li>Performance</li>
<li>Cancel Long Running Tasks</li>
<li>Parameters</li>
<li>Global Properties</li>
<li>Ad Hoc PL/SQL</li>
<li>File Browser(s)</li>
<li>Connection Screens</li>
<li>XDO Protocol Support</li>
<li>Tools:</li>
</ul>
<blockquote>
*Bursting Designer<br />
*Delivery Designer<br />
*Report</blockquote>
<span style="font-weight: bold;">Installation</span><br />
<a href="http://bethwphoto.com/ike/bipublisher/BIPublisherToolBoxDist/launch.html">BI Publisher Toolbox</a> - By clicking on the download link you will be redirected to a different site. The standalone client is no longer supported and the toolbox is now a java webstart application. Webstart applications allow for automatic updates and real-time fixes for developers. Don’t worry though just because it’s a webstart application doesn’t mean the performance will lack luster; the jar files are automatically loaded and saved on your PC. It's recommended to bookmark this page and the download site.<br />
<span style="font-size: 130%;"><br />
<span style="font-size: 130%; font-weight: bold;">BI Publisher Toolbox 4.2</span><span style="font-size: 180%;"><br />
</span></span><br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhNgpRVcebCGDCRrp1IMwEo-Y4EVFJbv8rnIh_9gKEy5hylSP0zNFetWbyrW_9UyX4R_QvliEEkJK3mSKqVPkmMD_EJ1w7NY53SDO1MzYzuRVfsZDsQ9J53hDZoiXNCPMTjZcVnzDGX3LCo/s1600-h/toolbox_main.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5438589464827054546" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhNgpRVcebCGDCRrp1IMwEo-Y4EVFJbv8rnIh_9gKEy5hylSP0zNFetWbyrW_9UyX4R_QvliEEkJK3mSKqVPkmMD_EJ1w7NY53SDO1MzYzuRVfsZDsQ9J53hDZoiXNCPMTjZcVnzDGX3LCo/s400/toolbox_main.png" style="cursor: pointer; height: 302px; width: 400px;" /></a><br />
<br />
<span style="font-weight: bold;">Performance</span><br />
All of the performance issues in previous version of the toolbox have now been resolved. As an example, the previous version of the toolbox would perform poorly when clicking the execute button. That issue is now resolved and the performance is significantly better.<br />
<br />
<span style="font-weight: bold;">Long Running Tasks</span><br />
Sometimes when you miss a join in a query a data template can run forever. Now, when clicking the execute button there is an option now to kill long running tasks. In the previous version the only option was to kill the program through windows task manager, which is less than ideal.<br />
<br />
<span style="font-weight: bold;">Parameters</span><br />
One of the best improvements in the toolbox is the parameters screen. In the past, scrolling was required to enter parameters and it was a bit cumbersome (See Figure 1), now it's very intuitive. With one click of a button a parameters screen will popup (See Figure 2).<br />
<br />
Now, if you can't remember what parameters are in your Data Template the toolbox has you covered. Click the look up button, the toolbox will automatically parse the Data Template and provide a list of available parameters to select.<br />
<br />
Also, there is no longer a limit on the number of parameters that can be entered!<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhWPGUBzZaTRciNQ85MFDV43MXM6GPNOVBQTz6eFwyUQfSof6O_nmTHcadSl48GGqNOLejup3c09GZ0KqBdIDEMLvdoXvEUke51j1d_vk79vEcfPGtPe78ziVHeWwezZKVX9STQL0LtXbN7/s1600-h/Old+Toolbox.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5438589468351532786" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhWPGUBzZaTRciNQ85MFDV43MXM6GPNOVBQTz6eFwyUQfSof6O_nmTHcadSl48GGqNOLejup3c09GZ0KqBdIDEMLvdoXvEUke51j1d_vk79vEcfPGtPe78ziVHeWwezZKVX9STQL0LtXbN7/s400/Old+Toolbox.jpg" style="cursor: pointer; height: 97px; width: 400px;" /></a><br />
<span style="font-weight: bold;">Figure 1 </span>Old version of the parameters for the toolbox.<br />
<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjmr2Eo0_qvM3ljvM2BCcwgALI3QdLS_0ubMQvIKZPN_HeKToz2Kg5txAZycO7pbWdgGGlYmMTV-bIw-5Cv4VjN1CKGjrVa-zst-87HXIk4V1V690POUnmvStqGnAOq6OcUPgecVeJeVx06/s1600-h/toolbox_parameters.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5438589472430806978" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjmr2Eo0_qvM3ljvM2BCcwgALI3QdLS_0ubMQvIKZPN_HeKToz2Kg5txAZycO7pbWdgGGlYmMTV-bIw-5Cv4VjN1CKGjrVa-zst-87HXIk4V1V690POUnmvStqGnAOq6OcUPgecVeJeVx06/s400/toolbox_parameters.png" style="cursor: pointer; height: 400px; width: 384px;" /></a><br />
<span style="font-weight: bold;">Figure 2 </span>New parameters form with Data Template parameter lookup feature<br />
<br />
<span style="font-weight: bold;">Global Properties</span><br />
All of the standard and non-standard features of the template manager are now available in the toolbox (See Figure 3). As an example if you wanted to set the system-temp-dir or password protect a pdf you now can!<br />
<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKASn0uhYMTgfp59iFu1YwDoNcNL0Es1niysHGUWy8k9t0QNE9k-9_Hasa3zOGWInat4y7LzYMr36RwdVV5ZH-ZCEFTCMb2EfwwR0IlBtRKJ-ia2Q8uyLSbFy9CqfNq36MV8aUPtMtBoBb/s1600-h/global+properties.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5438589481412250146" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhKASn0uhYMTgfp59iFu1YwDoNcNL0Es1niysHGUWy8k9t0QNE9k-9_Hasa3zOGWInat4y7LzYMr36RwdVV5ZH-ZCEFTCMb2EfwwR0IlBtRKJ-ia2Q8uyLSbFy9CqfNq36MV8aUPtMtBoBb/s400/global+properties.png" style="cursor: pointer; height: 143px; width: 400px;" /></a><br />
<span style="font-weight: bold;">Figure 3 </span>Global properties tab<br />
<br />
<span style="font-weight: bold;">Ad Hoc PL/SQL</span><br />
Developer can stage data, initialize sessions, etc using the “Add Hoc PL/SQL” feature. This feature will execute pl/sql statements before a Data Template executes. The purpose of the ad-hoc pl/sql is to limit hard-coding in your data template. In the E-business suite as example, most views are org secured views. With very little effort a developer can use this new feature to execute apps_initialize before your data template queries are run.<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0ZoxOudvhlBeXG6v6VzROisdbTOg_Smcq0P78Qb1Y6yx_ZjWGto7rFK3XPN6B8yWv23aotE0rPt0lxbRliE-FtaSXyRz8EAxxJ5EqyyvYOM3CO7iVv3kmyIGdPPA69iuzOuixxsqNbnuh/s1600-h/toolbox_adhoc_plsql.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5438589490195154610" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0ZoxOudvhlBeXG6v6VzROisdbTOg_Smcq0P78Qb1Y6yx_ZjWGto7rFK3XPN6B8yWv23aotE0rPt0lxbRliE-FtaSXyRz8EAxxJ5EqyyvYOM3CO7iVv3kmyIGdPPA69iuzOuixxsqNbnuh/s400/toolbox_adhoc_plsql.png" style="cursor: pointer; height: 400px; width: 360px;" /></a><br />
<span style="font-weight: bold;">Figure 4</span> Ad Hoc PL/SQL - Example of apps initialize<br />
<br />
File Browser for Data Templates, Format Templates and Burst Control Files<br />
A file browser has now been incorporated into several fields for locating Data Templates, Format Templates and Burst control files. It’s not mandatory to use the new file browser and an absolute path to your files can be manually entered. Also, Data Templates, Format Templates and output files can be in separate directories, which was a restriction in the first release of the toolbox.<br />
<br />
<span style="font-weight: bold;">XDO Protocol Support</span><br />
The toolbox also supports the XDO Protocol. To use this new feature a DBC file must be assigned. Go to the Action menu and select “Set DBC File.” The DBC file will be preloaded the next time you open the Toolbox or the Bursting designer.<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgL5ZNJGtLlBpS75GSrj3YL2zKe2b4rSaSECJwHL7Vx3JFkA2dINqMvYvSZkG9nEIhGo1AW_JEjvdZmw-ninRBkuvkVElsWWnrf6QQFP6PPT19YS1YZaVxFyda4CDTnPsQiZXe7ptKX-0xo/s1600-h/toolbox_xdo_protocol.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5438591581028085810" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgL5ZNJGtLlBpS75GSrj3YL2zKe2b4rSaSECJwHL7Vx3JFkA2dINqMvYvSZkG9nEIhGo1AW_JEjvdZmw-ninRBkuvkVElsWWnrf6QQFP6PPT19YS1YZaVxFyda4CDTnPsQiZXe7ptKX-0xo/s400/toolbox_xdo_protocol.png" style="cursor: pointer; height: 88px; width: 400px;" /></a><br />
<br />
By setting the DBC file developers can run format templates that have import statements in them and prevents errors from occurring. This is something that the Template Builder in msword cannot currently do. As an example in your format template if your doing and import like this: import:xdo://ONT.ONTBSAERTF.en.00/ that should work in the toolbox.<br />
<br />
Not only is the XDO Protocol supported for import in format templates, its also supported in the toolbox itself. There is no longer a requirement to have a format template physically located on a PC. An XDO URL can be entered directly into the format template field. The toolbox will pull the format template from the database using the assigned DBC file. For the URL don’t put getSource=true. ie: xdo://ONT.ONTBSAERTF.en.00/?getSource=true<br />
<br />
<br />
<span style="font-weight: bold;">Connection creation and removal</span><br />
The previous version of the toolbox was very difficult to update or remove connections and it usually required manually editing of the toolbox config. Going forward, the connection portion of the application has also been completely redone. Creating or removing a connection couldn't be easier (See Figure 5 & 6).<br />
<br />
*Connections 10g databases are supported, 9i and earlier versions are not.<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj53t4AtI_MVWNMI-p4WiFNEG4FsbBzcLSsBiUzy6XKX23VgNG7Oiu4DtZQemBI1k0fGThWmbO2MIND7KVEqq_JjdTWOh_5RSqUmz8SxQ6Vgg1ka7QA31V8qejKgPk0iAtwLM1fdVfs0U-J/s1600-h/toolbox_new_connection.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5438591586360385330" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj53t4AtI_MVWNMI-p4WiFNEG4FsbBzcLSsBiUzy6XKX23VgNG7Oiu4DtZQemBI1k0fGThWmbO2MIND7KVEqq_JjdTWOh_5RSqUmz8SxQ6Vgg1ka7QA31V8qejKgPk0iAtwLM1fdVfs0U-J/s400/toolbox_new_connection.png" style="cursor: pointer; height: 294px; width: 400px;" /></a><br />
<span style="font-weight: bold;">Figure 5</span> New connection setup screen<br />
<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEho2TO0NonfqQbyIKX3Hvb0pP_vLgb97Xs8K18Roq0DIFVV8eW1y-yx2fya-AvxhXS7vWPQcacO5hIaOCknWByua4JENUtD-9rgPW1LaO2B4DPitLw_tGdR0obEpCYkBVt0Z-fyq770AMKE/s1600-h/toolbox_edit_connection.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5438591592269950546" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEho2TO0NonfqQbyIKX3Hvb0pP_vLgb97Xs8K18Roq0DIFVV8eW1y-yx2fya-AvxhXS7vWPQcacO5hIaOCknWByua4JENUtD-9rgPW1LaO2B4DPitLw_tGdR0obEpCYkBVt0Z-fyq770AMKE/s400/toolbox_edit_connection.png" style="cursor: pointer; height: 305px; width: 400px;" /></a><br />
<span style="font-weight: bold;">Figure 6</span> Edit/Remove connection screen<br />
<br />
<span style="font-weight: bold;">Tools</span><br />
One of the new features of the toolbox is external applications integration (See Figure 1). The tools menu has a list of applications that can be run:<br />
<br />
1. Bursting<br />
2. Delivery Designer<br />
3. Report Conversion<br />
<br />
Before running one of these applications be sure to click the save button or your toolbox changes will be lost.<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjCt7VbaQEXlLiT9E7LJsy5oD8tmNqAN7SPz1maB2CVEC92FYnIW3LfpDy6mKreHf5S-pReVitvs64ALEz5gZizonn-VSRVrjTeSYOpP6APXUeGAYL6ZK6AmGC9FvLyUZPRdPWf8x0rnvdn/s1600-h/toolbox_tools.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5438592877601660626" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjCt7VbaQEXlLiT9E7LJsy5oD8tmNqAN7SPz1maB2CVEC92FYnIW3LfpDy6mKreHf5S-pReVitvs64ALEz5gZizonn-VSRVrjTeSYOpP6APXUeGAYL6ZK6AmGC9FvLyUZPRdPWf8x0rnvdn/s400/toolbox_tools.png" style="cursor: pointer; height: 108px; width: 400px;" /></a><br />
<span style="font-weight: bold;">Figure 7</span> tools menu<br />
<br />
<br />
<span style="font-size: 130%; font-weight: bold;">Bursting Designer 3.7 XDO Protocol Supported</span><br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjP-rxbYIJ5zOnliQ85s5lWpUTN1X_keoOgJ9M4F6n584NNFNMz1SYXm7Msa7P5DralsFss1dPSc-PzScZZAhmlnvY8YKmem7X2D-_DScQaLKSkDPsADeHy6_BlkN-FYMtQ5ks78jfAJBMB/s1600-h/bursting_designer_1.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5438593090875834226" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjP-rxbYIJ5zOnliQ85s5lWpUTN1X_keoOgJ9M4F6n584NNFNMz1SYXm7Msa7P5DralsFss1dPSc-PzScZZAhmlnvY8YKmem7X2D-_DScQaLKSkDPsADeHy6_BlkN-FYMtQ5ks78jfAJBMB/s400/bursting_designer_1.png" style="cursor: pointer; height: 331px; width: 400px;" /></a><br />
<br />
<span style="font-weight: bold;">About the Bursting Designer</span><br />
<br />
The Bursting Designer allows developers of any skill level to create, run and test Burst control files. The tool provides the following benefits:<br />
<ul>
<li>Preview a burst control file as it's being built (See Figure 8.)</li>
<li>Test the burst control file (See Figure 9.)</li>
<li>Test XDO Delivery configurations</li>
<li>Onscreen real-time logfile (See Figure 10.)</li>
<li>Review/Analyze your Bursting delivery channels</li>
<li>XDO Protocol Support</li>
<li>XDO Delivery Configurations (xdodelivery.cfg) & XDO_TOP support</li>
<li>Authentication support (email, printer, fax)</li>
<li>Printer Delivery Properties</li>
<li>Data Expressions (implicitly supported)</li>
<li>Template File Browser</li>
<li>File History</li>
<li>Improved UI (Quick Keys & Menus)</li>
<li>Fixed - Crash when opening test file</li>
</ul>
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_VO58OPdY8hbfGvD05EbijePA82kLNWMZC2EnU8_-TobKmuhgoTLST3CsasPSat9wUC7yKblLjKt3Eh-1r42zybGJbUUbegbHgGF5W83gVE_8bgHHvesHHiYMPQ-MYdrdKW2okzVUPhaq/s1600-h/bursting_designer_preview.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5438593478629377410" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi_VO58OPdY8hbfGvD05EbijePA82kLNWMZC2EnU8_-TobKmuhgoTLST3CsasPSat9wUC7yKblLjKt3Eh-1r42zybGJbUUbegbHgGF5W83gVE_8bgHHvesHHiYMPQ-MYdrdKW2okzVUPhaq/s400/bursting_designer_preview.png" style="cursor: pointer; height: 287px; width: 400px;" /></a><br />
<span style="font-weight: bold;">Figure 8:</span> Preview a control file<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhj18To9K8BBOPOb010ChDXI47bQUlbSjxbZRNjfwWNwGKaWlY7h9-me-Nz27e-Y2KUDArC3SDPBEWf4cCAyPs3rllmMHepwNGxH_5Y6GPaKdqH47ftCvSifkX1bRPdTymKgnPh5pcpxGpl/s1600-h/bursting_designer_request_tree.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5438593470097059154" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhj18To9K8BBOPOb010ChDXI47bQUlbSjxbZRNjfwWNwGKaWlY7h9-me-Nz27e-Y2KUDArC3SDPBEWf4cCAyPs3rllmMHepwNGxH_5Y6GPaKdqH47ftCvSifkX1bRPdTymKgnPh5pcpxGpl/s400/bursting_designer_request_tree.png" style="cursor: pointer; height: 300px; width: 400px;" /></a><br />
<span style="font-weight: bold;">Figure 9:</span> Request tree – Hierarchal view of request and their related deliveries. Note: Double click the link to view the file.<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEht12eEtBBKiJ8QqoM5TyBvoVXaLRgjvtx2wneEljAjuGHiKV9KyWc0RWEBb0tzbRETMhG3ULHq7AYNCHA2LmXUvNz7x9ZjvsIjFTfTDLZc-fTrPweCfVYIHw3bsUEpGGPbKGQPDJV0ihcF/s1600-h/bursting_designer_logfile.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5438593483036979906" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEht12eEtBBKiJ8QqoM5TyBvoVXaLRgjvtx2wneEljAjuGHiKV9KyWc0RWEBb0tzbRETMhG3ULHq7AYNCHA2LmXUvNz7x9ZjvsIjFTfTDLZc-fTrPweCfVYIHw3bsUEpGGPbKGQPDJV0ihcF/s400/bursting_designer_logfile.png" style="cursor: pointer; height: 300px; width: 400px;" /></a><br />
<span style="font-weight: bold;">Figure 10: </span>Real-time log file<br />
<br />
How to build a control file using the Bursting Designer<br />
Below is a list of video tutorials for the Bursting Designer. The tutorials explain how Bursting works and how to create a Burst Control file in the Bursting Designer.<br />
<a href="http://bethwphoto.com/ike/bipublisher/BurstDesignerDist/BurstingDesignerLesson_1.m4v">Bursting Designer Lesson 1 - What is Bursting</a><br />
<a href="http://bethwphoto.com/ike/bipublisher/BurstDesignerDist/BurstingDesignerLesson_2.m4v">Bursting Designer Lesson 2 - Creating a Burst Control File</a><br />
<br />
The basic steps to create a control file are:<br />
<br />
<span style="font-style: italic; font-weight: bold;">Step 1: </span> Request setup<br />
Enter an xpath expression for the XML you would like to be burst. Multiple requests can be added and resorted (it’s drag and drop).<br />
<br />
<span style="font-style: italic; font-weight: bold;">Step 2:</span> Create a delivery.<br />
<br />
When creating a delivery your using oracle’s document delivery APIs . The following Deliveries are supported:<br />
<ul>
<li>File</li>
<li>FTP</li>
<li>Webdav</li>
<li>Printer</li>
<li>Email</li>
<li>Fax</li>
</ul>
<br />
General rules:<br />
<ul>
<li>Multiple deliveries can be created for request</li>
<li>Deliveries do not have to be assigned, but unassigned deliveries will not be used by the bursting engine</li>
<li>Deliveries are not global available across multiple requests, a delivery is request specific.</li>
<li>For file output, make sure the file name is unique. In most instances you would want to use the same value in the KEY field (see document tab).</li>
</ul>
<br />
<span style="font-style: italic; font-weight: bold;">Step 3: </span>Assign a delivery to a document.<br />
All the fields on this tab are required. One or more deliveries can be assigned to one document row. The Bursting Designer will allow for more than one document to be created, however, Oracles bursting engine does not support this. When choosing a key make sure the value is unique. Real world examples would be invoice number, transaction number, etc.<br />
<br />
<span style="font-style: italic; font-weight: bold;">Step 4: </span> Assign a template.<br />
All the fields on this tab are required except for the filter field. The location to a format template is the absolute path. You may hand-key the path or use the template file browser button. Another option besides local format template is to use the XDO Protocol (see in section below).<br />
<br />
One or more templates can be assigned to a document row. However, if there are multiple template rows the filter field is required (you will not be prompted though). Assign multiple templates with caution. If a filter doesn’t get applied, the last template row will be applied to the output. An alternative to filters would be to create multiple requests with predicates for each template. Neither way is a best practice and is purely a personal choice.<br />
<br />
<span style="font-weight: bold;">Previewing a control file</span><br />
At any point in the development process a control file can be previewed. To preview the control file go to the Actions menu and choose “View Control File.”<br />
<br />
<span style="font-weight: bold;">Run a control file</span><br />
Before running a control file be sure to save it first. To run a control file go to the Actions menu and choose “Run Control File.” You will be prompted to select a data file. Once a data file is selected it will be cached permanently unless you decided otherwise.<br />
<br />
<span style="font-weight: bold;">XDO Protocol Support</span><br />
XDO Protocol support allows a control file to be seamless loaded into the Bursting Designer from the E-Business Suite. The syntax to import a format template is as follows: xdo://<appname>.<templatecode>.<language>.<territory>/?getSource=true<br />
<br />
Example: xdo://ONT.ONTBSAERTF.en.00/?getSource=true<br />
<br />
In order to use this new feature a DBC file must be loaded. To load a DBC file, go to the Actions menu and select “Set DBC File.” The DBC file will be preloaded the next time you open the Bursting designer. When you load a DBC file the designer will test it to see if a connection can be created. If a connection cannot be created then the likely cause is a bad DBC file. The typical reasons for bad DBC file are it’s dated or the JDBC connection needs to be manually edited. To fix the JDBC connection string, remove any slashes (\), save and retry the “Set DBC File” action.<br />
<br />
<span style="font-weight: bold;">XDO Delivery configuration support</span><br />
Perhaps you didn't know this but Oracle's Bursting engine can use XDO Delivery configurations (xdodelivery.cfg). Setting the server-alias will utilize the configurations in a xdodelivery.cfg file. The sever-alias field is available on the following deliveries: Email, Print, Fax.<br />
<br />
To load a use a XDO Delivery Configuration file, go to the Actions menu and chose set XDO_TOP(see below). XDO_TOP should be the path to the resource directory. The location will be preloaded the next time you open the Bursting designer.<br />
<br />
<span style="font-weight: bold;">Why use an XDO Delivery configuration file?</span><br />
Simplified administration is the key benefit of using xdodelivery.cfg. However, there are some other advantages. As an example, what if a printer can only accept postscript output. What’s a programmer to do? BIP & Bursting only support pdf, so I guess were out of options or are we? The filter option in an XDO Delivery configuration would allow a developer to automatically convert a pdf to post script. Something like this should do the trick: filter="pdftops {infile} {outfile}." They’re many more features an XDO Delivery Configuration file can provide. For more information on how to setup one up click <a href="http://download.oracle.com/docs/cd/E12844_01/doc/bip.1013/e12693/toc.htm">here</a>.<br />
<br />
<span style="font-weight: bold;">Authentication support</span><br />
The Bursting designer now supports authentication nodes under specific delivery types. To use authentication set the user name and password fields on the following tabs: email, print and fax.<br />
<br />
<span style="font-weight: bold;">Printer Delivery Properties</span><br />
Below is a list of the enhanced printer options that are undocumented by Oracle (at least for Bursting). The following attributes are available on the Printer delivery tab:<br />
1. attributes-charset<br />
2. attributes-natural-language<br />
3. document-format<br />
4. job-name<br />
5. media *this is the tray option!<br />
6. orientation-requested<br />
7. requesting-user-name<br />
8. sides<br />
<br />
<span style="font-weight: bold;">Data Expressions</span><br />
Data expressions are implicitly supported for e-mail, ftp and webdav. Oracles Bursting Engine uses the Delivery Manager APIs, so by default that functionality works for Bursting. For more information on data expressions see <a href="http://blogs.oracle.com/xmlpublisher/2009/12/dynamic_delivery_file_naming.html">Tim Dexters Blog.</a><br />
<br />
Example:<br />
<xapi:ftp id="ftp" server="localhost" user="hidden" password="hidden" directory="/Users/ike/ " file="ftp_${TRX_NUMBER}_%y.%m.%d.%S" ftp="false"><br />
<br />
<span style="font-weight: bold;">File History</span><br />
Another major time saving benefit of the Bursting Designer is file history support.<br />
Every time a control file is opened, file history is created. Under the file menu, the last 5 five control files opened (see Figure 1) will be available.<br />
<br />
Also, when a data file (Action Menu --> Run Control File) is selected to run against a control file, the data file will be cached and will pre-populate next time the Bursting Designer is opened.<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh881zrXelHrSFMbOs7hzbEFNtxNPsxh5v8IYpb5vv9hsCsA7DV_sQ9Pul-96k7r3YzNfrYtHXUbxOqMoiN7NNCHcVklZspGGdw5y3MjlkFbuZU_rOairow-ju7r2fqhtaJbTelmUM9LDNz/s1600-h/bursting_designer_file_history.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5438593494191975346" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh881zrXelHrSFMbOs7hzbEFNtxNPsxh5v8IYpb5vv9hsCsA7DV_sQ9Pul-96k7r3YzNfrYtHXUbxOqMoiN7NNCHcVklZspGGdw5y3MjlkFbuZU_rOairow-ju7r2fqhtaJbTelmUM9LDNz/s400/bursting_designer_file_history.png" style="cursor: pointer; height: 333px; width: 400px;" /></a><br />
<span style="font-weight: bold;">Figure 11</span> File History<br />
<br />
<span style="font-weight: bold;">Crash when opening test file</span><br />
This was the number one issue that developers had with the Bursting Designer. The reason for the crash was because of an invalid path to a format template. There is a bug in one BIP classes that Oracle is working on. With that said, I'm overriding oracles class with my own in order to fix the issue.<br />
<span style="font-size: 130%;"><br />
<span style="font-weight: bold;">Delivery Designer 1.1 </span></span><span style="font-size: 130%;"><br />
</span><br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhIq15-3l3_YHU9acIoVgnuH3mPxHRe_4jSp86HCszhKltEjb8VyDMP4YYcvkj2CB9SQNK_l-6WGiayIiz61rCXzTpB1jV4KFwIFTta5bxczwi7O994TtO1WdVLE6juJfTpbAIkHCkTnc_i/s1600-h/deliverydesigner.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5438596532826587378" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhIq15-3l3_YHU9acIoVgnuH3mPxHRe_4jSp86HCszhKltEjb8VyDMP4YYcvkj2CB9SQNK_l-6WGiayIiz61rCXzTpB1jV4KFwIFTta5bxczwi7O994TtO1WdVLE6juJfTpbAIkHCkTnc_i/s400/deliverydesigner.png" style="cursor: pointer; height: 280px; width: 400px;" /></a><br />
<br />
If you ever wanted to test the Document Delivery APIs or a delivery configuration this tool is for you. The Delivery Designer allows a developer to test the all of the Delivery APIs without writing any code.<br />
<br />
The Delivery Designer’s use is not strictly related to testing how the Delivery APIs work, it also allows a developer to troubleshoot Bursting delivery problems. As an example, when trying to troubleshoot a Burst control file, it can be difficult to identify a misconfigured printer. In this situation the designer will allow repeated, lightweight troubleshooting of a printer issue without the overhead of running the Bursting Engine.<br />
<br />
It’s also never been easier to test an XDO Delivery configuration! The Delivery Designer not only allows XDO Delivery configuration testing, it also can generate a sample XDO delivery configuration.<br />
<br />
The Designer supports all of Oracles Documents delivery channels. Below is a list of the Delivery types that are supported:<br />
<ul>
<li>Email </li>
<li>Printer </li>
<li>Fax </li>
<li>Webdav </li>
<li>Ftp </li>
<li>Sftp </li>
<li>Http </li>
<li>AS2</li>
<li>External Command </li>
<li>File</li>
</ul>
<span style="font-weight: bold;">Setting a Particular Delivery Property</span><br />
There is an abundance of properties that can be set for a particular delivery channel. The Delivery Designer needs the literal value to be entered for delivery channels. It’s because of this fact the every property in the Delivery Designer has note in the info column. The purpose of the note is not only for informational purposes but what values can be entered. As an example, the IPP_AUTHTYPE (Figure 12) shows the valid values that can be entered are none, basic or digest.<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHL5urPFIXCJ8OwuPOdbqMNFwA0crj8QwjzlJi2AswrKUzHOCi-7ZM7forxIXvNAB4fOfuxeL8vcyzjDKH63QKDAhG1nsd-yvBl0tbQQBEs_7dx62OOzrC1T3nOOEw18kpflCh7fhmQWrs/s1600-h/delivery_designer_info.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5438596542581639794" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHL5urPFIXCJ8OwuPOdbqMNFwA0crj8QwjzlJi2AswrKUzHOCi-7ZM7forxIXvNAB4fOfuxeL8vcyzjDKH63QKDAhG1nsd-yvBl0tbQQBEs_7dx62OOzrC1T3nOOEw18kpflCh7fhmQWrs/s400/delivery_designer_info.png" style="cursor: pointer; height: 158px; width: 400px;" /></a><br />
<span style="font-weight: bold;">Figure 12</span> IPP_AUTHTYPE printer delivery attribute and related info<br />
<br />
<span style="font-weight: bold;">Setting up XDO Delivery Configurations</span><br />
There is only step to utilizing an XDO Delivery configuration. Navigate to the global property tab, select property called XDO_TOP, add the path to XDO_TOP. Be sure to create a directory called resource and place your xdodelivery.cfg document in that directory.<br />
<br />
To use a server defined in an XDO Delivery configuration enter the server name in the property called “SERVER_NAME”. The SERVER_NAME property is available for most delivery types.<br />
<br />
<span style="font-weight: bold;">XDO Delivery Configuration file generation </span><br />
An XDO Delivery Configuration can be generated at any point in time by clicking the delivery config button. The Delivery Designer will take the current properties for a delivery and generate the XDO Delivery Configuration. The deliveries that can automatically be generated are IPP, SMTP, Webdav, FTP, SFTP & External Command.<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEic8_R2kGlEegvGI-Kp59X_-WuVz9HK0TS55heflLnhe7yE9Fa0OqwGzZLe97ZGZTrcFZgHR00N2vJM65YSiyZCONjBs4s4G_HEIfbvhDvMDuw3GYjrasM8F5LwxCu8Bk6f-Ze-5JrZ81Vz/s1600-h/deliverydesignerxdocfg.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5438596519249131730" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEic8_R2kGlEegvGI-Kp59X_-WuVz9HK0TS55heflLnhe7yE9Fa0OqwGzZLe97ZGZTrcFZgHR00N2vJM65YSiyZCONjBs4s4G_HEIfbvhDvMDuw3GYjrasM8F5LwxCu8Bk6f-Ze-5JrZ81Vz/s400/deliverydesignerxdocfg.png" style="cursor: pointer; height: 285px; width: 400px;" /></a><br />
<span style="font-weight: bold;">Figure 1</span>3 Sample XDO Delivery Configuration file generation<br />
<br />
<br />
<span style="font-weight: bold;">Real-time log file</span><br />
When a Delivery Request is submitted, instant feedback is provided about the delivery request on the log screen. The log screen is continually updated till the <a href="http://download.oracle.com/docs/cd/E12844_01/doc/bip.1013/e12693/toc.htm">Oracle DeliveryResponseListener</a> returns the final status of the delivery.<br />
<br />
The Delivery Designer also supports undocumented properties that manipulate Oracles Delivery Reponse Listener. Changing these properties will determine how and when a delivery times out. Below is a list of properties that are available for every delivery.<br />
<ol>
<li>ASYNC_TIMEOUT - Sets the timeout period for the delivery</li>
<li>ASYNC_CHECK_INTERVAL- Set this property to change the minimum wait time before refreshing the log screen</li>
<li>RETRY - Set this property to change the number of times to re-attempt sending this delivery</li>
<li>RETRY_INTERVAL- Set this property to change the minimum wait time before re-attempting to send this delivery</li>
</ol>
<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPwNhYG-6wtpEjNlI9XXZCC6Gc-niunkUfaDBsKSjXmP2Bp-JoyghMFyrDp1G7LvP5KjyjiDnwQdvfrbNQh4y3Jw_6j7y4V_VNFAOKSvpDy3N_0BTPZKJXl_W1yCAtMdrKK81LOu3qXUen/s1600-h/deliverydesignerstatuslog.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5438596530979893410" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPwNhYG-6wtpEjNlI9XXZCC6Gc-niunkUfaDBsKSjXmP2Bp-JoyghMFyrDp1G7LvP5KjyjiDnwQdvfrbNQh4y3Jw_6j7y4V_VNFAOKSvpDy3N_0BTPZKJXl_W1yCAtMdrKK81LOu3qXUen/s400/deliverydesignerstatuslog.png" style="cursor: pointer; height: 224px; width: 400px;" /></a><br />
<span style="font-weight: bold;">Figure 14</span> Real-time log file<br />
<br />
<br />
<span style="font-size: 130%; font-weight: bold;">Report Conversion</span><br />
<br />
It's never been easier to convert a reports6i report to BI Publisher using the toolbox. Reports can be converted in mere seconds. To get an idea of how easy it is click here to watch the demonstration video.<br />
Prerequisites<br />
<br />
Forms and reports 10g locally must be installed. The report6i files must be converted to an xml format. To convert reports6i report, use the rwconverter.exe. A dos batch or shell script can be written to accomplish a batch conversion task (See Figure 15)<br />
<br />
<blockquote>
REM WINDOWS CONVERTING REPORT<br />
::report_batch_converter.bat<br />
cls<br />
Echo compiling Report .....<br />
for %%f IN (%1*.rdf) do rwconverter.exe batch=yes source=%%f dest=%%f.xml dtype=xmlfile overwrite=yes logfile=%1reports.log<br />
Echo FINISHED CONVERTING REPORT</blockquote>
<blockquote>
<span style="font-weight: bold;">Figure 15 </span>Sample batch script for converting a reports6i report to an xml format</blockquote>
<blockquote>
</blockquote>
<span style="font-weight: bold;">Conversion Steps</span><br />
<span style="font-style: italic; font-weight: bold;">Step 1:</span> First part of conversion is converting your reports6i report to xml. To do this use rwconverter.exe or create a batch script (see above, Figure 1)<br />
<br />
<span style="font-style: italic; font-weight: bold;">Step 2: </span>The next step is to take the xml files and convert them to bi publisher files. In order to do this we need to run the ReportConversion.exe.<br />
<br />
<span style="font-style: italic; font-weight: bold;">Step 3: </span>Click on the folder icon to select reports6i the xml files. You may optional change the format template and the log file name after the files are loaded.<br />
<br />
<span style="font-style: italic; font-weight: bold;">Step 4: </span>The final step is to click the process button.<br />
<br />
Navigate to your conversion directory. The following should be present:<br />
1. Format Template<br />
2. Data Template<br />
3. Related PL/SQL Packages<br />
<br />
<br />
<span style="font-weight: bold;">Other Known Issues</span><br />
<table border="1" cellpadding="3" cellspacing="0" class="" id="dbdr" style="color: #cccccc; height: 58px; width: 454px;"><tbody>
<tr><td style="background-color: #cccccc; color: black;" width="50%"><span style="font-weight: bold;">Issue</span></td><td style="background-color: #cccccc; color: black;" width="50%"><span style="font-weight: bold;">Resolution</span><span style="font-weight: bold;">/Workaround</span></td></tr>
<tr><td width="50%">Application starts to load but fails</td><td width="50%">Java 6 is required to run this application.</td></tr>
<tr><td width="50%">JNLP file does not execute in browser</td><td width="50%">Follow these <a href="http://bethwphoto.com/ike/bipublisher/BIPublisherToolBoxDist/launch.html">instructions</a></td></tr>
<tr><td width="50%">Application runs in Java 1.5 but none of the cell browsers work.</td><td width="50%">Java 6 is required to run this application.</td></tr>
<tr><td width="50%">: XSL-1031: (Error) Variable not defined: '_XDONFSEPARATORS'.</td><td width="50%">Import statements in format template will on only work for R12 or 6241631 patchsets</td></tr>
<tr><td width="50%">Can’t find DBC File</td><td width="50%">DBC files can be found under $FND_TOP/secure.</td></tr>
<tr><td width="50%">Sftp & AS2 – Fail for Delivery Designer</td><td width="50%">There is no workaround for this. The delivery designer is coded to execute these classes when there available from oracle</td></tr>
<tr><td width="50%">Cannot connect to database for Data Templates</td><td width="50%">Verify your connection is setup correctly. Tnsping </td></tr>
<tr><td width="50%">There is no option to specify a custom xdodelivery.cfg file for bursting.</td><td width="50%">Future release will allow ad/hoc xdodelivery.cfg files outside of $XDO_TOP</td></tr>
<tr><td width="50%">There is no standalone version of the application (executable)</td><td width="50%">The BI Publisher Toolbox is a webstart application. This allows for developers to run the most current version of the application automatically.</td></tr>
<tr><td width="50%">XDO Loader Features are missing</td><td width="50%">XDO Loader features are being redeveloped.</td></tr>
<tr><td width="50%">After keying data in a field, it disappears when I click save or a menu item.</td><td width="50%">Be sure to always tab out of each field before performing a save action.</td></tr>
<tr><td width="50%">The report6i xml file is malformed or does not convert at all.</td><td width="50%">Identify that 10g version rwconverter.exe is being used to convert the rdf to xml. It’s not uncommon that 6i version of rwconverter.exe gets used instead.<br />
<br />
Goto My Computer System Properties Environment Variables. Modify the path variable to point at the 10g directory<br />
<br />
or<br />
<br />
Manually run the rwconverter.exe</td></tr>
</tbody></table>
<br />
In this post you learned about the new features and updates to the BI Publisher ToolBox Development Suite. The ability to run BI Publisher reporting components has never been simpler. With ToolBox, the majority of your development can now be done locally on your PC.Ike Wigginshttp://www.blogger.com/profile/03629933955296401382noreply@blogger.com8tag:blogger.com,1999:blog-5406107793530126650.post-52149283017608706342010-01-15T16:13:00.000-08:002012-06-16T12:44:03.790-07:00Bursting Designer 3.7 XDO Protocol Support!Thats right folks, there is a new version of the Bursting Designer out. One of the best new features of the Bursting Designer 3.7 is XDO Protocol support*. If you used the previous versions and were unsatisfied, please give the app a second try!<br />
<br />
*In order to use the XDO Protocol a DBC file is required. The DBC for the EBS application suite can be found under $FND_TOP/secure.<br />
<br />
Also, the previous versions of the application could crash because of invalid path to a format template. That issue has now been resolved and the app is very stable (and faster). If you do have issues, please let me know. I can't fix what I don't know about.<br />
<br />
<span style="font-weight: bold;">Bursting Designer </span><span style="font-weight: bold;">Download </span><span style="font-weight: bold;">Site</span><br />
<span style="color: red;">*Desupported 04.22.2010 - please use the BI Publisher Toolbox.</span><br />
<a href="http://bethwphoto.com/ike/bipublisher/BurstDesignerDist/launch.html">Bursting Designer</a> - By clicking on the download link you will be redirected to a different site. The bursting designer is java webstart application. Java 6 is required to run this application. It's recommended to bookmark this particular blog and the download site. This is because you will need to use these links every time you wish to run the Bursting Designer or find news about updates. It's technically not a requirement to use the webstart application for the java savvy developers but in doing so you will miss out on future updates and releases. It's important to note the Bursting Designer jar files will be loaded on your machine. This allows for a significant increase in performance. If you need to remove this application for some reason, go to add/remove applications.Ike Wigginshttp://www.blogger.com/profile/03629933955296401382noreply@blogger.com3tag:blogger.com,1999:blog-5406107793530126650.post-26779290909038866642009-12-22T07:43:00.001-08:002009-12-22T08:15:18.375-08:00BI Publisher: Bursting Designer Version 1.2<span style="font-weight: bold;">Whats new in the Bursting Designer 1.2?</span><br /><br />Version 1.2 is here and it includes the following enhancements:<br /><ol><li>Excel Output<br /></li><li>Templates tab fix. If you enter more than one template row it may have potentially caused the application to crash. Also, the templates could potentially be assigned to all the deliveries.</li></ol><span style="font-weight: bold;">Whats next?<br /><br /></span>The Bursting Designer 1.3 will include enhanced printer options that are undocumented by Oracle. The following attributes will be added to the Printer delivery tab:<br /><ol><li>attributes-charset</li><li>attributes-natural-language</li><li>document-format</li><li>job-name</li><li>media</li><li>orientation-requested</li><li>requesting-user-name</li><li>sides</li></ol><br />The Delivery Designer is also another skunk works project that I'm working on. The tentative release will be sometime in December or late January. This tool will allow a developer to test the delivery APIs without writing a lick of code. There is no need to speculate, whether or not a delivery API is capable of a particular integration point.<br /><br />Ever been asked, "Can we send a document to an EDI system using as2 Document Delivery APIs?" I know I have and I really didn't have a confident answer of yes or no and I had no way of finding out without writing some code. So, the Delivery Designer will let you kick the tires so speak before making a coding commitment. You'll be able to tell your manager confidently, yes this will work!<br /><br />More details to follow....<br /><br /><span style="font-weight: bold;"><span style="font-weight: bold;">POST A QUESTION<br /></span></span><span>If you have questions about the Bursting Designer or if you find a bug please post a question on this blog. </span>Please no cross posting and make sure the question matches the topic.Ike Wigginshttp://www.blogger.com/profile/03629933955296401382noreply@blogger.com2tag:blogger.com,1999:blog-5406107793530126650.post-452454322813155282009-12-19T06:46:00.000-08:002012-06-16T12:34:49.578-07:00BI Publisher: Troubleshooting Bursting<span style="font-size: 130%; font-weight: bold;">How to Troubleshoot the Bursting Designer</span> <span style="font-size: 130%;"><span style="font-weight: bold;">& Bursting</span></span><br />
<br />
Since the bursting designer has come out I been getting quite a few questions lately. This post tackles some common issues that most developers run into when using the Bursting Designer or using Oracles BI Publisher Bursting Engine. If you haven't used the Bursting Designer yet, go on ahead and start kickin' the tires!<br />
<br />
<span style="font-weight: bold;">Issue: </span> Bursting Designer Web application crashes when the application is downloading. Something like this might occur, " Java 6 splash screen shows, then "Warning - Security" window blips by, then nothing."<br />
<span style="font-weight: bold;">Resolution: </span> There can be a wide variety of reasons why this might occur. The first thing to do is make sure your an administrator or windows power user. Because your installing software you need to make sure you have the appropriate rights.<br />
<br />
The second thing you should do is check that java 1.6 is installed.<br />
<br />
To find out what version your running go to<br />
start->run<br />
type: cmd, hit return<br />
type: java -version<br />
<br />
If java 1.6 is installed that can be eliminated. The next step would be to verify the amount of memory you have on your machine.<br />
<br />
By default the Bursting Designer does not support dated hardware. The minimum amount of memory required is 512 megs. If you do not have 512 megs installed on your machine the Bursting Designer will not open. In order to fix this, modify the JNLP file and replace the memory options with this line:<br />
<br />
<j2se args="-Xms128m -Xmx256m -Xdebug" version="1.5+"/><br />
<br />
Then manually open the JNLP file through IE or Firefox locally on your PC. Do not try and use the download link because it will use the standard memory options. I don't advice against modifying the memory settings, but I would recommend that you talk to your hardware guy in your organization and either request a new pc or ram upgrade. It's the 21st century and you should have a computer that has 21st century power. What are we in russia? I kid for all the Russians who read my blog :-)<br />
<br />
Now, if the Bursting Designer is still crashing. Turn on the java debugger. Go to the control panel in windows and you should see an icon for java. Double click on the app. Select the show console option in Java Control Panel in the Advanced tab. This will let you see an errors that are occurring in the application or general debug info.<br />
<br />
See the link below and go to the debug section for the java console:<br />
<br />
http://java.sun.com/j2se/1.5.0/docs/guide/deployment/deployment-guide/jcp.html<br />
http://java.sun.com/j2se/1.5.0/docs/guide/deployment/deployment-guide/console.html<br />
<br />
If you cannot figure-out what the errors means in the debug console, post a comment here with the error message or find my email address and I'll do my best to help resolve the issue.<br />
<br />
<span style="font-weight: bold;">Issue: </span>JNLP downloads but doesn't open the Bursting Designer<br />
<span style="font-weight: bold;">Resolution: </span>The JNLP file is not associated correctly in windows or it's pointed at the wrong java runtime environment.<br />
<br />
I ran into this issue myself when I first deployed and tested the Bursting Designer in windows. That's why I set up the JNLP associations on the download page. I have instructions for most browsers and I have tested the Bursting Designer on Firefox, IE & Safari. http://bethwphoto.com/ike/bipublisher/ReportConversion/ReportConversion.zip/ike/bipublisher/BurstDesignerDist/launch.html<br />
<br />
For IE and windows users follow these steps:<br />
<br />
To set up the association between *.jnlp files and javaws.exe in Windows which also handles IE:<br />
1. In Windows, not IE, click Start | Settings | Control Panel | Folder Options | File Types.<br />
2. Check to see if there is already an association for *.jnlp files.<br />
3. If there is no entry for *.jnlp files already then click new | advanced | select "jnlp file"<br />
4. If there is an entry, select it and click advanced.<br />
5. Then edit the open application used to perform action field and make sure it is set to "C:\Program Files\java\jre...\bin\<b>javaws.exe</b> ""%1". Uncheck DDE.<br />
6. Click OK.<br />
7. Click Set As Default to make Open the default action. Likely Open will be the only action.<br />
8. Click OK | Close.<br />
<span style="font-weight: bold;"><br />Issue: </span>Bursting Designer crashes and the web app log file says it's pointing to this directory: file:/Users/ike/Code/NetBeansProjects/Bursting%20Designer/dist/<br />
<span style="font-weight: bold;">Resolution: </span>Contact me, I need to fix the JNLP file. If your in a bind you can do it yourself by changing the code base node to:<br />
<br />
codebase="http://web.me.com/beth.wiggins/ike/bipublisher/BurstDesignerDist/"<br />
<br />
<span style="font-weight: bold;">Issue: </span>Bursting Designer crashes when I click the run button.<br />
<span style="font-weight: bold;">Resolution: </span>Follow the steps above to turn on java debug console. If you can not identify the issue or a workaround post the error on my blog or send me an e-mail. There is a known issue on the templates tab. If you enter more than one template row it may potentially cause the application to crash. This will be fixed in Bursting Designer Version 1.2.<br />
<span style="font-weight: bold;"><br /></span><span style="font-weight: bold;">Issue: </span>Templates are shown across document deliveries.<br />
<span style="font-weight: bold;">Resolution: </span>This will be fixed in Bursting Designer Version 1.2. I had a bug in my code that allowed a user to circumvent document to template associations.<br />
<span style="font-weight: bold;"><br />Question: </span>Printer node not found when when bursting. Example: <span style="font-family: Calibri,Verdana,Helvetica,Arial; font-size: 100%;">ipp://localhost:631/printers/${CF_PRINTER_NAME}.</span> <br />
<span style="font-weight: bold;">Answer: </span><br />
1. XML is case sensitive, is the printer xml node upper case?<br />
2. Is the printer node a child of the of the parent node selected in the xpath expression?<br />
3. Are you using a document key? It's important, you need this to burst the file correctly. This is new for EBS users, it was not a feature in the original 5.6.3 version of BI Publisher. If you don't have a document key, it will not work.<br />
4. Finally, it could be a pruning issue. See: http://bipublisher.blogspot.com/2007/10/bi-publisher-bursting-how-to-resolve.html<br />
<br />
<span style="font-weight: bold;">Question: </span>How do I identify a printing issue. <br />
<span style="font-weight: bold;">Answer: </span>Use the Bursting Designer and review the log file. In the example below we can see that the issues is related to the printer name.<br />
<br />
IPP version: 10<br />
operation id: 02<br />
charset: utf-8<br />
request id: 1<br />
-- operation attrs --<br />
[1]attributes-charset:utf-8<br />
[1]attributes-natural-language:en<br />
[1]printer-uri:ipp://localhost:631/printers<span style="color: red; font-weight: bold;">/null</span><br />
[1]document-format:application/pdf<br />
-- printer attrs --<br />
-- job attrs --<br />
[1]copies:1<br />
<span style="font-weight: bold;">After adding the document key:</span><br />
IPP version: 10<br />
operation id: 02<br />
charset: utf-8<br />
request id: 1<br />
-- operation attrs --<br />
[1]attributes-charset:utf-8<br />
[1]attributes-natural-language:en<br />
[1]printer-uri:ipp://localhost:631/printers/<span style="color: #009900; font-weight: bold;">HP_TEST_PRINTER</span><br />
[1]document-format:application/octet-stream<br />
-- printer attrs --<br />
-- job attrs --<br />
[1]copies:1<span style="font-weight: bold;"><br /></span><br />
<span style="font-weight: bold;">Question</span><span style="font-weight: bold;">: </span>Printer not found when when bursting. <br />
<span style="font-weight: bold;">Answer</span><span style="font-weight: bold;">: </span>You will see a message in the logfile that looks something like this:<br />
<br />
IPP version: 10<br />
operation id: 46<br />
charset: utf-8<br />
request id: 20<br />
-- operation attrs --<br />
[1]attributes-charset:utf-8<br />
[1]attributes-natural-language:en<br />
<span style="font-weight: bold;">[1]status-message:The printer or class was not found.</span><br />
-- printer attrs --<br />
-- job attrs --<br />
<br />
During upgrades sometimes printers that are setup can get wiped out. I know this true on a Mac. So the first step would be to verify the printer actually exists in the setup. If it doesn't add it. Now it's important to note, if you can't bring up the printer in your browser: http://localhost:631/printers then you may have a CUPS issue depending on how your system is setup.<br />
<br />
<span style="font-weight: bold;">Question</span><span style="font-weight: bold;">: </span>FTP files fail<br />
<span style="font-weight: bold;">Answer</span><span style="font-weight: bold;">: </span>Before starting a ftp control file, I would suggest you initial create file delivery instead. This will allow you to work out the kinks and make sure your control file is first class as well as your format template. Once you know there are no issues, then I would try setting up the FTP delivery. To troubleshoot FTP issues do the following:<br />
<br />
1. Check the permissions. Suggest that you open a session in telnet and attempt to manually FTP. If you can't do it in telnet, you can't do it with BIP!<br />
2. Verify the user name and password is correct. Remember it's case sensitive.<br />
3. Verify the files are actually being generated. If there not, than obviously there is nothing to FTP. Also, verify the files aren't being generated with just an extension, in which case there is an issue with the document key.<br />
4. Related to number 3, Verify the document key exists and is correct.<br />
<br />
<span style="font-weight: bold;">Question</span><span style="font-weight: bold;">: </span>Delivery Fails to show in the logfile or the delivery does not get processed.<br />
<span style="font-weight: bold;">Answer</span><span style="font-weight: bold;">: </span>BI Publisher Bursting Engine has some undocumented issues for multiple deliveries, below is a breakdown<br />
<br />
1. Multiple deliveries for the same request are supported. If you assign the deliveries to one document you should be okay. See example 1.<br />
2. Multiple <span style="font-weight: bold;">distinct</span> deliveries, that are individually assigned to a document will only process the last delivery (LIFO) in the document list. This is a very common mistake new developers make regardless if there using the Bursting Designer or not. Should you design your control file this way? No.<br />
<br />
Example 1 is okay, Example 2 is wrong and it needs to be put in another request. The Bursting Designer application will allow you to setup a control file like example 2. Could this be a feature someday? Who knows.....Basically, if oracle allows you to do something and doesn't throw an error the Bursting Designer does the same.<br />
<br />
<span style="font-weight: bold;">Example 1: </span> One Request - Multiple deliveries assigned to a document.<br />
document key="${TRX_NUMBER}" output-type="pdf" delivery="<span style="color: #009900; font-weight: bold;">ftp2, print</span>"<br />
<span style="color: red;"><span style="font-weight: bold;">Example 2: </span> One Request - Multiple distinct deliveries assigned to a document. </span> <span style="color: red;"><br />document key="${TRX_NUMBER}" output-type="pdf" delivery="ftp2"</span><br />
...some template assigned...<br />
<span style="color: red;">document key="${TRX_NUMBER}" output-type="pdf" delivery="print"</span><br />
...some template assigned...<br />
<br />
Also, putting a filter on each template will not resolve the issue with example 2. You will still have the same issue. Word of advice, when in doubt just create two requests and you use the template filters.<br />
<br />
<span style="font-weight: bold;">Question</span><span style="font-weight: bold;">: </span>Can there be multiple templates assigned for a delivery?<br />
<span style="font-weight: bold;">Answer</span><span style="font-weight: bold;">: </span>Yes. If a filter does not exist, all templates will be applied to the output.<span style="font-weight: bold;"> </span> When all templates are applied to the output file it will occur in LIFO order.<br /><br />Example:<br />
xapi:document key="${TRX_NUMBER}" output-type="pdf" delivery="file"<br />
xapi:template type="rtf"location="/Users/temp.rtf" filter=""<br />
xapi:template type="rtf"location="/Users/temp2.rtf" filter=""<br />
xapi:document<br />
<br />
Template temp2.rtf will be applied first, and then temp.rtf. Also, there will only be one output file. I do not know if this desired functionality by Oracle or not, so you can use this at your own risk.<br />
<br />
<span style="font-weight: bold;">Question</span><span style="font-weight: bold;">: </span>Are document keys required for all document elements?<br />
<span style="font-weight: bold;">Answer</span><span style="font-weight: bold;">: </span>Absolutely, if a key node is left blank or doesn't exist your requested delivery may process but no results will be generated.<br />
<br />
<span style="font-weight: bold;">Question</span><span style="font-weight: bold;">: </span>Is there an alternative to creating template filters<br />
<span style="font-weight: bold;">Answer</span><span style="font-weight: bold;">: </span>Predicates are allowed for request xpath expressions. Now, don't think that because they are you can start getting fancy. There are very limited.<br /><br />Is it better or worse than a template filter? No, the two are the same. Personally, I think it's easier to understand by having it in the request itself.<br /><span style="font-weight: bold;">Question</span><span style="font-weight: bold;">: </span>Is CSV supported for bursting?<br />
<span style="font-weight: bold;">Answer</span><span style="font-weight: bold;">: </span>Yes, you will need to use etext templates.<br /><span style="font-weight: bold;">Question</span><span style="font-weight: bold;">: </span>Is xdo:// uri syntax supported for Bursting?<br />
<span style="font-weight: bold;">Answer</span><span style="font-weight: bold;">: </span>Yes.<br /><span style="font-weight: bold;">Question</span><span style="font-weight: bold;">: </span>Is xdo:// uri syntax supported for Bursting Designer?<br />
<span style="font-weight: bold;">Answer</span><span style="font-weight: bold;">: </span>No.<span style="color: #33cc00;">Jan-15-2010: XDO Protocol is supported in the Bursting Designer</span><br />
<br />
<span style="font-weight: bold;">Question</span><span style="font-weight: bold;">: </span>I want to use bursting as a way to apply one or multiple format templates indiscriminately to the output file and I only want a single file(s) to be generated, I actually don't want it bursted.<br />
<span style="font-weight: bold;">Answer: </span>Seems like an oxymoron, but it's really not. You may very well run into this situation, I know I have. In your request, just use slash "/" and for the key field generate a something in the data template that is below the root node and use that. As an example, lets say user requested that they need have 3 separate csv files. You could create 3 etext and burst the xml file. Make sense?<br />
<span style="font-weight: bold;">Question</span><span style="font-weight: bold;">: </span>I want to use excel as an output format in the Bursting Designer<br />
<span style="font-weight: bold;">Answer: </span>That will be available in version 1.1 of the application.<br />
<span style="font-weight: bold;">Question</span><span style="font-weight: bold;">: </span>Are Data Expressions supported in Bursting?<br />
<span style="font-weight: bold;">Answer: </span>Absolutely. It's supported for e-mail, ftp and webdav. Bursting uses the delivery manager APIs so by default that functionality works for bursting. For more info data expressions see Tim D. blog<br />
<br />
http://blogs.oracle.com/xmlpublisher/2009/12/dynamic_delivery_file_naming.html<br />
<br />
Example:<br />
<br />
xapi:ftp id="ftp" server="localhost" user="hidden"<br />
password="hidden"<br />
remote-directory="/Users/ike/Desktop/Mallika/"<br />
remote-file="ftp_${TRX_NUMBER}_%y.%m.%d.%S" secure-ftp="false"<br />
xapi:ftp<br />
<br />
[ASYNC_TIMEOUT:Integer] [86400000]<br />
[HOST:String] [localhost]<br />
[RETRY:Integer] [0]<br />
[ASYNC_CHECK_INTERVAL:Integer] [60000]<br />
[TEMP_FILE_SUFFIX:String] [.tmp]<br />
[USERNAME:String] [hidden]<br />
[PASSWORD:String] [*******]<br />
[TEMP_FILE_PREFIX:String] [dlvr]<br />
[FTP_REMOTE_DIRECTORY:String] [/Users/ike/Desktop/Mallika/]<br />
[FTP_REMOTE_FILENAME:String] [ftp_1537394_%y.%m.%d.%S]<br />
[RETRY_INTERVAL:Integer] [60000]<br />
<br />
[121909_020451288][oracle.apps.xdo.delivery.ftp.FTPDeliveryRequestHandler][STATEMENT] submitRequest(): Opening connection : [localhost][21][hidden][****][/Users/ike/Desktop/Mallika/][ftp_1537384_2009.12.19.51][true]<br />
<br />
<span style="font-weight: bold;">Question</span><span style="font-weight: bold;">: </span>Is xdodelivery.cfg supported for Bursting?<br />
<span style="font-weight: bold;">Answer: </span>Although, I have never tried it, I suspect it is. If you do try it let me know.<br /><span style="color: #33cc00;">Jan-15-2010: xdodelivery.cfg is supported</span><br /><span style="font-weight: bold;">Question</span><span style="font-weight: bold;">: </span>Is xdodelivery.cfg supported for the Bursting Designer?<br />
<span style="font-weight: bold;">Answer: </span>No. If I ever decide to support it, I will create a property on the properties tab.<span style="color: #33cc00;">Jan-15-2010: xdodelivery.cfg is supported in the Bursting Designer</span><br />
<br /><span style="font-weight: bold;">Question</span><span style="font-weight: bold;">: </span>Does Bursting support custom delivery channels?<br />
<span style="font-weight: bold;">Answer: </span>No. Would it be possible for oracle to do this? Absolutely, but not many organizations need this functionality.<br />
<br />
<br />
<span style="font-weight: bold;"><span style="font-weight: bold;">POST A QUESTION</span></span>If you have questions about the Bursting Designer or if you find a bug please post a question on this blog. Please no cross posting and make sure the question matches the topic.Ike Wigginshttp://www.blogger.com/profile/03629933955296401382noreply@blogger.com7tag:blogger.com,1999:blog-5406107793530126650.post-8120358344850452692009-12-15T21:01:00.000-08:002010-04-22T20:58:35.278-07:00BI Publisher: Bursting Designer Version 1.0<span style="font-weight: bold;">Whats new in the Bursting Designer?</span><br /><br />The Bursting Designer has moved out of the beta phase! Version 1.0 is here and includes the following enhancements:<br /><ol><li>FTP and Secure FTP (depends on the patch level)<br /></li><li>Webdav</li><li>Key support<br /></li><li>Latest Version of BIP Libraries<br /></li><li>Memory Adjustment<br /></li></ol>So if you have written a Bursting Listener to FTP files you no longer have to do that anymore. You now can FTP reports in seconds with Oracle's Bursting Engine and the Bursting Designer! A lot of developers are not aware of the fact that BI Publisher Bursting supports FTP. I can't confirm it but I think FTP is an undocumented feature for burst control files. Will have to ask Leslie Studdard from oracle if that's the case or not, she's got people and the answers.<br /><br />What about Webdav? Thats another option in the Bursting Designer. Webadv is really not a utilized feature but a powerful one. A developer could use a sharepoint portal to create a report repository or pseudo reporting dashboard. I've never had the request for it but when I do I know the Bursting Designer should do the trick!<br /><br />Key support is available, finally! The beta version was working off of the 5.6.2 version. Version 1.0 works off of BIP 5.6.3 (patch 6241631) . Developers don't have to rollback to old version when creating control files. Also, developers are working with the latest APIs for BI Publisher (11.5.10.2). Should be close enough for R12 developers too!<br /><br />Run time memory options have also changed for the Bursting Designer. Most developers didn't experience issues with the with web start application but some did :-( The developers that had problems had out-dated hardware. If you don't have less than 256 megs of ram that is so 1999 and you need to get with the program (literally) and get a modern machine. I've changed the app to use -Xms256m -Xmx512m instead of -Xms512m -Xmx1024m. Funny story, back in 1999 I begged my father to give me some coin so I could pick up some ram to make my machine have 128 megs of ram. Back then, 128 megs was the shizzle and I was ridding high on the hog.<br /><br /><span style="font-weight: bold;">Future Functionality</span><br />There are some features that are still being developed below is a list:<br /><ul><li>XDO uri support</li><li>Request Removal <span style="font-style: italic;">*Manually edit the burst control file to remove a request</span><br /></li><li>File Browsing for File Delivery and Template Fields</li></ul><span>If you would like to request an enhancement please feel free to post a question on this blog. Also, If you would like to participate in the development of the Bursting Designer contact me via e-mail. To date I have had no developers volunteer. If you do help out, you'll be elite like a level 3 black sage*<br /><br />*I went to go get a hair-cut at a salon once (it was proximity thing). The stylist told me that they had there "level 2" people on and it would cost 40.00. I'm a dude, dudes don't need a $40.00 hair cut. Anyways, I responded with "Can you ask your level 2 people to see if they can cut me a deal. I'm a level 3 black sage and I can guarantee safe passage through the mushroom forest." Needless to say the stylist did not responsed to my request. It's easy to understand why, if I were in her shoes looking a level 3 black sage I would be spooked or </span><span>maybe I would just blew a funny fuse.</span><span> </span><br /><br /><span style="font-weight: bold;">Bursting Designer </span><span style="font-weight: bold;">Download </span><span style="font-weight: bold;">Site</span><br /><span style="color: rgb(255, 0, 0);">*Desupported 04.22.2010 - please use the BI Publisher Toolbox.</span><br /><a href="http://web.me.com/beth.wiggins/ike/bipublisher/BurstDesignerDist/launch.html">Bursting Designer</a> - By clicking on the download link you will be redirected to a different site. The bursting designer is java webstart application. Java 6 is required to run this application. It's recommended to bookmark this particular blog and the download site. This is because you will need to use these links every time you wish to run the Bursting Designer or find news about updates. It's technically not a requirement to use the webstart application for the java savvy developers but in doing so you will miss out on future updates and releases. It's important to note the Bursting Designer jar files will be loaded on your machine. This allows for a significant increase in performance. If you need to remove this application for some reason, go to add/remove applications.<br /><br /><span style="font-weight: bold;"><span style="font-weight: bold;">IMPORTANT: </span></span><span>If you have questions about the Bursting Designer or if you find a bug please post a question on this blog. If you do not post your comment on this post, I will reject your comment. I've had some complaints in recent months that it's hard to find answers on my blog because of cross post Q&A. If you e-mail me a question about the Bursting Designer be forewarned, I may ask you to post your question on this post. </span><br /><br /><span style="font-style: italic;">Also, The source code is available for the Bursting Designer upon request. Note: You cannot sell, copyright, distribute or reproduce the software without the express written consent of Ike Wiggins. </span>Ike Wigginshttp://www.blogger.com/profile/03629933955296401382noreply@blogger.com0tag:blogger.com,1999:blog-5406107793530126650.post-15942713679608513662009-10-30T09:20:00.000-07:002011-06-15T10:23:09.929-07:00BI Publisher ToolBoxEver wished that using the Oracle BI Publisher APIs could be easier to use? Ever wanted a single-click template load application for EBS Template Builder? Ever wanted to be able to test your reports with a single click? Look no further! These features and many more are provided in the BI Publisher ToolBox, a free configuration management tool I created for <a class="bodylink" href="http://www.oracle.com/technology/products/xml-publisher/index.html">Oracle BI Publisher </a>.<br />
<br />
The BI Publisher ToolBox is the predecessor to the <a href="http://bipublisher.blogspot.com/search/label/BIPublisherIDE"> BIPublisherIDE</a>. It's another application, I've written to help supplement BI Publisher Development. To learn more about how this free utility can make running Oracle BI Publisher reporting components incredibly easy click the link below. <a href="http://www.oracle.com/technetwork/articles/wiggins-bipublisher-085427.html">OTN Tech Article: Getting Started with BI Publisher ToolBox</a><br />
<br />
Like the other applications I've written, the Toolbox is a 100% java. If you don't have JRE 1.6 installed you need to do so (click <span style="text-decoration: underline;"> </span><a href="http://jdl.sun.com/webapps/getjava/BrowserRedirect?locale=en&host=www.java.com:80">here</a>).Ike Wigginshttp://www.blogger.com/profile/03629933955296401382noreply@blogger.com2tag:blogger.com,1999:blog-5406107793530126650.post-45899257711976808162009-10-13T08:00:00.000-07:002009-10-20T17:59:54.315-07:00Oracle Open World<span style="font-weight: bold;">Open World is a blast! </span><br />It has been great putting names with faces! Met up with fellow bippers yesterday: Cory Keogh (from Gallup and fellow presenter), Pradeep Sharma, Noelle Bartlam, Klaus Fabian, Leslie, Osama Elkady and Mike Donahue. Fun crowd!<br /><br />A little known fact about the infamous Klaus. Ever heard of a pink elephant gift? Klaus has taken this to a whole new level with the pink iPhone. Rumor has it Klaus got a very good deal on this phone, from a disgruntled husband who got his wife’s <span style="font-weight: bold; color: rgb(255, 204, 204);">pink phone</span>. Classic example of checking your pride at the door or a possible lack of shame; regardless Klaus mantra, it’s all about the technology, pink it’s the color of passion! <span style="font-style: italic; color: rgb(255, 204, 204); font-weight: bold;">Correction: It's a pink razor. </span><br /><br />Also, met up briefly with <a href="http://garethroberts.blogspot.com/">Gareth Roberts</a>. He's working the press scene here at Open World and answering BIP questions. If you get a chance, say hi but I warn you everything is on the record :-)<br /><br />Wondering what’s new with Oracle Business Intelligence Publisher for Oracle Applications? If you get a chance check out Noelle Bartlam session, she’ll give you the low down on how to use BIP across platforms. Check it out! <span style="font-style: italic;">The reporting platform for Applications: Oracle Business Intelligence Publisher (S309970). The session covers implementations of Oracle Business Intelligence Publisher in Oracle E-Business Suite; Oracle’s Siebel Customer Relationship Management, PeopleSoft, and JD Edwards products; and other Oracle Applications.</span><br /><br />What’s hot? How about the HTTP Analyzer! Don’t know about this hidden gem in JDeveloper11g? It’s a great tool that allows developers to easily create and test existing web services. If you ever wanted to test out the web service or build one from scratch this is the ticket! Went to the <span style="font-weight: bold;">"Hands-on Lab: Web Services Development and Consumption with Oracle JDeveloper"</span> and did three different exercises in 45 min. I walked away with a really good understanding of the tool. If you’re at open world, I would highly recommend this session or similar sessions. If you not at open world or would like to take a quick tutorial click <a href="http://www.oracle.com/technology/obe/obe1013jdev/10131/devdepandmanagingws/devdepandmanagingws.htm">here</a>Ike Wigginshttp://www.blogger.com/profile/03629933955296401382noreply@blogger.com1tag:blogger.com,1999:blog-5406107793530126650.post-5164139429774485202009-09-20T07:00:00.000-07:002009-09-26T09:23:29.494-07:00BI Publisher: Bursting Designer<span style="font-weight: bold;">What is the Bursting Designer?</span><br /><br />The bursting designer is a new application that allows developers to build, run and test burst control files (see Figure 1). Developers of all skill levels can now implement bursting easily!<br /><br /><span style="font-weight: bold;">Why use the Bursting Designer?</span><br /><br />The Bursting Designer will enhance your productivity significantly and make your bursting development easier. Below is a high-level list of benefits the tool provides:<br /><ul><li>Minimal knowledge is needed to build a configuration</li><li>Build a burst control file in minutes </li><li>Preview a burst control file as it's being built (See Figure 2)<br /></li><li>Test the burst control file (See Figure 3)</li><li>Review/Analyze your delivery channels</li><li>View errors or troubleshoot misconfiguration</li><li>It's free!</li></ul> <span style="font-weight: bold;">Getting Started<br /></span><br />Below is a list of video tutorials. It's recommend that developers of all skill levels review each video before trying to create a control file. This is especially true for rookie's. The video's are fast paced so you may need to pause or replay them to get the full value. This is especially true for the Bursting Designer Features.<br /><br /><span style="font-weight: bold;">Video Tutorials - Quicktime Required</span><br /><a href="http://web.me.com/beth.wiggins/ike/bipublisher/BurstDesignerDist/BurstingDesignerFeatures.m4v">Bursting Designer Features</a><br /><a href="http://web.me.com/beth.wiggins/ike/bipublisher/BurstDesignerDist/BurstingDesignerLesson_1.m4v">Bursting Designer Lesson 1 - What is Bursting</a><br /><a href="http://web.me.com/beth.wiggins/ike/bipublisher/BurstDesignerDist/BurstingDesignerLesson_2.m4v">Bursting Designer Lesson 2 - Creating a Burst Control File<br /></a><br /><span style="font-weight: bold;">Bursting Designer </span><span style="font-weight: bold;">Download </span><span style="font-weight: bold;">Site</span><br /><a href="http://web.me.com/beth.wiggins/ike/bipublisher/BurstDesignerDist/launch.html">Bursting Designer</a> - By clicking on the download link you will be redirected to a different site. The bursting designer is java webstart application. Java 6 is required to run this application. It's recommended to bookmark this particular blog and the download site. This is because you will need to use these links every time you wish to run the Bursting Designer or find news about updates. It's technically not a requirement to use the webstart application for the java savvy developers but in doing so you will miss out on future updates and releases. It's important to note the Bursting Designer jar files will be loaded on your machine. This allows for a significant increase in performance. If you need to remove this application for some reason, go to add/remove applications.<br /><br />This is a beta release of the Bursting Designer. There are some features that are still being developed below is a list:<br /><ul><li>XDO uri support</li><li>Request Removal <span style="font-style: italic;">*Manually edit the burst control file to remove a request</span><br /></li><li>File Browsing for File Delivery and Template Fields</li></ul><span>If you would like to request an enhancement please feel free to post a question on this blog. Also, If you would like to participate in the development of the Bursting Designer contact me via e-mail.<br /><br /><span style="font-weight: bold;">Updates/Bug Fixes</span><br /></span><ul><li>Request Removal is now fixed. Before removing a request make sure it's the selected one, the selected one gets removed.<br /></li></ul><span><br /></span><span style="font-weight: bold;">Figure 1:</span><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiN91cAhUDP4BVLP4TnDfQho6ahz6ksT3xMYMe5AcwkLSgBqYs6g9IxR6rbbSU8tsNIv1bXk-QPAZw9TeAxbbqCaZi7Crjjru4kHdFTIBr_WsbnCslALlJ1DPX0nXF3GVhCOm12iSWWlamD/s1600-h/bursting_designer_main_Screen.png"><img style="cursor: pointer; width: 400px; height: 293px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiN91cAhUDP4BVLP4TnDfQho6ahz6ksT3xMYMe5AcwkLSgBqYs6g9IxR6rbbSU8tsNIv1bXk-QPAZw9TeAxbbqCaZi7Crjjru4kHdFTIBr_WsbnCslALlJ1DPX0nXF3GVhCOm12iSWWlamD/s400/bursting_designer_main_Screen.png" alt="" id="BLOGGER_PHOTO_ID_5383566708650506626" border="0" /></a><br /><br /><span style="font-weight: bold;">Figure 2:</span><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSvy6DbssIyQYDqL4TgROzDcMT_UUytczKIPhFPD_OzmDGvWfOizxeZFtPZ96LrZwOkQ6n85PLCRkybjs1RYsCIX9JsnAOjWESsK3YRFW5mZwXMarwryC1ocOGxwh4v7m-QeAhg0Mv2pXN/s1600-h/bursting_designer_preview_screen.png"><img style="cursor: pointer; width: 400px; height: 225px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiSvy6DbssIyQYDqL4TgROzDcMT_UUytczKIPhFPD_OzmDGvWfOizxeZFtPZ96LrZwOkQ6n85PLCRkybjs1RYsCIX9JsnAOjWESsK3YRFW5mZwXMarwryC1ocOGxwh4v7m-QeAhg0Mv2pXN/s400/bursting_designer_preview_screen.png" alt="" id="BLOGGER_PHOTO_ID_5383566717285944146" border="0" /></a><br /><br /><span style="font-weight: bold;">Figure 3:</span><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYwgR7kh5jKUicTW4aoEmV-bHCwjSZfL4LZUCiflXBMoNz9-_uS0cTVIcpTQ0SnR9vfUEjseywLwHsvM2MUsZFaeC1bGkIh_xD7_1UKdeyKR0ATxNrK30s-I8K9LySVlDShT9rTG3H7Ua-/s1600-h/bursting_designer_request_tree.pg.png"><img style="cursor: pointer; width: 400px; height: 293px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYwgR7kh5jKUicTW4aoEmV-bHCwjSZfL4LZUCiflXBMoNz9-_uS0cTVIcpTQ0SnR9vfUEjseywLwHsvM2MUsZFaeC1bGkIh_xD7_1UKdeyKR0ATxNrK30s-I8K9LySVlDShT9rTG3H7Ua-/s400/bursting_designer_request_tree.pg.png" alt="" id="BLOGGER_PHOTO_ID_5383566724335483266" border="0" /></a><br /><br /><br /><span style="font-weight: bold;"><span style="font-weight: bold;">IMPORTANT: </span></span><span>If you have questions about the Bursting Designer or if you find a bug please post a question on this blog. If you do not post your comment on this post, I will reject your comment. I've had some complaints in recent months that it's hard to find answers on my blog because of cross post Q&A. If you e-mail me a question about the Bursting Designer be forewarned, I may ask you to post your question on this post. </span><br /><br /><span style="font-style: italic;">Also, The source code is available for the Bursting Designer upon request. Note: You cannot sell, copyright, distribute or reproduce the software without the express written consent of Ike Wiggins. </span>Ike Wigginshttp://www.blogger.com/profile/03629933955296401382noreply@blogger.com51tag:blogger.com,1999:blog-5406107793530126650.post-83008240792395524692009-08-09T16:52:00.000-07:002009-09-26T09:42:53.582-07:00BI Publisher: Advanced Line Wrapping<span style="color: rgb(0, 102, 0);font-size:180%;" ><span style="font-weight: bold;"></span></span>Over the years, programmatically controlling line wrapping has been a very popular topic! There have been many requests in the <a href="http://forums.oracle.com/forums/forum.jspa?forumID=245&start=0">BI Publisher forum</a>, this blog, or via e-mail for a solution. Unfortunately, I wasn't able to provide a relatively simple solution until now.<br /><br />If your new to this issue let me run down some technical scenarios on why line wrapping causes so many headaches!<br /><br /><span style="font-weight: bold;font-size:130%;" >Examples</span><br /><span style="font-style: italic;">My company's bill of ladding only has seven lines for comments. The comment field is stored as one text field in the database. The text field in the database allows for 70 character but the cell on the BOL can only have 50 characters. I need to only print what will fit on 7 lines maximum.</span><br /><br />or<br /><br /><span style="font-style: italic;">I expanded my cell to support 35 characters of text without wrapping but in some rare instances it wraps with 35 character because of the font I'm using.</span><br /><br />or<br /><br /><span style="font-style: italic;">My Swiss Declarations report can only print two lines on page 1 and there are several lines thereafter on the next page I can use. The text when added needs to create a new row (Cell) in the table and simply not add a carriage return in the one cell.</span><br /><br />It's difficult to solve any of these examples in a format template. This is because BI Publisher does not have a string tokenizer api or something like a character array. However we do have ways of creating similar frameworks.<br /><br />In order to solve the line wrapping problem were going to need to be able to do the following:<br /><br />1. Have a controlled for-loop<br />2. Know how many times to loop to break-up a string (iterations) into a specified length<br />3. Storing the string that's going to get broken up<br /><span style="font-size:130%;"><br /></span><span style="font-weight: bold;font-size:130%;" >Controlled for-loop</span><br /><br />The for loop down below cannot be directly ported to xsl syntax or BI Publisher.<br /><br /><span>for-loop java</span><br /><pre>for(int i=1; i<11; i++){<br />System.out.println("Count is: " + i);<br />}<br /></pre>We do have some workarounds though for controlled looping. There are some quietly documented features in the development guide and some other examples that can be found on <a href="http://blogs.oracle.com/xmlpublisher/">Tim Dexter blog</a>.<br /><br />foreach_number can be used to control how many times a for-each statement can loop. It's may seem counter intuitive but for-loops in BI Publisher do not require an xml nodes to loop. The following statement is valid in BI Publisher:<br /><br />for-each:xdoxslt:foreach_number($_XDOCTX,1,<span style="font-weight: bold;">3</span>,1)<br /><span style="font-size:85%;"><span style="font-style: italic;">Note: This will loop 3 times</span> </span><br /><span style="font-weight: bold;font-size:130%;" ><br />Iterations</span><br /><br />The math for figuring-out how many iterations are needed to break-up a string is pretty easy. Take the string below, if I have a cell length of 20, I can deduce the number of likely characters to fit in that cell by taking the length of the string, divided by the length of the cell. In the text below the length is 107. When we take 107 (text) divided by 20 (cell) equals 5 rounded iterations.<br /><br />"Ike likes to walk the walk and talk the talk all of the time. End result is very long sentence of text."<br /><br /><span style="font-weight: bold;font-size:130%;" >Storage<br /><br /></span>Although it's not commonly used in the BIP world, xsl variables can be created in BI Publisher. XSL variables can be used globally in a template and or they can be used locally in an xsl template. Variables can also be re-assigned. If you were assuming that assignment can happen multiple times, all of the time, your mistaken. Here's the syntax break-down for creating an xsl variable:<br /><br /><span style="font-weight: bold;font-size:85%;" >Example 1: Create a variable with one value that's reset</span><span style="font-weight: bold;"> in a loop</span><br /><span style="font-size:85%;">creating a variable: variable<span style="font-weight: bold; color: rgb(204, 0, 0);">@incontext</span>:first_line_text; substring(//LONG_STRING,1,20)<br />getting the value: </span><span style="font-size:85%;">$first_line_text</span><span style="font-size:85%;"> (should be "</span>Ike likes to walk"<span style="font-size:85%;">)</span><br /><br /><span style="font-weight: bold;font-size:85%;" > Misc Example 2: Create a variable with one value that is the length of a field.</span><br /><span style="font-size:85%;">creating a variable: variable:field_length; round(string-length(string(//LONG_STRING)))<br />getting the value: $field_length (should be 170)<br /><br /></span><span style="font-weight: bold;font-size:85%;" >Misc Example 3</span><span style="font-size:85%;"><span style="font-weight: bold;">: Create two variables and summing both values</span><br />creating a variable: variable: bill_only; //ORDER_LINES[QTY > 10 and LINE_TYPE ='Bill Only' ]/QTY)<br />creating a variable: variable: ship_only; //ORDER_LINES[QTY > 10 and LINE_TYPE ='Ship Only' ]/QTY)<br />getting the value: sum($bill_only | $bill_only) </span><br /><br /><span style="font-weight: bold;font-size:130%;" >Solution</span><br /><br />We now have the basic elements to create a parser utility. The xml text that were going to breaking up is below.<br /><span>XML Doc</span><br /><pre><br /><WRAPPING><br /><LONG_STRING>Ike likes to walk the walk and talk the talk all of the time.<br />End result is very long sentence of text.</LONG_STRING><br /><LONG_STRING>This is some other text that will have to get parsed.<LONG_STRING><br /><WRAPPING><br /></pre><br /><br />Here's the <a href="http://web.me.com/beth.wiggins/ike/bipublisher/LIMITING%20TEXT%20PER%20ROW.zip">template</a> that will break it up. Below is the code from the format template. This template will be breaking up the text in lengths of 20.<br /><br /><span>BIP Code:</span><br /><pre><br /><?param@begin:cell_length;20?><br /><br /><?for-each:WRAPPING/LONG_STRING?><br /> <?call-template: string_variables?><br /> <?variable@incontext:iterations; ceiling(string-length(string(.)) div $cell_length)?><br /> <?$iterations?><br /> <?for-each:xdoxslt:foreach_number($_XDOCTX,1,$iterations,1)?><br /> <?call-inline-template:string_parser?><br /> <?end for-each?><br /><?end for-each?><br /><br /><br /><?template:string_variables?><br /><?xdoxslt:set_variable($_XDOCTX, 'text_string',.)?><br /><?end template?><br /><br /><?template:string_parser?><br /><?variable@incontext:start; ((position()-1)*20)+1?><br /><?variable@incontext:first_line_text; substring(xdoxslt:get_variable($_XDOCTX, 'text_string'),1, $cell_length)?><br /><?variable@incontext:line_text; substring(xdoxslt:get_variable($_XDOCTX, 'text_string'),$start, $cell_length)?><br /><?variable@incontext:last_line_text; substring(xdoxslt:get_variable($_XDOCTX, 'text_string'), $start, $cell_length)?><br /><?choose:?><br /><? When: position() = 1?><br /><?$first_line_text?>(FIRST LINE)<br /><?end when?><br /><? When: position() = last()?><br /><?$last_line_text?>(LAST LINE)<br /><?end when?><br /><?otherwise:?><br /><?$line_text?>(REGULAR LINE)<br /><?end otherwise?><br /><?end choose:?><br /><?end template?><br /></pre>This is the best solution that I could come up. It doesn't account for the fact that specific characters may be bigger or smaller for a particular font (basically characters are not uniform). When implementing this solution be very conservative about how many characters can fit in a cell. I would suggest using the largest character in caps to figure-out the maximum length.<br /><br />I'll throw this out there too, if anyone has a better or different way of doing it, please send me an e-mail with your solution on I'll post it on my blog with your name.<br /><br />Also, it's important to note that a data template with a pipelined function can be used to solve line wrapping issues.....<br /><br /><span style="font-style: italic; font-weight: bold;">Is there topic you would like me to cover? Post a comment and I'll see what I can do!</span>Ike Wigginshttp://www.blogger.com/profile/03629933955296401382noreply@blogger.com10tag:blogger.com,1999:blog-5406107793530126650.post-69349546185126220162009-07-29T08:50:00.000-07:002009-10-01T15:05:49.129-07:00BI Publisher: Font Setup & Troubleshooting<span style="color: rgb(0, 102, 0);font-size:180%;" ><span style="font-weight: bold;"></span></span>Recently, Tim Dexter at oracle has been writing up a storm about barcode fonts implementations. This is an overview on how to do a relatively simple installation of fonts for BI Publisher on a PC. There are really only three steps to setting up a font for BI Publisher. The first step is to install it in windows, the second step is configuring the font for BI Publisher (java) and the third step is troubleshooting the setup font setup.<br /><br />The following posts from Tim Dexter are useful as well for font setup or config:<br /><a href="http://blogs.oracle.com/xmlpublisher/2006/06/how_to_install_a_font_using_xm.html">How to install a font using XML Publisher Administrator?</a><br /><a href="http://blogs.oracle.com/xmlpublisher/2007/07/i_want_a_default_font.html">I want a default font!</a><br /><a href="http://blogs.oracle.com/xmlpublisher/2008/09/ps_font_support.html">PS Font Support?</a><br /><a href="http://blogs.oracle.com/xmlpublisher/2007/05/barcoding_101.html">Barcoding 101</a><br /><br /><span style="font-weight: bold;">Installing the new fonts in word</span><br />1. Close any open Windows applications, such as Microsoft Word or Microsoft Outlook®.<br />2. In Control Panel, click Appearance and Themes.<br />Note: If you are using Control Panel Classic view or Microsoft Windows 2000, double-click Fonts, and then go to step 4.<br />3. In the task pane, under See Also, click Fonts.<br />Note: If a folder tree appears instead of the task pane, click Folders on the toolbar, and then under See Also, click Fonts.<br />4. On the File menu, click Install New Font.<br />5. In the Drives list, click the drive you want.<br />6. In the Folders list, double-click the folder that contains the fonts you want to add.<br />7. Under List of fonts, click the font you want to add, and then click OK.<br /><br /><span style="font-weight: bold;">Installing the new fonts in BI Publisher</span><br />1. Locate the JRE for BI Publisher (JAVA_HOME/lib). This can be done by going to Tools -> Options, then click the preview tab.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKI4j1mHjRimeZxZNqN_x4wtSRF_oRt4X1MzLGJQsCdOFAhHp3dfcNSJRZbRwm41RD5EFLeZ3-k1159LyIolFaq6fdjXp6lfWmT8trkX0LOuZTb9hbAHmsY7dcf33-J-LRZbpXYGPmVI7E/s1600-h/BIP_OPTIONS.bmp"><img style="cursor: pointer; width: 400px; height: 244px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKI4j1mHjRimeZxZNqN_x4wtSRF_oRt4X1MzLGJQsCdOFAhHp3dfcNSJRZbRwm41RD5EFLeZ3-k1159LyIolFaq6fdjXp6lfWmT8trkX0LOuZTb9hbAHmsY7dcf33-J-LRZbpXYGPmVI7E/s400/BIP_OPTIONS.bmp" alt="" id="BLOGGER_PHOTO_ID_5363915143803800626" border="0" /></a><br />xdo.cfg<br /><pre><br /><?xml version="1.0" encoding="UTF-8"?><br /><config version="1.0.0" xmlns="http://xmlns.oracle.com/oxp/config/"><!-- Properties --><br /><properties><br /><!-- System level properties --><br /><property name="system-temp-dir">c:\tmp</property><br /><!-- PDF compression<br /><property name="pdf-compression">true</property> --><br /><!-- PDF Security<br /><property name="pdf-security">true</property><br /><property name="pdf-open-password">user</property><br /><property name="pdf-permissions-password">owner</property><br /><property name="pdf-no-printing">true</property><br /><property name="pdf-no-changing-the-document">true</property> --><br /></properties><br /><!-- Font setting --><br /><fonts><br /><!-- Font setting (for FO to PDF etc...) --><br /><font family="Arial" style="normal" weight="normal"><br /><truetype path="/fonts/Arial.ttf"/><br /></font><br /><font family="Default" style="normal" weight="normal"><br /><truetype path="/fonts/ALBANWTJ.ttf"/><br /></font><br /><br /><b><font family="BC 3of9" style="normal" weight="normal"><br /><truetype path="C:\Program Files\Java\jre6\lib\fonts\B39R00.ttf"/><br /></font></b><br /><br /><!--Font substitute setting (for PDFForm filling etc...) --><br /><font-substitute name="MSGothic"><br /><truetype path="/fonts/msgothic.ttc" ttcno="0"/><br /></font-substitute><br /></fonts><br /></config><br /></pre><br />3. Configure the xdodebug.cfg. This is the standard debug configuration file for BI Publisher. xdodebug.cfg allows you to set the BI Publisher debugging level and to specify the directory where the log file should be written.<br /><br />This is an example of what should be in the xdodebug.cfg<br />LogLevel=STATEMENT<br />LogDir=c:\tmp<br /><br />If you would like to know more about xdodebug.cfg file it’s available in the Oracle BI Publisher documentation or see the following metalink Note:364547.1. Also, the following posts are good:<br /><br /><a href="http://bipublisher.blogspot.com/2008/09/bi-publisher-xdodebugcfg.html">BI Publisher: xdodebug.cfg troubleshooting</a><br /><a href="http://blogs.oracle.com/xmlpublisher/2007/05/10/">Get Logging</a><br /><br />Troubleshooting the font setup<br />Step 1: When you run your template and you export to rtf, the specified font should show up correctly. If the font does not show up correctly it's because of the following issues:<br /><span style="font-style: italic;"><br />A. You may need to do barcode implementation</span> <span style="font-style: italic;"><br />B. The font is not configured *Most likely the issue</span><br />Step 2: Run the template again, but select the output format for PDF. If the barcode font does not show up it could be caused by the followings issues:<br /><br />A. Verify the font is the fonts directory under the JAVA_HOME/lib/fonts<br /><span style="font-style: italic;">B. Verify the path is correct. I always use the absolute path to the font.<br />Example: C:\Program Files\Java\jre6\lib\fonts\B39R00.ttf<br />C. Verify the font is being found by BI Publisher. In the example above for the xdodebug.cfg we set the log directory to C:\tmp. Navigate to the tmp directory and open the xdo.log file. Locate any errors that might be present.<br /><br /><span style="font-weight: bold;">Example error:</span><br />[072909_090808562][oracle.apps.xdo.common.font.FontFactory$FontDef][ERROR] <span style="font-weight: bold; color: rgb(255, 0, 0);">Failed to open TrueType font: /fonts/B39R00.ttf(0)</span><br /><br /><span style="font-weight: bold;">Example fix: </span><br />[072909_091211224][oracle.apps.xdo.common.font.FontFactory$FontDef][STATEMENT] <span style="font-weight: bold; color: rgb(51, 51, 255);">TrueType font created: C:\Program Files\Java\jre6\lib\fonts\B39R00.ttf(0)</span></span>Ike Wigginshttp://www.blogger.com/profile/03629933955296401382noreply@blogger.com0tag:blogger.com,1999:blog-5406107793530126650.post-33547861046329049032009-06-19T18:13:00.000-07:002012-06-16T12:45:46.351-07:00BI Publisher: Conditionally Limiting Rows on a Page<span style="color: #006600; font-size: 180%;"><span style="font-weight: bold;"></span></span>Recently, I've been getting quite a few questions about row manipulation. Besides the solution posted here there are two really good examples for developers to look at that Tim Dexter at oracle created.<span style="font-weight: bold;"><br /><br />Tim D. Examples</span><br />
<blockquote>
<ul>
<li><a href="http://blogs.oracle.com/xmlpublisher/2008/02/across_not_down.html">Across not Down!</a></li>
<li><a href="http://blogs.oracle.com/xmlpublisher/2007/12/multi_column_row_woes.html">Multi Column Row Woes </a></li>
</ul>
</blockquote>
<span style="font-weight: bold;">Question</span><br />
<blockquote>
<span style="font-style: italic;">Hello Iceman,</span><br />
<br />
<span style="font-style: italic;">I came across your posts on internet. I have trouble with a BI publisher report presentation and was hoping to get a quick answer from you.</span><br />
<br />
<span style="font-style: italic;">I have a query result (4 simple columns) that could result records anywhere between 10 to 70. There is no grouping in this query and it is flat. I have a requirement to show 15 records in each page. Since, I have used syntax, it is showing about 22 records per page in the pdf report.</span><br />
<br />
<span style="font-style: italic;">Is there a parameter in for-each element to limit the number of rows per page in the report?</span><br />
<br />
<span style="font-style: italic;">Thanks in advance,</span><br />
<span style="font-style: italic;">Srinath Sura</span></blockquote>
The question that Sirnath posed is quite common. It's not atypical for a business to specify the amount of lines they want to be displayed on a customer facing document (invoice, packing slip, etc). Fortunately, Srinath is not being asked to account for the number of printed lines. That gets tricky because we would have to account for line wrapping. The solution here does not account for line wrapping. If their is interest in seeing how one would go about doing that, post a comment.<br />
<br />
In order to tackle Srinath problem were going to have to use two bip functions: position() and mod.<br />
<br />
For those of you new to xpath or xsl, position() is the current position in a for-each loop. For each iteration the position is incremented by one automatically. Typically, position does not need to be used in most Xpath operations.<br />
<br />
Modulus is a basic mathematical function that divides a number and returns the reminder. It's usefullness is not strictly limited to mathematical applications. As an example, if you have ever written program that creates a Gregorian calendar you have used modulus. Anyways, it's also a valuable function in bip as we will see shortly.<br />
<span style="font-weight: bold;"><br />Pseudo Code</span><span style="font-weight: bold;"> Solution</span><br />
<pre>If position() mod 15 = 0 then
Use bip section break
End if</pre>
<span style="font-weight: bold;">BIP Solution</span><br />
<pre>
<?for-each@section:DEPT?> <?//NAME?>
<?../DEPT_NAME?>
<?for-each:EMPLOYEE?>
Name: <?ENAME?> Salary: <?SAL?>
<?if: position() mod 3 = 0?>
PAGE BREAK APPLIED
<?split-by-page-break:?>
<?end if?>
<?end for-each?>
<?end for-each?></pre>
<br />
<br />
Pretty simple solution huh! All we have to do is test if the position is divisible by 15, if it's not then we do nothing, otherwise, we do a page-break.<br />
<br />
Download the limiting 3 rows per page <a href="http://bethwphoto.com/ike/bipublisher/Limiting_3_employee_rows_to_a_page.zip">example</a><br />
<br />
<span style="font-weight: bold;">Up and coming posts:</span> Webservices MayhemIke Wigginshttp://www.blogger.com/profile/03629933955296401382noreply@blogger.com9tag:blogger.com,1999:blog-5406107793530126650.post-42132028183627921802009-05-10T19:53:00.000-07:002012-06-16T12:44:37.526-07:00BI Publisher: Reports6i to BIP Conversion Utilities<span style="font-size: 180%; font-weight: bold;"><span style="color: #006600;"></span></span>Currently, many organizations and developers would really like to make the leap to BI Publisher. One potential option to ease into the BIP tool set is to convert some relatively simple reports6i reports.<br />
<br />
There are two ways to do the conversion. Manually do it (see links below) or use the BIP Conversion Utilities. <br />
<blockquote>
<a href="http://download.oracle.com/docs/cd/E10415_01/doc/bi.1013/e10416/convertrpts.htm">Oracle OBIEE Documentation</a><br />
<a href="http://blogs.oracle.com/xmlpublisher/files/RDFtoBIP.zipped">RDFtoBIP.zipped</a></blockquote>
Doing it manually without a GUI is a good option but it's more time consuming because there is less automation and it doesn't really tell you where your at in the conversion process. Using the BIP conversion utilities is really the way to go though because of it's simplicity. It reminds me of quote by Walter Chrysler <br />
<blockquote>
"Whenever there is a hard job to be done, I assign it to a lazy man; he is sure to find an easy way of doing it."</blockquote>
It's refreshingly easy to do the conversion using the BIP Conversion Utilities and extremely fast. Here are the main advantages of using them:<br />
<ol>
<li>BIP technical expertise is not required for the conversion</li>
<li>Complete automation from start to finish</li>
</ol>
<span style="font-weight: bold;"><span style="font-style: italic;">Download the tutorial video</span></span> <b><i>(Quicktime)</i></b><br />
<a href="http://bethwphoto.com/ike/bipublisher/ReportConversion/ReportConversion.mp4"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5334706939571825922" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhzPA7xRykZLsYLQTSGYs0QGaKSz_10sgdPY5Ps4WKfySg1Pr0fXVYHjgC2HI1L7stU_EgISVcMlg1Aiys9q5DJfkeHGHOIct3JY_rR93qFYOtIdc6FhFI_nEMqdZ2owa5moA-wcaNdNBBH/s400/quicktime-48x48.png" style="height: 48px; width: 48px;" /></a><br />
<br />
<div style="text-align: left;">
<span style="font-weight: bold;"><span style="font-style: italic;">Download the code</span></span></div>
<a href="http://bethwphoto.com/ike/bipublisher/ReportConversion/ReportConversion.zip"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5334706934263315810" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjHejB5c5uUdlwl-s4SxgZfja1FbAz7AqnXPeCqI556EmpbklgBF5lkUy-v2YR725-mAL4GM1Xj86ewzdtsKzAhj-34t2QlpPhRdR95P9eRRXodz4CbaAVNkle0HxB9tSfdmgwr2ZeuQXJH/s400/binary-48x48.png" style="height: 48px; width: 48px;" /></a><br />
<span style="font-style: italic;">*By downloading the software you agree that you will not sell or license the BIP conversion Utilities. It's free software for everyone to use capiche.</span><br />
<br />
<span style="font-weight: bold;">Instructions</span>Step 1 : Extract the zip<br />
Step 2: Navigate to directory to the bin directory (ReportConversion->bin)<br />
Step 3: Copy the batch the dos batch file to the directory where you will be converting your reports6i binary to xml. Double click to run.<br />
Step 4: Run the ReportConversion.exe (ReportsConversion->bin, do not move the executable)<br />
Step 5. Click the folder icon<br />
Step 6. Navigate to your conversion directory. Select the files named .rdf.xml<br />
Step 7. Click process button.<br />
<span style="font-weight: bold;"><br />Report Conversion FAQ</span><br />
<br />
<span style="font-weight: bold;">Q. </span>I need to have reports9i installed on the apps server in order to do the conversion.<br />
<span style="font-weight: bold;">A. </span>This is the number one misconception about the conversion process. <span style="font-weight: bold;"></span>I have heard a lot of developers say they don't have 10g setup in there apps server environment, so they will have to wait until release 12. In reality all a developer needs to do is install forms and reports 10g locally on there PC. Also, it's possible to have multiple versions oracle forms and reports installed on a PC, just be sure to create a new home for each installation.<br />
<br />
<span style="font-weight: bold;">Q. </span>The conversion has to take place in unix; it must be done from the command line.<br />
<span style="font-weight: bold;">A. </span>Because BIP is written in java it allows the conversion APIs to run anywhere there is a JVM. To resolve this issue you need to grab the BIP jar files. The BIP jar files are included with the conversion utility so there is no need to worry.<br />
<br />
<span style="font-weight: bold;">Q. </span>The reports6i Binary to XML conversion is a manual process and I have to manually key everything into rwconverter.exe.<br />
<span style="font-weight: bold;">A. </span>A dos batch or shell script can be written to accomplish this task. A dos batch script is included with the code.<br />
<br />
<span style="font-weight: bold;">Q. </span>The conversion is time consuming.<br />
<span style="font-weight: bold;">A. </span>It's remarkable fast. The conversion utility is running so fast (30 seconds) that it was very difficult to add an voice over for each clip step in the process. As a matter of fact, the video was extended by nearly a minute to allow for a voice over.<br />
<br />
<span style="font-weight: bold;">Q. </span>The conversion is flawless.<br />
<span style="font-weight: bold;">A. </span>Definitely not. The conversion has some known issues: format triggers, bind variables, etc that don't port (there is a log that can be reviewed after the conversion)! You can find more about those issues on this blog, <a href="http://blogs.oracle.com/xmlpublisher/">Tim Dexter blog at oracle</a> or if your feeling lucky you can convert your reports and see for yourself. The utility does a really good job but there is no magic bullet.Ike Wigginshttp://www.blogger.com/profile/03629933955296401382noreply@blogger.com52tag:blogger.com,1999:blog-5406107793530126650.post-72092178755001445992009-03-09T06:05:00.000-07:002009-09-26T09:22:03.796-07:00BI Publisher: Charts tips and tricksThe purpose of this post is a tips and tricks guide that explains effective and efficient ways of designing custom charts with BIP and BI Beans. When possible it's always preferable to use Oracle Charting Wizard in the Word plug-in. However if their is a requirement to do conditional logic or dynamic logic, the charting wizard was not designed for this. In this case you would have to manually manipulate the chart xml.<br /><br />Before getting started on manually manipulating a chart xml file your going to needs some tools and resources.<br /><br /><span style="font-weight: bold; color: rgb(0, 153, 0);">Tools and Resources:</span><br /><br />1. Use an XML Editor. Do not use Microsoft word to edit the chart xml. When you edit it in MSword your much more likely to make syntax errors, and there is no validation that your xml is syntactically correct. I highly recommend XML Pad as editor: http://www.wmhelp.com/<br /><br />2. Get the chart DTD from oracle. While an XSD is eaiser to use than DTD, it's still better than the alternative which is nothing. The charting DTD is an excellent resource that gets passed over by most developers. Below are two links which should be helpful in your charting endeavors. The first one is Oracle Reports Graphing Faq and the second is the DTD. Note: You will need to copy the dtd and paste it in a file to use it with XML Pad.<br /><br />I highly recommend reading the Oracle Reports Technical FAQ for graphs. This document is a hidden gem for setting and creating particular properties of a graph. As an example, I was able to find an obscure information like getting a reference line in a graph. I wouldn't have even been able to guess that this was an option by looking at the graph.dtd<br /><br />http://www.oracle.com/technology/products/reports/htdocs/faq/Graph_FAQ_with_style.html<br />http://www.oracle.com/technology/products/reports/htdocs/getstart/whitepapers/graphdtd/graph_dtd_technote_2.html<br /><br />When developers look at the graphing DTD, it seems like it's an impossible document to read and understand. In reality their is no need to understand the DTD. The real purpose of DTD is to assign it to an XML document. When it's assigned your xml editor will validate to make sure your creating a valid structure. The editor will also highlight available attributes for the applicable xml elements. This is one of the most important features of assigning the DTD because the heavy lifting is done automatically for you ie: the editor determines the required elements and attributes.<br /><br />To assign a DTD in XML Pad go to the menu: XML->Assign Schema/DTD. See that wasn't to bad now was it! Now you should be good to go. Below is a screen shot (sorry for the blurriness, blame blogger, click it to view the whole image) . Notice to the left side of the screen there is a list of properties available. This is the benefit of assigning a DTD. When I clicked on a series line I was able to see all of the available attributes. It gets better though, when I clicked on the markerShape field, a drop down was provided with all the available shapes. Nice...<br /><br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgymQp5WvrUpJaf-RwdCQGOwDqifkc8Y5ytvaZ1SL5U8_yEebkTAKOn0CPVmdyH2btgYZpZOeDREa7A1jBR_Ox8sjJZMydGkkCm8t5zmpWAd6UjVD2Er5UVlO3AT0XOOIwJt21GiQCcWyo_/s1600-h/XML_Screen_Shot.jpg"><img style="cursor: pointer; width: 667px; height: 171px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgymQp5WvrUpJaf-RwdCQGOwDqifkc8Y5ytvaZ1SL5U8_yEebkTAKOn0CPVmdyH2btgYZpZOeDREa7A1jBR_Ox8sjJZMydGkkCm8t5zmpWAd6UjVD2Er5UVlO3AT0XOOIwJt21GiQCcWyo_/s400/XML_Screen_Shot.jpg" alt="" id="BLOGGER_PHOTO_ID_5312301254997790018" border="0" /></a><br /><br /><br />3. Use Oracle’s template viewer. This tool is another hidden gem and it’s extremely useful for debugging your format template charting issues. The tool can be found in the bi publisher directory in your program files. When running the template viewer be sure to change the “log (debug) level” on the Settings Tab to “STATEMENT” before running the template. As an example, I was able to figure-out a string comparison was being done to a number and the xml element could not be found because it was being treated as a literal string.<br /><blockquote>Caused by: java.lang.NumberFormatException: For input string: ".//P_ACTIVE_ENGAGEMENT_RATE"</blockquote>Also, did you know that the template viewer is capable of running in any environment that has the jre? Below is an example the template viewer on my mac. All one would need to do is use the Mac OS X jar bundler and you can have this baby up and running in no time....perhaps a topic for another post :-)<br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4WR8qJZiof26WPZtO_y0j0_MM1SXeFTmisAAcXth35Qqr5BtN0sr_jirN9jeZbX-e94YiLeJSW1YC4ft1Qhlj9HnIgMsqLJGDRzJ5sj-CiIyLsr3mRj7MJ7GTM90BWXx4cU0M5RSdQth1/s1600-h/BIP+on+Mac+OS+X.jpg"><img style="cursor: pointer; width: 400px; height: 187px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj4WR8qJZiof26WPZtO_y0j0_MM1SXeFTmisAAcXth35Qqr5BtN0sr_jirN9jeZbX-e94YiLeJSW1YC4ft1Qhlj9HnIgMsqLJGDRzJ5sj-CiIyLsr3mRj7MJ7GTM90BWXx4cU0M5RSdQth1/s400/BIP+on+Mac+OS+X.jpg" alt="" id="BLOGGER_PHOTO_ID_5312368448088750898" border="0" /></a><br /><br /><br /><span style="font-weight: bold; color: rgb(0, 153, 0);">Questions and Answers</span><br /><br />This section contains some of the most common questions I have been asked. I tried to put in actual examples so it makes more sense. If you would like to ask a charting question please leave a comment and I'll see what I can do.<br /><br />Q. Can I do <span style="font-style: italic;">if</span> statements in charts.<br />A. Yes, remember this is xsl and you have to use that syntax over bip syntax.<br /><br />Q. Can I do <span style="font-style: italic;">choose</span> statements in charts.<br />A. Yes, remember this is xsl and you have to use that syntax over bip syntax. (See Example 1)<br /><br />Q. Can I use xsl variables.<br />A. Yes (See Example 1)<br /><br />Q. Do I have to use for-each-group for row data.<br />A. No . This is a common mistake that people think they have to group the data always. The only reason to group the data would be if you need to aggregate it. If your data is aggregated or you can use xpath with the sum function then the answer is always no. (See Example 1)<br /><br /><span style="font-weight: bold;">Example 1</span>: Get the current month sales, using an xsl variable and default it to zero if there is no data for the month.<br /><textarea name="comments" cols="70" rows="10"><RowData> <xsl:for-each select="MONTHS"> <xsl:sort select="current()/MONTH_ORDER" data-type="number" order="descending"> <Cell> <xsl:choose> <xsl:when test="sum($SALES[../../R_MY=current()/MM_YYYY]/amt) > 0"> <xsl:value-of select="sum ($SALES[../../R_MY=current()MM_YYYY]/amt)"> <xsl:when> <xsl:otherwise>0<xsl:otherwise> <xsl:choose> <Cell> <xsl:for-each> <RowData></textarea><br /><br />Q. If statements are not evaluating correctly or just plain not working.<br />A. It's likely the if statement may be evaluating the value as string and not number. To solve this use number() (See Example 2)<br /><br />Q. If statements fail when I use in less than or greater than signs.<br />A. Use & lt; or & gt; (See Example 2)<br /><br />Q. My chart keeps failing because the xml field is being recognized as literal.<br />A. Use the squiggles { } to avoid this issue. (See Example 2)<br /><br /><span style="font-weight: bold;">Example 2</span>: If statement, number check, avoiding literal interpretations<br /><textarea name="comments" cols="70" rows="10"><xsl:if test="number(//P_ACTIVE_ENGAGEMENT_RATE) > number(0)"> <Y1ReferenceLine> <ReferenceLine index="0" visible="true" lineWidth="2" text="Default Active Engagement Rate" value="{.//P_ACTIVE_ENGAGEMENT_RATE}" displayedInLegend="true" lineColor="#ff00"> </Y1ReferenceLine> </xsl:if></textarea><br /><br />Q. How do I mix static text with dynamic text without using append.<br />A. This is actually surprisingly simple. Create a “some text like this for {$YOUR_VAR or YOUR_XML_NODE} " (See Example 3)<br /><br /><span style="font-weight: bold;">Example 3</span>: Dynamic substitution text<br /><textarea name="comments" cols="70" rows="10"><Title text="Monthly Sales - {$CURRENT_MONTH_NAME}" visible="true" horizontalAlignment="CENTER"> <LocalGridData colCount="1" rowCount="5"><RowLabels></textarea><br /><br />Q. Can I use reports1og to create a chart.<br />A. Yes you can use repors10g to setup your graph. There is one caveat; it’s not runnable in BIP. However, it’s a great starting point for complex charting were the bip wizard can be sometimes lacking. When you’re done creating your mockup, save the report as xml file. You can rip out the nodes to figure-out what you need to do in chart in BIP.<br /><br />This all I got for now. Like I said before if you have a question don't hesitate to leave a comment!<br /><br />IkeIke Wigginshttp://www.blogger.com/profile/03629933955296401382noreply@blogger.com10tag:blogger.com,1999:blog-5406107793530126650.post-82190946552007317922009-01-20T09:37:00.000-08:002009-09-26T09:21:53.308-07:00BI Publisher: Data Templates vs. Reports6i<span style="color: rgb(0, 102, 0);font-size:180%;" >Top 5 Reasons to use Data Templates over Reports6i</span><br /><br />To start off there are more than 5 reasons!<br /><br />1. Displaying a reports in real-time<br />2. Advanced PL/SQL<br />3. Easy of use<br />4. Multiple Integration Points<br />5. No Binary Conversions<br />6. Used across multiple platforms<br />7. Integration with multiple data sources<br />8. Excellent debugging facilities<br />9. Eliminates Ambiguous Crashing (who doesn't love terminated by signal 11)<br /><br />I forgot to mention a couple of other benefit about data templates vs reports6i that we haven't ever discussed. Data templates are the only way a developer can generate the xml in real-time in the eBusiness suite or locally on there pc. In comparison, a developer always has to submit a concurrent request in order to generate an xml file with reports6i.<br /><br />Other benefits of using data templates would be that the logic has to be put into a pl/sql package, whice essentially makes the business logic globally available to all other objects in the database. This provides an amazing code reduction. Developers can create other data templates (that are similar but different) and reuse existing business logic.<br /><br />IkeIke Wigginshttp://www.blogger.com/profile/03629933955296401382noreply@blogger.com19tag:blogger.com,1999:blog-5406107793530126650.post-16079991672695312772008-12-01T07:25:00.000-08:002009-09-26T09:43:43.815-07:00BI Publisher: Data Templates - Simplified Error Handling<span style="font-weight: bold;font-size:180%;" ><span style="color: rgb(0, 102, 0);"></span></span>Debugging data templates and "calculated formulas"/"report triggers" can be tricky. This is especially true if a developer needs to test there queries in sql*plus or concurrent manager (what output utility should be used). Or what about user requests for putting error messages directly into format templates dynamically. Well there is a solution to all of these problems and yes you can have your cake and eat it too.<br /><br />Now in the past I have talked up a storm about pipelined functions and how useful they are for reporting and not just etl. If you haven't read-up on pipelined functions I suggest you do so, you don't know what your missing out on! (see <a href="http://bipublisher.blogspot.com/2007/09/plsql-taking-it-to-next-level.html">first article</a>, <a href="http://bipublisher.blogspot.com/2007/10/bi-publisher-taking-it-to-next-level.html">second article</a>)<br /><br />Below is the outlined technical approach:<br /><br />1. Pass in a debug parameter that specifies the debug output ie: DBMS, CONCURRENT, XML<br />2. In the beforeReportTrigger set the debugging method<br />3. Call a debugging procedure which is able to determine the right logging mechanism.<br /><br />Now, I know what your thinking, this is way too simple, it can't be that easy. DBMS and CONCURRENT manager output mechanisms are straight forward but how would XML work. This where the pipelined function comes in. Click on the pic below. Notice what happens when the debug procedure finds that g_debug is set to xml. The debug procedure instead populates a pl/sql table, I wonder what were going to with that!<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLQ7BHpGD7Mxzfw5KnMH4jtiilotJl7KNuYiiBm7BVq4rj8uYYWXpUrYGKr_OuRu2gkzQXu2Wb6_lPfxcFFUM771bscMCkPmTJVvYry6S1ndJj4jQ1hXjgibpHCICndzIFSt0CXg_W5Skv/s1600-h/sample_pkg_pic1.JPG"><img style="cursor: pointer; width: 320px; height: 307px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLQ7BHpGD7Mxzfw5KnMH4jtiilotJl7KNuYiiBm7BVq4rj8uYYWXpUrYGKr_OuRu2gkzQXu2Wb6_lPfxcFFUM771bscMCkPmTJVvYry6S1ndJj4jQ1hXjgibpHCICndzIFSt0CXg_W5Skv/s320/sample_pkg_pic1.JPG" alt="" id="BLOGGER_PHOTO_ID_5273721241960412642" border="0" /></a><br /><br /><br />All one would need to do now is create a pipelined function to get the values out the table. Below is another code snippet.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3VVwO0ZiEFdpPNSckTz7V_mFCaewAwWOkyCYUsS22kLx1TIDBiU4dfFHrvM6uKSb_mRYJeD4_xpCfc5KjpXjqLrErvfmskn14-RnD_XTpj0Mi6TqhjSm_K5qi6yufAIaf_Zq3kDfNUDAF/s1600-h/sample_pkg_pic2.JPG"><img style="cursor: pointer; width: 320px; height: 146px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh3VVwO0ZiEFdpPNSckTz7V_mFCaewAwWOkyCYUsS22kLx1TIDBiU4dfFHrvM6uKSb_mRYJeD4_xpCfc5KjpXjqLrErvfmskn14-RnD_XTpj0Mi6TqhjSm_K5qi6yufAIaf_Zq3kDfNUDAF/s320/sample_pkg_pic2.JPG" alt="" id="BLOGGER_PHOTO_ID_5273722547641727474" border="0" /></a><br /><br />From there it's a simple one line query to get everything out of the pl/sql table:<br />SELECT seq, message FROM table(sample_pkg.get_debug_log) Click <a href="http://www.mediafire.com/file/y2rmzmxwl4m/sample_pkg.zip">here</a> to download the sample package pl/sql source code.<br /><br />A couple of things to keep in mind. Because the debugging is parametrized an ebs developer can configure there concurrent program setup ie: set the default for the p_debug parameter to be "CONCURRENT". This is a really nice/flexible feature. As an example a developer could be running this same code locally in toad (or the BIPublisherIDE) and could change the output to DBMS or what have you with no worries because it's parametrized.....<br /><br />For the reports6i developers you have to admit this sure beats the socks off of srw.message! So, why fight the feeling, make the switch :-)Ike Wigginshttp://www.blogger.com/profile/03629933955296401382noreply@blogger.com1tag:blogger.com,1999:blog-5406107793530126650.post-21241850813151904822008-11-10T08:17:00.000-08:002009-09-26T09:44:18.552-07:00BI Publisher: Troublshooting the BIPublisherIDE<div></div>For sometime now, I have been receiving request for a troubleshooting guide. I must apologize for not getting one at sooner since it seems like I'm getting monthly help requests. On the right side of the page there is a new link called BIPublisherIDE Troubleshooting. If you think something is missing or you have a suggestion, please add a comment to this blog and I'll see what I can do.<br /><br />Also, if you have already downloaded the BIPublisherIDE in the past and could it to work, I would suggest you download it again (I fixed a couple of things) and use the troubleshooting manual.Ike Wigginshttp://www.blogger.com/profile/03629933955296401382noreply@blogger.com0tag:blogger.com,1999:blog-5406107793530126650.post-87061817526828690432008-10-25T07:41:00.000-07:002009-09-26T09:44:40.355-07:00BI Publisher: 500 Plus Downloads<span style="color: rgb(0, 102, 0);font-size:180%;" ><span style="font-weight: bold;"></span></span>The BIPublisherIDE standard and OAF edition have been downloaded over 500+ times from this site!<br /><br />If you are interested an integrated bi publisher developer environment then BIPublisherIDE is the right fit for you. To find more out about the BIPublisherIDE I would suggest you read the following posts:<br /><br />http://bipublisher.blogspot.com/2008/03/bi-publisher-bipublisheride.html<br /><br />If your an experienced developer looking to do cutting edge reporting inside the eBusiness suite using the OA Framework I would suggest the following posts:<br /><br /><span style="font-weight: bold;">Part I: </span> http://bipublisher.blogspot.com/2008/03/bi-publisher-bip-in-oa-framework-part-1.html<br /><span style="font-weight: bold;">Part II:</span> http://bipublisher.blogspot.com/2008/03/bi-publisher-bip-in-oa-framework-part.htmlIke Wigginshttp://www.blogger.com/profile/03629933955296401382noreply@blogger.com0tag:blogger.com,1999:blog-5406107793530126650.post-53306105167270528672008-10-08T08:01:00.000-07:002009-09-26T09:44:49.541-07:00BI Publisher: xdodebug.cfg troubleshooting<span style="color: rgb(0, 102, 0);font-size:180%;" ><span style="font-weight: bold;"></span></span>Using the xdodebug.cfg file is a great way to debug the BI Publisher API's for custom code that is calling the BI Publisher API's. Below is the metalink note (Note:<strong>364547.1</strong>) on how to do this but beware.....<br /><blockquote>Direct report publishing via the XML Publisher Core APIs (without concurrent processing)<br />1. Connect to the Apache Server as ‘applmgr’. Run the APPSORA.env to set the APPS environment (Windows: envshell.cmd).<br />2. Create an $XDO_TOP/temp directory.<br />3. Go to the $OA_JRE_TOP/jre/lib directory.<br />4. Create an xdodebug.cfg file with the following 2 lines:<br />LogLevel=STATEMENT<br />LogDir=[full XDO_TOP]/temp<br />5. Restart the Apache server.<br />6. Reproduce the problem.</blockquote>Unfortunately, Oracle's metalink note is missing one key setup that has to be done. In order for debugging to work you must have a temp directory setup via the template manager. Unbelievably, if you do not have the temp directory setup, debugging actually causes the BI Publisher API's to crash.<br /><br />The situation is really a quagmire since the reason one would turn on the debugging is to troubleshoot a template issue and in doing so they have exacerbated the issue. Below is the error you can expect to see.<br /><br /><span style="font-weight: bold;">java.io.FileNotFoundException: xdo-1225988068296.tmp (Permission denied)</span><br /><br />I retrived this from JSERV log file, see Stack Trace below. Note: We had turned on debugging for the BIPublisher_OAF (bi publisher report pop-ups from forms6i) code to troubleshoot an issue. If your interested in learning how to develop pop bip reports for forms6i, see http://bipublisher.blogspot.com/2008/03/bi-publisher-bip-in-oa-framework-part.html<br /><br />So, what's happening here is that the bip api's are trying to create a temporary file in $XDO_TOP code tree which only has r-x permissions, hence a file not being able to be created.<br /><br />The resolution was to setup the temp directory in the template manager (see below) and to do a graceful bounce of apache. Ironically afterwards, there was no issue except turning on the debugging so beware about this configuration in production environments if you have not setup temp directory!<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPr7YkxiE_KF4_ZzMDhQkhhFb2ayj5UucLzFdS-ZT3tdt-mw0xSE88vwWFbNLbNMlRXMOAw35hAcXK-g3qw-x8iT-q8Y0eCFPEwNEabVskJz2UvZ0_LQ_PvAoLXDAEgMf4nyZc0lAhTVvt/s1600-h/settings2.bmp"><img id="BLOGGER_PHOTO_ID_5269300898510647426" style="width: 320px; cursor: pointer; height: 276px;" alt="" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPr7YkxiE_KF4_ZzMDhQkhhFb2ayj5UucLzFdS-ZT3tdt-mw0xSE88vwWFbNLbNMlRXMOAw35hAcXK-g3qw-x8iT-q8Y0eCFPEwNEabVskJz2UvZ0_LQ_PvAoLXDAEgMf4nyZc0lAhTVvt/s320/settings2.bmp" border="0" /></a><br /><span style="font-weight: bold;">java.io.FileNotFoundException: xdo-1225988068296.tmp (Permission denied)<br /><span style="font-size:78%;"></span></span><span style="font-size:85%;"><span style="font-size:78%;">at java.io.RandomAccessFile.open(Native Method)<br />at java.io.RandomAccessFile.<init>(RandomAccessFile.java:204)<br />at java.io.RandomAccessFile.<init>(RandomAccessFile.java:94)<br />at oracle.apps.xdo.dataengine.ScalableStringList.initSessionIfNecessary(ScalableStringList.java:53)<br />at oracle.apps.xdo.dataengine.StringList.<init>(StringList.java:51)<br />at oracle.apps.xdo.dataengine.ScalableStringList.<init>(ScalableStringList.java:38)<br />at oracle.apps.xdo.dataengine.StringList.createStringList(StringList.java:43)<br />at oracle.apps.xdo.dataengine.DataGroup.<init>(DataGroup.java:76)<br />at oracle.apps.xdo.dataengine.DataTemplateParser.groupParser(DataTemplateParser.java:779)<br />at oracle.apps.xdo.dataengine.DataTemplateParser.dataStructureParser(DataTemplateParser.java:745)<br />at oracle.apps.xdo.dataengine.DataTemplateParser.templateParser(DataTemplateParser.java:324)<br />at oracle.apps.xdo.dataengine.XMLPGEN.setDataTemplate(XMLPGEN.java:599)<br />at oracle.apps.xdo.dataengine.DataProcessor.setDataTemplate(DataProcessor.java:193)<br />at oracle.apps.xdo.oa.util.DataTemplate.<init>(DataTemplate.java:136)<br />at oracle.apps.xbol.bipublisher.api.XMLPublisherApi.oaDataEngine(XMLPublisherApi.java:193)<br />at oracle.apps.xbol.pfp.execsumm.webui.EXECSummGenerator.<init>(EXECSummGenerator.java:92)<br />at oracle.apps.xbol.pfp.execsumm.webui.EXECSummCO.processRequest(EXECSummCO.java:35)<br />at oracle.apps.fnd.framework.webui.OAWebBeanHelper.processRequest(OAWebBeanHelper.java:587)<br />at oracle.apps.fnd.framework.webui.OAWebBeanContainerHelper.processRequest(OAWebBeanContainerHelper.java:247)<br />at oracle.apps.fnd.framework.webui.OAPageLayoutHelper.processRequest(OAPageLayoutHelper.java:1136)<br />at oracle.apps.fnd.framework.webui.beans.layout.OAPageLayoutBean.processRequest(OAPageLayoutBean.java:1569)<br />at oracle.apps.fnd.framework.webui.OAWebBeanHelper.processRequestChildren(OAWebBeanHelper.java:959)<br />at oracle.apps.fnd.framework.webui.OAWebBeanHelper.processRequestChildren(OAWebBeanHelper.java:926)<br />at oracle.apps.fnd.framework.webui.OAWebBeanHelper.processRequest(OAWebBeanHelper.java:646)<br />at oracle.apps.fnd.framework.webui.OAWebBeanContainerHelper.processRequest(OAWebBeanContainerHelper.java:247)<br />at oracle.apps.fnd.framework.webui.beans.form.OAFormBean.processRequest(OAFormBean.java:385)<br />at oracle.apps.fnd.framework.webui.OAWebBeanHelper.processRequestChildren(OAWebBeanHelper.java:959)<br />at oracle.apps.fnd.framework.webui.OAWebBeanHelper.processRequestChildren(OAWebBeanHelper.java:926)<br />at oracle.apps.fnd.framework.webui.OAWebBeanHelper.processRequest(OAWebBeanHelper.java:646)<br />at oracle.apps.fnd.framework.webui.OAWebBeanContainerHelper.processRequest(OAWebBeanContainerHelper.java:247)<br />at oracle.apps.fnd.framework.webui.beans.OABodyBean.processRequest(OABodyBean.java:353)<br />at oracle.apps.fnd.framework.webui.OAPageBean.processRequest(OAPageBean.java:2335)<br />at oracle.apps.fnd.framework.webui.OAPageBean.preparePage(OAPageBean.java:1734)<br />at oracle.apps.fnd.framework.webui.OAPageBean.preparePage(OAPageBean.java:508)<br />at oracle.apps.fnd.framework.webui.OAPageBean.preparePage(OAPageBean.java:429)<br />at _oa__html._OA._jspService(_OA.java:85)<br />at oracle.jsp.runtime.HttpJsp.service(HttpJsp.java:119)<br />at oracle.jsp.app.JspApplication.dispatchRequest(JspApplication.java:417)<br />at oracle.jsp.JspServlet.doDispatch(JspServlet.java:267)<br />at oracle.jsp.JspServlet.internalService(JspServlet.java:186)<br />at oracle.jsp.JspServlet.service(JspServlet.java:156)<br />at javax.servlet.http.HttpServlet.service(HttpServlet.java:588)<br />at oracle.jsp.provider.Jsp20RequestDispatcher.forward(Jsp20RequestDispatcher.java:162)<br />at oracle.jsp.runtime.OraclePageContext.forward(OraclePageContext.java:187)<br />at _oa__html._RF._jspService(_RF.java:102)<br />at oracle.jsp.runtime.HttpJsp.service(HttpJsp.java:119)<br />at oracle.jsp.app.JspApplication.dispatchRequest(JspApplication.java:417)<br />at oracle.jsp.JspServlet.doDispatch(JspServlet.java:267)<br />at oracle.jsp.JspServlet.internalService(JspServlet.java:186)<br />at oracle.jsp.JspServlet.service(JspServlet.java:156)<br />at javax.servlet.http.HttpServlet.service(HttpServlet.java:588)<br />at org.apache.jserv.JServConnection.processRequest(JServConnection.java:456)<br />at org.apache.jserv.JServConnection.run(JServConnection.java:294)<br />at java.lang.Thread.run(Thread.java:534)</init></init></init></init></init></init></init></span><br /></span><span style="font-weight: bold;"><br />oracle.apps.fnd.framework.OAException: EXECSummGenerator - Failed to generate xml file<br /></span><span style="font-size:0pt;"><span style="font-size:78%;">at oracle.apps.xbol.pfp.execsumm.webui.EXECSummGenerator.<init>(EXECSummGenerator.java:97)<br />at oracle.apps.xbol.pfp.execsumm.webui.EXECSummCO.processRequest(EXECSummCO.java:35)<br />at oracle.apps.fnd.framework.webui.OAWebBeanHelper.processRequest(OAWebBeanHelper.java:587)<br />at oracle.apps.fnd.framework.webui.OAWebBeanContainerHelper.processRequest(OAWebBeanContainerHelper.java:247)<br />at oracle.apps.fnd.framework.webui.OAPageLayoutHelper.processRequest(OAPageLayoutHelper.java:1136)<br />at oracle.apps.fnd.framework.webui.beans.layout.OAPageLayoutBean.processRequest(OAPageLayoutBean.java:1569)<br />at oracle.apps.fnd.framework.webui.OAWebBeanHelper.processRequestChildren(OAWebBeanHelper.java:959)<br />at oracle.apps.fnd.framework.webui.OAWebBeanHelper.processRequestChildren(OAWebBeanHelper.java:926)<br />at oracle.apps.fnd.framework.webui.OAWebBeanHelper.processRequest(OAWebBeanHelper.java:646)<br />at oracle.apps.fnd.framework.webui.OAWebBeanContainerHelper.processRequest(OAWebBeanContainerHelper.java:247)<br />at oracle.apps.fnd.framework.webui.beans.form.OAFormBean.processRequest(OAFormBean.java:385)<br />at oracle.apps.fnd.framework.webui.OAWebBeanHelper.processRequestChildren(OAWebBeanHelper.java:959)<br />at oracle.apps.fnd.framework.webui.OAWebBeanHelper.processRequestChildren(OAWebBeanHelper.java:926)<br />at oracle.apps.fnd.framework.webui.OAWebBeanHelper.processRequest(OAWebBeanHelper.java:646)<br />at oracle.apps.fnd.framework.webui.OAWebBeanContainerHelper.processRequest(OAWebBeanContainerHelper.java:247)<br />at oracle.apps.fnd.framework.webui.beans.OABodyBean.processRequest(OABodyBean.java:353)<br />at oracle.apps.fnd.framework.webui.OAPageBean.processRequest(OAPageBean.java:2335)<br />at oracle.apps.fnd.framework.webui.OAPageBean.preparePage(OAPageBean.java:1734)<br />at oracle.apps.fnd.framework.webui.OAPageBean.preparePage(OAPageBean.java:508)<br />at oracle.apps.fnd.framework.webui.OAPageBean.preparePage(OAPageBean.java:429)<br />at _oa__html._OA._jspService(_OA.java:85)<br />at oracle.jsp.runtime.HttpJsp.service(HttpJsp.java:119)<br />at oracle.jsp.app.JspApplication.dispatchRequest(JspApplication.java:417)<br />at oracle.jsp.JspServlet.doDispatch(JspServlet.java:267)<br />at oracle.jsp.JspServlet.internalService(JspServlet.java:186)<br />at oracle.jsp.JspServlet.service(JspServlet.java:156)<br />at javax.servlet.http.HttpServlet.service(HttpServlet.java:588)<br />at oracle.jsp.provider.Jsp20RequestDispatcher.forward(Jsp20RequestDispatcher.java:162)<br />at oracle.jsp.runtime.OraclePageContext.forward(OraclePageContext.java:187)<br />at _oa__html._RF._jspService(_RF.java:102)<br />at oracle.jsp.runtime.HttpJsp.service(HttpJsp.java:119)<br />at oracle.jsp.app.JspApplication.dispatchRequest(JspApplication.java:417)<br />at oracle.jsp.JspServlet.doDispatch(JspServlet.java:267)<br />at oracle.jsp.JspServlet.internalService(JspServlet.java:186)<br />at oracle.jsp.JspServlet.service(JspServlet.java:156)<br />at javax.servlet.http.HttpServlet.service(HttpServlet.java:588)<br />at org.apache.jserv.JServConnection.processRequest(JServConnection.java:456)<br />at org.apache.jserv.JServConnection.run(JServConnection.java:294)<br />at java.lang.Thread.run(Thread.java:534)</init></span></span><init><br /></init>Ike Wigginshttp://www.blogger.com/profile/03629933955296401382noreply@blogger.com1tag:blogger.com,1999:blog-5406107793530126650.post-26458295751605557322008-07-29T08:12:00.000-07:002009-09-26T09:44:59.824-07:00BI Publisher: Let Go My Logo<strong><span style="color: rgb(0, 102, 0);font-size:180%;" ></span></strong><span style="font-weight: bold;">There have been some questions of late on how to get a logo (blob) converted to base64 in the e-business suite. The process is quite simple. Below is a sample snippet I took out of the BIP forum that can be used in ANY Data Template.</span><br /><br />FUNCTION mob_getbase64String( P_blob BLOB )<br />RETURN CLOB<br />IS<br />l_result CLOB;<br />BEGIN<br />DBMS_LOB.createtemporary(lob_loc => l_result, CACHE => FALSE, dur => 0);<br />Wf_Mail_Util.EncodeBLOB ( P_blob<br />, l_result<br />);<br />RETURN ( l_result );<br />END mob_getbase64String;<br /><br /><span style="font-weight: bold;">Sample Select: </span><br /><br /><sqlstatement name="Q_MLOGO">select file_name, to_char(XXPA_COST_PLUS_BILLING_PKG.mob_getbase64String(blob_content)) blob_content<br />from xxfnd_logo_images where file_id = :p_mlogo_id<span style="font-weight: bold;"><br /><br />Note: to_char has to be used for version of 5.6.2 of xml publisher, clobs are okay in 5.6.3</span><br /></sqlstatement><br /><span style="font-weight: bold;">The syntax to add an image field to your format template is down below:</span><span style="font-family:arial;"><br /><br /><fo:instream-foreign-object content-type="image/jpg"></span><br /><span style="font-family:arial;"><xsl:value-of select="BLOB_CONTENT"/></span><br /><span style="font-family:arial;"></fo:instream-foreign-object></span>Ike Wigginshttp://www.blogger.com/profile/03629933955296401382noreply@blogger.com20tag:blogger.com,1999:blog-5406107793530126650.post-76273680054249267792008-07-28T02:28:00.000-07:002009-09-26T09:18:32.150-07:00Bursting with Web Services<strong><em>Background</em></strong><br /><br />I come from an Oracle Forms 6i background (hardcore PL/<span class="blsp-spelling-error" id="SPELLING_ERROR_0">SQL</span> only). I'm now exploring a whole new development world using <a href="http://apex.oracle.com/i/index.html">Oracle Application Express (APEX)</a>. In order to make APEX dance and sing, <em>from a reporting perspective</em>, you really need BI Publisher.<br /><br />My requirement was to get users in my APEX application bulk printing and emailing documents seamlessly. One solution was to generate my documents as <span class="blsp-spelling-error" id="SPELLING_ERROR_1">PDFs</span> and store them as <span class="blsp-spelling-error" id="SPELLING_ERROR_2">BLOBs</span> in the database. There are APEX <span class="blsp-spelling-error" id="SPELLING_ERROR_3">APIs</span> that allow you to do this. This works fine if a user wants to print a document on an ad-<span class="blsp-spelling-error" id="SPELLING_ERROR_4">hoc</span> basis. They can just open the <span class="blsp-spelling-error" id="SPELLING_ERROR_5">PDF</span> in their browser and print it in the normal way. The problem is that I needed to both bulk print and bulk email documents. These documents needed different templates for each result of the data set so BI Publisher seemed the best way to go.<br /><br />Now there are ways and means of doing this using JAVA and the <span class="blsp-spelling-error" id="SPELLING_ERROR_6">BIP</span> <span class="blsp-spelling-error" id="SPELLING_ERROR_7">APIs</span> but, I don't know Java. Sadly, I didn't have time to learn it to the requisite level in time for my project deadline so I needed to find a different way to skin this particular cat.<br /><br /><strong>The beauty of IT is that there's always another way...</strong><br /><br />The first thing I needed to do was to get APEX communicating with my <span class="blsp-spelling-error" id="SPELLING_ERROR_8">BIP</span> instance. After some trawling through the forums I came across this excellent article by <a href="http://tylermuth.wordpress.com/2008/03/31/call-bi-publisher-web-services-from-apex/">Tyler <span class="blsp-spelling-error" id="SPELLING_ERROR_9">Muth</span>. </a> This gave me the starter I needed. It shows you how to get APEX communicating with <span class="blsp-spelling-error" id="SPELLING_ERROR_10">BIP</span> via Web Services.<br /><br />My call to the <span class="blsp-spelling-error" id="SPELLING_ERROR_11">BIP</span> Web Service passes over a unique identifier. This is used in a temporary table in the database that I <span class="blsp-spelling-error" id="SPELLING_ERROR_12">pre</span>-populate from within my APEX application. This then gives my <span class="blsp-spelling-error" id="SPELLING_ERROR_13">BIP</span> Data Template query, amongst other things, a Key column with one or more unique IDs of the documents I want to print or email.<br /><br />Within the <span class="blsp-spelling-error" id="SPELLING_ERROR_14">BIP</span> report definition I also set up several customer-specific report layout templates. Utilising the Bursting facility in <span class="blsp-spelling-error" id="SPELLING_ERROR_15">BIP</span> I can now split the reports by a Key and also pick up different templates on the fly as appropriate.<br /><br />I got a printer in the office configured on <a href="http://en.wikipedia.org/wiki/Common_Unix_Printing_System">C.U.P.S.</a> Once this was set up in <span class="blsp-spelling-error" id="SPELLING_ERROR_16">BIP</span> Admin as a Print Server, it was simple enough to configure the Bursting query to send the output to the printer. Reading through the documentation <em>(always a good idea)</em> it also seems that it's simple enough to configure <span class="blsp-spelling-error" id="SPELLING_ERROR_17">BIP</span> to burst to file. Something that again, until I found this Web Service method, I thought I couldn't achieve without a good handle on Java.<br /><br />My last requirement was to get my documents display a logo which was picked up from the database. My logos are stored as <span class="blsp-spelling-error" id="SPELLING_ERROR_18">BLOBs</span> in the database and I needed a way to get these out into the XML that <span class="blsp-spelling-error" id="SPELLING_ERROR_19">BIP</span> uses. Again, a trawl of the forums led me to the "<a href="http://marcsewtz.blogspot.com/2008/06/one-question-about-pdf-printing-feature.html">Using Dynamic Images in <span class="blsp-spelling-error" id="SPELLING_ERROR_20">PDF</span> reports</a>" guide on Marc <span class="blsp-spelling-error" id="SPELLING_ERROR_21">Sewtz's</span> BLOG. My <a href="http://forums.oracle.com/forums/thread.jspa?threadID=664800">post on the APEX forum </a>highlights a subtle difference in the implementation of Marc's guide depending on how you want to use the image in your reports.<br /><br /><strong><em>Getting the report to BURST using the Web Service. </em></strong><br /><br />I tested the bursting of the report from within <span class="blsp-spelling-error" id="SPELLING_ERROR_22">BIP</span> by manually Scheduling the report to run and it was working fine. I then set about configuring the SOAP request to call the report and let the bursting/delivery be handled by <span class="blsp-spelling-error" id="SPELLING_ERROR_23">BIP</span>.<br /><br />Looking at the SOAP request I saw it had a <span class="blsp-spelling-error" id="SPELLING_ERROR_24">deliveryRequest</span> element. I figured that, as <span class="blsp-spelling-error" id="SPELLING_ERROR_25">BIP</span> was handling the delivery, I no longer needed the <span class="blsp-spelling-error" id="SPELLING_ERROR_26">deliveryRequest</span> in my SOAP call.<br /><br /><strong><em>WRONG!!</em></strong><br /><strong><em></em></strong><br />I found that I needed the <span class="blsp-spelling-error" id="SPELLING_ERROR_27">deliveryRequest</span> element in order for the SOAP call to be syntactically correct. Failure to include one meant that the Web Service would fail with an error stating...<br /><br />oracle.apps.xdo.webservice.exception.InvalidParametersException: <span class="blsp-spelling-error" id="SPELLING_ERROR_28">PublicReportService</span>::<span class="blsp-spelling-error" id="SPELLING_ERROR_29">generateScheduledReport</span> Failure: <span class="blsp-spelling-error" id="SPELLING_ERROR_30">DeliveryRequest</span> is EMPTY<br /><br /><strong><em>The solution?</em></strong><br /><br />Keep the <deliveryrequest> element in your SOAP call. If you have your report configured for Bursting and have Bursting 'Enabled' then this will override whatever Delivery Request you make in your SOAP call to <span class="blsp-spelling-error" id="SPELLING_ERROR_31">BIP</span>.<br /><br /><strong><em>What's next?</em></strong><br /><br />I will shortly be testing to see if I can use CASE statements in the Bursting query to handle Email and Printer delivery from one report definition.<br /><br />I will also be trying to get the report to run without the need for passing a user name and password over to <span class="blsp-spelling-error" id="SPELLING_ERROR_32">BIP</span> via the web service. My report is residing in the GUEST folder but, at the moment, I seem to need to pass a UN & PW for the web service to work.<br /><br />When time permits, I intend to revisit the <span class="blsp-spelling-error" id="SPELLING_ERROR_33">PDF</span> merge facility of the <span class="blsp-spelling-error" id="SPELLING_ERROR_34">BIP</span> <span class="blsp-spelling-error" id="SPELLING_ERROR_35">APIs</span>.<br /><br /><strong><em>Summary</em></strong><br /><strong><em></em></strong><br />So, there you have it! The Java-Agnostic way of getting <span class="blsp-spelling-error" id="SPELLING_ERROR_36">BIP</span> to do it's thing using Web Services.</deliveryrequest>Unknownnoreply@blogger.com5