Este documento es un kit de desarrollo de plugins para la plataforma Anjana Data.
Requisitos: Java 17 · Spring Boot 3.5.x
Estructura del proyecto
|
Fichero / Clase |
Descripción |
Ejemplo en tot-plugin-example |
|---|---|---|
|
|
Modelo de objeto del proyecto. Define versión, dependencias y configuración de build. Desde v6.0.0 usa |
|
|
|
Configuración de arranque: puerto, SSL/TLS, Eureka, logging. |
|
|
|
Configuración de conexiones y ARIs. Se despliega junto al jar. |
|
|
Clase principal |
Anotada con |
|
|
Clase de configuración |
Carga propiedades desde YAML. Ver patrón Multi / Única conexión más abajo. |
|
|
Controlador |
Anotado con |
|
|
Servicios ( |
Contienen toda la lógica de integración con la tecnología. Uno por operación. |
|
Árbol de directorios
tot-plugin-example/
├── external/
│ └── application-default.yaml <- conexiones y ARIs
├── src/main/
│ ├── java/com/anjana/tot/plugin/example/
│ │ ├── configuration/
│ │ │ ├── ExampleMultiConnectionConfiguration.java
│ │ │ ├── ExampleUniqueConnectionConfiguration.java
│ │ │ └── ExampleTechnology.java
│ │ ├── controller/
│ │ │ └── OperationsController.java
│ │ ├── service/
│ │ │ ├── ExtractMetadataService.java
│ │ │ ├── ObjectService.java
│ │ │ ├── PermissionService.java
│ │ │ └── SampleDataService.java
│ │ └── TotPluginExampleApplication.java
│ └── resources/
│ └── application.yaml
└── pom.xml
Patrón de configuración: Multi conexión vs. Única conexión
Las dos estrategias son mutuamente excluyentes. Se elige una en función de si el plugin gestiona una sola conexión o varias.
|
|
Múltiples conexiones |
Conexión única |
|---|---|---|
|
Clase base |
|
|
|
Clase ejemplo |
|
|
|
Estructura YAML |
Array |
Propiedades directamente bajo |
|
Binding de tecnología |
En |
Campo |
ExampleTechnology (implementa la interfaz Technology) es donde se declaran las propiedades específicas de la tecnología: credenciales, driverClassName, connectionTimeout, etc. Añadir aquí los campos que necesite la integración.
Operaciones disponibles
El controlador implementa las interfaces de la librería tot-plugin-lib. La tabla siguiente resume todas las operaciones:
|
Operación |
Interfaz |
Endpoint |
DTOs |
Cuándo se invoca |
|---|---|---|---|---|
|
Crear grupo ( |
|
|
|
Al crear o versionar un DSA con datasets gobernados |
|
Eliminar grupo ( |
|
|
|
Al expirar un DSA con datasets gobernados |
|
Eliminar objeto de un grupo ( |
|
|
|
Al expirar un dataset gobernado |
|
Asignar usuario ( |
|
|
|
Al adherirse un usuario a un DSA con datasets gobernados |
|
Desasignar usuario ( |
|
|
|
Al desadherirse un usuario de un DSA con datasets gobernados |
|
Editar objeto ( |
|
|
|
Al reactivar permisos sobre un objeto que vuelve a incluirse en un DSA |
|
Muestreo de datos ( |
|
|
|
Al acceder a la pestaña de muestreo en un dataset gobernado |
|
Listar objetos ( |
|
|
|
Al solicitar el listado de objetos disponibles en la tecnología |
|
Extraer metadatos ( |
|
|
|
Al extraer los metadatos de un objeto específico de la tecnología |
Se recomienda implementar metadataList y metadataExtract de forma asíncrona — las tecnologías externas pueden introducir latencia significativa.
Librerías
|
Librería |
Qué ofrece |
Ruta principal |
|---|---|---|
|
tot-lib |
DTOs de mapeo de datos. Utilidades: |
|
|
customers-lib |
DTOs adicionales y enumeradores tipados. |
|
|
tot-plugin-lib |
Interfaces de endpoints ( |
|
Cómo crear un plugin
1. Parent y dependencias
Usar anjana-jdk-parent como <parent>. Las dependencias comunes están gestionadas por el BOM — no declarar versiones explícitas.
2. Configuración mínima
Con múltiples conexiones (ExampleMultiConnectionConfiguration):
totplugin:
server:
urls:
- https://yourserver:15000/tot/
keep-alive-seconds: 60
connection:
- name: instance-1
aris:
- ari: "anja:totplugin:extract:/infra/tech/zone/"
- ari: "anja:totplugin:sample:/infra/tech/zone/"
- ari: "anja:totplugin:im:/infra/tech/zone/"
Con conexión única (ExampleUniqueConnectionConfiguration):
totplugin:
server:
urls:
- https://yourserver:15000/tot/
keep-alive-seconds: 60
aris:
- ari: "anja:totplugin:extract:/infra/tech/zone/"
- ari: "anja:totplugin:sample:/infra/tech/zone/"
- ari: "anja:totplugin:im:/infra/tech/zone/"
|
Propiedad |
Descripción |
|---|---|
|
|
URL de tot, necesaria para registrarse y mantenerse activo en sus registros |
|
|
Frecuencia de re-registro en tot |
|
|
Nombre único de la conexión (solo en modo multi-conexión) |
|
|
Tripletas (infraestructura, tecnología, zona) con las funcionalidades ofrecidas: |
3. Servicios
Los servicios del ejemplo vienen vacíos: es donde se desarrolla toda la lógica de integración con la tecnología. Los nombres de métodos y la estructura se pueden adaptar libremente; lo importante es que sean invocados desde el controlador.