SOAP #1 Uniface Call-in

Author: (George Mockford)

A second project I've been working on that I'd like to share is an addition to our SOAP interface.

The project is in three parts the first of which I hope helps address Uniface call-in using complex types.  In 9.5 the new structs proc instruction allows you to adjust or manipulate practically any complex type structure but at the moment it is not a part of or allowed in the signature which forms the basis of our SOAP interface.  So the goal of this project is to make the only other complex or nested structure that we have available namely xmlstreams, visible in the wsdl.

The attached prototype will allow you to generate wsdls that represent an xmlstream as a SOAP compliant series of complex nested types. In addition I've added a few 'refinements' to the process to make the resulting output more in keeping with SOAP standards.

This is part #1 of three. Parts #2 and #3 will deal with Uniface call out and authentication and encryption.

I've released this part earlier than I at first anticipated as once again I'm looking for feedback on whether this approach is practical and desired.......or not?

So although it works be aware that I have not had time yet to refactor the code so you may encounter a glitch or three.

Another reason for this post is that I do need your assistance as I need examples of external wsdls (non Uniface) for validating Part#2.

I'm using SOAPui to generate and test with but I need some real world examples (other than Amazon AWS) so if you have some can I beg a favor and that you forward them to my Compuware email please. I simply need the wsdls.

And as always feedback, good or bad, are most welcome.

Happy new year





  1. Quick update

    forgot to add that, for the moment, you have to change one part of the generated wsdl as I haven't given you the second routine yet.

    after generation change this line and replace the "unbounded"  with "1" so for this

         <xsd:element name="PARMS" minOccurs="0" maxOccurs="unbounded">

    to this

    <xsd:element name="PARMS" minOccurs="0" maxOccurs="1">

    The reason is that there is no min or max in DTD's and where there is a single level complextype, i..e no nested complextypes,  the Uniface /sti routine interprets this as meaning an entity parameter which is wrong it needs to be a string.

    Another reason we should ditch DTDs and replace with schema's

    Other than that you are good to go.


    Author: George Mockford (
  2. Refreshed the download as I missed the uutilities library in the original download. Thanks to Rogier and Eddy for pointing that out.

    Author: George Mockford (
  3. Hi

    I didn't see your project. We've in project to integrate several externe web services, with complex types (We just switched to the 9.5 so I just start the job now). I'll see to get the authorization to give you the wsdl of our partner.

    We also have in project to modernize our old own web services (rpc), so doing it with real state of the art types definitions is a better solution for me. I'll keep an eye to your project.

    Kind regards,

    Author: richard.gill (