Flow Diagrams allow users to visually illustrate how data flows
between applications (and actors). Flow diagrams are constructed using the
flow information contained within the logical and physical flow stores.
This allows the elements of the diagram to be verified and cross referenced.
The typical use for flow diagrams is to quickly illustrate a particular scenario. Unlike the logical flow section, which shows all (single hop) upstream/downstream flows, a flow diagrams have been designed to help users to illustrate multi-hop scenarios.
Flow diagrams are intentionally constrained by the underlying logical/physical flow model, it is not possible to draw flows which do not exist (though future state flows are permissible).
Flow diagrams are stored across three tables. The primary table is
FLOW_DIAGRAM
and stores the basic details of the diagram alongside the
layout_data
which is a stored as JSON object within a CLOB column. The JSON
object details the current diagrams transformation (translation and scale) and
map giving the positions of the diagram elements. This position map is keyed by
the entity ref of the element (in the form <kind>/<id>
).
FLOW_DIAGRAM_ENTITY
acts like a bill of materials for the diagram. It is used
to cross link a diagram to each of the elements depicted in it. The is_notable
field is not currently used but will allow us to filter these crosslinks to only
references which have been flagged as notable.
FLOW_DIAGRAM_ANNOTATION
contains all notes attached to the diagram. Each note is
associated to a specific entity. It's location in the position map (in the JSON obj)
is expressed in terms of deltas (dx
& dy
) therefore the annotations position is
relative to the annotations subject (the entity).