Skip to end of metadata
Go to start of metadata

A key feature of modeling is the possibility to have objects exchanging flows. Some objects produce flows and others consume them. In arKItect, flows are also objects. They have a type and they can have children and attributes in the same manner as other objects. When an object instance a of type A contains an object b of type B, what determines if b is a flow is the relation between types A and B. This can be set either when creating a rule or later in its Type Properties window.


Saying that a type is a flow is actually a shortcut, it is the relation of the type with its parent type that is a flow.

The behavior of flow-type object instances is described in the arKItect Developer User's Guide.

When a relation is defined as a flow, the following type properties become relevant:

  • Bidirectional
  • Hide in Expanded Block
  • Line Type
  • Arrow Type
  • Everything in the Flow Line tab
  • Everything in the Flow Font tab

These are the properties applicable to the links and link labels in the Internal Block Diagram; they define the graphical properties of your flow instances. Line and arrow types as well as the Flow Line and Flow Font tabs are treated in more detail in Type Properties.

Defining a Relation As a Flow

A relation can be defined as a flow by checking the Flow is defined case in the Type Properties window. A relation can be defined as a flow when creating a new rule or later by accessing the rule properties.


If a relation is defined as a flow, it cannot be later changed to a non-flow relation (the Flow is defined options is grayed out). However, this restriction can be sidestepped by exploiting the fact that copying a type removes the relation's definition as a flow.

The flow relation can be defined either as

  • Input/Output
  • Input
  • Output

The same child type can have both a flow and an element relation to its parent (for an example, see Types and Type Relations).

Bidirectional Flows

It is sometimes useful to define more abstract kinds of bidirectional flows whose direction (producer → consumer) is not clearly defined or flows that can contain elements moving in the two directions. For instance, interfaces, boundaries or symmetric links could be defined as bidirectional. To activate the Bidirectional property, check the corresponding check-box in the Type Properties window.


It is possible to remove the Bidirectional property even after you have already created instances of this flow type.

Hide in Expanded Block

Hide in Expanded Block permits to hide the flow containers of first-level child flows inside the focus object of the Internal Block Diagram. To activate the Hide in Expanded Block property, check the corresponding check-box.


  • No labels