.. include:: roles.rst 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 :realm_role:`Role` y :realm_name:`Name`. El :realm_role:`Role` define la clase del reino. El :realm_name:`Name` es una instancia de la clase. La instancia del reino, tiene otra propiedad: :realm_owner:`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. .. raw:: html
Entidades --------- Describimos las **entidades** con el modelo - **Role**/**instancia** Este modelo también lo podemos nombrar como: - **Clase**/**objeto** - **Tabla**/**registro** - **Grupo**/**elemento** .. raw:: html
Relaciones ---------- Describimos las **relaciones** también con modelos pares: .. raw:: html
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: .. raw:: html
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**. .. raw:: html
Yuneta puede añadir además el modelo **serie**/**tiempo** a los mensajes transportados. .. raw:: html
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: .. raw:: html
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**)