Business Intelligence – Oracle

Archive for February, 2008

Oracle Data Miner 11g – Available for Download

Posted by Venkatakrishnan J on February 15, 2008

I came to know this via Charlie Berger, Oracle Data Mining Product Management. Oracle Data Miner UI for 11g is now out for download. One can download it from here. This contains some 2 new algorithms (Logistic Regression and Multiple Regression) and a number of enhancements. For more details i would recommend you to check this out here. I think its time for me to start blogging about some data mining features and how BI EE and data mining can actually work together. Charlie Berger had in fact offered me before to give a quick tutorial on the various data mining features(Thanks Charlie for that offer!!!, i believe i need it now!!!). Somehow, i never got around doing any of those before. Maybe its time for me to start working with Ramkumar Krishnan(his blog has some excellent technical details on ODM) and Charlie to blog about some interesting points of integration between BI EE and ODM.

      

      

Advertisements

Posted in All Posts, Data Mining | 4 Comments »

Oracle BI EE 10.1.3.3/2 – Creating Windows Service for BI EE OC4J

Posted by Venkatakrishnan J on February 15, 2008

Update: Just realized Adrian has already blogged about this here. Thanks to Adrian for pointing it out.

Thanks to Matt Bedin and Dave Granholm(BI EE product management) for sharing this. This has been asked so many times before both in internal as well as external forums. So, i thought i would blog about it for the benefit of others. Just remember that, this method is not supported as yet by Oracle. As you would know, when you do a default install of BI EE, it would install OC4J which would act as a web server. This OC4J would start automatically when you start your OS and you can see the OC4J console in your system tray. Now, how do we go about converting this OC4J start/stop command script into a windows service? In order to do this, we would need an excellent Open Source Utility called JavaService-2.0.10. You can download this from here. Once you have downloaded this, unzip the utility to any folder.

      

Now, navigate to this folder from command line and enter the following command.

javaservice -install “Oracle BI EE OC4J” “C:\Program Files\Java\jdk1.5.0_11\jre\bin\client\jvm.dll” -XX:MaxPermSize=128m “-Djava.class.path=D:\Oracle\OracleBI\OC4J_BI\j2ee\home\oc4j.jar” -start oracle.oc4j.loader.boot.BootStrap -description “Oracle BI EE OC4J Service”

In the above command, C:\Program Files\Java\jdk1.5.0_11\jre\bin\client\jvm.dll points to the dll in your Java 1.5 JDK path. Also, D:\Oracle\OracleBI\OC4J_BI\j2ee\home\oc4j.jar points to the oc4j.jar within your BI EE instance.

      

Now, if you go to the Windows Services Manager, you would notice that a new service would have been created.

      

Now, you should be able to the control the start/stop of OC4J from the services console. Use this only on a test instance since this is not certified.

Posted in All Posts, OBI EE Plus | 31 Comments »

Oracle BI EE 10.1.3.3/2 – Changing Sort Order in Dashboard Prompts

Posted by Venkatakrishnan J on February 14, 2008

Another common question that generally comes up is how do we change the sort order in Dashboard prompts. Generally, sort order is determined by the sorting column which you have specified in the repository. If you do not have any alternative sorting column specified in the repository then the default alphabetic sort is done on non-numeral columns and numeric sort is done on numeric columns. If you are not sure what i mean, lets create a simple dashboard prompt on the column REGION_NAME which does not have any sort order specified in the Business Model Layer.

      

      

      

As you see above, the dashboard prompt by default sorts it alphabetically. Now, how do we make it to sort in the descending order. In order to do this, go to the dashboard prompt. Convert the Show Results from “All Values” to “SQL Results”. Then enter the following SQL.

SELECT GEOGRAPHY.REGION_NAME FROM SH2 ORDER BY GEOGRAPHY.REGION_NAME desc

This will automatically sort the results in the descending order.

      

      

Now, the next question would be how do we define our own sort order. In order to do this, you would need another column with one to one mapping with the REGION_NAME. Any change in granularity will result in duplication. In our example, lets try sorting the same by REGION_ID. Edit the dashboard prompt and enter the below SQL

SELECT GEOGRAPHY.REGION_NAME FROM SH2 ORDER BY GEOGRAPHY.REGION_ID

This will again automatically sort the results based on another column of the same granularity.

      

      

The above can be useful in quite a few situations when you dont have a sort order specified in the repository.

Posted in All Posts, OBI EE Plus | 1 Comment »

Oracle BI EE 10.1.3.3/2 – Scoping of Dashboard Prompts and Presentation Variables – Reducing Scope for a specific Report

Posted by Venkatakrishnan J on February 13, 2008

Today we shall see an example of how to go about reducing the scope of Dashboard prompts to only specific reports. As you would already know, Dashboard Prompts have 2 types of scoping. One is Page and the other is Dashboard.

      

So, basically you cannot have multiple prompts for the same dashboard column in the same page. Lets look at an approach today to see how we can have dashboard prompts of reduced scope. Before doing that, lets try to understand the scoping of Dashboard prompts. Lets first start with a creating 2 dashboard prompts each pointing to the same REGION_NAME column. Each of the dashboard prompts would set a presentation variable. In my case, i have chose Sample and Sample1 as the presentation variable names. Both the prompts would have a page scope.

      

      

Now, lets create 2 reports each having the same columns (REGION_NAME and SALES). For one report, let’s create a filter on REGION_NAME to be equal to that of the presentation variable Sample and the for the other report, create a filter of REGION_NAME to be equal to that of the presentation variable Sample1.

      

      

Now, lets pull both the dashboard prompts and the reports into a single dashboard page. As you would see, when you choose any value for one of the prompts only the second report output changes since the prompt would still call the latest presentation variable Sample1 instead of Sample. This happens because of the page scope of the prompts.

      

Now, how do we go about reducing the scope of the prompts to only one report. In order to do this, edit both the prompts. In formula section, enter

CASE WHEN 1=0 THEN GEOGRAPHY.REGION_NAME ELSE ‘You can put Anything Here’ END

And convert the Results to SQL Results and enter the below SQL.

SELECT GEOGRAPHY.REGION_NAME FROM SH2

      

      

Now, if you go back to the dashboard page, you would notice that both the presentation variables would be set and both the reports would have proper filters applied.

      

Though we have seen this technique before, we have not applied it in this context earlier. This can be pretty useful in a lot of situations when you do not need multi-select prompts.

Posted in All Posts, OBI EE Plus | 9 Comments »

Oracle BI EE 10.1.3.3/2 – Pivoting Strings – Converting Rows into Columns

Posted by Venkatakrishnan J on February 12, 2008

A pretty interesting question came up today in one of our internal forums. I just thought i would share with you all since BI EE does not have this capability out of the box. Look at the screenshot below.

      

The above picture gives you a simple report containing REGION_NAME and COUNTRY_NAME columns. Now the question was how do we convert this report into the one shown below

Africa      South Africa
Americas   Argentina, Brazil, Canada, United States of America
Asia   India, Japan, Singaport
………….
…………

So, basically, the idea is to have a report containing all the list of countries under a region in a single row where each country within a region has to be concatenated using commas. In order to do this, we shall see 2 approaches today.

1.   Using a database function and then calling this function from BI EE using EVALUATE.

2.   Using Direct Database Requests (not recommended).

Lets look at both the approaches one by one. For the 1st one, lets create a database function as shown below

CREATE OR REPLACE FUNCTION PIVOT_OP(p_REGION IN VARCHAR2)
RETURN VARCHAR2
IS
v_region varchar2(1000);
v_geography varchar2(1000);
BEGIN
select
REGION_NAME,
RTRIM(LTRIM(SYS_CONNECT_BY_PATH(COUNTRY_NAME, ‘,’),’,’),’,’) into v_region, v_geography
from
(
select
COUNTRY_NAME,
REGION_NAME,
count(*) OVER ( partition by REGION_NAME ) rowcnt,
ROW_NUMBER () OVER ( partition by REGION_NAME order by COUNTRY_NAME) seqno
from
(select distinct
REGION_NAME,
COUNTRY_NAME from GEOGRAPHY)
where
REGION_NAME is not null)
where
seqno=rowcnt and
REGION_NAME = p_REGION
start with
seqno=1
connect by prior
seqno+1=seqno
and prior
REGION_NAME=REGION_NAME;
RETURN v_geography;
END PIVOT_OP;

What this function basically does is, it does a recursive concatenation of all the countries in a region using the SYS_CONNECT_BY_PATH(this would work from 10g database or above). Check whether the function is working properly.

      

Now the next step is to call this from Answers using EVALUATE. Ensure that the above function is compiled in the same schema from which the source data is coming from.

      

Now you should get what is required in your final report.

      

Lets go to the second approach. In this approach, we will be using Direct Database requests. Remember, this is not recommended at all. I have included it here just for demonstration purposes. Use the following query (change it to your needs).

select
REGION_NAME ,
RTRIM(LTRIM(SYS_CONNECT_BY_PATH(COUNTRY_NAME, ‘,’),’,’),’,’) Countries
from
(
select
COUNTRY_NAME,
REGION_NAME,
count(*) OVER ( partition by REGION_NAME ) rowcnt,
ROW_NUMBER () OVER ( partition by REGION_NAME order by COUNTRY_NAME) seqno
from
(select distinct
REGION_NAME,
COUNTRY_NAME from GEOGRAPHY)
where
REGION_NAME is not null)
where
seqno=rowcnt
start with
seqno=1
connect by prior
seqno+1=seqno
and prior
REGION_NAME=REGION_NAME

      

      

Posted in All Posts, OBI EE Plus | 5 Comments »

Oracle BI EE 10.1.3.3/2 – Scheduling Cache Purging – Phase 2 – Using Java and Delivers

Posted by Venkatakrishnan J on February 11, 2008

If you had seen my previous blog entry here, i would have shown you a procedure to purge the cache on a periodic basis using Java Script. I was asked today about the possibility of doing the same using Java. So, lets look today how to go about scheduling cache purges using Java and Delivers.

1.   The 1st step to achieve this is to create a SQL.txt file containing the actual ODBC call.

{call SAPurgeAllCache()};

      

In my case, i have created this in D:\ drive.

2.   Now, create a batch file which would make the following call to NQCmd.exe. You can store the batch file anywhere. The following would be the contents of the batch file.

D:\Oracle\OracleBI\server\Bin\nqcmd.exe -d AnalyticsWeb -u Administrator -p Administrator -s D:\SQL.txt -o D:\Output.txt

3.   Open JDeveloper and compile the following java program.

package bieesoap;

import com.siebel.analytics.scheduler.javahostrpccalls.SchedulerJavaExtension;
import com.siebel.analytics.scheduler.javahostrpccalls.SchedulerJobException;
import com.siebel.analytics.scheduler.javahostrpccalls.SchedulerJobInfo;

public class CachePurgeRun implements SchedulerJavaExtension {
public CachePurgeRun() {
}

public void run(SchedulerJobInfo jobInfo) throws SchedulerJobException
{
try
{
Process p = null;
//String[] cmdAry = {nqCmd,” -d “, dsn, ” -u “, user, ” -p “, pswd, ” -s “, tempInFileName, ” -o “, tempOutFileName};
String[] cmdAry = {“D:\\CachePurge.bat”};
p = Runtime.getRuntime().exec(cmdAry);
}
catch(Exception ex)
{
throw new SchedulerJobException(1, 1, ex.getMessage());
}

}

public void cancel() {
}

}

As you see, what this above code does is, it makes a call to the NQCMD.exe file and passes the SQL.txt file as its argument. Once this is executed the output would be stored in the output.txt file.

4.   Now, bundle the above java code into a jar file (for details on how to do this check my blog entry here

5.   Once this is done, just go to delivers and call this java class from the Advanced tab. You can schedule this periodically.

      

6.   Just keep checking the output.txt to know whether the cache purge has completed successfully.

      

Posted in All Posts, OBI EE Plus | 2 Comments »

Oracle BI EE 10.1.3.3/2 – Disabling Right Click Options – Flash Charts

Posted by Venkatakrishnan J on February 8, 2008

Another pretty interesting question came up in the forums today. The question was “How do we go about removing the various Zoom Options that we get in the Charts in a Dashboard”. If you are not sure what i mean, check the screenshot below,

      

Our aim is to remove the zoom options above. In order to do this, we need to follow the following steps. Remember, the steps are different for IE and Mozilla. Lets look at IE first and then to Mozilla. For an IE browser, following are the list of steps,

1.   Go to {OracleBI}\web\app\res\b_mozilla and open the file common.js in a Text editor. Search for ieActiveXFix. You would basically find an IE fix for displaying flash charts in an IE browser. You would find the following statement in this fix.

var str = ‘<object classid=”‘+classid+'” width=”‘+width+'” height=”‘+height+'” id=”‘+id+'” codebase=”‘+codebase+'”><param name=”wmode” value=”transparent”><param name=”movie” value=”‘+tNewMovie+'”></object>’;

Now change the above to the one shown below,

var str = ‘<object classid=”‘+classid+'” width=”‘+width+'” height=”‘+height+'” id=”‘+id+'” codebase=”‘+codebase+'”><param name=”wmode” value=”transparent”><param name=”menu” value=”false”><param name=”movie” value=”‘+tNewMovie+'”></object>’;

So, basically we are adding the below tag to suppress the Zoom option menu.

<param name=”menu” value=”false”>

2.   Now copy the above modified file to {OracleBI}\oc4j_bi\j2ee\home\applications\analytics\analytics\res\b_mozilla (You should replace the existing common.js with the above modified one).

3.   Now restart presentation services and now you note that the right click on charts would not have zoom option.

      

Now, for Mozilla, the steps are much easier.

1.   Go to {OracleBI}\web\msgdb\messages and copy the file charttemplates.xml to {OracleBIData}\web\msgdb\customMessages(if you dont have this directory, create one).

2.   Open the copied file in a text editor. And search for the below XML message.

<WebMessage name=”kuiChartViewMozFlashOBJECTTag”><!– @1 : width –><!– @2 : height –><!– @3 : name –><!– @4 : src –><!– @5 : pluginspage –><HTML>  
<embed type=”application/x-shockwave-flash” pluginspage=”@5″ name=”@3″ src=”@4″ width=”@1″ height=”@2″ wmode=”transparent”/></HTML></WebMessage>

Replace the above XML Message with

<WebMessage name=”kuiChartViewMozFlashOBJECTTag”><!– @1 : width –><!– @2 : height –><!– @3 : name –><!– @4 : src –><!– @5 : pluginspage –><HTML>  
<embed type=”application/x-shockwave-flash” menu=’false’ pluginspage=”@5″ name=”@3″ src=”@4″ width=”@1″ height=”@2″ wmode=”transparent”/></HTML></WebMessage>

Basically we are adding menu=’false’ to the XML message which will remove the Zoom options.

3.   Save the file and restart presentation services. You would now notice that the context menu would not have the zoom options anymore for Mozilla browser.

      

Posted in All Posts, OBI EE Plus | 1 Comment »

Oracle BI EE 10.1.3.3/2 – Combining Multiple Excel Report Outputs(Workbooks) to a Single Excel Report – Using BI Delivers, BI Publisher APIs and VB Scripts

Posted by Venkatakrishnan J on February 7, 2008

I received this question a couple of days back. The question was “Is there any way to combine say 2 or more number of Report Outputs into a single Excel File automatically, instead of manual exports and copy paste?”. This question keeps coming a lot many times but there is no out of the box solution for this. Lets look at one possible approach today. Remember that this is not an easy way and would involve a call to a lot of components. I am blogging about it just to demonstrate the extensibility of BI EE. In order to achieve this we shall be using 2 reports. Our aim is to use BI Delivers and BI Publisher APIs to export both the reports in Excel 2000 format to a folder. And then use another ibot to call a VBScript to combine all the exported reports to a single excel file. All the ibots will be called one after the other.

1.   So, lets start with the Java Code to export the reports in the form of Excel 2000. This Java Code has to be called from an ibot. For more details on how to go about calling Java Classes from ibots check my blog entry here. The code is given below

package bieesoap;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import oracle.apps.xdo.delivery.DeliveryException;
import oracle.apps.xdo.delivery.DeliveryManager;
import oracle.apps.xdo.delivery.DeliveryPropertyDefinitions;
import oracle.apps.xdo.delivery.DeliveryRequest;
import com.siebel.analytics.scheduler.javahostrpccalls.SchedulerJavaExtension;
import com.siebel.analytics.scheduler.javahostrpccalls.SchedulerJobException;
import com.siebel.analytics.scheduler.javahostrpccalls.SchedulerJobInfo;

import java.io.File;

import oracle.apps.xdo.delivery.local.LocalPropertyDefinitions;

public class ExcelOutput implements SchedulerJavaExtension{
public ExcelOutput() {
}

public void run(SchedulerJobInfo jobInfo) throws SchedulerJobException {
try
{
String OutputFileName;
OutputFileName = “D:\\Work\\Report” + jobInfo.jobID() + jobInfo.instanceID() + “.xls”;
FileInputStream fis = new FileInputStream(jobInfo.getResultSetFile());
DeliveryManager dm = new DeliveryManager();
DeliveryRequest req = dm.createRequest(DeliveryManager.TYPE_LOCAL);
req.addProperty(LocalPropertyDefinitions.LOCAL_DESTINATION, OutputFileName);
req.setDocument(fis);
req.submit();
req.close();
}
catch(Exception ex)
{
throw new SchedulerJobException(1, 1, ex.getMessage());
}

}

public void cancel() {
}

}

So what this basically does is, it accepts the output of an ibot and stores it in D:\Work with a dynamic file name based on the Job ID and the InstanceID (Something like this Report240.xls etc).

2.   Now the next step is to create 2 ibots and each of them should be made to export 2 different files in Excel 2000 format. Ensure that both the ibots call the above java code using a bundled Jar. I have 2 different reports as shown below

      

      

3.   Just save the above 2 ibots and make each of them to call the above Java Code. Once this is done, lets move away from BI Delivers and look at the VB Scripting part which would achieve combining of multiple excel files into one excel file. In order to do this, we shall start with a simple VBA or macro script given below.

Sub MergeExcel()
Dim finalOutput As Workbook
Dim sourceWbk As Workbook
Dim sourceWsh As Worksheet
Dim sourcePath As String
Dim sourceFile As String

Application.DisplayAlerts = False
Application.EnableEvents = False
Application.ScreenUpdating = False
sourcePath = “D:\work” ‘ change to suit
Set finalOutput = Workbooks.Add(xlWBATWorksheet)
sourceFile = Dir(sourcePath & “\*.xls”, vbNormal)

If Len(sourceFile) = 0 Then Exit Sub

Do Until sourceFile = “”

Set sourceWbk = Workbooks.Open(Filename:=sourcePath & “\” & sourceFile)

Set sourceWsh = sourceWbk.Worksheets(1)

sourceWsh.Copy After:=finalOutput.Worksheets(finalOutput.Worksheets.Count)

sourceWbk.Close False

sourceFile = Dir()

Loop
finalOutput.Worksheets(1).Delete
finalOutput.SaveAs (“D:\work\Test.xls”)
Application.DisplayAlerts = True
Application.EnableEvents = True
Application.ScreenUpdating = True

End Sub

So, what this basically does is it checks the directory D:\Work and combines all the excel files it finds in that directory into a single file Test.xls.

4.   Remember the above is a VBA Script. BI Delivers can only call VB Scripts. Now, in order to call VBA Script, what we shall do is to create a dummy excel file called Final.xls in D:\(ensure that this excel file is not in the same directory as the above export files) and we shall create a macro using the above code in this Excel file. Our aim is to make the macro to run as soon as the Excel file is opened.

      

      

      

Now, in order to make this macro to run as soon as the Excel is opened, right on the Excel icon just above file menu and click on view code. Go to the Workbook and add the below code.

      

      

Private Sub Workbook_Open()
Run “MergeExcel”
End Sub

Then just save this file. Also, ensure that you have the security of this Excel file set to Low. Now open a text editor and add the below VB Script which will open the Excel file.

Dim app
Set app = createobject(“Excel.Application”)
app.visible = false
app.Workbooks.Open(“D:\Final.xls”)
app.Quit
Set app = Nothing

Save this file in {OracleBI}\server\Scripts\common folder.

5. Now create a third ibot which would just call the above VBScript.

      

6.   Now schedule all the 3 ibots to execute one after the other (you can either use ibot chains or just schedule them to execute one after the other). Its better to use ibot chains since they are synchronous in nature. Now you should see 3 excel reports in the D:\Work directory, 2 being the actual reports and the third being the Test.xls which would be a combination of the above 2.

      

      

But just remember the above would work only in windows since VBScript would not work in a non-windows environment

Posted in All Posts, Bi Publisher, OBI EE Plus | 6 Comments »

Oracle BI EE 10.1.3.3/2 – Conditional Filters – Using Case statements in Filters

Posted by Venkatakrishnan J on February 6, 2008

I had this question come via email twice last week and hence i thought i would blog about it today. Though this is very simple, i thought i would blog about this to show that one can use advances sql clauses in filter expressions. In order to understand, lets first start with a simple report shown below.

      

Now, our aim is to apply filter only for the REGION_NAME = ‘Asia’. So, basically we want a report wherein only for Asia we do not want to display the sales for the year 2003. But for other regions we need the year 2003. In order to do this, all we need to do is to create a filter on REGION_NAME and convert it into SQL.

      

Once this is done, just enter the below SQL

CASE WHEN GEOGRAPHY.REGION_NAME = ‘Asia’ THEN TIMES.CALENDAR_YEAR_NAME ELSE ‘Dummy’ END != ‘2003’

      

What this basically does is, it evaluates the CASE statement first. If REGION_NAME = ‘Asia’ then the filter CALENDAR_YEAR_NAME != ‘2003’ is applied else the filter ‘Dummy != ‘2003’ will be applied (in place of Dummy you can have anything that is not equal to 2003). One you have this filter now you would have a report with year=2003 filter applied only for asia Region.

      

As i said earlier, this is pretty simple and can be considered trivial even. But again, this is just to show you the fact that one can use advanced filter clauses

Posted in All Posts, OBI EE Plus | Leave a Comment »

Oracle BI EE 10.1.3.3/2 – Adding Watermarks to Delivered PDF Documents – Using PDF Merger API of BI Publisher

Posted by Venkatakrishnan J on February 4, 2008

In the previous blog entry we have seen how to go about delivering documents to a local file system using the Delivery Manager API of BI Publisher. Along the same lines, lets look at another very interesting feature which is the PDF WaterMarking feature. Many a time you might want to watermark your documents (especially PDFs) when you send out to multiple users via iBots. Watermarking is not available out of the box for BI EE. This is where BI Publisher can come to our rescue ( i always wonder how both BI EE and BI Publisher complement each other some times). In order to do watermarking, we need to use the PDF Merge API of BI Publisher and then call it from ibots. Lets look at the list of steps below. In the example below, i shall be adding an Oracle Logo as the watermark to a delivered BI EE PDF document.

1.   The first thing that you need is the following sample java code which combines your PDF output with a local image. This has to be included as part of the scheduler’s run method since the remote procedure call will only call this run method.

package bieesoap;

import java.io.FileInputStream;
import oracle.apps.xdo.common.pdf.util.PDFDocMerger;
import com.siebel.analytics.scheduler.javahostrpccalls.SchedulerJavaExtension;
import com.siebel.analytics.scheduler.javahostrpccalls.SchedulerJobException;
import com.siebel.analytics.scheduler.javahostrpccalls.SchedulerJobInfo;

import java.io.File;

import java.io.FileOutputStream;

import oracle.apps.xdo.delivery.DeliveryManager;
import oracle.apps.xdo.delivery.DeliveryRequest;
import oracle.apps.xdo.delivery.local.LocalPropertyDefinitions;

public class PDFMerge implements SchedulerJavaExtension{
public PDFMerge() {
}

public void run(SchedulerJobInfo jobInfo) throws SchedulerJobException {
try
{
FileInputStream[] inputStreams = new FileInputStream[1];
inputStreams[0] = new FileInputStream(jobInfo.getResultSetFile());
FileOutputStream outputStream = new FileOutputStream(“D:\\BIPAPI\\Output4.pdf”);

PDFDocMerger docMerger = new PDFDocMerger(inputStreams,outputStream);
FileInputStream imagePath = new FileInputStream(“D:\\BIPAPI\\oraclelogo_small.gif”);
float[] rct = {300f, 500f, -1f, -1f};
docMerger.setImageWatermark(imagePath, rct);
docMerger.mergePDFDocs();
docMerger = null;

imagePath.close();
outputStream.close();
}
catch(Exception ex)
{
throw new SchedulerJobException(1, 1, ex.getMessage());
}

}

public void cancel() {
}

}

As you see above, what this does is, it calls the PDFDocMerger class. This class accepts 2 inputs, a stream of pdf inputs and a pdf output. It also accepts the setImageWatermark property which will set the watermark to the pointed image.

2.   Compile this class and bundle this as a jar along with the dependent jars (schedulerrpccalls.jar, versioninfo.jar and xdocore.jar). For more details on how to do this refer my blog entry here and here

3.   Now go to delivers and create an ibot. This ibot should contain a report exported in the PDF format. This PDF of the report will be watermarked with Oracle Logo.

      

      

4.   Once this is done, now go to your Advanced tab and call the class that we created above.

      

5.   Now save this ibot. As soon as this is done, you would notice that a new file called output4.pdf under D:\\BIPAPI would have been created and this would contain both the report and the watermark image.

      

Just add delivery manager API code to the above class and now you would be in a position to send the watermarked PDF to other users.This feature can be extended to a lot of other features like combining multiple reports into a single PDF etc.

Posted in All Posts, Bi Publisher, OBI EE Plus | 1 Comment »