Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3

TIP JOSIF Main Page |TIP  JOSIF Framework | TIP Soap Generator | TIP Soap Generator Mapping Rules - Part IV

Table of Contents
outlinetrue
indent20px
stylenone
printablefalse

Mapping Rules for Session Facade

...

Service Interface; abstract

Mapping Rule

If a session facade artifact has 'isAbstract=true', it will be mapped to nothing.

...

In Test1 model, interface org.tmforum.tip.cbe.test.TestProblemInterface is abstract, no any WSDL file generated from it.

Service Interface

...

; non-abstract

Mapping Rule

Every non-abstract session facade artifact is mapped to an XSD file (SOAP message definitions), and two WSDL files (one for HTTP binding, one for JMS binding). The targetNamespace of these files will be the image of package name under mapping rule rule   TIP _ Soap _ Generator _ Mapping _ Rules _ - _Part_IPart I#Mapping Rule for Namespace.

Example

In SPM model, the session facade artifact org.tmforum.tip.service.problem.ServiceProblemInterface is mapped to

...

b) WSDL files: service_problem_serviceprobleminterface_ws.wsdl and service_problem_serviceprobleminterface_jms.wsdl. Their targetNamespace is http://www.tmforum.org/xml/tip/service/problem.

Service Interface

...

; Operations

Mapping Rule

All (local or inherited) operations of a non-abstract session will be mapped to WSDL operations.

Please refer to mapping rules about operations and parameters:

...

...

...

...

...

...

TIP_Soap_Generator_Mapping_Rules_-_Part_III

...

_III#Mapping_Rules_for_Operations CANNOT FIND THIS

Service Interface; Inheritance

Mapping Rule

When map a non-abstract session facade Service Interface (Session Facade) (to SOAP message definition file and WSDL file(s)), both of its local operations and all inherited operations will be mapped to WSDL operations. Note that the facade can inherit operations from an abstract session facade.

...

In every WSDL files, we see 4 WSDL operations declared.

Code Block

    <wsdl:portType name="ServiceTestProblemInterface">
	<wsdl:documentation><p>The portType of the service interface</p><p>Implements the behviour coming from the inherited class</p>
        </wsdl:documentation>
	<wsdl:operation name="testAssoc">
	    <wsdl:documentation><p>The request-response operation</p><p>Testing passing of association classes</p>
            </wsdl:documentation>
	    <wsdl:input name="testAssocRequest" message="tns:testAssocRequest"/>
	    <wsdl:output name="testAssocResponse" message="tns:testAssocResponse"/>
	</wsdl:operation>
	<wsdl:operation name="acknowledgeTestProblems">
	    <wsdl:documentation><p>The request-response operation</p><p>Acknowledge test problems. Simple request /reply</p>
            </wsdl:documentation>
	    <wsdl:input name="acknowledgeTestProblemsRequest" message="tns:acknowledgeTestProblemsRequest"/>
	    <wsdl:output name="acknowledgeTestProblemsResponse" message="tns:acknowledgeTestProblemsResponse"/>
	    <wsdl:fault name="acknowledgeTestProblemsException" message="tns:acknowledgeTestProblemsException"/>
	</wsdl:operation>
	<wsdl:operation name="commentTestProblems">
	    <wsdl:documentation><p>The request-response operation</p><p>Comment test Problems. Simple request/reply</p>
            </wsdl:documentation>
	    <wsdl:input name="commentTestProblemsRequest" message="tns:commentTestProblemsRequest"/>
	    <wsdl:output name="commentTestProblemsResponse" message="tns:commentTestProblemsResponse"/>
	    <wsdl:fault name="commentTestProblemsException" message="tns:commentTestProblemsException"/>
	</wsdl:operation>
	<wsdl:operation name="testExtDT">
	    <wsdl:documentation><p>The request-response operation</p><p>testing of external DT</p></wsdl:documentation>
		<wsdl:input name="testExtDTRequest" message="tns:testExtDTRequest"/>
		<wsdl:output name="testExtDTResponse" message="tns:testExtDTResponse"/>
	</wsdl:operation>
    </wsdl:portType>

Service Interface

...

; parent is in external reference

This covers the use case of a ServiceInterface that inherits from another service interface that is not local to the project but present in external reference (module).

...

same with mapping rule in   TIP _ Soap _ Generator _ Mapping _ Rules _ - _Part_IVPart IV#Service Interface; Inheritance 

Example

In Test2 model, service interface org.tmforum.tip.test.TestExternalSuperServiceInterface extends external service interface org.tmforum.tip.service.test.ServiceTestProblemInterface. The super interface is defined in Test1 model. Note that the ServiceTestProblemInterface extends interface org.tmforum.tip.cbe.test.TestProblemInterface.

...

and in WSDL files, we see WSDL operations coming from local operation and inherited operations:

Code Block

    <wsdl:portType name="TestExternalSuperServiceInterface">
	<wsdl:documentation><p>The portType of the service interface</p><p>Service Interface containing high level services using external objects.</p>
        </wsdl:documentation>
	<wsdl:operation name="doComplexOperation">
	    <wsdl:documentation><p>The request-response operation</p><p>test method simulating a complex operation acting on several objects</p>
            </wsdl:documentation>
	    <wsdl:input name="doComplexOperationRequest" message="tns:doComplexOperationRequest"/>
	    <wsdl:output name="doComplexOperationResponse" message="tns:doComplexOperationResponse"/>
	    <wsdl:fault name="doComplexOperationException" message="tns:doComplexOperationException"/>
	</wsdl:operation>
	<wsdl:operation name="doAnotherComplexOperation">
	    <wsdl:documentation><p>The request-response operation</p><p>another test method simulating a complex operation acting on several objects</p>
            </wsdl:documentation>
	    <wsdl:input name="doAnotherComplexOperationRequest" message="tns:doAnotherComplexOperationRequest"/>
	    <wsdl:output name="doAnotherComplexOperationResponse" message="tns:doAnotherComplexOperationResponse"/>
	    <wsdl:fault name="doAnotherComplexOperationException" message="tns:doAnotherComplexOperationException"/>
	</wsdl:operation>
	<wsdl:operation name="testAssoc">
	    <wsdl:documentation><p>The request-response operation</p><p>Testing passing of association classes</p>
            </wsdl:documentation>
	    <wsdl:input name="testAssocRequest" message="tns:testAssocRequest"/>
	    <wsdl:output name="testAssocResponse" message="tns:testAssocResponse"/>
	</wsdl:operation>
	<wsdl:operation name="acknowledgeTestProblems">
	    <wsdl:documentation><p>The request-response operation</p><p>Acknowledge test problems. Simple request /reply</p>
            </wsdl:documentation>
	    <wsdl:input name="acknowledgeTestProblemsRequest" message="tns:acknowledgeTestProblemsRequest"/>
	    <wsdl:output name="acknowledgeTestProblemsResponse" message="tns:acknowledgeTestProblemsResponse"/>
	    <wsdl:fault name="acknowledgeTestProblemsException" message="tns:acknowledgeTestProblemsException"/>
	</wsdl:operation>
	<wsdl:operation name="commentTestProblems">
	    <wsdl:documentation><p>The request-response operation</p><p>Comment test Problems. Simple request/reply</p>
            </wsdl:documentation>
	    <wsdl:input name="commentTestProblemsRequest" message="tns:commentTestProblemsRequest"/>
	    <wsdl:output name="commentTestProblemsResponse" message="tns:commentTestProblemsResponse"/>
	    <wsdl:fault name="commentTestProblemsException" message="tns:commentTestProblemsException"/>
	</wsdl:operation>
	<wsdl:operation name="testExtDT">
	    <wsdl:documentation><p>The request-response operation</p><p>testing of external DT</p></wsdl:documentation>
	    <wsdl:input name="testExtDTRequest" message="tns:testExtDTRequest"/>
	    <wsdl:output name="testExtDTResponse" message="tns:testExtDTResponse"/>
	</wsdl:operation>
    </wsdl:portType>

Mapping Rules for Parameters

Parameter; message name

Mapping Rule

A parameter is mapped to a sub-element of a request message or a response message (refer to [TIP_Soap_Generator_Mapping_Rules_-_Part_

...

Parameter: message name

Mapping Rule

A parameter is mapped to a sub-element of a request message or a response message (refer to [TIP_Soap_Generator_Mapping_Rules_-_Part_II#Map Full Name to
Message File Name, WSDL Files Name, and Namespace]). For an operation, if we denote its short name as <OperationName>, then

• All its 'in' and 'inout' paramaters are mapped to sub-elements of message element named <OperationName>Request

• All its 'out' and 'inout' paramaters are mapped to one message element named <OperationName>Response

Note: all its exceptions declared in an operation, if any, are mapped to a single message element named <OperationName>Exception

Example

In Test2 model, we have an interface org.tmforum.tip.test.TestExternalInterface. The interface has an operation named
doComplexOperation. The request message and response message of the operation are defined in test_testexternalinterface_msg.xsd.

The request message is a global element named doComplexOperationRequest.

...

II#Map Full Name to
Message File Name, WSDL Files Name, and Namespace]). For an operation, if we denote its short name as <OperationName>, then

• All its 'in' and 'inout' paramaters are mapped to sub-elements of message element named <OperationName>Request

• All its 'out' and 'inout' paramaters are mapped to one message element named <OperationName>Response

Note: all its exceptions declared in an operation, if any, are mapped to a single message element named <OperationName>Exception

Example

In Test2 model, we have an interface org.tmforum.tip.test.TestExternalInterface. The interface has an operation named
doComplexOperation. The request message and response message of the operation are defined in test_testexternalinterface_msg.xsd.

The request message is a global element named doComplexOperationRequest.

Code Block
        <xsd:element name="doComplexOperationRequest">
		<xsd:annotation>
			<xsd:documentation>
				<p>The doComplexOperation request message XML schema.</p>
				<p>test method simulating a complex operation acting on several objects</p>
			</xsd:documentation>
		</xsd:annotation>
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element name="serviceTests" type="internal:ArrayOfEntityIdentifier" minOccurs="0">
					<xsd:annotation>
						<xsd:documentation>
							<p>Input service tests  by ids </p>
						</xsd:documentation>
					</xsd:annotation>
				</xsd:element>
				<xsd:element name="testData" type="test:ArrayOfTest" minOccurs="0">
					<xsd:annotation>
						<xsd:documentation>
							<p>test data  by value </p>
						</xsd:documentation>
					</xsd:annotation>
				</xsd:element>
				<xsd:element name="misc" type="xsd:string" minOccurs="0" maxOccurs="1">
					<xsd:annotation>
						<xsd:documentation>
							<p>misc data</p>
						</xsd:documentation>
					</xsd:annotation>
				</xsd:element>
			</xsd:sequence>
		</xsd:complexType>
	</xsd:element>

The response message is a global element named doComplexOperationResponse:

Code Block

     <xsd:element name="doComplexOperationResponse">
		<xsd:annotation>
			<xsd:documentation>
				<p>The doComplexOperation response message XML schema.</p>
				<p>See request message comment for operation comment.</p>
			</xsd:documentation>
		</xsd:annotation>
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element name="misc" type="xsd:string" minOccurs="0" maxOccurs="1">
					<xsd:annotation>
						<xsd:documentation>
							<p>misc data</p>
						</xsd:documentation>
					</xsd:annotation>
				</xsd:element>
				<xsd:element name="testProblems" type="internal:ArrayOfEntityIdentifier" minOccurs="0">
					<xsd:annotation>
						<xsd:documentation>
							<p>test problems  by values </p>
						</xsd:documentation>
					</xsd:annotation>
				</xsd:element>
			</xsd:sequence>
		</xsd:complexType>
	</xsd:element>

Parameter

...

; isBulkPotential, the iterator case

Related to issue #25 in Mantis [ Parameter: isBulkPotential|https://sourceforge.net/apps/mantisbt/openoss/view.php?id=25]

...

If an operation has tipOperation:bulkTransferPattern=ITERATOR, then the generator knows how to handle the operation's bulkpotential parameters. Please refer to mapping rules related with operations of iterator pattern TIP _ Soap _ Generator _ Mapping _ Rules _ - _Part_VI.Part VI#tipOperation; BulkTransferPattern - Iterator

Parameter

...

; isBulkPotential, the file case (not implemented in JOSIF 1.0)

Related to issue #25 in Mantis [ Parameter: isBulkPotential|https://sourceforge.net/apps/mantisbt/openoss/view.php?id=25]

This feature is not implemented in JOSIF 1.0.

Parameter

...

; multiplicity

Related to issue #77 in Mantis [ Parameter: multiplicity|https://sourceforge.net/apps/mantisbt/openoss/view.php?id=77]

...

same with the mapping rule in  TIP _ Soap _ Generator _ Mapping _ Rules _ - _Part_IPart I#Mapping Rule for Attributes, Association Ends, and Parameters

Note (2009, Sept 23) According to TIP Framework Team, there is a problem with passById as the entity ID is replaced by an entityIdentifier with no indication of the entity type. The basic idea is that we need to pass both the entity identifier and the type of the entity. In SOAP generator version 0.0.3, we simply map parameters with 'tipParameter:passedById=true' to sub-element of EntityIdentifier type or of ArrayOfEntityIdentifier type.

...

exmple in previous section: parameters of doComplexOperation operation, interface org.tmforum.tip.test.TestExternalInterface, Test2 model.

Parameter

...

; direction

Related to issue #78 in Mantis [ Parameter: direction|https://sourceforge.net/apps/mantisbt/openoss/view.php?id=78]

...

• ‘Out’ parameters will be put in <OperationName>Response element

also refer to to   TIP _ Soap _ Generator _ Mapping _ Rules _ - _Part_IPart I#Mapping Rule for Attributes, Association Ends, and Parameters

Example

Refer to previous example

Parameter

...

; default value

Related to issue #79 in Mantis [ Parameter: default value|https://sourceforge.net/apps/mantisbt/openoss/view.php?id=79]

Parameter

...

; passedbyId

Related to issue #80 in Mantis [ Parameter: passedById|https://sourceforge.net/apps/mantisbt/openoss/view.php?id=80]

Mapping Rule

refer to  TIP _ Soap _ Generator _ Mapping _ Rules _ - _Part_IPart I#Mapping Rule for Attributes, Association Ends, and Parameters

Example

exmple in previous section: parameters of doComplexOperation operation, interface org.tmforum.tip.test.TestExternalInterface, in Test2 model.

Parameter

...

; isOrdered

Related to issue #329 in Mantis [ Parameter: isOrdered|https://sourceforge.net/apps/mantisbt/openoss/view.php?id=329]

The generator ignore this property.

Parameter

...

; isUnique

Related to issue #330 in Mantis [ Parameter: isUnique|https://sourceforge.net/apps/mantisbt/openoss/view.php?id=330]

...

Mapping Rules for Operations

...

Operation; bulkTransferPattern Iterator

Related to issue #18 in Mantis Operation: bulkTransferPattern Iterator

...

This covers the use of the bulkTransferPattern on the tipOperation stereotype with the value ITERATOR.
In this case, all the parameters of the operation marked bulkPotential will be transferred using an iterator transfer pattern.

Please refer to to  TIP _ Soap _ Generator _ Mapping _ Rules _ - _Part_VI.Part VI#tipOperation; BulkTransferPattern - Iterator

Operation

...

; bulkTransferPattern File (Not implemented in JOSIF 1.0)

Related to issue #19 in Mantis Operation: bulkTransferPattern File

...

This is used for async operation, where response is provided through the emission of events.

Operation

...

; isExtendable

Related to issue #21 in Mantis Operation: isExtendable

...

For the structure of the extensionInfo element, please refer to (TIP _ Soap _ Generator _ Mapping _ Rules _ - _Part_IPart I#Mapping Rule for Extendability).

Example

In Test1 model, org.tmforum.tip.service.test.ServiceTestProblemInterface has an extendable operation named acknowledgeTestProblems (inherited from interface TestProblemInterface). We can see a sub-element named 'extensionInfo' is added to both acknowledgeTestProblemsRequest and acknowledgeTestProblemsResponse.

...

The response message is:

Code Block
      <xsd:element name="acknowledgeTestProblemsResponse">
	<xsd:annotation>
	    <xsd:documentation>
		<p>The acknowledgeTestProblems response message XML schema.</p>
		<p>See request message comment for operation comment.</p>
	    </xsd:documentation>
	</xsd:annotation>
	<xsd:complexType>
	    <xsd:sequence>
		<xsd:element name="ackProblems" type="internal:ArrayOfEntityIdentifier">
		    <xsd:annotation>
			<xsd:documentation>
			    <p>acknowledged Problems</p>
			</xsd:documentation>
		    </xsd:annotation>
		</xsd:element>
		<xsd:element name="extensionInfo" minOccurs="0">
		    <xsd:annotation>
			<xsd:documentation>
			<p>A generic list of any type of elements. Used for vendor Extensions or loose element encapsulation from other namespaces.</p>
			</xsd:documentation>
		    </xsd:annotation>
		    <xsd:complexType>
			<xsd:sequence>
			    <xsd:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
			</xsd:sequence>
		    </xsd:complexType>
		</xsd:element>
	    </xsd:sequence>
        </xsd:complexType>
    </xsd:element>


Operation

...

; isIdempotent (Not implemented in JOSIF 1.0)

Related to issue #22 in Mantis Operation: isIdempotent

...

There is a need for the generators to add a boolean parameter for idempotent operations to indicate that the operation has already been done.

Operation

...

; isOneWay

Related to issue #23 in Mantis Operation: isOneWay

...

In WSDL files (test_testonewayopinterface_ws.wsdl and test_testonewayopinterface_jms.wsdl), we see the corresponding operation definition in portType:

Code Block


<?xml version="1.0" encoding="UTF-8"?>

<wsdl:definitions xmlns:tns="http://www.tmforum.org/xml/tip/test" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" name="TestOneWayOpInterface" targetNamespace="http://www.tmforum.org/xml/tip/test">
	<wsdl:types>
		<xsd:schema>
			<xsd:import namespace="http://www.tmforum.org/xml/tip/test" schemaLocation="test_testonewayopinterface_msg.xsd"/>
		</xsd:schema>
	</wsdl:types>
	<wsdl:message name="doOneWayOperationRequest">
		               <wsdl:documentation><p>The operation one-way message.</p></wsdl:documentation>
                  	               <wsdl:part name="body" element="tns:doOneWayOperation"/>
	</wsdl:message>
	<wsdl:portType name="TestOneWayOpInterface">
		<wsdl:documentation><p>The portType of the service interface</p><p/></wsdl:documentation>
		<wsdl:operation name="doOneWayOperation">
			<wsdl:documentation><p>The one-way operation</p><p>test mapping rule of tipOperation:isOneWay</p></wsdl:documentation>
			<wsdl:input name="doOneWayOperationRequest" message="tns:doOneWayOperationRequest"/>
		</wsdl:operation>
	</wsdl:portType>
	<wsdl:binding name="TestOneWayOpInterfaceSoapHttpBinding" type="tns:TestOneWayOpInterface">
		<wsdl:documentation><p>Web Service (SOAP/HTTP) profile binding definitions.</p></wsdl:documentation>
		<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
		<wsaw:UsingAddressing wsdl:required="true"/>
		<wsdl:operation name="doOneWayOperation">
			<soap:operation soapAction="doOneWayOperation" style="document"/>
			<wsdl:input name="doOneWayOperationRequest">
				<soap:body use="literal"/>
			</wsdl:input>
		</wsdl:operation>
	</wsdl:binding>
	<wsdl:service name="TestOneWayOpInterfaceWs">
		<wsdl:documentation><p>This is a sample wsdl:service definition of the service interface
          for an implementation using the WS profile (SOAP/HTTP binging).</p><p>This wsdl:service definition is usually used at implementation time
          or WS registration/discovery of a specific WS instance.</p></wsdl:documentation>
		<wsdl:port name="TestOneWayOpInterfaceHttpPort" binding="tns:TestOneWayOpInterfaceSoapHttpBinding">
			<soap:address location="http://localhost/TestOneWayOpInterface"/>
		</wsdl:port>
	</wsdl:service>
</wsdl:definitions>

Operation

...

; specific exceptions

Related to issue #58 in Mantis Operation: specific exceptions

...

The exception message of ‘acknowledgeTestProblems’’ operation is:

Code Block
      <xsd:element name="acknowledgeTestProblemsException">
		<xsd:annotation>
			<xsd:documentation>
				<p>The acknowledgeTestProblems exception message XML schema.</p>
				<p>See request message comment for operation comment.</p>
			</xsd:documentation>
		</xsd:annotation>
		<xsd:complexType>
			<xsd:choice>
				<xsd:element name="testFailureWithData" type="test:TestFailureWithData">
					<xsd:annotation>
						<xsd:documentation>
      
                                                </xsd:documentation>
					</xsd:annotation>
				</xsd:element>
				<xsd:element name="testFailure" type="test:TestFailure">
					<xsd:annotation>
						<xsd:documentation>
      
                                                </xsd:documentation>
					</xsd:annotation>
				</xsd:element>
			</xsd:choice>
		</xsd:complexType>
    </xsd:element>

In service_test_servicetestprobleminterface_ws.wsdl and service_test_servicetestprobleminterface_jms.wsdl, we see that in portType 'ServiceTestProblemInterface', the operation 'acknowledgeTestProblems' has input, output, and fault.

Code Block


<wsdl:portType name="ServiceTestProblemInterface">
<!--other operations-->
	<wsdl:operation name="acknowledgeTestProblems">
			<wsdl:documentation><p>The request-response operation</p><p>Acknowledge test problems. Simple request /reply</p></wsdl:documentation>
			<wsdl:input name="acknowledgeTestProblemsRequest" message="tns:acknowledgeTestProblemsRequest"/>
			<wsdl:output name="acknowledgeTestProblemsResponse" message="tns:acknowledgeTestProblemsResponse"/>
			<wsdl:fault name="acknowledgeTestProblemsException" message="tns:acknowledgeTestProblemsException"/>
		</wsdl:operation>
</wsdl:portType>

...

In service_test_servicetestprobleminterface_ws.wsdl and service_test_servicetestprobleminterface_jms.wsdl, we see that in portType 'ServiceTestProblemInterface', the operation 'testAssoc' has only input and output, no fault.

Code Block


<wsdl:portType name="ServiceTestProblemInterface">
<!--other operations-->
		<wsdl:operation name="testAssoc">
			<wsdl:documentation><p>The request-response operation</p><p>Testing passing of association classes</p></wsdl:documentation>
			<wsdl:input name="testAssocRequest" message="tns:testAssocRequest"/>
			<wsdl:output name="testAssocResponse" message="tns:testAssocResponse"/>
		</wsdl:operation>
</wsdl:portType>

...

In TIP SPM model, the interface org.tmforum.tip.service.problem.ServiceProblemCreateInterface has an operation createServiceProblem operation. The exception message of the operation is:

Code Block

    <xsd:element name="createServiceProblemException">
	<xsd:complexType>
	    <xsd:choice>
                <!--exception declared in TIP SPM model-->
		<xsd:element name="unableToNotify" type="exceptions1:UnableToNotify"></xsd:element>
		<xsd:element name="capacityExceeded" type="exceptions1:CapacityExceeded"></xsd:element>
		<xsd:element name="duplicate" type="exceptions1:Duplicate"></xsd:element>
                <!--pre-defined exceptions-->
		<xsd:element name="accessDenied" type="exceptions:AccessDenied"/>
		<xsd:element name="communicationLoss" type="exceptions:CommunicationLoss"/>
		<xsd:element name="internalError" type="exceptions:InternalError"/>
		<xsd:element name="invalidInput" type="exceptions:InvalidInput"/>
		<xsd:element name="notImplemented" type="exceptions:NotImplemented"/>
		<xsd:element name="unableToComply" type="exceptions:UnableToComply"/>
	    </xsd:choice>
        </xsd:complexType>
    </xsd:element>

...

pattern of the wsdl HTTP binding:

Code Block

	<wsdl:binding name="${shortName of session facade}SoapHttpBinding" type="tns:${shortName of session facade}">
		<wsdl:documentation><p>Web Service (SOAP/HTTP) profile binding definitions.</p></wsdl:documentation>
		<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
		<wsaw:UsingAddressing wsdl:required="true"/>
		<wsdl:operation name="${short name of an operation}">
			<soap:operation soapAction="${short name of the operation}" style="document"/>
			<wsdl:input name="${short name of the operation}Request">
				<soap:body use="literal"/>
			</wsdl:input>
			<wsdl:output name="${short name of the operation}Response">
				<soap:body use="literal"/>
			</wsdl:output>
			<wsdl:fault name="${short name of the operation}Exception">
				<soap:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>
                <!--other operations omitted-->
	</wsdl:binding>

...

From session facade org.tmforum.tip.cbe.test.TestBulkInterface, Test1 model, a WSDL with HTTP binding is generated:

Code Block

<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions xmlns:tns="http://www.tmforum.org/xml/tip/cbe/test" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" name="TestBulkInterface" targetNamespace="http://www.tmforum.org/xml/tip/cbe/test">
	<wsdl:types>
		<xsd:schema>
			<xsd:import namespace="http://www.tmforum.org/xml/tip/cbe/test" schemaLocation="cbe_test_testbulkinterface_msg.xsd"/>
		</xsd:schema>
	</wsdl:types>
	<wsdl:message name="getTestProblemsByIteratorRequest">
		<wsdl:documentation><p>The operation request message.</p></wsdl:documentation>
		<wsdl:part name="body" element="tns:getTestProblemsByIteratorRequest"/>
	</wsdl:message>
	<wsdl:message name="getTestProblemsByIteratorResponse">
		<wsdl:documentation><p>The operation response message.</p></wsdl:documentation>
		<wsdl:part name="body" element="tns:getTestProblemsByIteratorResponse"/>
	</wsdl:message>
	<wsdl:message name="getTestProblemsByFileTransferRequest">
		<wsdl:documentation><p>The operation request message.</p></wsdl:documentation>
		<wsdl:part name="body" element="tns:getTestProblemsByFileTransferRequest"/>
	</wsdl:message>
	<wsdl:message name="getTestProblemsByFileTransferResponse">
		<wsdl:documentation><p>The operation response message.</p></wsdl:documentation>
		<wsdl:part name="body" element="tns:getTestProblemsByFileTransferResponse"/>
	</wsdl:message>
	<wsdl:message name="setTestProblemsByIteratorRequest">
		<wsdl:documentation><p>The operation request message.</p></wsdl:documentation>
		<wsdl:part name="body" element="tns:setTestProblemsByIteratorRequest"/>
	</wsdl:message>
	<wsdl:message name="setTestProblemsByIteratorResponse">
		<wsdl:documentation><p>The operation response message.</p></wsdl:documentation>
		<wsdl:part name="body" element="tns:setTestProblemsByIteratorResponse"/>
	</wsdl:message>
	<wsdl:message name="setTestProblemsByFileTransferRequest">
		<wsdl:documentation><p>The operation request message.</p></wsdl:documentation>
		<wsdl:part name="body" element="tns:setTestProblemsByFileTransferRequest"/>
	</wsdl:message>
	<wsdl:message name="setTestProblemsByFileTransferResponse">
		<wsdl:documentation><p>The operation response message.</p></wsdl:documentation>
		<wsdl:part name="body" element="tns:setTestProblemsByFileTransferResponse"/>
	</wsdl:message>
	<wsdl:portType name="TestBulkInterface">
		<wsdl:documentation><p>The portType of the service interface</p><p>Used to test various bulk transfer patterns.
Warning: operate on an abstract class. So only the inherited service interfaces should really implement the behaviour.</p></wsdl:documentation>
		<wsdl:operation name="getTestProblemsByIterator">
			<wsdl:documentation><p>The request-response operation</p><p>Return a list of service problems. Bulk out argument, with iterator pattern.</p></wsdl:documentation>
			<wsdl:input name="getTestProblemsByIteratorRequest" message="tns:getTestProblemsByIteratorRequest"/>
			<wsdl:output name="getTestProblemsByIteratorResponse" message="tns:getTestProblemsByIteratorResponse"/>
		</wsdl:operation>
		<wsdl:operation name="getTestProblemsByFileTransfer">
			<wsdl:documentation><p>The request-response operation</p><p>Return a list of service problems. Bulk out argument, with file transfer pattern.</p></wsdl:documentation>
			<wsdl:input name="getTestProblemsByFileTransferRequest" message="tns:getTestProblemsByFileTransferRequest"/>
			<wsdl:output name="getTestProblemsByFileTransferResponse" message="tns:getTestProblemsByFileTransferResponse"/>
		</wsdl:operation>
		<wsdl:operation name="setTestProblemsByIterator">
			<wsdl:documentation><p>The request-response operation</p><p>Set a list of service problems. Bulk in argument, with iterator pattern.</p></wsdl:documentation>
			<wsdl:input name="setTestProblemsByIteratorRequest" message="tns:setTestProblemsByIteratorRequest"/>
			<wsdl:output name="setTestProblemsByIteratorResponse" message="tns:setTestProblemsByIteratorResponse"/>
		</wsdl:operation>
		<wsdl:operation name="setTestProblemsByFileTransfer">
			<wsdl:documentation><p>The request-response operation</p><p>Set a list of service problems. Bulk in argument, with file transfer pattern.</p></wsdl:documentation>
			<wsdl:input name="setTestProblemsByFileTransferRequest" message="tns:setTestProblemsByFileTransferRequest"/>
			<wsdl:output name="setTestProblemsByFileTransferResponse" message="tns:setTestProblemsByFileTransferResponse"/>
		</wsdl:operation>
	</wsdl:portType>
	<wsdl:binding name="TestBulkInterfaceSoapHttpBinding" type="tns:TestBulkInterface">
		<wsdl:documentation><p>Web Service (SOAP/HTTP) profile binding definitions.</p></wsdl:documentation>
		<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
		<wsaw:UsingAddressing wsdl:required="true"/>
		<wsdl:operation name="getTestProblemsByIterator">
			<soap:operation soapAction="getTestProblemsByIterator" style="document"/>
			<wsdl:input name="getTestProblemsByIteratorRequest">
				<soap:body use="literal"/>
			</wsdl:input>
			<wsdl:output name="getTestProblemsByIteratorResponse">
				<soap:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>
		<wsdl:operation name="getTestProblemsByFileTransfer">
			<soap:operation soapAction="getTestProblemsByFileTransfer" style="document"/>
			<wsdl:input name="getTestProblemsByFileTransferRequest">
				<soap:body use="literal"/>
			</wsdl:input>
			<wsdl:output name="getTestProblemsByFileTransferResponse">
				<soap:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>
		<wsdl:operation name="setTestProblemsByIterator">
			<soap:operation soapAction="setTestProblemsByIterator" style="document"/>
			<wsdl:input name="setTestProblemsByIteratorRequest">
				<soap:body use="literal"/>
			</wsdl:input>
			<wsdl:output name="setTestProblemsByIteratorResponse">
				<soap:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>
		<wsdl:operation name="setTestProblemsByFileTransfer">
			<soap:operation soapAction="setTestProblemsByFileTransfer" style="document"/>
			<wsdl:input name="setTestProblemsByFileTransferRequest">
				<soap:body use="literal"/>
			</wsdl:input>
			<wsdl:output name="setTestProblemsByFileTransferResponse">
				<soap:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>
	</wsdl:binding>
	<wsdl:service name="TestBulkInterfaceWs">
		<wsdl:documentation><p>This is a sample wsdl:service definition of the service interface
          for an implementation using the WS profile (SOAP/HTTP binging).</p><p>This wsdl:service definition is usually used at implementation time
          or WS registration/discovery of a specific WS instance.</p></wsdl:documentation>
		<wsdl:port name="TestBulkInterfaceHttpPort" binding="tns:TestBulkInterfaceSoapHttpBinding">
			<soap:address location="http://localhost/TestBulkInterface"/>
		</wsdl:port>
	</wsdl:service>
</wsdl:definitions>