Relationships Architectural Pattern
This is the sixth in series of related architectural patterns. The others, in order, are :
Intent
Provide an explicit description of the relationships between entities.
Problem
The relationship between entities in a system is often implicit. That is: knowledge about a relationship is often localized to the entities that have a relationship and is not visible outside of those entities. This makes it difficult to change the relationships and difficult for an outside entity to use the relationship for its own purposes.
One way in which this could be solved would be for each entity to expose its relationships, but this is not usually the reason for the entities existence and thus should not form part of that entities interface.
In addition, in any given problem domain there may be multiple ways of categorizing and grouping the same entities to achieve different business ends. Clearly it would be infeasible to expect entities to be able to model any possible set of relationships.
Describe relationships using an explicit relationship model. A relationship may exhibit the following characteristics:
- Roles
- Type
- Direction
- Attributes
- Navigation
- Queries
Roles describe the two end points of the relationship. The information for each role includes:
- Cardinality
- Name
- Type
- Description
- Referenced entities
Type defines everything that is invariant between instances of a relationship. i.e. a relationship used in a binary tree has fixed requirements of the roles. These requirements are held in the type definition.
Direction describes whether or not the relationship is one-way and if so in which direction.
Attributes are associated with the relationship, allowing the relationship itself to have identity, a description and an arbitrary number of other associated attributes.
Navigation allows an external entity to move from one relationship to another that has something in common with the first entity, such as a shared entity in a role. Navigation can use any aspect of a relationship and its roles in order to select the next relationship – for example a relationship\'s type a role\'s name etc.
Queries allow multiple relationships and/or entities in roles to be discovered.
Applicability
Relationships are used to describe the topology of a network, the topology of overlay networks, the topology of a software deployment, the contents of a package, and the relationships between managed entities.
Known Uses
- JMX
- JAIN SLEE
- SNMP
- Computational Grids (OGSA, Globus etc.)
- OMNet++ network simulator
- OSPF
- RSVP
- CIM (Network Core Information Model).
- Schemaweb






