Skip to end of metadata
Go to start of metadata

In arKItect, flows are a special sub-category of objects. They are special in only one respect: what makes an object a flow is the relationship between the parent and child types. In the case of flows, the relation between a parent and a child object instance is production or consumption. Flows also have some special graphical properties not applicable to standard objects.

In the meta-model, given parent-child relations are defined as flows. Flow relations can be defined as either input, output, input/output or bidirectional (see the Designer User's Guide for more details). The relation between the types determines how given object instances can be linked to one another.


As a flow is an object, it has the same characteristics: it can have children (even children defined as flows) and every action available to an object is also available to a flow.

Besides the flow link (an arrow indicating the direction) that connects the flow instance's producer and consumer, flows have containers that display the flow's name as well as its attributes. These containers represent the beginning (i.e. production) or the end (i.e. consumption) of the flow and are thus found inside the parent objects of the flow. The flow link also has a label displaying the name of the flow or an attribute value (this is determined in the filter).

Flows whose producer or consumer has not been defined or flows that are produced or consumed at a higher level have a port at one end of the link.


Linking Mechanism

The main interest of flows is that they create links between the flow producers and consumers in the Internal Block Diagram. Consider a diagram with objects S and T. If the flow F is produced by S and consumed by T, the diagram will show a link between S and T. Moreover, if F is not directly produced by S but by one of its descendants, the diagram point of view will remain the same: producing the flow directly or indirectly are visually equivalent. The same goes for consumption.

Why this mechanism? Imagine that you have the following structure: two persons, one talking to the other. A sound flow is emitted by the mouth of the speaker and consumed by the ears of the listener. Mouth and Ears are subsystems of a human being. In arKItect, the flows exchanged between the subsystems are also visible at a higher level. The user does not have to worry about how to transmit the modifications in one graph to another and thus benefits from a consistent view at any given moment.

What if you have hundreds of links, how can they all be represented? Flows of the same type and of the same direction exchanged between two objects share one single link. Associated with the link, a label can be made to display the names of the flows (under the limit of five names).

In the example below, a link representing two flows is currently selected (shown in red).

Direction of a Flow

You can see the direction of a flow in both the treeview and the Internal Block Diagram. In the Internal Block Diagram, the direction of a link is indicated by an arrow that can be represented by different shapes; the arrow appears at the consumer side of the flow. The arrow style is defined in the meta-model. However, it is also possible to define the link without an arrow at the end. In the treeview, a direction icon overlays the icon of the flow object: consumed flows are marked with a arrow pointing to the left and produced flows with an arrow pointing to the right.

In the example below, Water reservoir is a container (and not a flow); Fresh water to be heated is a produced flow while the other two flow objects are consumed flows.

In the diagrams, a flow mark ο is added to the flow container, on the right-hand side for consumed flows and on the left for produced flows.

The property produced or consumed is linked to the parent-child relation of the object instances. The relation can be changed using the Change Flow Direction functionality available in the right-click menu of a flow. For more details see Changing the Direction of a Flow.

When you add a flow using the Add New Object menu, you can also choose between Produced and Consumed relations.

Bidirectional Flows

Sometimes, it is convenient not to define a direction for a flow. This can happen when modeling a boundary, an interface or symmetric links. In the meta-model, is it possible to define a flow type as bidirectional. In this case, flow links are represented as bidirectional and flow ports are also visually different.


A bidirectional flow is only a representational trick; flows are still defined as produced or consumed in the arKItect model. In particular, the rules for links and warnings apply.


Often, a flow is produced (or respectively consumed) by the focus object and consumed (or respectively produced) by an external object. In this case, the link goes out of (comes in to) the focus object. In the Internal Block Diagram, this is represented with ports. If the flow is produced (respectively consumed) in the focus object and not consumed (produced) anywhere, the link goes out of (comes into) the object, and ends in (begins with) a port.

The ports are color-coded as follows:

  • Flows produced at a higher level or flows with no producer: a white square port.
  • Flows consumed at a higher level or flows with no consumer: a black square port.
  • Bidirectional flows connected to a higher level or with only one parent: a black and white square port.

If several flows of the same type are produced and consumed in the same parents, they are represented by a single link in order to simplify the graphical representation. The flow label now displays several flow names. This number of displayed flow names is configurable and can vary from 0 to all flows with five being default number (see "Maximum Number of Displayed Llinks in Labels" in Preferences). You can now access the Object Properties or Object Location of an individual flow by double-clicking on the link; this displays the Link Properties window listing all the flows passing through the link. You can now access the properties of a chosen flow from its right-click menu.

Location of Flows

The Location tab has many several display options relevant to objects that are flows. It displays different trees to show where the flow is consumed, where it is produced and where it is present as a flow-type child object in general. As for objects, the number of displayed trees depends on the number of flow parents.

Flow Warnings

In standard usage, flows are produced once and consumed once or more than once. This is true for each treeview. However, it is also possible not to respect this general rule. In this case, warnings are displayed near the flow ports. Default values are:

  • If a flow has no producer, it begins with a question mark '?'.
  • If a flow has no consumer, it ends in a question mark '?'.
  • If a flow has several producers, a double exclamation mark '!!' is displayed near the incoming flow port (at the location where it is consumed).

You can configure these warnings via Preferences dialogue accessible from the menu of the Main Button (for more information see Preferences).


If you modify the warnings associated to flow ports, this will be applied to all the projects on your computer.

Persistent Flows

Information on persistent flows can be found in Navigation.

Anchor Points of Flows

For more information on the anchor points of flows, see Organizing Objects in the Internal Block Diagram.



The following pages will show you how to work with flows.

  • No labels