HandleSOAPRequest Business Process
The HandleSOAPRequest business process enables Sterling B2B Integrator to receive SOAP messages. When HandleSOAPRequest receives a SOAP message, HandleSOAPRequest validates the message, and then reads the message to determine the receiver of the message.
If Sterling B2B Integrator is the receiver of the message, HandleSOAPRequest performs this process:
- Verifies the digital signature.
- Removes the SOAP envelope and puts any attachments and SOAP header blocks into process data.
Sterling B2B Integrator puts inbound SOAP message attachments in business process data under the node SOAPRequestAttachments. The attachments follow this naming convention: SOAPAttachment1, SOAPAttachment2, and so on. Sterling B2B Integrator sets the content ID attribute to what was specified in the SOAP message.
- Invokes indicated subprocesses.
- Applies a SOAP envelope if necessary and HTTP headers to the document.
- Returns a response to requestor.
If Sterling B2B Integrator is not the ultimate receiver, HandleSOAPRequest performs this process:
- Verifies the digital signature.
- Removes SOAP header blocks that are specific to Sterling B2B Integrator and puts them into process data.
- Invokes indicated subprocesses.
- Forwards a document to the next receiver.
- Receives a response from the receiver.
- Returns a response to the requestor.
The following figures show the HandleSOAPRequest business process model as it displays in the GPM:




The following BPML code makes up the HandleSOAPRequest business process:
<process name="HandleSOAPRequest">
<rule name="acting_as_intermediate">
<condition>SOAP_INTERMEDIATE_NODE = "true"</condition>
</rule>
<rule name="acting_as_endpoint">
<condition>SOAP_INTERMEDIATE_NODE = "false"</condition>
</rule>
<sequence>
<sequence>
<operation name="SoapIn">
<participant name="SOAPInbound"/>
<output message="output">
<assign to="." from="*"></assign>
</output>
<input message="input">
<assign to="." from="*"></assign>
</input>
</operation>
<choice>
<select>
<case ref="acting_as_intermediate" activity="act_as_intermediate"/>
</select>
<sequence name="act_as_intermediate">
<assign to="xport-http-url" from="NextSoapURL/text()"></assign>
<sequence>
<operation name="HTTP Client Begin">
<participant name="HTTPClientBeginSession"/>
<output message="HttpClientBeginServiceInputMessage">
<assign to="." from="PrimaryDocument"></assign>
<assign to="RemoteURL" from="xport-http-url/text()"></assign>
<assign to="HTTPClientAdapter">HTTPClientAdapter</assign>
</output>
<input message="inmsg">
<assign to="." from="*"></assign>
</input>
</operation>
<operation name="HTTP Client Post">
<participant name="HTTPClientPost"/>
<output message="HttpClientPostServiceInputMessage">
<assign to="." from="PrimaryDocument"></assign>
<assign to="SessionToken" from="SessionToken/text()"></assign>
<assign to="RawResponse">true</assign>
<assign to="RawRequest"
from="xport-force-b2b-raw-message/text()"></assign>
</output>
<input message="inmsg">
<assign to="." from="*"></assign>
</input>
</operation>
<operation name="HTTP Client End">
<participant name="HTTPClientEndSession"/>
<output message="HttpClientEndServiceInputMessage">
<assign to="SessionToken" from="SessionToken/text()"></assign>
</output>
<input message="inmsg">
<assign to="." from="*"></assign>
</input>
</operation>
<onFault>
<sequence>
<operation name="HTTP Client End">
<participant name="HTTPClientEndSession"/>
<output message="HttpClientEndServiceInputMessage">
<assign to="SessionToken" from="SessionToken/text()"></assign>
</output>
<input message="inmsg">
<assign to="." from="*"></assign>
</input>
</operation>
<assign to="SOAPfaultcode">Server</assign>
<assign to="SOAPfaultstring">There was an error processing the SOAP
request.</assign>
<assign to="SOAPdetail">An error occurred trying to send SOAP
request to next node.</assign>
</sequence>
</onFault>
</sequence>
<operation name="SoapIn">
<participant name="SOAPInbound"/>
<output message="output">
<assign to="." from="*"></assign>
<assign to="bootstrap">false</assign>
</output>
<input message="input">
<assign to="." from="*"></assign>
</input>
</operation>
<assign to="SOAPOutboundAttachments" from="SOAPResponseAttachments/*"></assign>
</sequence>
</choice>
<choice>
<select>
<case ref="acting_as_endpoint" activity="act_as_endpoint"/>
</select>
<sequence name="act_as_endpoint">
<operation>
<participant name="InvokeBusinessProcessService"/>
<output message="Xout">
<assign to="." from="*"></assign>
<assign to="INVOKE_MODE">SYNC</assign>
</output>
<input message="Xin">
<assign to="." from="*"></assign>
</input>
</operation>
<onFault>
<sequence>
<assign to="SOAPfaultcode">Server</assign>
<assign to="SOAPfaultstring">There was an error processing the SOAP
request.</assign>
<assign to="SOAPdetail">An error occurred while processing the SOAP
request.</assign>
</sequence>
</onFault>
</sequence>
</choice>
<onFault code="SOAP-FAULT">
<assign to="InvokeSubBP">false</assign>
</onFault>
</sequence>
<operation name="SoapOut">
<participant name="SOAPOutbound"/>
<output message="output">
<assign to="." from="*"></assign>
<assign to="SOAP_MODE">respond</assign>
</output>
<input message="input">
<assign to="." from="*"></assign>
</input>
</operation>
<assign to="doc-has-headers">true</assign>
<operation name="HttpResponse">
<participant name="HttpRespond"/>
<output message="Xout">
<assign to="." from="*"></assign>
</output>
<input message="Xin">
<assign to="." from="*"></assign>
</input>
</operation>
</sequence>
</process>