Invoking BPEL from Borland Delphi
<P/>
Just spent some time with a customer who has a thick client environment using Borland Delphi. All seemed to be going well until we actually tried to call a BPEL process. We could call it and get a response, but the response was an error message.
Going into the BPEL console using debug we saw that the Delphi client was sending the wrong XML request message. We had a structured element with a single nested element within it. Delphi was changing the name of the top level element within the request message, which meant that the BPEL process then could not find the nested element.
We then went through the Delphi wizard again to see if there was a problem with the generation of code.
To begin with we chose new from the file menu and then selected the WSDL importer.
This tool generates a pascal wrapper for the BPEL process Web Service interface through a wizard driven interface.
First step is to provide the location of the process WSDL. Don't use the WSDL from your JDeveloper project directory - this is abstract - use the WSDL obtained from the deployed BPEL process as shown in the picture below.
Next step is to verify that we got the correct interface. The wizard lets us drill down and check that we have the expected interface.
Having verified that we have the correct interface then we need to change the options by clicking the options button.
The key option to change is to make sure that "Unwind Literal Params" is unchecked. This is the option that causes the top level request element to be broken up into multiple parameters. Convenient but does change the message received by the service and so causes problems. With this option unchecked then we get the expected message received by the BPEL process.
Once this parameter is checked then the code is automatically generated for us with the correct data sent to the BPEL process. We can then code in Pascal a client that uses this new interface just as though it were native Delphi.
I have to say that although I have known of Delphi for years, this was the first time I had "worked" with it and I was impressed with the ease of use and ability to consume BPEL provided web services. Once we had resolved the literal parameters problem by changing the option mentioned above we built a BPEL process to pull data out of E-Bus Suite in 10 minutes, another 10 minutes was spent building a Delphi program to call BPEL and present this data. Turned out that Delphi and Oracle BPEL PM made a great team.
Drop me an note and let me know of your experiences of using BPEL PM with different clients. Enjoy.
You can download the latest Oracle BPEL Process Manager from
OTN. The screenshots are from Delphi 2005 but the customer I was working with was using Borland Delphi 7.