Flows are entities responsible for orchestrating the execution of Services.

Each instance of a flow, sometimes referred to as a Itinerary, holds state of all Services, Variables and Messages. While Variables and Messages may change over the lifetime of the Flow, the structure remains immutable, meaning once started, -Services and their related connections will not change although updated in the portal.

Create a flow

You create Flows by going to the Flow page using the menu or by using the short-key CTRL+R and type “flow”. Clicking the “Create new” button on the top of the page takes you to the a page where give your flow a name and description. Clicking the “Create” button takes you to the Flow details page, and will present you with the Flow designer:

The Flow designer is made up of two parts; the toolbox and the designer. The toolbox shows all the Services created in your organization and Services that belongs to the Root organization which is not directly accessible to you, other than you have access to all its Services.

As you might remember from the What is a Service? section, there are different kind of Services. Only three kind of Services are visible in the toolbox.

The toolbox

Inbound services

Inbound Services starts the Flow. These Services will always create the Message along with the context.

Inbound Services are often triggered on an interval or event such as reading a Modbus register every minute.

Outbound services

Outbound Services receives Messages from Inbound- or Internal Services and are used to control meters and devices or transmitting Messages to IoT Hubs for example.

Interval (or other)

Internal Services are generally used to manipulate Messages or Variables, such as transforming, batching or compressing Messages.

Flow execution

Message

Each instance of a flow (itinerary) has ONE Message which might change over the course of the lifetime of the itinerary. Messages are often a JavaScript object but does not have to.

Routing

Connecting two Services instructs the orchestrator to pass the execution from one Service to the other. The default routing condition is ‘true’, meaning the Message will always take this route.

However, you can set the routing condition by double-clicking the connection and set the route variable. Eg.

var route = message.temperature > 30;

Setting this condition means only route Messages to the destination if the temperature is more than 30 degrees.

Variables

Variables are available through the the whole execution of the itinerary and can be read or updated. However, you need to create them prior to using them. Click the “VARIABLES” button at the bottom to add variables.