Other operations
The WSConnector is delivered with out-of-the-box support for the EXECUTE operation (implemented in WSExecuteOperation). A comprehensive connector implementation typically includes support for some or all of the other OperationTypes as well.
This topic discusses some of the WSConnector-specific points for adding support for other operations. For more general examples to implement operations, see the section about implementing operations.
Why add support for other operation types?
Typically, the intent of adding support for the other operation types is to provide a "friendlier" user experience. While the EXECUTE operation implementation provides access to all the web service operations, it also exposes the more advanced implementation details such as batching, paging, and response processing directly to the user. Moving these implementation details into the connector implementation greatly reduces the amount of work a user must complete to successfully utilize the connector within a process.
For the recipes in this cookbook, assume that the web service provides the following "typical" interface:
- Each object type has a single schema definition. For example, there is one
Contacttype definition used for all operations related to contacts. - Each object type has the standard CRUD-type operations defined as separate web service operations. For example, the object type named
Contacthas the operationscreateContact,getContact,queryContact,updateContact, anddeleteContact. - For the Contact object, the UPDATE operation schema definition looks like the following sample:
Schema example
<xs:schema>
<xs:complexType name="UpdateContactRequest">
<xs:sequence>
<xs:element name="contact" type="Contact" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:complexType>
<xs:complexType name="UpdateContactResponse">
<xs:sequence>
<xs:element name="contact" type="Contact" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:complexType>
<xs:complexType name="Contact">
<xs:sequence>
<xs:element name="id" type="xs:string"/>
<xs:element name="name" type="xs:string"/>
</xs:sequence>
<xs:attribute name="status" type="xs:string"/>
<xs:complexType>
<xs:schema>