Flow Settings
The settings of a flow can be configured via its Settings tab.
Configuration
A flow has the following configuration options:
Name
Defines the name of the flow.
- Flow names have to be unique within a Flow group. You can't save a flow when its name is not unique.
Enable Flow Component
Enable this setting to transform a flow into a Flow Component.
Read more about Flow Components here.
Transport
The transport mechanism used between Dovetail components. Default
is the most common use case.
Transport | Queue | Explanation | Usage |
---|---|---|---|
Synchronous (Default) | No | When you configure your flow to be synchronous, the output of the last component in your flow will be used as a response to the first component. | For synchronous (request/response) interactions with strict order of messages. It is the default. |
Asynchronous | Yes | When you configure your flow to be asynchronous, messages are stored an in-memory blocking queue between components. | For asynchronous (fire-and-forget) interactions. Especially to increase performance when using steps with high load (for example enrichment). |
Queues | Yes | All messages will pass through a queuing mechanism. This means that the messages are stored on a broker outside of the flow until the next component has received and acknowledged it. | For synchronous (request/response) or asynchronous (fire-and-forget) interactions with large messages and guaranteed delivery. Note this mechanism can be slower to process messages in a flow. |
Components Timeout
Defines the timeout (in milliseconds) between communication of components. Whenever a component doesn't respond before the timeout has been reached, the exchange will be passed to the Error Route.
- Default:
20000
(20 seconds)
- Only available when Transport is set to
Asynchronous
orQueues
.
Trace Configuration
In Dovetail you can enable tracing to see all the transactions (exchanges) between components, giving you advanced insight into your flow while it's running. These transactions are shown in the Flow Manager - Flow Transactions.
The selected time period defines how long these transactions are stored, they are deleted afterwards.
Transactions are stored in a database on the server your Dovetail instance is running on. Avoid enabling tracing on flows that process large files and/or headers and set the time to the smallest value you can to make sure the server doesn't run out of disk space.
Saving a copy of each message can negatively impact the performance of your flow. Disable tracing on flows that process large quantities of data and/or large files. You can implement a Management by Exception solution to monitor these types of flows.
Flow properties
Flow properties are static variables that can be used in the configuration of your flow. All defined Flow properties are shown in this table and you add new ones with the
Flow properties use the #{name}
notation. When a flow is installed it replaces this syntax with the corresponding Test or Production value. Input fields in component configuration show a
Read more about using variables in Dovetail on this reference page.
Encryption
Because Flow properties are frequently used to store passwords and other sensitive information they are encrypted before they are stored in the database. They are never stored as plain text and are only decrypted to show them in the Flow settings or when a flow is installed.
Meta data
Every flow has a couple of predefined Flow properties like flow_name
, tenant
and server
. They are easily recognised because they can't be deleted and are usefull for many purposes, i.e. generating detailed error messages.
Headers in Flow properties
You can insert header notation in the values of a Flow property. In a running flow it will set with the value of the header (if it exists) in every location where the Flow property notation is used. For instance:
If a Flow property with name name
& value ${header.this}
is set and the flow is installed with the #{name}
notation in a SetBody component:
If header this
(before the SetBody component):
- value is (set to)
anything
->#{name}
is replaced withanything
- value is empty ->
#{name}
is empty - doesn't exist ->
#{name}
is empty