WSDL flow service

I have a big problem with WSDL files and webmethods… I’m suppose to develope a SOAP service that is already defined in a WSDL file. This is not the normal way to do stuff. In the normal case I would create the flow service first and later on generate the WSDL file from the flow service… but in this case it is suppose to go the other way around. This is the WSDL file that I have:

<?xml version=“1.0” encoding=“UTF-8”?>
<wsdl:definitions targetNamespace="https://something" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:apachesoap="http://xml.apache.org/xml-soap" xmlns:impl="https://something" xmlns:intf=“something” xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd=“http://www.w3.org/2001/XMLSchema">
<wsdl:message name=“executeResponse”>
<wsdl:part name=“executeReturn” type=“xsd:string”/>
</wsdl:message>
<wsdl:message name=“executeRequest”>
<wsdl:part name=“kdnNr” type=“xsd:string”/>
<wsdl:part name=“xmldata” type=“xsd:string”/>
<wsdl:part name=“signature” type=“xsd:string”/>
</wsdl:message>
<wsdl:portType name=“RechercheImpl”>
<wsdl:operation name=“execute” parameterOrder=“kdnNr xmldata signature”>
<wsdl:input message=“intf:executeRequest” name=“executeRequest”/>
<wsdl:output message=“intf:executeResponse” name=“executeResponse”/>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name=“RechercheSoapBinding” type=“intf:RechercheImpl”>
<wsdlsoap:binding style=“rpc” transport=“http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name=“execute”>
<wsdlsoap:operation soapAction=””/>
<wsdl:input name=“executeRequest”>
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="http://something" use=“encoded”/>
</wsdl:input>
<wsdl:output name=“executeResponse”>
<wsdlsoap:body encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="https://something" use=“encoded”/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name=“RechercheImplService”>
<wsdl:port binding=“intf:RechercheSoapBinding” name=“Recherche”>
<wsdlsoap:address location=“HERE IS MY ADRESS LOCATION TO BE SET”/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>

The only thing the other party wants from me is to specify the address to the soap service…

Can anyone help me.

  1. Get a couple sample Soap Request and Soap Response messages from your partner. If they are dictating the WSDL, then they have an existing client and a reference implementation of the service, so they can give you some test cases. You can use a SOAP sniffer to verify your service puts the same stuff on the wire and will help building regression test cases.

  2. Fill in the location with some URL, so the WSDL is syntactically correct. It doesn’t matter what for now. Read on.

  3. Generate a Web Service Connector from the WSDL using Developer New wizard.

  4. Delete the body of the generated Flow service for the operation(s) you have to implement.

  5. Delete the “auth” input parameter and the Soap Fault output parameter those are only needed for a client.

  6. Take the values from one of their sample SoapResponse message and hardcode them as output values. Looks like there is one outputs to the execute operation. You now have a service that should “work”. Save this package off for debugging later.

  7. If your partner won’t give you their client to test with, generate another Web Service Connector and create tests cases with it.

  8. Implement the real algorithm to get from the three inputs to the output. Once your tests or the partner test client works, life will be good.

HTH,
Fred