Bug with pubwebdocuementToRecord

submit an xml document to TN, docType is recognized, processing rule is called, which executes flow service.

The flow serive is one step wm.tn.doc.xml:bizdocToRecord. now bizdocToRecord will in turn call pub.web:documentToRecord and that is where I am seeing the problem.

Problem is I have a record list equivalent stucture in my xml instance document and when docuementToRecord step is called the make arrays parameter is false and therefore will not build the record list in the boundNode record. I get the last item from my xml structure as the only item in the record list in the bound node.

What is the problem here?

–steve

Have you set the “Format as a record:” field on the Options tab of the doc type definition in TN? That should do the trick.

yes I have, I thought of that too, but I still have the problem. I have this same problem, using the same docuement and record with this service:
getFile
bytesToString
stringtoDocument
wm.ip.util:documentToRecord

Again in this follow service on the wm.ip.util:documentToRecord step I am setting the parameter recordName to the record I am using, but still not getting the recordList created correctly.

any thoughts?

ps: in the original post, bizdocToRecord is calling pub.web:documentToRecord. So it looks like both the documentToRecords have the same problem or its my IS record

Steven - We have noticed similar behavior. Try adding those elements from your input XML Document that need to be a RecordList in the “arrays” ServiceIn variable of documentToRecord. Also like you are doing, make sure that makeArrays is FALSE (which I think is the default). That seemed to do the trick for us.

HTH,
Rajesh

If there is a record input to the recordName parameter of 4.6 that has a StringList or RecordList defined as one of the fields, pub.web:documentToRecord should create an array even when there is only one entry in the given XML document.

If it does not do that, please send the Record definition and XML document to support@webmethods.com

Rajesh,

on the wm.ip.util:documentToRecord there is no ‘arrays’ parameter, only the pub.web:documentToRecord has the arrays parameter and the pub.web:documentToRecord is called by the service BizdocToRecord. Are you saying, to modify the BizdocToRecord built-in service to add the recordsList that I want to the “Arrays” parameter? How exactly do I set the “arrays” parameter? and yes the MakeArrays parameter is set to false, if I change it to true I get the desired results, just wonder why its set to false by default?

Also, on the wm.ip.util:documentToRecord, being the only service in parameter is the recordname, do you know a work around for this service? It has the same problem.

–steve

Here ia my suggetion.Instead of using wm.tn.doc.xml:bizdocToRecord
service in flowservice which processingRule invokes,We can take
bizdoc object as input.Call wm.tn.doc:getContentPartData,
there we set PartData as xmldata.It returns partContent as output
object.Map this object to bytes object in service byteToString
service and then rest of process.

Thanks,
Srini

Hi Rob is right. Just make the first parameter in the option tab of doc type to yours record structure. Because the getRecordBluePrint will take the parameter from that field and use it in document to record service.

Hi there.

I reported this bug to wM. In the meantime I’be been using a wrapper service for bizDocToRecord.

Today wM sent me TN fix90 zip. Basically they have dropped arrays parameter…

Anybody has tested by any chance this fix?

Regards