Saltar al contenido principal

Recurso políglota Low-Code

En este tutorial vamos a crear un recurso nativo para Netuno. Esto significa que vamos a crear una clase en Java que estará en el directorio base de Netuno y que podrá ser utilizada por cualquier aplicación dentro de la carpeta apps usando la sintaxis _foo.methodName(ars).

El ejemplo que vamos a crear, siguiendo los tutoriales anteriores, es el recurso _calculo, que es un recurso de ejemplo para ejecutar operaciones aritméticas sencillas.

Para empezar, primero es necesario crear la estructura de carpetas del proyecto. En este ejemplo vamos a considerar que el proyecto se creará dentro de una carpeta llamada Calculo. Entonces es necesario crear la estructura de carpetas que refleja el nombre del paquete (en nuestro ejemplo, org.netuno.addon.calculo). Nuestra estructura de carpetas será, por tanto:

  • Calculo/src/main/java/org/netuno/addon/calculo/resource/

Dentro de esa estructura vamos a crear una clase Java llamada CalculoResource, que definirá nuestro recurso nativo personalizado.

  • Calculo/src/main/java/org/netuno/addon/calculo/resource/CalculoResource.java

Entonces el paquete definido dentro de la clase será:

package org.netuno.addon.calculo.resource;

Para que la clase defina un recurso nativo personalizado, esa clase debe llevar la anotación org.netuno.tritao.ResourceBase. El parámetro name será el nombre del recurso al que se puede acceder con un guion bajo (_) delante del nombre (en nuestro caso, _calculo). La forma más fácil de crear el recurso es extendiendo la clase org.netuno.tritao.resource.ResourceBase:

package org.netuno.addon.calculo.resource;

import org.netuno.tritao.resource.Resource;
import org.netuno.tritao.resource.ResourceBase;

@Resource(name = "calculo")
public class CalculoResource extends ResourceBase {
// ...
}

Extender la clase ResourceBase nos ahorra tener que inicializar el recurso, simplemente llamando a super con los argumentos correctos:

package org.netuno.addon.calculo.resource;

import org.netuno.proteu.Proteu;
import org.netuno.tritao.hili.Hili;
import org.netuno.tritao.resource.Resource;
import org.netuno.tritao.resource.ResourceBase;

@Resource(name = "calculo")
public class CalculoResource extends ResourceBase {
// ...
public CalculoResource(Proteu proteu, Hili hili) {
super(proteu, hili);
}
}

La función init es obligatoria y, dentro de ella, vamos a inicializar el recurso llamando al constructor de nuestra clase con los getters de la clase padre:

package org.netuno.addon.calculo.resource;

import org.netuno.proteu.Proteu;
import org.netuno.tritao.hili.Hili;
import org.netuno.tritao.resource.Resource;
import org.netuno.tritao.resource.ResourceBase;

@Resource(name = "calculo")
public class CalculoResource extends ResourceBase {
// ...
public CalculoResource(Proteu proteu, Hili hili) {
super(proteu, hili);
}

public CalculoResource init() {
return new CalculoResource(getProteu(), getHili());
}
}

Después de eso vamos a definir nuestros propios campos y funciones:

package org.netuno.addon.calculo.resource;

import org.netuno.proteu.Proteu;
import org.netuno.tritao.hili.Hili;
import org.netuno.tritao.resource.Resource;
import org.netuno.tritao.resource.ResourceBase;

@Resource(name = "calculo")
public class CalculoResource extends ResourceBase {
public double valor = 0;

public CalculoResource(Proteu proteu, Hili hili) {
super(proteu, hili);
}

public CalculoResource init() {
return new CalculoResource(getProteu(), getHili());
}

public CalculoResource establecer(double v) {
valor = v;
return this;
}

public CalculoResource sumar(double v) {
valor += v;
return this;
}

public CalculoResource restar(double v) {
valor -= v;
return this;
}

public double obtener() {
return valor;
}
}

Ahora solo hay que compilar la clase, asegurándose de que el archivo CalculoResource.class esté en la carpeta:

  • netuno/core/web/WEB-INF/classes/org/netuno/addon/calculo/resource/

O producir un archivo JAR, asegurándose de que esté en la carpeta:

  • netuno/lib/

Vamos a crear una aplicación de prueba para usar este recurso:

./netuno app name=calculo

También vamos a crear un servicio en esa aplicación para usar el recurso. En el ejemplo, vamos a crear el archivo netuno/apps/calculo/server/services/calculo-test.js:

_calculo.establecer(10);

_calculo.sumar(120);

_out.println(_calculo.obtener());

Vamos a iniciar nuestra aplicación:

./netuno server app=calculo

Y ahora, cuando hagamos una llamada a ese servicio:

  • http://localhost:9000/services/calculo-test

Devolverá el valor 130.

Para usar un recurso en el código Java, algunas clases como org.netuno.tritao.Web y org.netuno.tritao.event.EventBase proporcionan la función resource, que inicializa este recurso. En la clase en la que quieras usar el recurso calculo, haz:

import org.netuno.addon.calculo.resource.CalculoResource;

// ...
CalculoResource calculo = resource(CalculoResource.class);
calculo.establecer(10);
calculo.sumar(120);
System.out.println(calculo.obtener());
// ...

Puedes ver los archivos completos del proyecto en este enlace.