Posted by xtrailrunner on July 22, 2008
When running a Forms application in the browser you normally find Oracle Application Server Forms Services as the title of the browser window or if you use IE 7 or Firefox as the title of the active tab.
This title is set in the file formsweb.cfg and can be changed but it remains a piece of static text.
What if you would like to see something more meaningful like the module name, the user name or something similar ?
Here are the steps to implement it:
- Modify the base template (for example basejini.html) you are using by adding a JavaScript function
<script>
function change_pagetitle(title)
{
document.title=title;
}
</script>
- In every form define a trigger after startup (PRE-FORM, WHEN-NEW-FORM-INSTANCE) with the following call:
web.show_document(‘javascript:change_pagetitle(‘||’”‘ || get_application_property(current_form_name) || ‘”‘||’) ‘ ,’_self’)
In this example the name of the running form will be displayed but you can define other properties too.
With Oracle Forms 11g perhaps there is a more simple solution based on the new JavaScript API. Let’s see.
Posted in Uncategorized | Leave a Comment »
Posted by xtrailrunner on March 9, 2008
Some time ago I wrote a post about the web service API of Oracle BI Publisher.
With 10.1.3.3.1 first time we got a public API which is described in the BI Publisher New Features Guide. It is based on the Advanced Java API of the BI Publisher Enterprise (Standalone Edition).

The web service endpoint is: http://<host>:<port>/xmlpserver/services/PublicReportService?wsdl.
The WSDL can be found here.
With BI Publisher 10.1.3.3.2 there were some slight changes in the API especially in the structure and sequence of parameters.
Here you can find the updated WSDL.
Hopefully this API will stay stable.
Posted in Uncategorized | Leave a Comment »
Posted by xtrailrunner on March 2, 2008
Sometimes I have disputes which method of installation is superior:
- automatic install using Oracle Universal Installer
- manual install (step-by-step).
I clearly prefer the manual process because I have more control over it and it makes the upgrade really simple and fast.
Therefore I would like to explain the steps for the manual installation. I’ve done that very often when installing newer versions and builds. I’m impressed that there was never a problem with incompatible reports or templates during upgrades.
Prerequesites
Steps
-
Extract the downloaded archive into a temporary directory. You only need the directory ../manual which contains all the necessary files for the manual install.
-
Copy the fonts from the directory ../manual/fonts into the font directory of the Java runtime environment (JAVA_HOME/lib/fonts). The Java Runtime environment is defined by the JAVA_HOME setting of the OC4J. For an upgrade you just have to check if there are additonal fonts delivered with the current version of BI Publisher.
-
Copy the file ..manual/oc4j/xmlpserver.ear to the deployment directory of the OC4J (default: OC4J_Home/j2ee/home/applications). There are several options to deploy/redeploy an application into the OC4J.
- Manual deployment/redeployment using the Oracle Applicartion Server Control (web interface)
- Auto-Deployment adding following line to the file OC4J_Home/j2ee/home/config/server.xml:
check-for-updates=”adminClientOnly”
application-auto-deploy-directory=”../applications_autodeploy”
deployment-directory=”../application-deployments”
connector-directory=”../connectors”
The directory OC4J_Home/j2ee/home/applications_autodeploy has to be created. The name is eligible but has to correspond to the server.xml. Just copy the xmlpserver.ear into this directory and OC4J will detect it when running or after startup. Here you see the clear advantage of the manual install when upgrading BI Publisher. Just copy the new xmlpserver.ear into the deployment directory and that’s (almost) all.
-
During the deployment/redeployment of BI Publisher the central config file OC4J_Home/j2ee/home/applications_autodeploy/xmlpserver/xmlpserver/WEB-INF/xmlp-server-config.xml will be replaced.
Therefore it is necessary to stop the OC4J and edit the reference to the BI Publisher repository:
<resource>
<file path=”C:\XMLP”/>
</resource>
-
When installing BI Publisher for the first time you have to copy the repository with sample reports and config files from ../manual/XMLP to the referenced location.
When upgrading I prefer to merge the new delivered repository from ../manual/XMLP into my existing repository by adding new sample reports and check config files for relevant changes.
-
Now it’s time to start OC4J again and check in the login window of BI Publisher that the correct version is installed.
-
If you also develop layout templates with Oracle BI Publisher Desktop don’t forget to install the current version of BI Publisher Desktop which can be found under ../manual/XMLP/Tools. If an old version is already there deinstall it from MS Windows Control Panel.
Now you can decide for yourself if you prefer this (manual) way or the Universal Installer to install Oracle BI Publisher.
Posted in Uncategorized | Leave a Comment »
Posted by xtrailrunner on February 19, 2008
Oracle JDeveloper uses a plug-in API to integrate additional functionality into the IDE (Integrated Development Environment). In JDeveloper 10.1.3 these extensions are stored under the directory <JDev_Home>/jdev/extensions. Sometimes it could be necessary to remove extensions from JDeveloper. Because there is no deinstall function in JDeveloper for these extensions you should know the manual steps:
- First it is a good idea to get an overview which extensions are being used. You find that out
- by calling the menu option Help => About (tab Extensions)
- by calling the menu option Tools => Preferences => Extensions
Unchecking an extension only prevent if from being loaded but does not remove it from the disk.
- To remove the unwanted extension you have to delete the associated jar-file and sometimes an associated directory under <JDev_Home>/jdev/extensions. But that’s only half the way. Each time JDeveloper is started it reinstalls the extensions from <JDev_Home>/jdev/tmp/update. So you have to delete the extension (normally a zip-file) from that directoy too.
Posted in Uncategorized | Leave a Comment »
Posted by xtrailrunner on January 30, 2008
Oracle BI Publisher is a very powerful and smart solution to produce high-quality output like reports and documents.
Until version 10.1.3.3.0 there was a non-public web service API which for example could be used to run a report by calling the method getReportData().
Product managers always pointed out that this API is still not public and could be changed in the future.
With Oracle BI Publisher 10.1.3.3.1 the web service API was finally published. One of the big changes is that a report is now being called
by the method runReport().
The BI Publisher web services are implemented with Apache’s Axis.
The WSDL is: http://<machine>:<port>/<your_appname>/services/PublicReportService?wsdl
(Default for <your_appname> is xmlpserver)
If there are problems to call the WSDL of the web services deployed in OC4J (Oracle Containers for J2EE)
a complete definition of the WSDL can be found in the documentation at:
http://download.oracle.com/docs/cd/E10383_01/doc/bip.1013/e10416/bip_webservice_101331.htm#BABHEHEJ.
A description of the new public web service API can be found in the documentation:
http://download.oracle.com/docs/cd/E10383_01/doc/bip.1013/e10416/bip_webservice_101331.htm#CHDGIJHH
For people who are interested how BI Publisher web services can be called from Oracle Forms there is an updated White Paper available here.
Posted in Uncategorized | Leave a Comment »
Posted by xtrailrunner on January 13, 2008
OK, for an OO-experienced person this seems to be obvious but sometimes it helps to clarify things. If you call a web service client (web service stub) from Oracle Forms you have to import one or more classes of the web service client into the Forms module.
There are different case:
- If the class is static the signature of the imported methods in most cases only contains simple datatypes like in this example
FUNCTION <method>(
a0 VARCHAR2,
a1 VARCHAR2,
a2 VARCHAR2) RETURN BOOLEAN;
This can be handled easily from your Forms application by passing the appropriate values.
- If the class is non-static, i.e. there are existing instances of this class you will find an object in the signature of the PL/SQL method call: FUNCTION <method>(
obj ORA_JAVA.JOBJECT,
a0 VARCHAR2,
a1 VARCHAR2) RETURN ORA_JAVA.JOBJECT;
In this case you have to pass an initialized object for this class by using the method new in your PL/SQL code:
obj := <class>.new();
- If the class is non-static and requires an additional object to be passed as a parameter to the called method the signature of the PL/SQL method call could look like this:
FUNCTION <method>(
obj ORA_JAVA.JOBJECT,
a0 ORA_JAVA.JOBJECT,
a1 VARCHAR2,
a2 VARCHAR2) RETURN ORA_JAVA.JOBJECT;
In this case you have to pass an initialized object for this class by using the method new in your PL/SQL code:
obj := <class>.new(); and
to initialize an additional object for the parameter by importing the required class into the Forms module and create a new instance:
a0:<additional_class>.new();
Posted in Uncategorized | Leave a Comment »
Posted by xtrailrunner on January 6, 2008
Sometimes there is a requirement to use a referential cursor in the SQL query of a BI Publisher report.
You can use ref cursors which return a single row or multiple rows.
Here is an example of a ref cursor returning a single row:
In the database create a function REF_CURSOR_CUST in the demo schema OE
create or replace function REF_CURSOR_CUST (p_customer_id IN number)
return SYS_REFCURSOR as
TYPE t_cursor is REF CURSOR;
v_cursor t_cursor;
begin
open v_cursor FOR
select customer_id, cust_first_name, cust_last_name, credit_limit,
cust_email, gender, income_level
from customers
where customer_id = p_customer_id;
RETURN v_cursor;
end REF_CURSOR_CUST; |
In the data definition of the BI Publisher report you can now use the ref cursor in your query:
select ref_cursor_cust(:cust_id) from dual
Because of a small bug this query will return no rows if you test it against the BI Publisher server 10.1.3.3.1.
Just add something to the select-list and it will work as expected:
select null, ref_cursor_cust(:cust_id) from dual
Read the rest of this entry »
Posted in Uncategorized | Leave a Comment »
Posted by xtrailrunner on November 18, 2007
This year I worked at the OOW demo ground for the Oracle BI Publisher team. We had lots of visitors with a packaged application background (EBS, Siebel, Peoplesoft, JDE) asking for ways to integrate BI Publisher into their applications. I had the opportunity to visit some of the presentations. Besides the keynote about Oracle Fusion Middleware by Thomas Kurian there was an interesting showcase for a Web 2.0 enterprise portal where users can search, (hopefully) find and evaluate existing reports. This way users can reuse or refine already existing reports before developing new ones.
One of the greatest events was the evening concert with Lenny Kravitz, Billy Joel, Stevie Nicks and Fleetwood Mac.

Thomas Kurian |

Lenny Kravitz |
Posted in Uncategorized | Leave a Comment »
Posted by xtrailrunner on October 28, 2007
The first and the last part of the Munich marathon was not fun, the first part because of the cold fog and the last because I felt my legs. At the end I was quite happy with 3:37 and the sunshine in the Munich Olympia stadium. I was especially happy to meet some colleagues from Oracle like Martin Deininger.
Posted in Uncategorized | Leave a Comment »