SOA Inbound Message Processing Service

The SOA Inbound Message Processing service removes HTTP headers from the incoming SOAP request for both the provider and the consumer.

It also removes attachments from MIME type messages in the case of consumers, and separates attachments from MIME messages in the case of providers. The following table provides an overview of the SOA Inbound Message Processing service:

Category Description
System Name SOA Inbound Message Processing Service
Graphical Process Modeler (GPM) categories All Services
Description The SOA Inbound Message Processing service removes HTTP headers from the incoming SOAP request for both the provider and the consumer. It also removes attachments from MIME type messages in the case of consumers, and separates attachments from MIME messages in the case of providers.
Business usage Configured in GPM for a consumer process to remove HTTP headers from a SOAP message after the response is received by the HTTP/HTTPS adapter. Used by the system business process WS_MessageHandler in Web service provider.
Usage example On the consumer side of Web service, this service is used to remove http headers from the soap response message. It also removes attachments from MIME type message after receiving the response from the application server through http/https adapters. On the provider side, this service is used to remove the headers from soap request message and separate attachments from MIME messages before processing the request.
Preconfigured? Yes. SOAInboundMsgProcessingService_Instance
Requires third-party files? None
Platform availability All supported platforms for your application
Related services Generally used after an HTTP/HTTPS adapter receives the request or response to the Web application server.
Application requirements WS Licensing
Initiates business processes? No
Invocation This service is used in a GPM in case of Web service consumer (must be put after HTTP adapter service). In case of a Web service provider, it will be invoked internally by the business process used for provider to receive and process the SOAP request.
Business process context considerations None
Returned status values Returned status values:
  • Success – Service is able to understand Soap message
  • Error – SOAP Fault information
Restrictions There are no requirements on the usage of this service. This service will be invoked when the web service provider and consumer is offline and a SOAP message is sent/received by the application.
Persistence level System default
Testing considerations Debug information can be found by observing the execution flow of the business process in the application user interface. The level of logging can be controlled through the log.properties file, just as for other log files. Also see Business Usage, Usage Example and Application Requirements in the previous sections.

Implementing the SOA Inbound Message Processing Service

To implement the SOA Inbound Message Processing service, complete the following tasks:
  1. Create a configuration of the SOA Inbound Message Processing service. See Managing Services and Adapters. For information about the fields specific to this service, see Configuring the SOA Inbound Message Processing Service.
  2. Specify field settings for the service configuration in the application Admin Console and in the GPM as necessary.

Configuring the SOA Inbound Message Processing Service

You must specify field settings in the application, using the Admin Console, and in the GPM.

Creating or Setting Up a Service Configuration in the Admin Console

Use the field definitions in the following table to create a new configuration of the SOA Inbound Message Processing service, or to set up the configuration provided with the application. Some fields are available in both the Admin Console and in the GPM. For the fields that are available in both, the GPM field name is shown in parentheses in the table below.

Field Description
Name Unique and meaningful name for the service configuration. Required.
Description Meaningful description for the service configuration, for reference purposes. Required.
Select a Group Select one of the options:
  • None – Do not include the configuration in a service group at this time.
  • Create New Group – Enter a unique name for a new group, which will be created with this configuration. (You can then add other services to the group as well.)
  • Select Group – If service groups already exist for this service type, they are displayed in the list. Select a group from the list
Note: See Managing Services and Adapters.

Setting Up the Service in the GPM

Use the field definitions in the following table to set up the service configuration in the GPM:

Field Description
Config Select the name of the service configuration from the list.

Business Process Example

The following example illustrates how the SOA Inbound Message Processing service can be used in a business process.

Example Business Process as Web Service Provider

The following business process uses a dynamic service created in an application for sending a SOAP message through HTTP to an endpoint configured in the application itself (where the application is the consumer as well as provider). The SOA Inbound Message Processing Service is used after the WS Config Info service.

<!-- New BP for the Web Service layer --> 
<process name = "WS_MessageHandler"> 
 <rule name="NonRMBranch">
   <condition>messageMode=1</condition>
 </rule>
  <rule name="RMBranch">
   <condition>messageMode=0</condition>
 </rule>
  <rule name="RMFaultBranch">
     <condition>reliableMode=0</condition>
   </rule>
    <rule name="NonRMFaultBranch">
     <condition>reliableMode=1</condition>
 </rule>
  <sequence name="Sequence Start">
  <assign to="incomingSOAPTransportMode">http</assign>
  <assign to="incomingSOAPTransportMode/@attr1">/assign>
   <operation name="WSConfigInfoService">
     <participant name="WSConfigInfoService_Instance"/>
     <output message="WSConfigInfoServiceInputMessage">
       <assign to="." from="*"></assign>
     </output>
      <input message="inmsg">
       <assign to="." from="*"></assign>
     </input>
    </operation>
<!-- New SOA Inbound Service Hnadle only MIME part now -->
   <operation name="SOAInboundMsgProcessingService">
     <participant name="SOAInboundMsgProcessingService_Instance"/>
     <output message="SOANewInboundTypeInputMessage">
       <assign to="." from="*"></assign>
     </output>
      <input message="inmsg">
       <assign to="." from="*"></assign>
     </input>
    </operation>
<!-- New RM Decision Service -->
    <operation name="SOAInboundRMDecisionService">
     <participant name="SOAInboundRMDecisionService_Instance"/>
     <output message="RMDecisionServiceTypeInputMessage">
       <assign to="." from="*"></assign>
     </output>
      <input message="inmsg">
       <assign to="." from="*"></assign>
     </input>
    </operation>
   <choice name="RM Choice">
    <select>
           <case ref="RMBranch" activity="ProcessRMPart"/>
           <case ref="NonRMBranch" activity="ProcessNonRMPart"/>
    </select>
     <sequence name="ProcessRMPart">
          <operation name="Reliable Service Handler">
            <participant name="RMServiceHandler_Instance"/>
            <output message="RMSHServiceTypeInputMessage">
              <assign to="." from="*"></assign>
            </output>
             <input message="inmsg">
               <assign to="." from="*"></assign>
            </input>
           </operation>
          <operation name="Reliable Service Manager">
                <participant name="RMServiceManager_Instance"/>
                <output message="RMSMServiceTypeInputMessage">
                  <assign to="." from="*"></assign>
                </output>
                <input message="inmsg">
                  <assign to="." from="*"></assign>
                </input>
           </operation>
         <choice name="Choice Start">
  
 <select>
   <case ref="RMFaultBranch" activity="ProcessRMFaultPart"/>
     <case ref="NonRMFaultBranch" activity="ProcessNonRMFaultPart"/>
      </select>
     <operation name="ProcessRMFaultPart"> 
<participant name="HttpRespond"/> 
<output message="HttpRespondServiceInputMessage"> 
<assign to="." from="*"></assign> 
<assign to="doc-has-headers">false</assign> 
</output> 
<input message="inmsg"> 
<assign to="." from="*"></assign>
  </input> 
</operation>
<operation name="ProcessNonRMFaultPart"> 
<participant name="InlineInvokeSubProcessService"/> 
<output message="InvokeSubProcessServiceSOATypeInputMessage"> 
<assign to="WFD_NAME">WS_RequestHandler</assign> 
<assign to="NOTIFY_PARENT_ON_ERROR">SERVICE_ERRORS_ONLY</assign>
			     <assign to="." from="*"></assign> 
</output> 
<input message="inmsg"> 
<assign to="." from="*"></assign> 
</input> 
</operation>
         </choice>
         </sequence> 
<operation name="ProcessNonRMPart"> 
<participant name="InlineInvokeSubProcessService"/> 
<output message="InvokeSubProcessServiceSOATypeInputMessage"> 
<assign to="WFD_NAME">WS_RequestHandler</assign>
 <assign to="NOTIFY_PARENT_ON_ERROR">SERVICE_ERRORS_ONLY</assign> 
<assign to="." from="*"></assign> 
<input message="inmsg">
 <assign to="." from="*"></assign> 
</input> 
</operation>
   </choice>
   <onFault>
      <sequence name="Sequence Start">
        <operation name="SOAFaultService">
         <participant name="SOAFaultService_Instance"/>
         <output message="SOAFaultServiceInputMessage">
           <assign to="faultCode">Receiver</assign>
           <assign to="faultString">Error Processing Request</assign>
           <assign to="faultType">SOAP</assign>
           <assign to="." from="*"></assign>
         </output>
          <input message="inmsg">
           <assign to="." from="*"></assign>
         </input>
        </operation>
       <operation name="HTTP Respond Service">
         <participant name="HttpRespond"/>
         <output message="HttpRespondServiceInputMessage">
           <assign to="." from="*"></assign>
    <assign to="doc-has-headers">false</assign>
         </output>
          <input message="inmsg">
           <assign to="." from="*"></assign>
         </input>
        </operation>
     </sequence>
    </onFault>
 </sequence> 
</process>

Example Business Process as Web Service Consumer

Example Business Process as web service consumer

Parameters Passed From Service to Business Process

The following table contains the parameters passed from the SOA Inbound Message Processing service to the business process:

Parameter Description
Attachment ID Unique ID (MIME content ID) of the attachment, if attachment is passed with the SOAP message
Primary Document Primary Document
SOAP Document Part SOAP Document part of the SOAP message