Catch RNIF ACK

We do not have the RN package from Wm but we don’t see why we need it. We send a MIME order to a customer they send a RNIF ACK back through a reverse invoke server. When I use getTransportInfo() all of the HTTP header information is there with a content of 7055, but there is no content anywhere? I figured this would also catch the content? If not how do I get the content out?

Thanks!:eek:

getTransportInfo() will not extract the content…Basically when the document hits your service the pipeline should have some document(node) or bytes or contentStream and you need to extract the data from it.

What you have in the pipeline bizdoc??

Can you elaborate on your process flow?

HTH,
RMg

I have the receiving service with a object called node as input. The first step is getTransportInfo(), then I run a save to pipeline to see what is there. This is what I get.

[SIZE=2][COLOR=#008080]

<?[/color][/size][SIZE=2][COLOR=#3f7f7f]xml [/color][/size][SIZE=2][COLOR=#7f007f]version[/color][/size][SIZE=2]=[/size][SIZE=2][COLOR=#2a00ff]"1.0" [/color][/size][SIZE=2][COLOR=#7f007f]encoding[/color][/size][SIZE=2]=[/size][SIZE=2][COLOR=#2a00ff]"UTF-8"[/color][/size][SIZE=2][COLOR=#008080]?>

[/color][/size][SIZE=2]

[/size][SIZE=2][COLOR=#008080]

<[/color][/size]IDataXMLCoder version=“1.0”[SIZE=2][COLOR=#008080]>

[/color][/size][SIZE=2]

[/size]<record javaclass=“com.wm.data.ISMemDataImpl”[SIZE=2][COLOR=#008080]>

[/color][/size][SIZE=2]

[/size]<value name=“fileName”>\usadanws80\d$\Share\PIDX\in\Chevron\test\PipeLine\receiveChevronXMLTest.xml</value[SIZE=2][COLOR=#008080]>

[/color][/size][SIZE=2]

[/size]<record name=“transport” javaclass=“com.wm.data.ISMemDataImpl”[SIZE=2][COLOR=#008080]>

[/color][/size][SIZE=2]

[/size]<record name=“http” javaclass=“com.wm.data.ISMemDataImpl”[SIZE=2][COLOR=#008080]>

[/color][/size][SIZE=2]

[/size]<value name=“requestUrl”>/invoke/PxPIDX.incoming:receiveChevronXMLTest</value[SIZE=2][COLOR=#008080]>

[/color][/size][SIZE=2]

[/size]<value name=“query”></value[SIZE=2][COLOR=#008080]>

[/color][/size][SIZE=2]

[/size]<record name=“requestHdrs” javaclass=“com.wm.data.ISMemDataImpl”[SIZE=2][COLOR=#008080]>

[/color][/size][SIZE=2]

[/size]<value name=“x-RN-Response-Type”>async</value[SIZE=2][COLOR=#008080]>

[/color][/size][SIZE=2]

[/size]<value name=“MIME-Version”>1.0</value[SIZE=2][COLOR=#008080]>

[/color][/size][SIZE=2]

[/size]<value name=“Date”>19 May 2008 09:56:52 GMT</value[SIZE=2][COLOR=#008080]>

[/color][/size][SIZE=2]

[/size]<value name=“User-Agent”>TIB-BusinessConnect-RosettaNet/2.0</value[SIZE=2][COLOR=#008080]>

[/color][/size][SIZE=2]

[/size]<value name=“Accept”>/</value[SIZE=2][COLOR=#008080]>

[/color][/size][SIZE=2]

[/size]<value name=“Host”>********</value[SIZE=2][COLOR=#008080]>

[/color][/size][SIZE=2]

[/size]<value name=“Content-type”>multipart/related; type=“multipart/related”; boundary="_cBpddwd-OvB5-39mWzzyZr-zzw"</value[SIZE=2][COLOR=#008080]>

[/color][/size][SIZE=2]

[/size]<value name=“x-RN-Version”>RosettaNet/V02.00</value[SIZE=2][COLOR=#008080]>

[/color][/size][SIZE=2]

[/size]<value name=“Content-Length”>7055</value[SIZE=2][COLOR=#008080]>

[/color][/size][SIZE=2]

[/size]</record[SIZE=2][COLOR=#008080]>

[/color][/size][SIZE=2]

[/size]</record[SIZE=2][COLOR=#008080]>

[/color][/size][SIZE=2]

[/size]<value name=“protocol”>REVINVOKE</value[SIZE=2][COLOR=#008080]>

[/color][/size][SIZE=2]

[/size]</record[SIZE=2][COLOR=#008080]>

[/color][/size][SIZE=2]

[/size]</record>
</
IDataXMLCoder>


Im not sure what I have to do to catch the content piece?

[SIZE=2][COLOR=#008080]Thanks for your help!

[/COLOR][/size]

If you see the “node” then use xmlNodeToDocument service in the beginning step and map the service input node to it and the output Document will have the content (IDATA)

HTH,
RMG

There isnt’ a node though it seems. My receiving service has a “node” as input assuming it will get caught.

I have the following logic in my service.

SEQ (SUCCESS)
SEQ(FAILURE)
xmlNodeToDocument with the input node mapped in
getTransportInfo()
savePipeLineFile
SEQ(DONE)
getLastError()
savePipeLineFile
smtp

It doesn’t error out because I never get an email so it runs through the code ok. But the save pipeline file still has no IDATA in it? I’ve pasted the pipeline again…

<?xml version="1.0" encoding="UTF-8"?> \\usadanws80\d$\Share\PIDX\in\Chevron\test\PipeLine\receiveChevronXMLTest.xml /invoke/PxPIDX.incoming:receiveChevronXMLTest async 1.0 21 May 2008 08:58:17 GMT TIB-BusinessConnect-RosettaNet/2.0 */* ************** multipart/related; type="multipart/related"; boundary="73e-rO3-0wHRaU39ouzzyZr-zzw" RosettaNet/V02.00 7055 REVINVOKE

Thanks again for any assistance.

See you cannot depend on the savePipeline…So step thru the flow and see the output of xmlNodeToDocument (document IDATA) has the content in the pipeline.

Put the code this way

savePipeLineToFile
restorePipeLineToFile(disable)
xmlNodeToDocument (with the input node mapped in)
getTransportInfo()

and then disable savepipeline and enable the restorePipeline and step thru the flow to see the output of node to document service for debugging.

Are you able to see the content at this point??

Is your flowservice invoked directly when you receive the RNIFAck from http??

HTH,
RMG

You can’t save an object like that in the pipeline. When you write out savePipeline it doesn’t save the object because its a reference to an object in memory. I did what you said and here is the pipeline after the savePipeline.

<?xml version="1.0" encoding="UTF-8"?> \\usadanws80\d$\Share\PIDX\in\Chevron\test\PipeLine\receiveChevronXMLTest.xml

The reference to the object is not there. This is soooo annyoing…

For XCBL we have a nother customer sending us an acknowlegement perfectly fine. We use the logic stated below. We have the node object as the service input, then when I run xmlNodeToDocument there is data there. It just seems we can’t get the RNIF data.

Yes objects/streams connot be saved…you can track with getTransportInfo but since this is RNIF data it behaves differently as it is multipart related (application/Rosettanet)

To extract the RNIF data you need to have WmRosettanet or PIDX Adapter and its services to extract the RNIF headers/payload (ServiceContent)

XCBL is differrent from RNIF PIP (RA-ReceiptAcknowledgment) or PIDX that you are receiving.but both are XML standards.

HTH,
RMG

Hi All,

We are also trying to receive RNIF ack from a customer in the same approach described in the above post. But we could not figure out how to catch the content. Let us know if you have identified the way to get the content.

Thanks in advance.

Try using pub.flow:tracePipeline at the same point as you have savePipelineToFile.

My guess is that the input is going into your service as a stream, and savePipelineToFile doesn’t capture streams. tracePipeline will write the names of all the pipeline variables to your server log, which will allow you to see what’s in the pipeline that savePipelineToFile isn’t capturing.

I agree with Eric and trace the pipeline for the best results and peek the vars.