UML Connector

Connector is feature which specifies a link that enables communication between two or more instances playing some roles within a structured classifier. This link may be an instance of an association, or it may represent the possibility of the instances being able to communicate because their identities are known by virtue of being passed in as parameters, held in variables or slots, or because the communicating instances are the same instance.

The link may be realized by something as simple as a pointer or by something as complex as a network connection. In contrast to associations, which specify links between any instance of the associated classifiers, connectors specify links between instances playing the connected parts only.

A connector is rendered using notation similar to association. Optional connector label follows the syntax:

connector-label ::=  [ connector-name ]  [ ':' ( association-name | association-class-name ) ]

where connector-name is the name of the connector, association-name is the name of the association, and association-class-name is the name of the association class. A keyword or stereotype within guillemets may be placed above or in front of the connector name on a diagram. A property string may be placed after or below the connector name.

Connector linking components could be either:

Kind of connector attribute is derived: a connector with one or more ends connected to a port that is not on a part and that is not a behavior port is a delegation; otherwise it is an assembly.

Connector's contract is set of behaviors that specify the valid interaction patterns across the connector.

Assembly Connector

An assembly connector is a connector between two or more parts or ports on parts that defines that one or more parts provide the services that other parts use.

The execution time semantics for an assembly connector are that signals travel along an instance of a connector. Multiple connectors directed to and from different parts, or n-ary connectors where n > 2, indicates that the instance that will originate or handle the signal will be determined at execution time.

The interface compatibility between ports that are connected enables an existing component in a system to be replaced by one that (minimally) offers the same set of services. Also, in contexts where components are used to extend a system by offering existing services, but also adding new functionality, connectors can be used to link in the new component definition.

Assembly connector is notated as a connector between two or more parts or ports on parts.

Assembly connector notated as a connector between two ports on parts.

Assembly connector between ports of Authentication and Customers components

When an assembly connector connects simple ports (ports that provide or require a single interface), it may be notated by a "ball-and-socket" connection between a provided interface and a required interface.

Assembly connector notated as ball-and-socket connection.

Assembly connector between simple ports of Authentication and Customers components

Ball-and-socket notation may not be used to connect "complex" ports or parts without ports.

Where multiple components have simple ports that provide or require the same interface, a single symbol representing the interface can be shown, and lines from the components can be drawn to that symbol. This presentation option is applicable whether the interface is shown using "ball-and-socket" notation, or just using a required or provided interface symbol.

Assembly connector notated n-ary connector.

Assembly connector that assembles three parts

Delegation Connector

A delegation connector is a connector that links the external contract of a component (as specified by its ports) to the realization of that behavior. It represents the forwarding of events (operation requests and events): a signal that arrives at a port that has a delegation connector to one or more parts or ports on parts will be passed on to those targets for handling.

A delegation connector is a declaration that behavior that is available on a component instance is not actually realized by that component itself, but by one or more instances that have “compatible” capabilities. These situations are modeled through a delegation connector from a Port to compatible Ports or Parts.

Delegation connectors can be used to model the hierarchical decomposition of behavior, where services provided by a component may ultimately be realized by one that is nested multiple levels deep within it. The word delegation suggests that concrete message and signal flow will occur between the connected ports, possibly over multiple levels. It should be noted that such signal flow is not always realized in all system environments or implementations (i.e., it may be design time only).

A port may delegate to a set of ports on subordinate components. In that case, these subordinate ports must collectively offer the delegated functionality of the delegating port. At execution time, signals will be delivered to the appropriate port. In cases where multiple target ports support the handling of the same signal, the signal will be delivered to all these subordinate ports.

A delegation connector is notated as a connector from the delegating port to the handling port or part.

Delegation connector from the delegating port to the UserServlet part.

Delegation connector from the delegating port to the UserServlet part

If the delegation is handled by a simple port, then the connector may optionally be shown connected to the single lollipop or socket.

Delegation connector from the delegating port to the simple port of SearchEngine.

Delegation connector from the delegating port to the simple port of SearchEngine

Delegation connector from the simple port of Authentication component to the delegating port.

Delegation connector from the simple port of Authentication component to the delegating port