This site contains the documentation that is relevant to older WSO2 product versions and offerings.
For the latest WSO2 documentation, visit https://wso2.com/documentation/.
ESB Connector Auto Generation Tool
Though it is easy to use connectors in the ESB, building such connectors take a reasonable amount of time and effort. The object of this project is to reduce that by introducing an automated tool for generating connectors for ESB. The Connector Auto Generator is capable of generating connectors for Soap web services by using valid WSDL specifications.
 WSDL SpecificationÂ
WSDL is an XML format for describing network services as a set of endpoints operating on messages containing either document-oriented or procedure-oriented information. The operations and messages are described abstractly and then bound to a concrete network protocol and message format to define an endpoint. Related concrete endpoints are combined into abstract endpoints (services). WSDL is extensible to allow description of endpoints and their messages regardless of what message formats or network protocols are used to communicate, however, the only bindings described in this document describe how to use WSDL in conjunction with SOAP 1.1, HTTP GET/POST, and MIME. More...
<?xml version="1.0" encoding="UTF-8"?> <!-- Web Services API : ConnectorAutomation --> <definitions targetNamespace="http://soap.sforce.com/schemas/class/ConnectorAutomation" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://soap.sforce.com/schemas/class/ConnectorAutomation"> <types> <xsd:schema elementFormDefault="qualified" targetNamespace="http://soap.sforce.com/schemas/class/ConnectorAutomation"> <xsd:element name="AllowFieldTruncationHeader"> <xsd:complexType> <xsd:sequence> <xsd:element name="allowFieldTruncation" type="xsd:boolean"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="CallOptions"> <xsd:complexType> <xsd:sequence> <xsd:element name="client" type="xsd:string"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="DebuggingHeader"> <xsd:complexType> <xsd:sequence> <xsd:element name="categories" minOccurs="0" maxOccurs="unbounded" type="tns:LogInfo"/> <xsd:element name="debugLevel" type="tns:LogType"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:complexType name="LogInfo"> <xsd:sequence> <xsd:element name="category" type="tns:LogCategory"/> <xsd:element name="level" type="tns:LogCategoryLevel"/> </xsd:sequence> </xsd:complexType> <xsd:simpleType name="LogCategory"> <xsd:restriction base="xsd:string"> <xsd:enumeration value="Db"/> <xsd:enumeration value="Workflow"/> <xsd:enumeration value="Validation"/> <xsd:enumeration value="Callout"/> <xsd:enumeration value="Apex_code"/> <xsd:enumeration value="Apex_profiling"/> <xsd:enumeration value="Visualforce"/> <xsd:enumeration value="System"/> <xsd:enumeration value="All"/> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name="LogCategoryLevel"> <xsd:restriction base="xsd:string"> <xsd:enumeration value="None"/> <xsd:enumeration value="Finest"/> <xsd:enumeration value="Finer"/> <xsd:enumeration value="Fine"/> <xsd:enumeration value="Debug"/> <xsd:enumeration value="Info"/> <xsd:enumeration value="Warn"/> <xsd:enumeration value="Error"/> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name="LogType"> <xsd:restriction base="xsd:string"> <xsd:enumeration value="None"/> <xsd:enumeration value="Debugonly"/> <xsd:enumeration value="Db"/> <xsd:enumeration value="Profiling"/> <xsd:enumeration value="Callout"/> <xsd:enumeration value="Detail"/> </xsd:restriction> </xsd:simpleType> <xsd:element name="DebuggingInfo"> <xsd:complexType> <xsd:sequence> <xsd:element name="debugLog" type="xsd:string"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="SessionHeader"> <xsd:complexType> <xsd:sequence> <xsd:element name="sessionId" type="xsd:string"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:simpleType name="ID"> <xsd:restriction base="xsd:string"> <xsd:length value="18"/> <xsd:pattern value="[a-zA-Z0-9]{18}"/> </xsd:restriction> </xsd:simpleType> <xsd:complexType name="ResponseClass"> <xsd:sequence> <xsd:element name="responseResultID" minOccurs="0" type="xsd:string" nillable="true"/> <xsd:element name="responseResultName" minOccurs="0" type="xsd:string" nillable="true"/> <xsd:element name="responseResultRecordType" minOccurs="0" type="xsd:string" nillable="true"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="address"> <xsd:complexContent> <xsd:extension base="tns:location"> <xsd:sequence> <xsd:element name="city" type="xsd:string"/> <xsd:element name="country" type="xsd:string"/> <xsd:element name="countryCode" type="xsd:string"/> <xsd:element name="geocodeAccuracy" type="xsd:string"/> <xsd:element name="postalCode" type="xsd:string"/> <xsd:element name="state" type="xsd:string"/> <xsd:element name="stateCode" type="xsd:string"/> <xsd:element name="street" type="xsd:string"/> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:complexType name="location"> <xsd:sequence> <xsd:element name="latitude" type="xsd:double"/> <xsd:element name="longitude" type="xsd:double"/> </xsd:sequence> </xsd:complexType> <xsd:element name="addAccount"> <xsd:complexType> <xsd:sequence> <xsd:element name="value1" type="xsd:string" nillable="true"/> <xsd:element name="value2" type="xsd:string" nillable="true"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="addAccountResponse"> <xsd:complexType> <xsd:sequence> <xsd:element name="result" type="tns:ResponseClass" nillable="true"/> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema> </types> <!-- Message for the header parts --> <message name="Header"> <part name="AllowFieldTruncationHeader" element="tns:AllowFieldTruncationHeader"/> <part name="CallOptions" element="tns:CallOptions"/> <part name="DebuggingHeader" element="tns:DebuggingHeader"/> <part name="DebuggingInfo" element="tns:DebuggingInfo"/> <part name="SessionHeader" element="tns:SessionHeader"/> </message> <!-- Operation Messages --> <message name="addAccountRequest"> <part element="tns:addAccount" name="parameters"/> </message> <message name="addAccountResponse"> <part element="tns:addAccountResponse" name="parameters"/> </message> <portType name="ConnectorAutomationPortType"> <operation name="addAccount"> <input message="tns:addAccountRequest"/> <output message="tns:addAccountResponse"/> </operation> </portType> <binding name="ConnectorAutomationBinding" type="tns:ConnectorAutomationPortType"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="addAccount"> <soap:operation soapAction=""/> <input> <soap:header use="literal" part="SessionHeader" message="tns:Header"/> <soap:header use="literal" part="CallOptions" message="tns:Header"/> <soap:header use="literal" part="DebuggingHeader" message="tns:Header"/> <soap:header use="literal" part="AllowFieldTruncationHeader" message="tns:Header"/> <soap:body use="literal" parts="parameters"/> </input> <output> <soap:header use="literal" part="DebuggingInfo" message="tns:Header"/> <soap:body use="literal"/> </output> </operation> </binding> <service name="ConnectorAutomationService"> <documentation/> <port binding="tns:ConnectorAutomationBinding" name="ConnectorAutomation"> <soap:address location="https://ap2.salesforce.com/services/Soap/class/ConnectorAutomation"/> </port> </service> </definitions>
Pre-Setup for Automation tool
To run the tool you need to have the Automation_tool.zip file and Maven. you can get Automation_tool.zip from here.
Please verify you have tool jar the archetype resource in the Automation tool directory
Folder structure
|-archetype-resources
|-org.wso2.carbon.extension.esb.connector.automation-1.0.0.jar
Use Connector Generator
- Navigate to the Automation tool directory through the console which is you extracted from the Automation_tool.zip file
- To run the automation tool excute the tool jar file from the same directory through the terminal.
                java -jar org.wso2.carbon.extension.esb.connector.automation-1.0.0.jar - Select your input source eg:- WSDL or Swagger (Currently it will only support with custom WSDL )
             eg:- 1
- Enter the path of the WSDL file
               eg:- /../../Automation_tool/ConnectorAutomation.wsdl - Next select the authentication method if you need additional authentication method(Current development only support with salesforce authentication which means the tool will generate the synapse template for authentication) or select No authentication to generate the connector without the additional authentication method.
               eg:-1
Now you have completed the connector developmentÂ
Test the connector
After generating the connector we will get the source code of the connector. Source code will contain the resource for the test case but you can ignore the test case if you don't want.
Build the connector then upload the connector to ESB and use the operations
Â