Archive for February, 2007

Never Assume, always test…

Yesterday evening I started preparing for the upcoming Oracle PL/SQL Programming Test-A-Thon. I strongly believe that building your own programs to perform a functionality, which is already provided as a Built-In package is plain silly. Sometimes however, the Built-In functionality is not what you expect it to be. For instance the DBMS_UTILITY.COMMA_TO_TABLE procedure. This procedure takes a comma-delimited string and returns an Associative Array (a.k.a PL/SQL tables or Index-By Tables). Too bad that this Built-In functionality only works on legal PL/SQL identifiers.

I thought it would be a good idea to set up a series of testcases, so that when a new version of Oracle is shipped I could run all these tests again and check if the implementation of this procedure is still the same. This would make it easy to see if the Built-In packaged functionality was changed.
If only they would enhance the functionality, e.g. allowing a list of comma-delimited numbers to be passed in as a parameter, so that I won’t have to write those string parsers anymore….

.... Read the rest of this entry »

Nodig óns uit! Invite Us! (dan nodigen we jou ook weer uit)

Je weet, we nodigen je altijd graag uit om in onze kennis te delen. Via deze weblog laten we bijvoorbeeld in detail zien met wat voor zaken we bezig zijn en wat we zoal bedenken en uitvinden. Je bent ook altijd van harte welkom bij onze workshops, AMIS Academies en AMIS Queries.
 
Eigenlijk zouden we het nu ook wel eens leuk vinden om door jou uitgenodigd te worden. Of meer concreet: we zouden graag met onze kennis en ervaring bij jou langskomen om samen met jouw organisatie aan de slag te gaan met uitdagingen met technologie en de bedrijfsprocessen. Zodat jij, jouw collega’s en je manager kunnen profiteren van onze inbreng en we met zijn allen een mooie klus kunnen klaren.
 
Als jij ons uitnodigt en zorgt dat we in jouw organisatie een gesprek kunnen gaan voeren over de uitdagingen die jullie bezighouden en  hoe we hier samen  mee  aan de slag  kunnen  gaan, dan vinden we dat zo leuk dat we je als dank graag een dinerbon voor twee personen aanbieden.
 
Regel jij voor ons een uitnodiging voor een goed gesprek? Neem dan contact op met Frank Bongers, info@amis.nl of telefoonnummer 030-6016000.
 
 

My first steps with Oracle BI Publisher Enterprise Edition 10.1.3.2: create a report based on the OraBlogs rss-feed

After receiving a new, pretty powerful laptop, on Thursday and installing the Oracle BI Enterprise Edition on Friday, this weekend sees my first steps with the BI Publisher (previously known as XML Publisher).  My colleague Marcos is our (AMIS’s) real expert in this area – you may have seen some of this articles on our weblog in the recent past. He writes about Matrix Reports and other more advanced topics, I am just starting out with the tool. I will tell the tale of getting started and creating a first report – one that displays an overview of the most recent blog articles aggregated by the orablogs site.

Here is the report I create in this article, shown as Excel document :


 

The steps are:.... Read the rest of this entry »

Using the Spring DataBinder to map Strings to objects

The Spring DataBinder is not only useful to bind request parameters, you can also use the DataBinder on other parameters, like command line arguments, JSON objects coming from an Ajax request and query results from a database.

Most people probably don’t know what happens when the SimpleFormController maps the input fields from the browser to the specified Command object. Input fields are passed as Strings, even if it is an Integer or a Date. In Spring there is a class called ServletRequestDataBinder which does the mapping from input fields to a Command class. This is all hidden for the developer and I also didn’t know it before yesterday.
.... Read the rest of this entry »

How to programmatically add a CDATA section to an XML document (with the internal Xerces)

This problem probably sounds very easy and it is actually very easy, but it took me so long to figure this out I think it’s worth a blog. I’ll also explain how to generate and output xml documents with Xerces (bundled with Java)

While working on a project with Oracle MapViewer I was doing some testing to improve the performance of the map generating. One of my ideas was to use the map request xml api. With Oracle MapViewer you can send an xml document to the MapViewer server and receive an image or an xml document (with a url to the image in it). I usually use JDOM (www.jdom.org) to generate xml, but this time I was wondering why Sun hasn’t provided something like JDOM for us. I found a package called com.sun.org.apache.xerces.internal and it looked easy.

.... Read the rest of this entry »

Sizing Oracle EBS 12i

I wanted to find out how ‘big’ the new Oracle EBS 12i release really is. So, I downloaded the software from Edelivery and created a stage area.

From the stage area I started the rapidwiz to check the required disk space. Here is the required disk space for Oracle EBS 12i :

Database ORACLE_HOME = /ebs/db/tech_st/10.2.0
required = 4234.0

Database System File Directory = /ebs/db/apps_st/data
required = 19487.0

Database Log File Directory = /ebs/db/apps_st/data
required = 3165.0

Database Transaction File Directory = /ebs/db/apps_st/data
required = 66244.0

Database Archive File Directory = /ebs/db/apps_st/data
required = 45061.0

APPL_TOP = /ebs/apps/apps_st/appl
required = 5078.0

APPL_TOP mount 2 = /ebs/apps/apps_st/appl
required = 2639.0

APPL_TOP mount 3 = /ebs/apps/apps_st/appl
required = 4167.0

APPL_TOP mount 4 = /ebs/apps/apps_st/appl
required = 2882.0

COMMON_TOP = /ebs/apps/apps_st/comn
required = 2743.0

Apps ORACLE_HOME  = /ebs/apps/tech_st/10.1.3
required = 1553.0

Tools ORACLE_HOME = /ebs/apps/tech_st/10.1.2
required = 1138.0

So, you see the database is much bigger then release 11.5.10.2 (10g vs 9i). Also the new APPL_TOP is a little bigger then the old one.

To check for yourself, here is the required disk space for Oracle EBS 11.5.10.2.... Read the rest of this entry »

How to call a WS-Security secured web service from Oracle BPEL

Introduction 

I have been investigating Oracle’s Web Service Manager recently. WSM is shipped with the new SOA Suite. The WSM is a service gateway. Existing services can be placed behind the gateway. Security and authentication of the services will be done by the service gateway. WSM also provides a lot of logging facilities. Call to services behind the gateway can be logged. Authentication errors can be logged etc. Multiple services can be placed behing one gateway definition. All policies for that gateway definition, logging, authentication etc., will be applicable for all the services that are linked to the gateway.

Oracle provides a nice and complete tutorial that you can use when you are looking to the WSM for the first time. The tutorial can be found here. It was very straight forward to implement a authentication policy based on WS-Security. WS-Security is an OASIS standard that describes a uniform implementation regarding the security of webservices. The OASIS page regarding WS-Security can be found here. The following screen shot shows how easy it is to define a WS-Security policy. In this example a username/password file is defined that will be used for the authentication step. Note that the password in the file will be hashed with MD5..... Read the rest of this entry »

Invoking BPEL Worklist API from Remote Server with Java

Recently, I was working on an Forms application that required a Form to retrieve and complete a Human Workflow task from the worklist of a BPEL 10.1.3 server (also see this post, where you’ll see how Java code very similar to the code that I will provide here can be embedded in Oracle Forms). Although it wasn’t all that difficult, it did take some time getting everything configured correctly, and judging from some of the forum posts out there I was not the only one to struggle with it. This post will take you through the setup of a new JDeveloper project and the creation of a simple POJO that will be able to query and manipulate the worklist of a remote BPM server. Read the rest of this entry »

Transaction Dependent Webservice Invocation…or how to call a webservice from a database trigger and make the call part of the transaction

One of our clients asked us to help with calling a webservice from a database trigger. This webservice would duplicate the actions done by the database in a different system, SAP in this case. It was a type of "fire-and-forget" webservice.
Oracle 10 offers UTL_DBWS to interact with webservices, but the client doesn’t have an Oracle 10 database. Instead they work with an Oracle 9.2.0.7, so UTL_DBWS could not be used. (While writing this Blog I discovered that UTL_DBWS could be used with an Oracle 9 database, the Oracle-Base website has an article on this subject, more info below.)
At first glance, this should be easy to implement. Good thing that my colleague Lucas Jellema wrote a blog on how to call WebServices from PL/SQL, this made things a little easier..... Read the rest of this entry »

Oracle WebCenter Suite 10g (10.1.3.2.0) available for download too

Yesterday we received the 10.1.3.2 release of JDeveloper, with the WebCenter design time; today we are presented with the WebServer Suite (Server) as well. Download from http://www.oracle.com/technology/software/products/ias/htdocs/101310.html :