I’m concerned that I’m not defining my services and document input correctly due to issues I’m having with the generation of a Web Connector. Here’s what I’ve done:
I’ve created a custom soap processor with the following goals:
- Processor dynamically determines which target flow service to call from soapDataRequest
- Processor dynamically creates input document for target flow service and invokes flow service
- Processor dynamically maps target flow service output and formats into soapDataReply
I’ve assumed that I can accomplish this with the following naming conventions:
- Target Service Name = “myService”
- Input Document Type Name = “myServiceInput”
- Output Document Type Name = “myServiceOutput”
I’ve performed the following:
- Generated WSDL using documents types defined above
- Created myService with a single doc reference as input (myServiceInput) and a single doc reference as output (myServiceOutput)
- Gave myService a namespace of http://myTest.com/ and a local name of myservice
- All fields in myServiceInput reference namespace http://myTest.com/myservice
With these conventions, I assume that any client that uses my WSDL will have a root node named myService with child nodes containing the fields defined in myServiceInput. I can then use pub.xml:queryXMLNode to get the root node’s name (myService) and use that to build an instance of “myServiceInput” and to invoke “myService”.
To test the WSDL I’ve created a Web Connector and I’ve already run into problems. First, the flow service generated by Developer is wrong. It attempts to call the following sequence of services once for every field defined in myServiceInput. I have four string fields defined, and it attempts to call the following sequence four times:
Furthermore, pub.xml:documentToXMLString doesn’t even map anything. I resolved the problem by creating an instance of myServiceInput in the pipeline and mapping that into pub.xml:documentToXMLString with the namespace http://myTest.com/myservice. The Web Connector now invokes my service correctly.
Since I’m not going to be developing the client(s) that consume my services (a sub-contractor on our project will be doing that) I’m very concerned that something is wrong with my WSDL as the result of how I’ve implemented the document types, services, etc. I’ve attempted to use Microsoft’s SOAP Toolkit and VBScript in an ASP page to import my WSDL file but the client generates errors indicating that the wrong number of parameters are provided (though I’ve confirmed that the XML document I’ve built is identical in structure to the SOAP request provided by the Web Connector). I have been able to successfully prototype the SOAP Toolkit by changing myServiceInput such that it contain a single document field named prefix:, where the document field contains all of my input fields.
Does anyone see anything wrong with my approach above?
Can anyone recommend a better way to test my WSDL file?
myService.wsdl.txt (3.45 KB)