Filosofía¶
En Yuneta buscamos modelos (patterns) que nos permitan representar y visualizar todo tipo de realidades.
Reinos¶
Los sistemas de Yuneta se organizan en reinos.
Los reinos tienen tres propiedades:
Role (clase del reino)
Name (instancia del reino)
Owner (dueño del reino)
Interface del reino de Yuneta con la Web (url)¶
El interface entre los reinos y las urls es:
https://{Realm Name}.{Realm Role}.{environment}/{Realm Owner}
ó
https://{name}.{role}.{environment}/{owner}
Ejemplos
https://demo.saludatos.ovh/chris@gmail.com
Sistema abierto donde usuarios anónimos pueden crearse 1 o mas reinos, lo que el sistema permita.
https://demo.saludatos.ovh/chris@gmail.com - realm_owner = chris@gmail.com (owner) - realm_role = saludatos (service class) - realm_name = demo (service instance) - environment = ovh (staging)https://mulesol.siguerastro.com/mulesol
Sistema cerrado, por ejemplo, el servicio de una empresa. Aquí el owner define qué usuarios están autorizados a entrar.
La parte final de la url sobra (owner), porque es redundante.
https://mulesol.siguerastro.com/mulesol - realm_owner = mulesol (owner) - realm_role = siguerastro (service class) - realm_name = mulesol (service instance) - environment = com (production)https://comunidad-madrid.saludatos.es/hospital-princesa
Sistema cerrado con diferentes subdominios, por ejemplo una organización pública.
https://comunidad-madrid.saludatos.es/hospital-princesa - realm_owner = hospital-princesa (owner) - realm_role = saludatos (service class) - realm_name = comunidad-madrid (service instance) - environment = es (production)
Términos del Reino¶
Los reinos tiene las propiedades de Role y Name.
El Role define la clase del reino.
El Name es una instancia de la clase.
La instancia del reino, tiene otra propiedad: Owner, que define quién es el propietario del reino.
La url del frontend define el reino al que se quiere entrar.
El propietario de un reino puede añadir a su reino a otros usuarios y definir qué tipo de autorizaciones tienen.
Modelo Entidad/Relación¶
Describimos la realidad clasificándola en Entidades y en las Relaciones existentes entre dichas entidades.
Entidades¶
Describimos las entidades con el modelo
Role/instancia
Este modelo también lo podemos nombrar como:
Clase/objeto
Tabla/registro
Grupo/elemento
Relaciones¶
Describimos las relaciones también con modelos pares:
Modelos:
Padre/Hijo
El padre (o una factory) crea y se conecta al hijo.
Servicio/Cliente
El cliente conoce y se conecta al servicio.
Transporte de Mensajes¶
Las entidades intercambian mensajes a través de sus relaciones o enlaces.
Patrones de comportamiento:
Contenido de Mensajes¶
El modelo de datos usado en el contenido de los mensajes, tanto internamente como externalmente, tanto en persistencia como en transporte, es el de clave/valor.
Yuneta puede añadir además el modelo serie/tiempo a los mensajes transportados.
Codificación y Persistencia¶
Todos los modelos están representados en JSON, tanto en memoria como en disco, usando bases de datos Jerárquicas y Gráficas, de Clave/Valor y Serie/Tiempo.
Ejemplo de topologías:
CRUDLU¶
Las operaciones básicas en las entidades son el clásico CRUD (Create, Read, Update, Delete). Pero al añadir las relaciones entre entidades, nesitamos añadir las operaciones:
Link
Unlink
CRUDLU: (Create, Read, Update, Delete, Link, Unlink)