Barrier

Jobflow Component

Short Description
Ports
Metadata
Barrier Attributes
Details
Examples
See also

Short Description

Barrier allows to wait for results of parallel running jobs and react to the success or failure of groups of jobs in a simple way.

Barrier waits for all input tokens belonging to a group, evaluates this group and based on the results sends output token(s) to the first or second output port.

[Note]Note

To be able to use this component, you need a separate jobflow license. Also, the component requires your project is executed on CloverETL Server.

ComponentSame input metadataSorted inputsInputsOutputsEach to all outputsJavaCTLAuto-propagated metadata
Barrier
no
no
1-n1-2
no
no
no
no

Ports

Port typeNumberRequiredDescriptionMetadata
Input0
yes
Input tokens with job results.Any
1-n
no
Input tokens with job results.Any
Output0
no
Tokens for successful groups of jobs.Any
1
no
Tokens for unsuccessful groups of jobs.Any

Metadata

Input ports

Any metadata is possible on input ports, only the status field is expected by the Token evaluation expression attribute, by default ($status == "FINISHED_OK").

Output ports

Any metadata is possible on output ports, but tokens sent to output ports are copied based on field names from input ports, so only fields with equal names are populated.

Barrier Attributes

AttributeReqDescriptionPossible values
Basic
Input groupingno

The type of algorithm defining how the incoming tokens are split into groups of jobs, which are evaluated independently. See Logical grouping of incoming records

Tuple (default) | All
Token evaluation expressionno

A boolean CTL expression which is applied to each incoming token to decide whether the token represents successful or unsuccessful job run - final job status. See Group evaluation

default CTL expression '$status == "FINISHED_OK"'
Group evaluation criteriano

A logical operation which is applied to the job status (see the Token evaluation expression attribute) to decide whether the group of jobs is successful or unsuccessful. See Group evaluation

AND (default) | OR
Outputno

Defines the number of output tokens per group of jobs. See Generating output tokens

Single token (default) | All tokens

Details

Barrier is mainly used for management of parallel running jobs. Barrier receives all incoming tokens, which carry information about job results, and splits them to logical groups of jobs. Each job group is evaluated independently. Results of groups evaluated as successful are sent to the first output port. Results of the unsuccessful groups are sent to the second output port.

Logical grouping of incoming records

The component's attribute Input grouping provides two options on how the incoming tokens are split to logical groups of jobs.

  • All - all incoming tokens are considered as a single group, exactly one group is processed by the component. This covers the most common scenarios, e.g. checking that all previous jobs were successful.

  • Tuple - a group consists of a single token from all input ports, i.e. the groups are created by "waves" of tokens coming from input ports. Tokens which arrive first from each input port form the first logical group, the second tokens from each input port form the second logical group, etc. (i.e. n-th group consists of n-th input token from all input ports) This setting covers checking result of waves of parallel job.

Group evaluation

Each token in a group is evaluated by CTL boolean expression from the Token evaluation expression attribute - let's call it job status. The group is considered successful if and only if the job statuses joined by logical operation AND or OR (the Group evaluation criteria attribute) are true. So in case of AND operation, all incoming tokens need to be successful for a success of whole group. On the other hand in case of OR operation, at least one token from the group needs to be successful for a group success.

Generating output tokens

Successful groups send their results to the first output port and the unsuccessful groups send their results to the second output port. The number and content of output tokens is specified by the Output attribute:

  • Single token - only one token is sent to an output port per group, the token is populated by all group tokens - fields are copied based on fields names (input tokens order to be copied is not guaranteed).

  • All tokens - each incoming token from the group is sent to the dedicated output port; in case of incompatible metadata, fields are copied based on field names.

[Note]Note

Output ports are not required. Tokens routed to a missing edge are quietly discarded.

Examples

Let's look at simple example of usage.

Example of typical usage of Barrier component

Figure 59.1. Example of typical usage of Barrier component


In this example, three different graphs are synchronously executed by three ExecuteGraph components. All three graphs are running in parallel. Barrier is a collection point for graph execution outcomes; it waits for all graphs to finish prior to moving on to the next step. If all graphs finished successfully, an output token is sent to the first output port. On the other hand, if one or more graphs failed, an output token is sent to the second output port. This component allows simple evaluation for status of the whole job group.

See also

Common Properties of Components
Specific Attribute Types
Common Properties of Job Control
Job control Comparison