Header Match Connector
Header Match Connector
The Header Match Connector adds a decision shape to the flow, capable of sending a file to one of two defined connectors based on headers within the file.
A Header Match Connector functions as a fork in the flow. Files are sent along different paths in the flow depending on whether a specified header within the file matches a defined value. Files that match are sent along the solid blue flow path, and files that do not match are sent along the dotted gray flow path.
For headers already present in the file, simply configure the connector to check the desired Header Name and compare the header value with a specified Value. In addition, custom headers can be added to a file via ArcScript to facilitate dynamic routing based on custom data.
This section contains all of the configurable connector properties.
Settings related to the core operation of the connector.
- Connector Id The static name of the connector. All connector-specific files are held in a folder by the same name within the Data Directory.
- Connector Description An optional field to provide free-form description of the connector and its role in the flow.
- Type The data type of the header that will be used to match files. Support data types are Strings, Numbers, and DateTime formats.
- Header Name The name of the header that will be used to match files. If a header with this name is found in the input file, the value of that header will be compared to the Value setting.
- Operator The logical operator that should be used to compare the header value in the input file and the Value setting.
- Value Header values parsed from input documents will be compared with this setting. The type of comparison depends on the Operator setting.
Settings that determine the folder on disk that files will be processed from, and where they will be placed after processing.
- Input Folder (Send) The connector can process files placed in this folder. If Send Automation is enabled, the connector will automatically poll this location for files to process.
- Output Folder (Receive) After the connector finishes processing a file, the result will be placed in this folder. If the connector is connected to another connector in the flow, files will not remain here and will instead be passed along to the Input/Send folder for the connected connector.
- Processed Folder (Sent) After processing a file, the connector will place a copy of the processed file in this folder if Save to Sent Folder is enabled. This copy of the file will not be passed along to the next connector in the flow.
Settings not included in the previous categories.
Log Subfolder Scheme By default, logs for transactions processed by the connector will be stored in the Logs subfolder for the connector. For connectors that process many transactions, it may be desirable to further divide the logs based on the datetime they were generated. When this setting is set to Daily, logs generated on the same day will be grouped in a subfolder;; when this setting is set to Weekly, logs generated in the same week will be grouped in a subfolder; and so on.
- Log Messages Whether the log entry for a processed file will include a copy of the file itself.
- Save to Sent Folder Whether files processed by the connector should be copied to the Sent folder for the connector.
Settings related to the automatic processing of files by the connector.
- Send Whether messages arriving at the connector will automatically be processed.
ArcScript supports adding custom headers to files via two methods:
- The portSetMessageHeader scripting operation
- The Header:* output attribute of Script Connectors
The portSetMessageHeader operation should be used within the Event Scripts of a connector (when setting a custom header in a dedicated Script Connector, the Header output attribute should be used instead, as described in the next section).
For example, the following ArcScript can be placed in the After Receive event of any connector prior to the Header Match Connector in the flow:
<arc:set attr="Header:custom_header" value="myvalue" /> <arc:call op="portSetMessageHeader" />
ArcScript can also be used to determine custom header values dynamically, and then this dynamic value can be added as a custom header using the operation above. As a simple example, a file may need to be routed according to a special character within the file, which can be read using the fileReadLine operation. The following ArcScript looks for a special character at the start of the second line of a file, and adds this as a custom header:
<arc:set attr="special_character" value="default_value" /> <arc:set attr="file" value="[FilePath]" /> <arc:call op="fileReadLine"> <arc:if exp="[file:line | equals(2)]"> <arc:set attr="special_character" value="[file:data | substring(0,1)]" /> </arc:if> </arc:call> <arc:set attr="Header:custom_header" value="[special_character]" /> <arc:call op="portSetMessageHeader" />
After running the above script on a file, the Header Match Connector can route files along different flow paths according to the special character.
Header Output Attributes
When adding a custom header within a dedicated Script Connector (rather than in the Event Scripts of another connector), the portSetMessageHeader operation is not required. Instead, the headers of the output message can be set directly via the Header:* output attributes, as described below.
The arc:push keyword is used to push output messages (files) from a Script Connector. By default, the two required parameters for arc:push are FileName and Data, like the following example:
<arc:set attr="outputItem.FileName" value="myOutputFile.txt" /> <arc:set attr="outputItem.Data" value="Some file contents" /> <arc:push item="outputItem" />
Header:* output attributes are an optional addition to FileName and Data which are used to specify custom headers for the output message. Any attribute set on the output item (i.e. the item that is ‘pushed’) that has the “Header:” prefix will be treated as a header value.
For example, the following ArcScript adds a single custom header with the name “myHeader” and the value “5” to the output message:
<arc:set attr="outputItem.FileName" value="myOutputFile.txt" /> <arc:set attr="outputItem.Data" value="Some file contents" /> <arc:set attr="outputItem.Header:myHeader" value="5" /> <arc:push item="outputItem" />
The same principle can be extended to set an arbitrary number of custom headers, e.g.: outputItem.Header:myHeader1, outputItem.Header:myHeader2, etc.