Wednesday, December 3, 2008

BPEL calling itself - in design time ...

If your process implements multiple operations, in other words the starting block of your process is a pick activity rather than a receive, you may come across the need to call itself occasionally. This is how it can be achieved.

  • Create a new partner link, give it a name "server", and select current project's WSDL as the WSDL file for this partner.

  • Select partner roles to be just opposite of what is in "client".(My role and partner role settings should switch with respect to client configuration)

  • Define "wsdlRuntimeLocation" property for "server" partner as something like this. This is very very important. http://localhost:8888/orabpel/default/MyProcess/?wsdl(Note that there is no version info in the endpoint and it ends with a slash to point to the default version. This will not work if "wsdlRuntimeLocation" property is not defined or not set appropriately.)

  • Now you can select all operations supported by this process to be invoked by itself from an "invoke" activity. Note that invocations lead to a new process instance to be created, not in the current instance.

No comments: