BusinessObjects Board

SOAP request with recursive XML tags not working

Hi,

DS version - DS XI 3.2 SP1

I am trying to call a SOAP webservice using a webservice Datastore. The input request format has a recursive tag (feature within a feature)

<?xml version="1.0" encoding="UTF-8"?>

<SOAP-ENV:Envelope xmlns:SOAP-ENV=“http://schemas.xmlsoap.org/soap/envelope/” xmlns:ns1=“http://namf09.anzlic.org.au” xmlns:ns2=“http://ws.namf09.anzlic.org.au”>
SOAP-ENV:Body
ns2:execute
<ns1:requests id=“200” version=“1.0”>
ns1:authentication
ns1:usernameusername</ns1:username>
ns1:password********</ns1:password>
</ns1:authentication>
ns1:features/
<ns1:request id=“200.1” name=“executeWorkflow”>
ns1:features
<ns1:feature name=“workflow”>
<ns1:feature name=“name”>
ns1:featureValuegetResults</ns1:featureValue>
</ns1:feature>
<ns1:feature name=“parameters”/>
</ns1:feature>
</ns1:features>

ns1:address
ns1:unstructuredAddressLine15th avenue manhattan newyork</ns1:unstructuredAddressLine1>
</ns1:address>
</ns1:request>
</ns1:requests>
</ns2:execute>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

  1. Input to my dataflow is an XML (Which has been created using the default SOAP request from the SOAP UI tool). While creating the XML Schema (For input file) I have given a circular level as 1 (Default is 0) to show the recursive tags. The definition which gets created is-





  2. While creating the webservices Datastore I have mentioned the XML recursion level as 1 (Default is 0). When I do this I can see that feature gets repeated within feature tag and is in sync with Source XML format.

  3. I am running this job from the command line in server to generate the axis2_log.txt file . axis2_log shows my SOAP request in the below format -

<?xml version="1.0" encoding="UTF-8"?>

<soapenv:Envelope xmlns:soapenv=“http://schemas.xmlsoap.org/soap/envelope/”>
soapenv:Body
<ns3:execute xmlns:ns3=“http://ws.namf09.anzlic.org.au” xmlns:ns2=“http://namf09.anzlic.org.au”>
<ns2:requests version=“1.0” id=“200”>
ns2:authentication
ns2:usernameusername</ns2:username>
ns2:passwordpassword</ns2:password>
</ns2:authentication>
<ns2:features />
<ns2:request name=“executeWorkflow” id=“200.1”>
ns2:features
<ns2:feature name=“workflow” />
</ns2:features>
ns2:address
ns2:statusVAL</ns2:status>
ns2:postcode9999</ns2:postcode>
ns2:unstructuredAddressLine15th avenue manhattan newyork</ns2:unstructuredAddressLine1>
ns2:deliveryPointIdentifier88888888</ns2:deliveryPointIdentifier>
</ns2:address>
</ns2:request>
</ns2:requests>
</ns3:execute>
</soapenv:Body>
</soapenv:Envelope>

It can be seen that the the 2nd feature tag is lost and is not part of the SOAP request.
I have tried loading my source file into a DB table and there is no issue in that. I just feel DS is creating the first instance of feature tag in SOAP request and not looking for nay more instances of the same tag.


sominya_bajpai (BOB member since 2008-01-24)

To me it looks like your first two elements are overlapping.

Where you have:

<ns1:features> 
<ns1:feature name="workflow"> 
<ns1:feature name="name"> 
<ns1:featureValue>getResults</ns1:featureValue> 
</ns1:feature> 
<ns1:feature name="parameters"/> 
</ns1:feature> 
</ns1:features>

Try this:

<ns1:features> 
<ns1:feature name="workflow"/> 
<ns1:feature name="name"> 
<ns1:featureValue>getResults</ns1:featureValue> 
</ns1:feature> 
<ns1:feature name="parameters"/> 
</ns1:feature> 
</ns1:features>

instead?


Simple Simon :uk: (BOB member since 2007-09-07)

Thanks Simon. We eventually found out the solution-

Issue-
When I created the datastore I created it with Recursion level 0, and imported the function. I later changed the Recursion level to 1 and saved it .I then re-imported the function which showed me recursive feature XML tags.

–This didn’t work (SAP DS was loosing the nested feature tag), although the Request_Schema showed that it had the recursive feature tag

Solution-
Later I decided to create a new Datastore and make all the config changes (like path of AXIS/C file and Recursion level) before making the first save.
So Here I had a datastore which looks exactly the same as my old datastore (which was not working), the only difference being I saved all the config changes when creating it.

I then simple deleted my old function call in Dataflow and replaced it with the function call from new datastore and it worked :-)!

==

This looks like a bit of a DS bug to me. I have seen other posts where webservices datastore when moved from dev to prod and which require a URL change because of the move don’t reflect the new URL. People had to create a new datastore in the prod repository.

Thanks
Som


sominya_bajpai (BOB member since 2008-01-24)

Glad you got it sorted - I was a bit wide of the mark then? LOL

I’ve found DS 3.2 to have a few issues in the area of web services / adapters. Desperately want to upgrade :reallymad: but, it’s not my call. :hb:

Ho, hum! :nopity:


Simple Simon :uk: (BOB member since 2007-09-07)

:hb: :nonod:


paulmartell (BOB member since 2015-10-21)