Currently I am developing a ws with OSB using JDeveloper 11. I have a simple web service, which calls an external SOAP service.
My composite.xml file:
Operations of my BPEL Soap service
Operations of remote SOAP Service
BPEL Component
I have few questions regarding the current development strategy. How shall I add new operations to my BPEL SOAP? I added a new method (getCompanyDetails()) by editing ApusBPELProcess.xsd (added new request and response types) and ApusBPELProcess.wsdl (added new operation, message and etc). Is this the correct way for adding new operations?
Now I can call only one method of the remote SOAP service by using an "Invoke" component from BPEL constructs.
My BPEL design:
How can I call bind a method from my BPEL SOap (1) to a method from remote service (2) ? For example: when client calls method process
from my BPEL Soap (1), I want to do some validation on input parameters and then call getServiceCompanies
from remote SOAP (2). And so when client calls another method from BPEL Soap (1) I want to call some other methods on remote SOAP (2).
Will be very thankful if someone can show me a diagram, with required components. Because I read about "Mediator" components, but I don't know how to use them in my current situation.
Thanks in advance.
I found a solution with Mediator component. Maybe it will help someone.
Ok, I added a Mediator component between my exposed service and remote service. Mediator component will do request routing and data transformation between these two services. For each method in my exposed service I added a BPEL process to the other endpoint of Mediator (I will do some method specific validation/other logic inside these BPEL processes).
My final composite.xml:
Inside Mediator component I do routing and transformation. For each method of my exposed service (1) I have a routing rule in Mediator (2).
Mediator component rules:
4a, 4b - Methods of my exposed service 4c - button for adding new routing rule 4d - button for adding transformation rule (generally you will have a pair of transformation rules for a method - request/response)
Transformation files are .xsl files that do information convertion between two endpoints.
My .xsl files:
Content of a .xsl file:
Here I am doing iteration through the response data (for-each component).
And finally inside of each BPEL process I have an "Invoke" component (5) which calls the appropriate method on the remote service.
Hope it will someone. Good luck!