3.1.6 Workflow Template

The workflow template is the area where the workflow is designed. The workflow template outline one or several workflows.

Note!

A workflow configuration cannot be activated, the workflows in it however can.


Workflow configuration

You create a workflow configuration by using one of the following methods:

  • Click the New Configuration button in the upper left part of the Desktop window, and then select  Workflow from the menu. Select a Workflow Type : Batch, Realtime, or Task, and then Create.

  • Drag agents from the agents pane onto the template.

  • Double-click an agent on the agent pane.

  • Select an agent from the Agents menu.

When the first agent is placed on the workflow template, one row is automatically created in the workflow table.

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 connection (route) between the two agents indicating the data flow.

All editing and triggering from the workflow template generate changes to the workflow configuration through the workflow configuration. Examples of this are adding and removing agents, altering agent positions and editing agent settings and preferences. The workflow table will be affected if it includes columns that correspond to an agent removed from the workflow template.

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.

Resting the cursor over an agent in the template, displays parts of its configuration in a tool-tip text.

An agent tool-tip of a workflow configuration

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. Each route in the workflow is by default either asynchronous or synchronous, but this can also be configured per route. You can access these configurations by double-clicking the agent or route, or selecting the agent or route and right-clicking to reveal a pop-up menu. The pop-up menu contains different options depending on if you have selected an agent or route.

Right-click menu for agents

The right-click menu for agents contains the options Configuration... , Cut/Copy/Paste/, MIM Browser... , and Workflow Properties .

Right-click menu for agents

The configuration dialog contains configuration information located in tabs. The leftmost tab contains configuration parameters that are unique for each agent while possible additional tabs are of a more generic kind and may be recognized in other agent windows. A description of components in the first tab is available in the user documentation section for the respective agent, while the remaining tabs are described in the section below, Agent Services.

Agents and their configurations can be copied using the copy/paste functions in the Edit menu. Select the source agent followed by Copy and then Paste. This will deploy a copy of the selected agent and its configuration.

You can modify an agent name by selecting the name (clicking on it) and typing a new name. Agent names can also be edited in the configuration dialog, displayed when the agent is double-clicked. Agent names must be unique within a workflow configuration and may only contain the a-z, A-Z, 0-9, "-" and "_" characters.

Right-click Menu for Routes

Note!

This configuration option is only available for real-time workflows.

The right-click menu for routes contains the options Configuration, Copy/Paste/Cut, MIM Browser, Workflow Properties, and Route Styles.

Right-Click Menu for Routes

When you select Configuration, the Route dialog opens up.

Route dialog

If you do not want to use the default configuration for the selected route, select the Override Default check box and select either of the Asynchronous or Synchronous options, and click OK to save your changes. A small A (for Asynchronous routes) or S (for Synchronous routes) will be visible at the start of the route. If you want to see the type for all routes, and not just for the ones you have stated explicitly, you can select the option Show All Route Types in the Preferences dialog, see the section below, Visualization, for further information.

Warning!

If you modify the default setting for a route, this can cause a deadlock or performance issues. If you choose to modify the type of route, do so with caution.

When the route is synchronous, the same thread continues to process the UDR in subsequent agents before the route operation returns in order to process the next UDR. If the route is asynchronous, there is a queue associated with the route. Routing places the UDR in the queue for future processing, and the route operation returns immediately for the next UDR. 

In an Analysis or Aggregation agent, the route operation is done through the udrRoute command. For a synchronous route, which is the default for the Analysis agent, udrRoute can take a significant amount of time to finish since it waits until all synchronous processing in subsequent agents in the workflow is complete. If the route is asynchronous, which is the default for the Aggregation agent, the call to udrRoute returns immediately.

UDRs that are left on queues are picked up and processed by the workflow threads. The number of workflow threads can be configured in the Execution tab of the Workflow Properties dialog for the workflow.

Note!

Even though it is possible to configure bytearrays to be routed over an asynchronous route, bytearrays will always be routed in synchronous mode, regardless of how the route is configured, since the workflow UDR queues do not support bytearrays.


If you click on the Route Styles option, you can determine the appearance of the route; Orthogonal, Bezier, or Straight.

A route name is modified by selecting the name (clicking on it) 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.

Agent Services

Some agent configuration dialogs are optionally equipped with additional tabs holding configurations for different common services. This section describes the general services that are available in . The user guide for each agent, will in turn describe what services it uses.

Thread Buffer Tab

By default, a batch workflow utilizes one active thread at a time. By configuring a buffer storage for an agent, it will be possible for yet another thread to be created, this is also called multithreading. One thread will be populating the buffer, and another pulling it for data. Adding yet another buffer for another agent will add yet another thread, and so on.

This is especially useful in complex workflows with many agents. All batch agents that receive UDRs can utilize 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 utilizing this service, an exception will be 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

ItemDescription

Use Buffer

Enables multithreading. For further information, see 3.1.2 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 percentage of the threads utilizing the buffer is logged in the event area in 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). See discussion under 9.6.4 Analysis Agent Assignment and Cloning about the potential problems with multiple agents processing the same UDR in parallel.

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 percentage for the threads utilizing the thread buffer. For information about multithreading in a batch workflow, refer to the section, Threads in a Batch Workflow, in 3.1.2 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 (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 (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 (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 contains a sequence number in the file name. The sequence number is expected to be found on 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 on the data that arrives 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


ItemDescription

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 TTFILE0001 the start position is 6.

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

TTFILE0001-TTFILE9999 Length: 4

TTFILE1-TTFILE9999 Length: 0

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

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 will log 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 on some batch collection agents and is used to sort matched files before collection.

The sort pattern is expected to occur on 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  http://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html.

Sort Order tab


ItemDescription

Enable Sort Order

Determines if the service will be utilized or not. If enabled, the sort order that you select also applies to subfolders if you have selected the Include Subfolders check box for the FTP, SFTP and Disk collection agents. For further information, see the section for the relevant agent in 9. 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 will 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. For sorting items with a dynamic length, use the value zero (0) will be used.

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

\d+ locates the first digit sequence in a file name.

Sort the following files in an alphabetical or numerical order:

 FILEA_1354.log
 FILEB_23.log
 FILEC_1254.log,

Use \d+ in the regular expression. Depending on the selected Sort Direction, the files are sorted in the following order:

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 will 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, whose values 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!

Filename Template also provides you with the so called Dynamic Directory support. This means that you can change the output directory during execution of a workflow, which input data 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 will 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 containing MIM resources, user defined values, separators and/or directory delimiters will create the filepath or filename. The order of the items in the table define the filepath or filename.

Since the service utilizes 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.


ItemDescription

Create Non-Existing Directories

When this check box is selected, non-existing directories stated in the path will be created. If not selected, the agent will abort if a required directory is missing.

Filename Template tab - Add or Edit dialog

ItemDescription

MIM Defined

Determines if the Value will be selected from a MIM resource.

The MIM resource of type FNTUDR will be represented in the template table in the same way as other MIMs, however will have an other appearance when the filename or filepath is presented. A MIM FNTUDR value can represent a sub path with delimiters or 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 1.2 Administration and Management.

Example - Configuring a Filename Template tab

In this example, there is a workflow containing a Disk collection agent named DI1 and two Disk forwarding agents named DO1 and DO2. 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 DO1 and 250 goes to DO2 from each file, the resulting file names would be:

DO1-FILE1-000100.DAT
DO2-FILE1-000250.DAT
DO1-FILE2-000100.DAT
DO2-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 utilizes the FNTUDR published by the APL code.

The resulting output file in the previous example will be 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 1.2 Administration and Management.

Visualization

In the workflow configuration, zoom in or out the workflow illustration by modifying the zoom percentage number that you find on the tool bar. The default value is 100(%). To change the zoom value click the increase or decrease icons. Clicking the button between these icons will reset the zoom level to the default value. Changing the view scale does not affect the configuration.

It is also possible to change the appearance of the workflow template in other ways. You can open the Preferences dialog found in the Edit menu.

The Preferences dialog

ItemDescription

Route Style

Sets the style of the routes in the workflow. Route style can also be changed for one specific route, not affecting the entire workflow. This is done by right-clicking the route in the workflow and selecting Route Styles . 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.

Grid Style

Determines how the grid should be displayed; Invisible , Dot or Line. Invisible is default.

Grid Size

With this slider you can change the grid density. A large number will increase the distance between agents.

Show All Route Types

The route type, asynchronous or synchronous, is indicated with a small bold A or S for all routes where the type has been configured explicitly, see the section above, Right-Click Menu for Routes. However, if you want to display the route type for routes with the default configuration as well, you can select this option.

Note!

This option is only visible when you are in a real-time workflow.