Appreciate advice here
I have a B2B application where
- File Polling Port retrieves files from a Unix Folder
- The File Polling Port processing service (call service A) will
receive the ffdata object, get the content, then invoke routeXml to
post the document content to TN
- TN, based on sender/receiver/document type, will ‘SYNC’ invoke
a processing flow service (call service B)
- The processing service, will process the content of bizdoc
My question is
- Is there any way to get webMethods TN to pass the bizdoc to the
processing service B without the content (as Bytes).
Our issue is some of the input files are large in size (4MB +) and
TN, when passing the bizdoc to processing service B, is passing the
content as Bytes. I would like to see whether I can just get TN
to pass to service B the bizdoc only(without content as bytes), and
then within service B, retrieve the content part as Streams
Note: We are not using TN Large Document Processing at all and since
it is system wide setting. We would like to know whether there is any other solution before we starts TN Large Document Processing and retrofit tons of existing application
Unfortunately to accomplish what you want you need to have LargeDoc configured. Then TN does not push the entire contents to you. You would then use getContentPartData, followed by streamToString.
If someone else knows a work around I’m very interested in hearing also.
Normally we try to avoid largeDoc processing as much as possible, but I guess you already know that 8) It kills performance, makes the whole processing logic a bit harder to understand, and lastly requires you to figure out where best to “chop” the document so that you don’t end up with multiple levels of “largeDocs”.
I’m guessing there’s two alternatives for you, w/o having to change the BigDocThreshold:
persist only the filename into bizDoc, and have your processing service read in the file yourself. Definitely ugly, and you won’t have a record of what exactly you’ve processed in TN.
I’m not sure if this will work, but might worth a try – Construct bizDoc yourself in step 2 (File Polling invoked service). Call wm.tn.doc:createNewEnvelope, and then wm.tn.doc:addContentPart, supplying storageType and storageRef. My thinking is by supplying the storage parameters, TN will treat the document as largeDoc irregardless of the BigDocThreshold. Unfortunately I don’t have time to try this, so I can offer it up as a possibility. 8(
Lastly, both RosettaNet and EDI (for TN and EDIINT) offer additional services to deal with largeDocs. FYR.