Inputs/loading a SOAP webservice with multiple complex types

A forum for discussing DataStage<sup>®</sup> basics. If you're not sure where your question goes, start here.

Moderators: chulett, rschirm, roy

Post Reply
simc
Premium Member
Premium Member
Posts: 16
Joined: Wed Jul 22, 2015 12:10 pm

Inputs/loading a SOAP webservice with multiple complex types

Post by simc »

Hi all,

I'm looking for some direction on inputs/loading a SOAP webservice with multiple complex types.

I'm not quite sure how to explain this, so I'll use examples

The Soap service takes this:

Name
Address
Bank Name (unbounded/multiple)
Account Num (unbounded/multiple)
Balance

I'm using a webservice client stage, and can easily load and send a single datepoint for each:

Charles Sim
Ottawa, ON
...Bank of Canada
......123456
.........1550.00

I can send that singular input stream in without issue

However I can't find any kind of documentation on how to send in multiple/unbounded data, for example:

Charles Sim
Ottawa, ON
...Bank of Canada
......123456
.........$1550.00
......988889
.........$575.00
...TD Bank
......23456245
.........$11.00
......6878679
.........$500075.00

Any help, or guidance to documentation on this would be greatly appreciated. Can this even be done, or perhaps it's a limitation on datastage?

Thanks,
Charles Sim
eostic
Premium Member
Premium Member
Posts: 3838
Joined: Mon Oct 17, 2005 9:34 am

Post by eostic »

More difficult. For this you need to build thr entire soap payload yourself... the web services transformer isnt able to build a complex multi node independenly repeating xml payload.

It can be built upstream via multiple xml output stages or via the hierarchical stage. Both require testing and learning. If you have many of these kinds of jobs to build, learn the hierarchical stage. If just this one or a few, learn how to pice together multiple xml output stages. Find the xml best practices document me tioned througjout the forum here. And search other posts that talk anout building and then passing a whole measagr to the web services stage

Ernie
Ernie Ostic

blogit!
<a href="https://dsrealtime.wordpress.com/2015/0 ... ere/">Open IGC is Here!</a>
simc
Premium Member
Premium Member
Posts: 16
Joined: Wed Jul 22, 2015 12:10 pm

Post by simc »

So a couple more questions around this.

I've written code to create the entire XML body of the SOAP request, so now how do I send it to the WS Client stage, the stage wants individual fields, Name, Addy, Phone, etc, I just want to send it BODY.

Also, is there a way to view the request that is being generated and sent? To help debug any issues? otherwise I'm just putting data into a black box and hoping it comes out correctly.
eostic
Premium Member
Premium Member
Posts: 3838
Joined: Mon Oct 17, 2005 9:34 am

Post by eostic »

Look at the special property in the input link for "user defined" message. Have that point to the single large varchar column that you built upstream with the whole payload.

...and the best thing to do is to first test this by:

1. run your service via SOAPui or other tool.
2. copy a working payload into the clipboard
3. paste it into a simple upstream transformer as a simple string
4. test the user defined message with this hard coded payload until you have it working perfectly

...then you know exactly what you have to build manually.

Ernie
Ernie Ostic

blogit!
<a href="https://dsrealtime.wordpress.com/2015/0 ... ere/">Open IGC is Here!</a>
simc
Premium Member
Premium Member
Posts: 16
Joined: Wed Jul 22, 2015 12:10 pm

Post by simc »

That's Awesome Ernie Thank you... it worked.

Now I need to figure out how to access and read the response, seems I can't have an output flow from the WS CLient.

Thoughts on that?
eostic
Premium Member
Premium Member
Posts: 3838
Joined: Mon Oct 17, 2005 9:34 am

Post by eostic »

:) same concept in reverse, assuming that the body is also a complex xml doc.

Put one big column on the output link.....like "mySOAPresponse" longvarchar and put a single "/" (slash) in the Description property. No other cols.

Then use the same "user dfined message" pulldown to select that column.

Send "that" to the xmlInput Stage or hierarchical stage to parse it.

Ernie
Ernie Ostic

blogit!
<a href="https://dsrealtime.wordpress.com/2015/0 ... ere/">Open IGC is Here!</a>
Post Reply