I am using the Call Web Service smart service and providing the following WSDL f

I am using the Call Web Service smart service and providing the following WSDL for it:
<?xml version="1.0" encoding="ISO-8859-1"?>

<wsdl:definitions xmlns:soap="schemas.xmlsoap.org/.../"
          xmlns:tns="cpilookup.ws.soa.cheth.org"
          xmlns:cm="cpilookup.ws.soa.cheth.org/schema"
          xmlns:xs="www.w3.org/.../XMLSchema"
          xmlns:http="schemas.xmlsoap.org/.../"
          xmlns:wsdl="schemas.xmlsoap.org/.../"
          targetNamespace="cpilookup.ws.soa.cheth.org">

          <!-- Type definitions for input- and output parameters for webservice -->
          <wsdl:types>
                    <xs:schema targetNamespace="cpilookup.ws.soa.cheth.org">
                              <xs:import namespace="cpilookup.ws.soa.cheth.org/schema"
                              schemaLocation="patient_info.xsd"></xs:import>
                              <xs:element name="inputCPILookup">
                                        <xs:complexType>
                                                  <xs:sequence>
                                                            <xs:element type="cm:personInformation" name="person"/>
                                                  </xs:sequence>
                                        </xs:com...

patient_info.xsd

OriginalPostID-97094

OriginalPostID-97094

  Discussion posts and replies are publicly visible

  • ...plexType>
                                  </xs:element>
                                  <xs:element name="outputCPILookup">
                                            <xs:complexType>
                                                      <xs:sequence>
                                                                <xs:element type="xs:string" name="code"/>
                                                      </xs:sequence>
                                            </xs:complexType>
                                  </xs:element>
                        </xs:schema>
              </wsdl:types>

              <!-- Message definitions for input and output -->
              <wsdl:message name="inputCPILookup">
                        <wsdl:part name="in" element="tns:inputCPILookup"/>
              </wsdl:message>
              <wsdl:message name="outputCPILookup">
                        <wsdl:part name="out" element="tns:outputCPILookup"/>
              </wsdl:message>

              <!-- Port (interface) definitions -->
              <wsdl:portType name="CPILookupEndpoint">
                        <wsdl:operation name="CPILookup">
                                  <wsdl:input message="tns:inputCPILookup"/>
                                  <wsdl:output message="tns:outputCPILookup"/>
                        </wsdl:operation>
              </wsdl:portType>

              <!-- Port bindings to transports and encoding - HTTP, document literal encoding is used -->
              <wsdl:binding name="CPILookupBinding" type="tns:CPILookupEndpoint">
                        <soap:binding tran...
  • ...sport="schemas.xmlsoap.org/.../>
                        <wsdl:operation name="CPILookup">
                                  <soap:operation
    soapAction="cpilookup.ws.soa.cheth.org/CPILookup"
    style="document"/>
                                  <wsdl:input>
                                            <soap:body parts="in" use="literal"/>
                                  </wsdl:input>
                                  <wsdl:output>
                                            <soap:body parts="out" use="literal"/>
                                  </wsdl:output>
                        </wsdl:operation>
              </wsdl:binding>

              <!-- Service definition -->
              <wsdl:service name="CPILookupEndpointService">
                        <wsdl:port name="CPILookupService" binding="tns:CPILookupBinding">
                                  <soap:address location="localhost:9080/.../>
                        </wsdl:port>
              </wsdl:service>

    </wsdl:definitions>

    The schema is pretty simple. It looks like:

    <xs:schema attributeFormDefault="unqualified"
              elementFormDefault="qualified"
              xmlns:xs="www.w3.org/.../XMLSchema"
              targetNamespace="cpilookup.ws.soa.cheth.org/schema"
              xmlns:cmx="http://cpilookup.w...
  • ... s.soa.cheth.org/schema">

              <xs:complexType name="personInformation">
                        <xs:sequence>
                                  <xs:element minOccurs="1" maxOccurs="1" name="firstName" type="xs:string"/>
                                  <xs:element minOccurs="1" maxOccurs="1" name="lastName" type="xs:string"/>
                                  <xs:element minOccurs="0" maxOccurs="1" name="middleName" type="xs:string"/>
                                  <xs:element minOccurs="0" maxOccurs="1" name="gender" type="cmx:typeGender"/>
                                  <xs:element minOccurs="0" maxOccurs="1" name="birthDate" type="cmx:typeDateOfBirth"/>
                                  <xs:element minOccurs="0" maxOccurs="1" name="ssn" type="xs:string"/>
                        </xs:sequence>
              </xs:complexType>

              <xs:complexType name="personAddress">
                        <xs:sequence>
                                  <xs:element minOccurs="0" maxOccurs="3" name="streetAddress" type="xs:string"/>
                                  <xs:element minOccurs="0" maxOccurs="1" name="city" type="xs:string"/>
                                  <xs:element minOccurs="0" maxOccurs="1" name="state" type="xs:string"/>
                                  <xs:element minOccurs="0" maxOccurs="1" name="country" type="xs:strin...
  • ... g"/>
                                  <xs:element minOccurs="0" maxOccurs="1" name="postalCode" type="xs:string"/>
                        </xs:sequence>
              </xs:complexType>
              <xs:simpleType name="typeDateOfBirth">
                        <xs:restriction base="xs:int">
                                  <xs:minInclusive value="19000101" />
                                  <xs:maxInclusive value="29000101" />
                        </xs:restriction>
              </xs:simpleType>
              <xs:simpleType name="typeGender">
                        <xs:restriction base="xs:string">
                                  <xs:enumeration value="M" />
                                  <xs:enumeration value="F" />
                                  <xs:enumeration value="U" />
                        </xs:restriction>
              </xs:simpleType>
    </xs:schema>

    When I try to import this WSDL into the smart service, I get the following error:

    An error occurred while processing the WSDL. The WSDL may contain invalid or unsupported elements. (APNX-1-4040-000)

    This WSDL will import into SoapUI with no errors. I don't see anything non-standard about it or anything that should not be supported by Appian. Any suggestions?

    Thanks.
  • Try removing the portType elements from your wsdl.
  • Thanks Patty. I tried that and a couple other things. Turns out it doesn't appear to be finding the wsdl at all. The wsdl and the xsd are stored locally on my machine so instead of a URL, I have something like file://cpi_lookup.wsdl as the location of the wsdl file. It doesn't appear to be finding it. Is there a way to have Appian find a locally stored wsdl file rather than pointing it to a URL where the web service itself is hosted?
  • Try enabling the welcome-content folder in standalone.xml (<virtual-server name="default-host" enable-welcome-root="true">). Then, if you put the WSDL file in the welcome-content folder, you should be able to access your WSDL by pointing your Web Service node to http://<your_host_name>/<wsdl_file_name>
  • Thanks Evan. That was exactly what I was looking for. Much appreciated.