# Flow

We consider in this chapter both the control flows and the object flows, there are not distinguished by a given flag but by their usage. When you try to create a flow through a diagram Bouml checks the validity of the flow, for instance you can't have a flow starting from an output pin, but you may after edit the extremities of the flow, producing an invalid case, you are responsible of that, perhaps the non consistent flow is temporary. To add a flow you have to use an activity diagram (obviously the diagram or the flow drawing may be deleted just after !), it is not possible to add a flow through the browser. It is also not possible to move a flow out of its start or end container in the browser.

In the browser are written the name of the flows (by default <<flow>>) , the stereotype may be may be showed/hidden through the Miscellaneous menu.

## Menus

The flow menu appearing with a right mouse click on its representation in the browser is something like these, supposing it is not read-only nor deleted (see also menu in a diagram) :

### Menu : edit

edit allows to show/modify the flows properties. In case the flow is read-only, the fields of the dialog are also read-only.

#### Flow dialog, tab Uml

The tab Uml is a global tab, independent of the language :

The proposed stereotypes are the default ones specified through the Default stereotypes dialog more the current one (empty here). It is possible to choose into the list or to give a new one, or to empty it. The stereotype and the multiplicity are used both (may be with the stereotype of the class(es) in Idl) to compute the default declaration.

The editor button visible above and associated here to the description and initial value, allows to edit the description or initial value in an other window, or to call an external editor (for instance Xcoral) specified through the environment variable BOUML_EDITOR. Note that this external editor have to create an own window, its parameter is the pathname of the file containing the description, its execution is done in parallel with BOUML which looks each second at the file contents to get the new definition until the dialog is closed (I do not like very much this polling but this works even QT isn't compiled with the thread support).

#### Flow dialog, tab Ocl

This tab allows to give the Ocl definition of the flow, but in fact BOUML doesn't check the syntax, this is just a convention.

The weight, guard, selection and transformation are the standard UML properties of a flow.

#### Flow dialog, tab C++

This tab allows to give the C++ definition of the flow, but in fact BOUML doesn't check the syntax, this is just a convention.

#### Flow dialog, tab Java

This tab allows to give the Java definition of the flow, but in fact BOUML doesn't check the syntax, this is just a convention.

### Menu : delete

The menu entry delete is only present when the flow is not read-only.

Delete the flow, associated get and set operations when they exist, and all the representation of them in the opened diagrams. After that it is possible to undelete them (from the browser) until you close the project : obviously the deleted items are not saved !

### Menu : select X

To select the target of the flow.

### Menu : mark

See mark

## Default stereotypes

The dialog allowing to set the default stereotypes has a tab reserved for the flows :

## Drawing

A flow is drawn in a diagram with a line may be with the associated labels : flow's name, stereotypes (the stereotype interrupt is specially managed and allows to show a zigzag), the weight, the guard, the selection and transformation, depending on the drawing ssettings :

To add a new flow between elements, select the flow through the buttons on the top of the diagram sub window, click on the start element with the left mouse button, move the mouse, each time the mouse button is raised a new line break is introduced, at least click on the end element. To abort a flow construction press the right mouse button or do a double click with the left mouse button.

A line may be broken, during its construction of after clicking on the line with the left mouse button and moving the mouse with the mouse button still pushed. To remove a line break, a double click on the point with the left mouse button is enough, or use the line break menu of the point using the right mouse button.

A right mouse click on a flow in a diagram or a double click with left mouse button calls the following menu (supposing the flow editable) :

### Menu : edit

To edit the flow

### Menu : select labels

To select the labels (flow's name, stereotypes) associated to the flow. Useful when you are lost after many label movings.

### Menu : labels default position

To place the labels (flow's name, stereotypes, role(s) and multiplicity(ies)) associated to the flow in the default position. Useful when you are lost after many label movings.

By default when you move a class or a flow point break or edit the flow, the associated labels are moved to their default position, this may be irritating. To ask BOUML to not move the associated labels on the flows in a diagram, use the drawing settings of the diagrams.

### Menu : geometry

Allows to choose one of the line geometry :

Note : if you manually move the central line of the last two geometries this one stop to be automatically updated when you move one of the two extremities of the flow.

### Menu : tools

Appears only when at least one plug-out is associated to the flow. To apply a plug-out on the flow.

## Drawing settings

The drawing settings associated to the flows in a diagram may be set through the the diagram itself or one of its parent, for instance :

A settings valuing default indicates that the setting specified in the upper level (here the diagram) must be followed, obviously this one may also be default ... up to the project level.

#### write horizontally :

To made the label indicating the name, weight and guard on one line or several.

#### show information note :

To show or not the selection and transformation.

#### Drawing language :

To choose the language used to write the weight, guard, selection and transformation.

Previous : activity control node

Next : component