Pages

OracleEBSpro is purely for knowledge sharing and learning purpose, with the main focus on Oracle E-Business Suite Product and other related Oracle Technologies.

I'm NOT responsible for any damages in whatever form caused by the usage of the content of this blog.

I share my Oracle knowledge through this blog. All my posts in this blog are based on my experience, reading oracle websites, books, forums and other blogs. I invite people to read and suggest ways to improve this blog.


Monday, February 18, 2013

XML Publisher R5.6.2 Bursting Engine

XML Publisher R5.6.2 Bursting Engine Implementation with E-Business Suite 11.5.10
Introduction
XML Publisher Integration with E-Business Suite

As default with E-Business Suite 11.5.10 CU1 or later, XML Publisher is fully integrated with the E-Business Suite. Once you register your RTF/PDF templates through XML Publisher Template Manager for the report requests you want to run you can generate PDF file output report based on the original Oracle Reports report query definition and you can save the PDF output files on local file system or send them to printer to print through PASTA driver. See PASTA User’s Guide for the detail of PASTA.

However, all the XML Publisher’s functionalities are not available with the out of box of the E-Business Suite installation. Especially the Delivery Manager functionality that delivers the output documents with the different delivery options such as Email, IPP Printer, Fax, FTP, HTTP, WebDAV.

You might have the situations where you want to generate documents based on your existing Oracle Reports Concurrent Request and deliver the documents to multiple users by Email or directly send them to IPP Printers to print them out. You even might want to generate different contents of the documents among different recipients or based on the values in the data, and send such documents to multiple delivery destinations like Email and Printers, and different Email recipients.
What and Why Bursting Engine?

XML Publisher has introduced a Bursting Engine feature since R5.6.1 and it accepts a data stream and splits it based on multiple criteria, generates multiple outputs based on RTF or PDF templates, then delivers the individual documents through the delivery channel of choice. The engine provides a flexible range of possibilities for document generation and delivery.

The following is a sample list of popular usage.

·                     Invoice generation and delivery based on customer-specific layouts and delivery preference
·                     Financial reporting to generate a master report of all cost centers, bursting out individual cost center reports to the appropriate manager
·                     Generation of payslips to all employees based on one extract and delivered via e-mail

You can implement the Bursting Engine feature as a customized delivery solution into E-Business Suite instance to achieve the above requirements. This document describes the required process of the Bursting Engine implementation for E-Business Suite R11.5.10 CU1 or later environment.

Implementation of Bursting Engine with E-Business Suite

The following is a brief process of the Bursting Engine implementation with E-Business Suite. You need to go through all this process step by step for the implementation.
PROCESS OVERVIEW

1.            Apply all the required XML Publisher related patches.
2.            Create a Bursting Engine control file.
3.            Develop RTF templates for a Report request
4.            Develop a Bursting Engine program for a local testing (Optional)
5.            Develop a Java Concurrent Program to implement Bursting Engine
6.            Create a new Java Concurrent Program Request in EBS
7.            Modify Oracle Reports Definition File to call the Java Concurrent Program in After Trigger
8.            Create a new Oracle Reports Concurrent Program in EBS (Optional)
9.            Assign the Oracle Reports Concurrent Program to a Request Group. (Optional)
10.          Change an output option to XML for the Oracle Reports Concurrent Program

Once you have implemented the Bursting Engine you don’t need to go through all the steps again for another report requirement. The one Bursting Engine Java Concurrent Program implementation that is described in this document can serve multiple Oracle Report Concurrent Program requests, so if you need to support more reports with the Bursting Engine implementation you can skip the step 4, 5, 6 for such additional Reports requests.
APPLY ALL THE REQUIRED XML PUBLISHER PATCHES

The following is a list of XML Publisher related patches for E-Business Suite that need to be applied prior to starting implementing the Bursting Engine functionalities. Ask DBA or System Administrator to make sure that they have all been applied.
·                     XML Publisher Integration with Concurrent Program 3435480
·                     XML Publisher R5.6.1 (OA+Core) 4905678
·                     XML Publisher R5.6.2 (Only Core, no plan for OA) 5097966
·                     Online Help for XML Publisher Release 5.6.1 5021800 (Optional)
CREATE A BURSTING ENGINE CONTROL FILE

With Bursting Engine Control file set up, you can control what level of document node in a XML input file you want to process document generation on, what delivery method you want to use, such as Email, Printer, Fax, etc, and which template you want to apply to the report. This is a XML text file so you can modify whenever you need and the change will be immediately picked up by the next Bursting Engine process. The below is an example of the Bursting Engine Control file


<?xml version="1.0" encoding="UTF-8"?>
<xapi:requestset xmlns:xapi="http://xmlns.oracle.com/oxp/xapi">
   <xapi:request select="/RAXINV/LIST_G_ORDER_BY/G_ORDER_BY/LIST_G_INVOICE/G_INVOICE">
      <xapi:delivery>
      <xapi:email server="smtp.itron.com" port="25" from="narendra.poflee@itron.com" reply-to ="npoflee@itron.com">
         <xapi:message id="123" to=”{$EMAIL}” cc="npoflee@itron.com" attachment="true" subject="Itron – Invoice for {$CURRENT_PERIOD}">Hi, Please find an attachment that includes a list of invoices and a check attached

Sincerely,
Narendra Poflee
   </xapi:message>
      </xapi:email>
      </xapi:delivery>
      <xapi:document output-type="pdf" delivery="123">
        
<xapi:template type="rtf" location="/oragold/app/traincomn/itron/XML-invoice-USA.rtf">
</xapi:template>
      </xapi:document>
   </xapi:request>
</xapi:requestset>
You can find more detail in XML Publisher’s User’s Guide. But there are a couple of things you need be aware and set correctly to make your Bursting Engine work correctly, and those are described below.

Request

You can specify a XML node that you want to burst on, which means that Bursting engine will do a for-loop at the node(level) you specified here. The above example shows that the Bursting Engine will do a for-loop at the level of /RAXINV/LIST_G_ORDER_BY/G_ORDER_BY/LIST_G_INVOICE/G_INVOICE , which mean that it will generate a document output at every G_INVOICE occurrence. If there are 5 G_INVOICE elements appear in the input XML data file, then Bursting Engine will generate 5 different document outputs and deliver to SMTP server (in this case) per each document.

Deliver

You can define which delivery method you want to use here. The following is a list of the delivery methods that can be used. Some of them are supported by XML Publisher R5.6.2 Bursting Engine, but some are not supported though they are supported by XML Publisher Delivery Manager. If you need to support such delivery methods that are not supported by the Bursting Engine today you need to implement that by yourself by calling Delivery Manager directly as a part of Bursting Engine process. You can find a sample code of the customized implementation of FTP at Appendix A.

Supported Delivery Methods

·       Email
·       Fax
·       Printer
·       File System

Unsupported Delivery Methods

·       FTP
·       HTTP
·       WebDAV

You can set multiple Delivery methods as much as you want in a same request. For example you might want to generate document to be sent by Email and also to be sent to a printer, then you can have both entries here and set a unique id for each delivery option.

Document

You can specify the document output format you want to generate the document with and the template you want to apply to the document processing. RTF and PDF templates are both supported. You can specify all the output formats that are supported by XML Publisher R5.6.2.

Also, you can specify multiple templates as much as you want. You might want to apply different templates based on the value in the input XML file, in such case you can use a Filter function of Bursting Engine and have XPATH expression to do such condition, and have Bursting Engine to pick an appropriate template based on the condition result.

Example
<xapi:template type="rtf" location="="/oragold/app/traincomn/itron/XML-invoice-USA.rtf ">

<xapi:template type="rtf" location="="/oragold/app/traincomn/itron/XML-invoice-CAD.rtf " filter=".//G_INVOICE[COUNTRY=’CANADA’]"/>


This will apply the XML-invoice-CAD.rtf template only to G_INVOICE which has a COUNTRY element value that is “CANADA”. All other Invoices will have the XML-invoice-USA template applied. This filter can use any XPATH expression to determine the rules for the template application.

(Recommendation)
Addition to the above, while the above example is referencing the templates that are located on file system, the Bursting Engine also supports the templates that have been stored in a XML Publisher repository through Template Manager. When you go to Template Manager and register your templates you can reference them from the Bursting Engine control file like the following example.

xdo://<APPSCODE>.<TEMPLATE_CODE>.<Lang_Code>.<Territory_Code>

Syntax
APPSCODE : Application short code, e.g. AR
TEMPLATE_CODE : Template code name, e.g. XMLINVOICEUS
Lang_Code : ISO 2 letters language code, e.g. en (for English)
Territory_Code : ISO 2 letters territory code, e.g. US (for United States)

Example
<xapi:document output-type="pdf" delivery="123">        

<xapi:template type="xsl-fo" location="xdo://AR.XMLINVOICEUSA.en.US">
</xapi:template>
      </xapi:document>

Note that template type is ‘xsl-fo’ not rtf, this is because the templates you uploaded through Template Manager are converted to xsl-fo format and stored in the repository, so you need to specify ‘xsl-fo’ as the template type, otherwise XML Publisher doesn’t understand.

See XML Publisher User’s Guide for ‘how to register the template through Template Manager.’

CREATE RTF TEMPLATES FOR A REPORT REQUEST

Download a XML input data
                            
This file is generated by a Report Concurrent Request and exported under Application Home file system. In order to have the concurrent report request to generate XML output instead of default text format you need to go to the concurrent report request definition page and set its output format to XML.

You can find this XML output file under $APPLCSF/out/<APPS_INSTANCE_NAME>.
e.g. /oragold/app/traincomn/admin/out/train_ocn-erp-tdb-1

Create a RTF template

You can use a Template Builder (Microsoft Office Word Plug-in) to develop a RTF template in any way you want to publish a report with.

1.            Install Template Builder Desktop (if has not been installed yet)
2.            Load the downloaded XML data
3.            Create a layout
4.            Save

1 comment: