When the agent is set to use MultiForwardingUDR input, it accepts input of the UDR type MultiForwardingUDR declared in the package FNT. The declaration follows:
internal MultiForwardingUDR { // Entire file content byte[] content; // Target filename and directory FNTUDR fntSpecification; };
The MultiForwardingUDR content is stored at the path set in the fntSpecification
field. Use the APL functions fntAddString
and fntAddDirDelimiter
to set the value of this field. For more information, see /wiki/spaces/MD82/pages/3781359 in /wiki/spaces/MD82/pages/3781270.
When the files are received they are written to temp files in the DR_TMP_DIR
directory in the root output folder. The files are moved to their final destination when an end batch message is received. A runtime error occurs if any of the fields have a null value or if the path is invalid on the target file system.
A UDR of the type MultiForwardingUDR which has a target filename that is not identical to its precedent is saved in a new output file.
Note!
After a target filename that is not identical to its precedent is saved, you cannot use the first filename again. For example: Saving filename B after saving filename A, prevents you from using A again. Instead, you should first save all the A filenames, then all the B filenames, and so forth.
Non-existing directories are created if the
checkbox in the tab is selected.If not selected, a runtime error occurs if a previously unknown directory exists in the FNTUDR of an incoming MultiForwardingUDR
. Every configuration option referring to bytearray input is ignored when MultiForwardingUDR
s are expected.
For more information about Filename Template, see 3.1.6 Workflow Template.
Example - APL code to send MultiForwardingUDRs
This example shows the APL code used in an Analysis agent connected to a Forwarding agent expecting input of type MultiForwardingUDR
s.
import ultra.FNT; MultiForwardingUDR createMultiForwardingUDR (string dir, string file, bytearray fileContent){ //Create the FNTUDR FNTUDR fntudr = udrCreate(FNTUDR); fntAddString(fntudr, dir); fntAddDirDelimiter(fntudr);//Add a directory fntAddString(fntudr, file);//Add a file MultiForwardingUDR multiForwardingUDR = udrCreate(MultiForwardingUDR); multiForwardingUDR.fntSpecification = fntudr; multiForwardingUDR.content = fileContent; return multiForwardingUDR; } consume { bytearray file1Content; strToBA (file1Content, "file nr 1 content"); bytearray file2Content; strToBA (file2Content, "file nr 2 content"); //Send MultiForwardingUDRs to the forwarding agent udrRoute(createMultiForwardingUDR ("dir1", "file1", file1Content)); udrRoute(createMultiForwardingUDR ("dir2", "file2", file2Content)); }
The Analysis agent sends two MultiForwardingUDR
s to the Forwarding agent. Two files with different contents are placed in two separate subfolders in the root directory. The checkbox in the Filename Template tab in the configuration of the Forwarding agent must be selected if the directories do not previously exist.