4.10 Flows
Flow specification declarations are represented by an abstract FlowSpec class, which itself is a subclass of the PropertyHolder class, and concrete classes for flow source (FlowSourceSpec), flow sink (FlowSinkSpec), and flow path (FlowPathSpec). These classes have references to members of the AbstractPort class in the same component type, represented by a source and destination reference association - as appropriate.  A flow specification can also refer to an element of a port group.  In that case, the port group is referenced as the context (srcContext or dstContext) of the source (src) or destination (dst) reference.
The abstract FlowSequence class represents both flow implementations and end-to-end flows.  It is a subclass of the ModeMember class.  A FlowSequence class contains a sequence of FlowElement objects that alternately represent a reference to a connection or a pair of references to a subcomponent and its flow specification.
Flow implementations are represented by the abstract FlowImpl subclass and the concrete subclasses FlowSourceImpl, FlowSinkImpl, and FlowPathImpl.  Each of these concrete subclasses has a reference association to the respective flow specification class it implements. Flow implementations contain a sequence of FlowElement objects that alternately reference a Connection object or a FlowSpec object in a subcomponent.  In other words, a FlowElement object either has a connection reference, or it has a flowSpec reference and a flowContext  reference to a subcomponent.  The connection reference must be to a port connection, i.e., to one of the concrete classes DataConnection, EventConnection, EventDataConnection, PortGroupConnection, or ParameterConnection.  The originating source port and the final destination port of a flow implementation are identified by the flow specification being implemented, thus, are not explicitly recorded as a FlowElement object.  Note that these ports are referenced by the first and last connection of the FlowElement sequence. 
A FlowSinkImpl specifies a path from the flow sink spec port through zero or more connection and subcomponent flow specification pairs (FlowElement) with the last subcomponent flow specification referring to a flow sink. A FlowSourceImpl specifies a path from a subcomponent flow source specification represented by one FlowElement through zero or more connection and subcomponent/flow specification pairs (FlowElement) followed by a FlowElement containing the connection to the destination port of the flow source implementation.  A FlowPathImpl specifies a path from the (incoming) source port to the (outgoing) destination port of the flow path spec through zero or more connection and subcomponent/flow specification pairs (FlowElement) ending with a FlowElement that contains the connection to the destination port of the flow path implementation. 
End-to-end flows are represented by the concrete EndToEndFlow class through a sequence of FlowElement objects with the first referring to the originating subcomponent and flow specification pair and the remainder representing connection and subcomponent/flow specification pairs (FlowElement).
graphic
Figure 26 Flows