Invocation from BPEL processes

The creation of BPEL processes that enact Cúram workflow processes is out of the scope of this document. However the WSDL for each workflow process web service contains information that can be used by BPEL processes.

Callback Port Type
There is a port type in WSDL for a Cúram workflow web service that is not implemented by the service itself. The name of this port type is the name of the process with the word "Complete" appended to it (<ProcessName>Complete).

The purpose of this unimplemented port type is to define the web service interface that a Cúram workflow web service expects to be implemented by the BPEL process that enacted it. This port type that must be implemented by the callback web service configured in the process definition (see Process completion callback).

Figure 1. Callback Port Type
<!--Implemented by the BPEL process-->
  <wsdl:portType name="SomeCuramWorkflowComplete">
    <wsdl:operation name="processCompleted">
      <wsdl:input message="intf:processCompletedRequest"
                  name="processCompletedRequest"/>
    </wsdl:operation>
  </wsdl:portType>
Partner Link Type
Technically the only thing necessary to allow a Cúram workflow process to participate in a BPEL orchestrated process is to expose the process as a web service. However it is possible to add some metadata to assist the BPEL process developer by defining the port types involved in the partner link and the roles they play.

The BPEL specification allows partner link types to be defined in the WSDL for the service to be invoked in the partner link using the WSDL extension mechanism. The WSDL generated for a Cúram workflow web service defines the partner link type it expects to participate in and specifies the port types that play each role.

Figure 2. WSDL extensions for BPEL
<!--Partner link type-->
  <partnerLinkType name="CuramWorkflowPartnerLink"
    xmlns="http://schemas.xmlsoap.org/ws/2003/05/partner-link/">
    <role name="curamService">
      <portType name="tns1:SomeCuramWorkflow"/>
    </role>
    <role name="partnerService">
      <portType name="tns1:SomeCuramWorkflowComplete"/>
    </role>
  </partnerLinkType>