Analice su primer modelo
parseArchiModel acepta solo texto XML. Leer un archivo del disco, usar
la API File del navegador u obtener XML por red es responsabilidad de quien
llama — esto mantiene el paquete utilizable desde Node.js, bundlers de
navegador y pruebas sin acoplarlo a un entorno de E/S específico.
Ejemplo mínimo
Sección titulada «Ejemplo mínimo»import { parseArchiModel, validateArchiModel,} from '@cda/archi-semantic-core';
const model = parseArchiModel(xml);
console.log(model.elements);console.log(model.relationships);console.log(model.views);
console.log(model.elements[0].type);// e.g. "ApplicationComponent", not "archimate:ApplicationComponent"
const { valid, errors } = validateArchiModel(model);Lectura desde el disco
Sección titulada «Lectura desde el disco»import { readFile } from 'node:fs/promises';import { parseArchiModel } from '@cda/archi-semantic-core';
const xml = await readFile('MyModel.archimate', 'utf8');const model = parseArchiModel(xml);Qué se obtiene
Sección titulada «Qué se obtiene»parseArchiModel devuelve un ArchiModel
cuyas colecciones son arrays planos en el orden del XML fuente:
| Colección | Contenido |
|---|---|
folders | El árbol del modelo (Business, Application, Relations, Views, carpetas personalizadas). |
elements | Todos los elementos semánticos, cualquier tipo ArchiMate. |
relationships | Todas las relaciones semánticas. |
views | Todas las definiciones de diagrama/vista. |
diagramObjects | Nodos visuales: objetos de diagrama, grupos, referencias a modelos. |
diagramConnections | Conexiones visuales entre objetos de diagrama. |
notes | Notas de diagrama de texto libre. |
profiles | Especializaciones y Perfiles genéricos declarados en la raíz del modelo. |
Las referencias cruzadas entre colecciones son ids de cadena simples —
búsquelos en el array correspondiente o construya un Map con clave id
para búsquedas repetidas (consulte Construir índices de búsqueda).
Comportamiento ante errores
Sección titulada «Comportamiento ante errores»parseArchiModel lanza una excepción cuando:
- la entrada no es una cadena;
- el XML no está bien formado.
No lanza una excepción para un modelo semánticamente roto (ids faltantes,
referencias colgantes, valores de Unión sin resolver) — use
validateArchiModel para las
comprobaciones estructurales.