[teiid-dev] Modeling SOAP services

John Doyle jdoyle at redhat.com
Mon Aug 16 15:02:19 EDT 2010


Moved from private thread to mailinglist:

Close, but in my model the user executes something more like this:

select t* from (EXEC getRequestXML(...)) as in, (EXEC execute(in) as out, (EXEC getResponseValues(out) as t))

and in this case getResponseValues() is using XMLTABLE to create the procedure result.  I can also get a lot more complex if either the request or response requires hierarchy with multiplicity, the it could become:

select t* from (EXEC getParentRequest((EXEC getChildRequest(...) as child), ...) as parent,....

In regards to using access patterns on the inputs, I would only use them in the event that multiplicity is >= 1.  Real world WSDLs are pretty spotty in describing what's actually required for a service and what's not.
 
~jd

----- "Ramesh Reddy"  wrote:

> John,
> 
> I am trying understand all this myself, as I am starting to write the
> XMLTABLE blog. Yours is most advanced case in that!
> 
> For some reason, this model of two procedures, that user need to
> execute
> is not sounding right to me. So, let me understand this correctly.
> User
> executes some thing like this right?
> 
> select t* from (EXEC getRequestProcedure(...)) as in, (EXEC
> getResponse(in))
> 
> Please correct me, if understanding is wrong.
> 
> thinking out loud - why not create response table based on the
> response
> XML using XMLTABLE and have access pattern on the all the scalar
> input?
> The one issue I see is input and output elements not matching. 
> 
> Ramesh..
> 
> On Mon, 2010-08-16 at 10:13 -0400, John Doyle wrote:
> > Hi guys,
> > 
> > Last week I worked on changing the WSDL to source importer to work
> with the new system functions.  I've attached a model project that
> contains a model for one operation of a WSDL in order to show the tact
> I've taken, and want to get some feedback from you.  It's not complete
> yet, I need to add namespaces to the SQL, inputs/output for child
> element XML, etc, but wanted to get feedback on the overall concept.
> > 
> > The importer will create one physical model for each endpoint
> defined in the WSLD, since each endpoint might need to be bound to a
> different URL.  I intended this physical model to used across the
> generated views.
> > 
> > The importer then creates a schema to contain views for each
> operation.  I added the schemas to the model because operations often
> reuse the same type/element definitions across operations, but not
> necessarily with the same XPaths.  Containing the views within schema
> allow me to create multiple views for any type/element with
> encountering naming clashes.
> > 
> > The views are created by parsing the declaration of the request and
> response messages.  A request message results in a procedure with
> scalar inputs that produces and XML result.  A response message
> results in a procedure with XML in and scalar results.  The procedures
> are not yet accounting for child elements for messages with hierarchy
> and multiplicity.
> > 
> > Does this make sense, or did you have a different/better vision for
> how a user would model around the new language features?  As it stands
> right now, I have been unable to create a procedure that executes a
> service with this structure.  Could be my limited abilities with SQL,
> or that I've missed some limitation around our use of the XML type. 
> I've tried passing the requests to the physical procedure and
> responses from the physical procedure using nested selects, and tried
> holding them in variables to pass them, without success.  I typically
> end up with a validation error because I'm using a clob as a
> criteria.
> > 
> > I appreciate any and all feedback.
> > 
> > ~jd


More information about the teiid-dev mailing list