Workflow Template
The workflow template is the area where the workflow is designed. The workflow template has one workflow per default. You can add more workflows via the Add Workflow button.
Note!
A workflow configuration cannot be activated, the workflows in it however can.
Note!
Each configuration only allows 1 user to edit it at any one time. While editing the configuration, it is locked to the user's session. To release the lock, you must navigate away from the configuration to another page. It is advised not to close the browser tab without navigating away from the configuration first as this will cause the lock to stay in place until timeout.
Workflow configuration
You create a workflow configuration by using one of the following methods:
Click Build → New Configuration. Select Workflow from the Configurations dialog or click the  (New) button in the upper left part of the Workflow Template window.
Select a Workflow Type:Â Batch, Realtime, or Task, and then Ok.
Click Add agent to open the Agents selection dialog.
Click on the agent from the Agents selection dialog to deploy the agent to the template.
A workflow template can have multiple labels located next to the workflow template name. These labels serve to identify the workflow template. The following are the labels that may appear:
Label | Description |
---|---|
This label identifies the workflow as a Batch workflow. This label is mutually exclusive to Realtime and Task. | |
This label identifies the workflow as a Realtime workflow. This label is mutually exclusive to Batch and Task. | |
This label identifies the workflow as a Task workflow. This label is mutually exclusive to Batch and Realtime. | |
This label identifies the workflow as a Read Only workflow. Read Only workflows will be locked from any editing and you must click on the button to modify a Read Only workflow. | |
This label identifies the workflow as a valid workflow. For more information about validation, refer to Workflow Validation. | |
This label identifies the workflow as an invalid workflow. For more information about validation, refer to Workflow Validation. |
Here are more things that you can do on the workflow template:
Configuration
Note!
Due to the agents' relationships within a workflow configuration, it is preferable that all agents and routes are added before the configuration is started.
Each agent in the workflow configuration has a specific configuration dialog named after the agent type. You can access these configurations by double-clicking the agent or the route. Subsequently you can also click on the button when selecting an agent or a route. This causes a dialog to appear with options. See Agent Options or Route Options for more information.
When an agent is deployed into the workflow template it receives a default name located underneath it. The same applies to routes when they are added. These names may be modified to ease identification in monitoring facilities and logs.
All editing and triggering from the workflow template generate changes to the workflow configuration. Examples of this are adding and removing agents, altering agent positions, and editing agent settings and preferences. If you have the Workflow Monitor open, the changes made after saving the workflow template will be reflected.Â
The workflow table is affected if it includes columns that correspond to an agent removed from the workflow template.
Routing Agents
To create a data flow, agents need to be connected to each other. To connect the agents, click the left mouse button on the center of the source agent and without releasing the left mouse button, move the pointer to the target agent and release there. This creates a route between the two agents indicating the data flow.
You can also create a route between agents by using the button under agent options and selecting the target agent in the dialog. You can modify a route name by clicking on its name and typing a new name. Route names must be unique within a workflow configuration and may only contain the a-z, A-Z, 0-9, "-" and "_" characters.
Route Options
Clicking on a route in the workflow template provides you with a couple of options.
Route Options
Options | Description |
---|---|
Opens the Edit Route dialog where you can then edit the route name and route style. You can also double-click the route itself to open the Edit Route dialog. A route name is modified by typing a new name. Route names must be unique within a workflow configuration and may only contain the a-z, A-Z, 0-9, "-" and "_" characters. You can also change the appearance of the routes by selecting from the following Route Style options; Orthogonal, Bezier, or Straight. The default route style is Bezier . Note! In a real-time workflow a fourth kind of routing type appears by default when a response is returned to an agent that sent out a request. The route is shown as a dot-dashed line. Edit Route dialog box | |
Removes the selected route. |
Agent Options
Clicking an agent in the workflow template provides you with a few options.
Agent options
Options | Description |
---|---|
Opens the Agent Configuration dialog where you can add or edit the settings and configuration values for the selected agent. You can also double-click the agent itself to open the Agent Configuration dialog. | |
Removes the agent and all its stored configuration. This action will not prompt you with any dialog and it is final so be absolutely sure that you want to remove the agent. | |
Opens a dialog with an option to route the selected agent to another agent. Connect agent to dialog box | |
Brings up an information dialog that displays parts of the agent's configuration. Agent information dialog |
Agent Selection Dialog
The Agent Selection dialog contains all the available agents, represented as icons. Different icons are available, depending on which kind of workflow type that you have selected. There are different agents for Batch, Realtime, or Task workflow types.
For more information about the different types of agents, refer to the Agent Selection Dialog section.
Workflow Tables
The workflow table is located at the bottom of the workflow template. There must always be at least one valid and runnable workflow per workflow configuration, otherwise it will not be valid.
For more information about the workflow monitor, refer to the Workflow Table section.
Workflow Properties
Workflow specific data is altered in the Workflow properties dialog. To open the Workflow properties dialog, click the Properties button in an existing workflow template or click Build → New Configuration → Workflow → .
For more information about the workflow monitor, refer to the Workflow Properties section.
Workflow Monitor
The Workflow Monitor controls workflow execution and presents a detailed view of the workflow execution status.Â
For more information about the workflow monitor, refer to the Workflow Monitor section.
Visualization
You can manipulate visuals of the workflow template by zooming in or out, or moving the workflow template around. A toolbar is present on the right side of the workflow template to allow you to manipulate the visuals.
Workflow template visualization toolbar
Options | Description |
---|---|
Zooms in on the workflow template. | |
Zooms out of the workflow template. | |
Centers the workflow template so that all agents and routes are visible on the canvas. | |
Displays all the keyboard shortcuts that you can use within the workflow template. |
There is also a zoom percentage along with an x and y coordinate, which are displayed as soon as you zoom in or out. The default range on the zoom percentage is 100% while the x and y coordinates, which are determined from the point on the top left corner of the workflow template canvas, start at 0, 0, respectively. These values appear at the bottom left corner of the canvas whenever you manipulate the visuals.
Percentage and x and y coordinates found in the workflow template
Common Agent Services
Some agent configuration dialogues are optionally equipped with additional tabs holding configurations for different common services. This section describes the general services that are available. The user guide for each agent, in turn describe what services it uses.
Thread Buffer Tab
By default, a batch workflow uses one active thread at a time. By configuring a buffer storage for an agent, it is possible for yet another thread to be created. This is also called multithreading. One thread populates the buffer, and another pulls it for data. Adding yet another buffer for another agent adds yet another thread, and so on.
This is especially useful in complex workflows with many agents. All batch agents that receive UDRs can use this functionality.
Note!
A workflow that is configured with multithreading can only handle data of the UDR type. If bytearrays are routed into an agent using this service, an exception is thrown.
Open the Configuration dialog of the agent and select the Thread Buffer tab. The tab is present in batch processing and batch forwarding agents.
The Thread Buffer tab
Item | Description |
---|---|
Use Buffer | Enables multithreading. For further information, see Multithreading. |
Print Statistics | Statistics to be used when trying out where to use the Thread Buffer in the workflow. After each batch execution, the full and empty percentages of the threads using the buffer are logged in the event area at the bottom of the Workflow Monitor. For information on how to interpret the results, see the section below, Analyzing Thread Buffer Statistics. |
A UDR may be queued up while another thread is busy processing a reference to it. Workflows routing the same UDR on several routes and involving further processing of its data, must consequently be reconfigured to avoid this. A simple workaround is to route the UDR to an Analysis agent for cloning before routing it to the other agents (one unique clone per route).
Analyzing Thread Buffer Statistics
By using the Print Statistics alternative in the Thread Buffer tab, buffer statistics are logged for the whole batch execution and show the full
and empty
percentages for the threads using the thread buffer. For information about multithreading in a batch workflow, refer to the section Threads in a Batch Workflow, in Multithreading.
Example - A thread buffer printout
11:03:04: Buffer usage statistics [5] for 2089 turnover(s) of UDRs: Incoming queue: Available 54%. Full 46%. Outgoing queue: Available 59%. Empty 41%.
The number within brackets, which is
[5]
in the example, is the batch counter id.Turnover
is the total number of UDRs that have passed through the buffer.Available
indicates how often (out of the total turnover time) the buffer has been available for the incoming queue to forward a UDR and for the outgoing queue to fetch a UDR.Incoming queue:
Full
is logged for the incoming thread and indicates how often (out of the total turnover time) the buffer has been full and an incoming UDR had to wait for available buffer space.In the example,
Full
indicates that for 46% of the incoming UDRs there was a delay because of a full buffer.Outgoing queue:
Empty
is logged for the outgoing thread and indicates how often (out of the total turnover time) an outgoing queue had to wait for data because of an empty buffer.In the example,
Empty
indicates that for 41% of the attempts to fetch a UDR, the buffer was empty.
The percentage values for Empty
and Full
must be as low as possible, and as equal as possible. The latter may be hard to achieve, since the agents may differ too much in processing complexity. If possible, add and configure another agent to take over some of the processing steps from the most complex agent.
See the section below, Thread Buffer Tab, for how to configure the thread buffer.
Filename Sequence Tab
For batch collection agents such as Disk, FTP, and SFTP, there is a service available, found in the agents' configuration dialog in the Filename Sequence tab. The filename sequence is used when you want to collect files that contain a sequence number in the file name. The sequence number is expected to be found at a specific position in the file name and has a fixed or dynamic size.
Note!
When collecting from several sources, the Filename Sequence service is applied to the data that arrive from all the sources, as though all the information arrives from a single source. This means that the Filename Sequence number count is not specific to any of the sources.
Filename Sequence tab
Item | Description |
---|---|
Enable Filename Sequence | Determines if the service will be used or not. |
Start Position | The offset in the file name where the sequence number starts. The first character has offset 0 (zero). In the example file name |
Length | The length of the sequence number, if the sequence number has a static length (padded with leading zeros). If the sequence number length is dynamic this value is set to 0 (zero). Example
|
Wrap On | If the Filename Sequence service is enabled, a value must be specified on which the sequence will wrap. This number should be larger than or equal to Next Sequence Number and it must be larger than Wrap To. |
Wrap To | The value that the sequence will wrap to. This value must be less than the Wrap On value and less than or equal to Next Sequence Number. |
Warn On Out Of Sequence | If enabled, the agent logs an informative message to the System Log when detecting an out of sequence file, before deactivating. The collection agent will not continue to collect any files upon the next activation, until either the missing file is found, or the Next Sequence Number is set to a valid value. |
Sort Order Tab
The Sort Order service is available for some batch collection agents and is used to sort matched files before collection.
The sort pattern is expected to occur at a specific position in the file name or to be located using a regular expression. However, if the sort pattern cannot be applied, the workflow will abort, except for files with a name which is shorter than Position plus Length. For information on this exception, see the description below for Position.
Note!
Regular expressions according to Java syntax apply. For further information see https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/util/regex/Pattern.html.
Sort Order tab
Item | Description |
---|---|
Enable Sort Order | Determines if the service will be used or not. If enabled, the sort order that you select also applies to subfolders if you have selected the Include Subfolders checkbox for the FTP, SFTP, and Disk collection agents. For further information, see the section for the relevant agent in Appendix 2 - Batch and Real-Time Workflow Agents. |
Modification Time | Select to enable file collection order according to the modification time stamp. If Sort Direction is set to Ascending, the oldest files are collected first. The time resolution depends on the server and protocol. Note! Most FTP and SCP servers follow the Unix modification date format for file time stamps. The modification date resolution is one minute for files that are time stamped during the last six months. After six months a resolution of one day is applied. |
Value Pattern | The method used to locate the item (part of the file name) to be the target for the sorting. This could be either Position that indicates that the item is located at a fixed position in the file name or Regular Expression indicating that the item should be fetched using a regular expression. |
Position | If Position is enabled, the files are sorted based on the part of the filename indicated by Position plus Length. The Start Position value states the offset in the file name where the sorting item starts. The first character has offset 0 (zero). The Length value states the length of the sorting item (part of the file name) if it has a static length. To sort items with a dynamic length, use the value zero (0). Note! Files with a name which is shorter than Position plus Length are ignored. However, when Include Subfolders option is selected, a folder name shorter than Position plus Length will cause the workflow to abort. |
Regular Expression | If enabled, the sorting item is extracted from the file name using the regular expression. If the file name does not end with a digit, this is the correct option. Example - Sorting using regular expression
Sort the following files in an alphabetical or numerical order: FILEA_1354.log FILEB_23.log FILEC_1254.log, Use FILEC_1254.log FILEA_1354.log FILEB_23.log |
Sort Type | Type of sorting. Could be either Alphanumeric or Numeric . |
Ignore Case | If enabled, the sorting is not case sensitive. |
Sort Direction | Indicates if the sort order should be Ascending or Descending . |
Note!
When Include Subfolders option is selected, the same sort order criteria are applied to subfolder names.Â
Filename Template Tab
The Filename Template service is available to batch forwarding agents that are responsible for creating a file, and the Disk forwarding agent for real-time workflows. The configuration contains MIM resources for all available agents in the workflow, the values of which may be used when constructing a filename for the outgoing file.
Since this service includes a selection of MIM resources from available agents in the workflow, it is advised to add all agents to the workflow, and to assign route and agent names, before the filename template configuration is completed.
Note!
The Filename Template service also provides you with the so called Dynamic Directory support. This means that you can change the output directory during execution of a workflow, the input data of which is bytearray. See Input Data in the configuration Target tab of your relevant forwarding agent.
By creating directories and subdirectories with names which consist of MIM values, and by adding appropriate APL code, you configure the output directory to sort the out data into directories that are created during the workflow execution. For further information, see the section below, Defining a MIM Resource of FNTUDR Type.
Filename Template tab
The list contains MIM resources or user defined values that create the file name. The order of the items in the list controls the order in the file name.
There are two ways in which you can determine the order of the items. You can use the Up and Down arrow buttons, or you can use the column headers. If you begin to sort the items using the column headers, the Up and Down arrows are disabled.
The table - with MIM resources, user defined values, separators and/or directory delimiters - is used to create the filepath or filename. The order of the items in the table defines the filepath or filename.
Since the service uses a selection of MIM resources from available agents in the workflow, it is advised to add all agents to the workflow before the filename template configuration is completed.
Item | Description |
---|---|
Create Non-Existing Directories | When this checkbox is selected, non-existing directories stated in the path are created. If not selected, the agent will abort if a required directory is missing. |
Filename Template tab - Add or Edit dialog
Item | Description |
---|---|
MIM Defined | Determines if the Value will be selected from a MIM resource. The MIM resource of type FNTUDR is represented in the template table in the same way as other MIMs, however it has an other appearance when the filename or filepath is presented. A MIM FNTUDR value can represent a sub-path with delimiters, a part of a filename, or a directory. For further information about how to use the FNTUDR in filename templates, see the section below, Defining a MIM Resource of FNTUDR Type. |
User Defined | Determines if the Value will be a user defined constant entered in the text field. |
Directory Delimiter | Determines if the Value will be a directory delimiter indicating that the file sub-path will have a directory delimiter at that specified position. You cannot have two directory delimiters directly after each other, or a delimiter in the beginning or end of a filename template. The MIM resource of the special UDR type FNTUDR can include, begin or/and end with directory delimiters this must be noted when adding delimiters in the template. For further information about using the FNTUDR in filename templates, see the section below, Defining a MIM Resource of FNTUDR Type. |
Size | Number of allocated characters in the file name for the selected MIM resource (or user defined constant). If the actual value is smaller than this number, the remaining space will be padded with the chosen padding character. If left empty, the number of characters allocated in the file name will be equal to the MIM value or the constant. |
Padding | Character to pad remaining space with if Size is set. If Size is not set, this value is ignored. |
Alignment | Left or right alignment within the allocated size. If Size is not set, this value is ignored. |
Separator | Separating character to add to the file name after the MIM value or constant. |
Date Format | Adds a timestamp to the file name in the selected way. For further information about the format, see Date and Time Format Codes in Administration and Management in Legacy Desktop. |
Example - Configuring a Filename Template tab
In this example, there is a workflow containing a Disk collection agent named Disk_In and two Disk forwarding agents named Disk_Out and Disk_Out2. The desired output file names from both forwarding agents are as follows:
A-B-C.DAT
Where A is the name of the Disk forwarding agent, B is the name of the currently collected file, C is the number of UDRs in the outgoing file and .DAT
is a customer suffix. It is desired that the number of UDRs in the files takes up six characters and is right aligned.
The following file name template configuration applies to the first agent:
The following file name template configuration applies to the second agent:
If two files FILE1 and FILE2 are processed where 100 UDRs goes to Disk_Out
and 250 goes to Disk_Out2
 from each file, the resulting file names would be:
Disk_Out-FILE1-000100.DAT Disk_Out2-FILE1-000250.DAT Disk_Out-FILE2-000100.DAT Disk_Out2-FILE2-000250.DAT
Defining a MIM Resource of FNTUDR Type
A MIM resource with a value of the FNTUDR type included in the filename template is treated somewhat differently than other MIM resources. A FNTUDR value is a text string that can contain delimiters. The delimiters in the FNTUDR value will be replaced by directory delimiters when determining the target file path. The FNTUDR is defined in the FNT folder.
Example - How to create an FNTUDR value to publishe as a MIM resource
The following example shows a set of APL code that creates a FNTUDR value and publishes it as a MIM resource. To use the FNTUDR value in a filename template, the MIM resource must be added in the filename template configuration.
import ultra.FNT; mimPublish( global, "FNTUDR Value" , any ); consume { FNTUDR fntudr = udrCreate(FNTUDR); fntAddString(fntudr, "dir"); fntAddString(fntudr, "1"); fntAddDirDelimiter(fntudr); fntAddString(fntudr, "dir2"); fntAddDirDelimiter(fntudr); fntAddString(fntudr, "partOfFileName"); mimSet ("FNTUDR Value", fntudr); udrRoute(input); }
The following filename template configuration uses the FNTUDR published by the APL code.
The resulting output file in the previous example is saved in a file with the following sub path from the root directory.
dir0/dir1/dir2/partOfFileName20070101_1
The part dir1/dir2/partOfFileName
derives from the FNTUDR Value.
For further information about how to manipulate FNTUDRs with APL functions and how to publish MIM resources, see the APL Reference Guide and the section Meta Information Model in Administration and Management in Legacy Desktop.