3

I've been doing some research on BPEL for about two weeks now and still don't quite get it.

I have deployed the HelloWorld sample in ODE and have also managed to deploy this other one.

My intention was to do something like the second example but with my own real WS deployed and working.

I'm now at the point of having a process with no errors and correctly deployed in ODE with the following structure:

enter image description here

I have started the project from a service definition importing my Multiply.wsdl. The Designer has composed the import tag into the MuktiplyProcessArtifacts.wsdl next to the PartnerLinkTypes all automagically so I assume all namespaces, etc are ok.

There is a few concepts I misundertand in order to make all of this work:

  1. In my original Multiply.wsdl I have

soap:address location="http://localhost:8080/WS-multiply/multiply"

but ODE tells me my soap:address must have the form host.port/ode/processes..

This doesn't sound reasonable to me since my WS could be implemented anywhere outside my ODE_HOME.

  1. The second example I mentioned before explains how the Designer presumably creates a "Caller.wsdl", which in fact has the function I would desire, which is to implement a "wrapper" WSDL, providing the BPEL process with entry and exit points. The issue is the Designer does not generate that interface. Am I supposed to create it myself? Do I have to create it at all?

  2. If that 3rd wsdl is really needed, is it the one I would have to call if I wanted to test the whole process?

eskalera
  • 1,072
  • 2
  • 21
  • 36

3 Answers3

4

It looks like your partner WSDL is associated to a myrole of a partnerlink. Partnerlinks and partnerlink types are a concept in BPEL that is used to define dual interfaces in a sense that if a partner A wants to communicate with a BPEL process as a buyer, it needs to provide a certain set of functionality that the process can use for further communications (i.e. sending a shipment confirmation to the buyer). Thus, a partnerlink maintains two roles, the myRole is the portType (aka interface) that the process itself provides, the partnerRole refers to a portType the process expects to be implemented by the partner. MyRoles must be of course implemented by the BPEL process and thus needs to have an endpoint that is exposed by the BPEL engine. PartnerRoles can be bound to arbitrary endpoints. This happens in the deployment descriptor, which is the deploy.xml in ODE.

I guess you can fix your process by assigning your partner WSDL to a partner role.

vanto
  • 3,134
  • 18
  • 28
  • thx @vanto, this is something I still needed to understand a bit better,but I don't see the relationship to my question. – eskalera Dec 03 '12 at 13:05
  • Which one? ;) Each BPEL process is rendered as as web service, thus it must be described by a WSDL. This is the Caller.wsdl in your example. It defines the interface that the process implements and is thus bound to the myRole of the partner link using the `` element in the DD. The *Artifacts.wsdl files are not really necessary but implement a best practice of separating concerns, in this case the interface definition from the definition of BPEL specific parts (partnerlinks and correlation properties). – vanto Dec 03 '12 at 16:43
1

I hope http://thiliniishaka.blogspot.com/2012/10/develop-ws-bpel-process-using-wso2.html and http://thiliniishaka.blogspot.com/2012/10/part-2-developing-ws-bpel-process-using.html may help you to resolve aforementioned queries.

Thanks

Thilini

Thilini Ishaka
  • 953
  • 1
  • 8
  • 13
  • thx @Thilini, your sample has thrown some light into the variable assigning task, which I also found hard to understand. Still does not clarify my question regarding the "wrapping" wsdl. I ended up editing the autocreated *artifacts.wsdl so I only have one extra wsdl. From your first link I could not accomplish the bit where it "Exports Project as a deployable archive". – eskalera Dec 03 '12 at 14:50
  • If you select a template when creating the bpel project (Synchronous or Asynchronous), the tool will generate a wsdl (that's the *artifacts.wsdl) for you which is the service wsdl for your bpel process. If you select template as 'empty', you'll have to create the wsdl for your process manually. Hope this helps. – Thilini Ishaka Dec 03 '12 at 15:36
  • For the other question on "Exporting as a deployable archive": please refer to http://wso2.org/project/developer-studio/2.0.1/docs/images/jaxws8.png That is to create a deployable zip archive out of the process configuration files. – Thilini Ishaka Dec 03 '12 at 15:58
  • 1
    thx again @Thilini, it's then what I presumed. Still don't know how the mentioned example created the Caller.wsdl and what for but from now on, I'll consider my artifact.wsdl as the "wrapper" wsdl. Guess I'm more clear now. – eskalera Dec 03 '12 at 16:00
  • regarding the deployable arhive. I am using BPEL Designer Project (http://www.eclipse.org/bpel/), which doesnt seem to have anything similar. Guess I'm fine just exposing the artifat.wsdl with SOAP – eskalera Dec 03 '12 at 16:02
  • I used wso2.com/products/developer-studio tool for developing previous samples and it has the easy exporting option.. Yes, you can do it with exposing artifats.wsdl with SOAP or else use Apache ODE or WSO2 BPS as a BPEL engine, these are opensource. – Thilini Ishaka Dec 03 '12 at 16:57
0

Its mandatory to have Ode.war deployed at tomcat server, tomcat create a path like the picture, you need to config your endpoit with the complete path /ode/processes

c:\apache-tomcat-7.0.55\webapps\ode\WEB-INF\processes\BPEL_WS\

Pablo
  • 90
  • 9