Ir al contenido

Relaciones

Una ArchiRelationship representa una relación ArchiMate semántica — Serving, Assignment, Realization, Access, Composition, Aggregation, Association o cualquier otro tipo. Al igual que con los elementos, la cobertura es genérica.

interface ArchiRelationship {
sourceId: string; // id of the source element (occasionally another relationship)
targetId: string; // id of the target element (occasionally another relationship)
}

El modelo de dominio permite que una relación sea el origen o destino de otra relación. Al recorrer, resuelva los nodos desde las colecciones elements y relationships (consulte Análisis de impacto).

Exactamente como los elementos, las relaciones exponen tanto el xsiType literal (p. ej. "archimate:ServingRelationship") como el type sin prefijo (p. ej. "ServingRelationship").

Tres tipos de relación llevan atributos nativos que el analizador decodifica semánticamente. Para cualquier otro tipo de relación, los campos son null:

RelaciónCampoValoresValor por defecto si está ausente
AccessaccessType'Write' | 'Read' | 'Unspecified' | 'ReadWrite''Write' (valor nativo por defecto de Archi)
Influencestrengthtexto libre, p. ej. "+", "-"null (sin modificador establecido)
Associationdirectedbooleanfalse

Cada atributo tiene una página dedicada:

// All access relationships together with their resolved endpoints
const accessRelationships = model.relationships.filter(
(r) => r.type === 'AccessRelationship',
);
const byId = new Map(model.elements.map((e) => [e.id, e]));
for (const rel of accessRelationships) {
console.log(
byId.get(rel.sourceId)?.name,
rel.accessType,
byId.get(rel.targetId)?.name,
);
}