jueves, 25 de febrero de 2021

[JD Edwards - BSSV] Importar librería JAVA externa (ESP)

 Hola amigos,

En ocasiones, nos encontramos con la necesidad de extender la funcionalidad de nuestro JDE y muchas funcionalidades nos la encontramos en paquetes o librerías externas JAVA ya que es uno de los lenguajes y plataformas más extendidos. Por ejemplo, recientemente trabajé en un proyecto para implementar códigos bidimensionales QR. Entonces, ¿cuál es la solución?


Pues utilizamos una librería JAVA para facilitar la codificación, en éste caso una de IdAutomation que es de pago, pero hay otras de Google (Zxing) y otras muchas open source, depende cada caso y uso.
Pues bien, éste proveedor facilita una librería java en el cuál tiene una clase y un método que le pasamos el string a codificar y nos devuelve un array codificado. Posteriormente, a éste array le ponemos una fuente y ya tenemos nuestro código QR codificado. Fácil ¿verdad?

Entonces, generamos nuestro objeto BSSV (y no nos olvidemos nuestra BSFN en C para luego comunicarnos desde nuestro report o aplicación), con nuestra clase y método principal. Pero ¿Cómo importamos nuestra librería en nuestro entorno JDeveloper

1. Sobre nuestro proyecto, pulsamos botón derecho y en el menú Project Properties...:

2. Pulsamos sobre el menú en Libraries and Classpath, y dentro de éste sobre Add JAR/Directory:


3. Seleccionamos nuestra librería (recomiendo dejarla en la ruta JDE system\Classes (y luego explico el motivo)

4. Pulsamos sobre Open/Abrir, se nos añade a nuestro proyecto

5. Pulsamos OK, y guardamos el proyecto. Ya podremos utilizar las clases y métodos de la librería externa importándolas a nuestro código.

               boolean bestMask = true;           // Best pattern mask
               
               String resultQREncode = qre.FontEncode(dataToEncode, applyTilde, encodingMode, errorCorrectionLevel, version, bestMask);
               internalVO.setSzQREncodedData(resultQREncode);
               
               printMsg(context, "Encoded => ");
               printMsg(context, resultQREncode);

Y ya tendríamos todo listo en nuestro proyecto!

Para desplegar, tenemos que configurar a nivel de sistema que usamos una librería externa para que a la hora de compilar y que genere el paquete de despliegue, importe nuestra librería. Ésta configuración se realiza en el servidor Deploy (aunque yo también la configuro en mi cliente pesado).

1. Copiamos nuestra librería en la carpeta system\Classes de nuestra instalación:

2. Modificamos el fichero sbffoundation.ini dentro de la misma carpeta, en la sección [Foundation] y añadimos una línea con "LIB" + "siguiente secuencia" + "=" + "Nombre de nuestra librería"

Y con esto ya tendríamos nuestro proyecto de BSSV con una librería externa lista para desplegar!

PD: he utilizado librería externa también para código Datamatrix, para integrar con Webcenter Content a través de RIDC, y recientemente para crear un webservice proxy client a través de una librería externa con wsimport que pondré próximamente en un post.

Buen código JDE Friends!