Mapping one document to other document

Dear All.,
im mapping few of the elements of pipelinein document to pipelineout document. all values are mapping properly except two. here im gving how im mapping:
Ex: pipe-line-in and pipeline-out have same structure(Document)
my tree view looks like
root-node(transactionData-DocumentList)
header(document)
body
-transId(String)
-date(String)
-transname(String)
-transcode(String)
-tenderDetail(DocumentList)
-tenderName(String)
-tenderamt(String)
-loyaltyCard(document)
-loyaltyCardId(DocList)
-LoyaltyId(String)
-footer(document)
in this im getting all values from pipeline-in and pipeline-out. but in tenderDetail i want only tendettype. when i map only this element im not getting that tag itself.
onething is that. above this map im mapping that tenderdetail at node level not object(String) level. using a loop im forming this document structure there im not taking tendertype and tenderamt variables , there im mapping directly tenderdetails(documentlist)—>tenderdetail(docList).
can anyone please help me in this.
thanks&Regard’s
M Kartheek

Could you upload the screen shot of the mapping. That is easier to analyse

Bhavani Shankar

Katheek,

Screen shot would help but one of two things come to mind.
It seems that you’re mapping directly from the list. If so use a loop to get down the the individual doc level and then map it.
If you have already done that try unlinking the map save the service and then relink it.
If you’ve mapped it prior to dropping it in the loop it will look fine in Developer but it will not map.

HTH

thanku for ur reply.,
here im attaching my service…
i tried with loop but when im testing(sendXML-step) its not entering into the loop. can u help in technically.


TLDTest.zip (19.0 k)

Karthik,

I loaded your package but could not able to test, since you have not provided us the sample xmlfile and also the document structure(/Req_Tbs_Qb_TransactionData)so it says record not found.

But i noticed the loop logic and find out that In-array
“/Req_Tbs_Qb_TransactionData/transactiondata/body/request/transaction/tenderdetail” may not be available in the pipeline and also where did you initialized the “temptender”.If not initialize it and loop in the Out-Aray.
So please step thru the flow and make sure the “tenderdetail” doclist is available in the pipe.

HTH,

i tried to load all of my packaged but wMUser is not allowing to load morethan 70kb. how can i load morethan 70kb?.
my in-array ::“/Req_Tbs_Qb_TransactionData/transactiondata/body/request/transaction/tenderdetail” is getting values.
Needed: how can i map only1element from a documentList which is in a DocumentType and contains 2elements.
i done this using a loop but its not enetering into the loop. in in-array i given the value(PATH) till required documentList and out-array as my new documentList which has 1element and mapped to the in-array element.
but still im getting error. is it the correct logic to do or nything else is there?.

Kartheek,

If you are seeing doclist values in the pipeline then loop over In-Array:
“/Req_Tbs_Qb_TransactionData/transactiondata/body/request/transaction/tenderdetail” try removing the Out-Array and check if the loop is executing now and inside the loop map the elements to a tempDoc and use the appendToDocumentList to create a new documentList.

HTH,

Dear RMG.,
thanks a lot to u for giving immediate responses for most of the issues. i tried the way u told but still same problem. i given “/Req_Tbs_Qb_TransactionData/transactiondata/body/request/transaction/tenderdetail” in in-array in that loop but its not entering into that loop itself.
if not this process, can u please given code snippet to map only 1element from a documentList which has morethan 1element.
Thanks&Regard’s
M kartheek

If loop is not executing when In-Arry
“/Req_Tbs_Qb_TransactionData/transactiondata/body/request/transaction/tenderdetail” then please try to investigate in the pipeline whether something is messing the structure.I believe recordlist is not populating as expecting so the loop is failing.

Kartheek,

“can u please given code snippet to map only 1element from a documentList which has morethan 1element.”

you can only try this scenario by creating a dummy docList with morethen 1element and loop thru using In-Aarry and place a tempDoc(remember these fields should be same as in original docList)inside the loop and map the elements to this and finally using
pub.list:appendToDocumentList service map service inputs tempDoc(to fromItem)and docList (to toList)and output toList to original docList.Drop the tempDoc variable once you done with appendToDocumentList.
Get out of the loop and check the pipeline of orginal DocList,you will see the data and same way continue with your old logic and create tenderdetail list.

HTH,

When dealing with such problem first check in pipeline if you actually getting the record scructure you refernce in your loop.
If you already check structure and still loop is not working check if your list has only single Item in it. If it does this can be a porblem as list with single items may be converted to record instead of array of records and will be ignored by LOOP operation. To avoid this you must ensure that whatever you LOOP over is actually is an array of elements.

here im uploading my Service logically it looks nice but i dint understand the problem. im getting the results for my Document but when i planned to take a element from that document for this i done a loop but its not entering in to the loop. can you see this and please let me know if any chnages required.
Note:If im correct you cant simulate(run) in your place but you can go throw the logic


QbTld.zip (17.7 k)

Kartheek,

We will check it and let you know…but i already noticed in your earlier uploaded pack but coudnt able to run your flow.

let c this time.

Kartheek,

I just loaded this package (QbTld) and looked in the service “qbTld:processQbTldLogReq” but i didnt find any loop logic in this service.

When you upload the package include us with some dummy sample xmlfile,documentStructure too,so that we can run a test and debug better.Also you might be using some sample for testing.

Is the input xml is largefile?,In the flow i noticed you are using pub.xml:getXMLNodeIterator,getNextXMLNode services.

In earlier uploaded TLDTest.zip package i have seen the loop step.Why is it missing in this now?

So provide us with all the necessary info for debugging.

HTH,

Also i have seen in your flow that XMLNodeToDocument service input params has arrays (items) and makeArrays to true which is fine,then you should see Transaction (DocList) in the pipe.

As Ignor mentioned please debug the doclist in the pipe before looping step.Sometimes the variables may change in the nextstep if anything dropped or overwriting…etc…these are mapping tweaky things…

Thanks,

Dear all.,
here im uploading the service and Documents and Sample XML for testing. in the Service After Populating the Document(REQ_TBS_QB_TRANSACTIONDATA then i written a loop. while compiling im getting problem that its not entering into the loop. i want to map only 1element(tendertype) to REQ_TBS_QB_TRANSACTIONDATA.


TLDTest.zip (22.4 k)

XML File for testing
Copy of 130TL246.XML (4.9 k)

Hi All,

I have a issue when I am trying to map from one IS Doc to a publishable doc. On both the sides of the mapping I have document references which refer to documents with multiple document lists.
I am doing one-to-one mapping from the IS Doc to publishable doc.
I am getting all document lists populated properly except one document list. When I started the server with debug log 10 option to check for any error with that document list I got the following message on the console:

2004-09-10 19:54:44 GMT+05:30 [ISC.0039.0001V3] POST /wm-message
2004-09-10 19:54:44 GMT+05:30 [ISC.0038.0002V3] <– User-Agent: webMethods
2004-09-10 19:54:44 GMT+05:30 [ISC.0038.0002V3] <– Accept: image/gif, /
2004-09-10 19:54:44 GMT+05:30 [ISC.0038.0002V3] <– Host: royalmail.ad.infosys.c
om:5555
2004-09-10 19:54:44 GMT+05:30 [ISC.0038.0002V3] <– Authorization: Basic U2FjaGl
uOlNhY2hpbg==
2004-09-10 19:54:44 GMT+05:30 [ISC.0038.0002V3] <– Cookie: ssnid=11a4nx7123fOpK
yaqR|UpwzYBoHQM=555512
2004-09-10 19:54:44 GMT+05:30 [ISC.0038.0002V3] <– Content-Type: application/x-
wmidatabin
2004-09-10 19:54:44 GMT+05:30 [ISC.0038.0002V3] <– Accept-Language: en_US
2004-09-10 19:54:44 GMT+05:30 [ISC.0038.0002V3] <– Content-Length: 334
2004-09-10 19:54:44 GMT+05:30 [ISC.0050.0019V2] Copy failed: No source data avai
lable: to=/WagVendorCommon.docs.broker:publishOutApplDoc/H01/D01/D04/E548_VENDOR
NBR, from=/outboundEDI/H01/D01/D04/E548-VENDORNBR
2004-09-10 19:54:44 GMT+05:30 [ISC.0038.0002V3] –> HTTP/1.0 200 OK
2004-09-10 19:54:44 GMT+05:30 [ISC.0038.0002V3] –> Content-Type: text/html; cha
rset=UTF-8
2004-09-10 19:54:44 GMT+05:30 [ISC.0038.0002V3] –> Connection: Close
2004-09-10 19:54:44 GMT+05:30 [ISC.0038.0002V3] –> Content-Length: 70536

But I checked in the results tab and I had the data in the outboundEDI/H01/D01/D04/ document list.
The problem is with this document list only.
Can somebody point out what can be the problem.

Thanks
Sachin

Sachin, it appears that the field E548_VENDORNBR may be mandatory in the target document so the error references that specific field rather than the document list D04.

Sachin,

The error that you are seeing in the log is just a Warning,you can ignore this and your mapping will work as expected.The warning reason is in the pipeline both the Document References recursive doclists may be clashing or while appendToDocumentList service step might be creating this trace.

Since you set debug log 10 it will show all the internal mapping warnings too…so set to debug log 4 it will disappear.

HTH,
RMG.

Hi,
I am a newbie in webMethods.I want to loop through 2 document lists.
Parent(Document List)
Child(Document List)
I want to loop the Parent only once(index=0).
The final xml structure should be
<parent0>
<child0>
</child0>
<child1>
</child1>
</parent0>

Can anyone plz let me know how to do this.

Thanks,
Sana

Sana,

I assume that there is a key field in the child document that links it to one of the parent documents and that the child document is sorted so that all of the child docs for a single parent are together.

The brute force approach is to use a LOOP statement to loop over the parent document list. Then in a nested sequence use a second loop command to loop over the child document list comparing its key field with the parent’s key field to determine whether the child document should be appended to the result (combined) document list. If the keys match populate a temporary document to be appended in the next step.

To add the temporary document to the result document list use the pub:list:appendToDocumentList service. Be sure to drop the temporary document from the pipeline to avoid undesirable behaviors.

A more elegant, but more difficult to understand, approach is to use the pub.xml:queryXMLNode service to search for and extract a document list of child documents containing the parent’s key field in a single step and then to append the entire list to the result document list.

Please not that following the recommended practice of using document references (instead of manually creating the input, output and result documents) really pays off when working with multiple document lists as in this example.

Please see the Integration Server Built-In Services Reference and thoroughly review the documentation on these services before starting development.

HTH,

Mark