Sabemos por blogs anteriores que en Mega Hopex existe la posibilidad de trabajar con diferentes APIs y esto ya se ha llevado a cabo con ayuda de Visual Basic Script para crear objetos en conjunto de los MetaWizards y por tanto, es turno de Java.
Para utilizar un código escrito en Java, es necesario tener un ambiente que nos permita la correcta integración de esta API y por documentación, Eclipse es el indicado para esto. En este ejercicio, estaremos creando una Macro en Java y ejecutándola desde una Macro de VBS escrita desde el editor de scripts raíz de Hopex. Posiblemente el ejercicio no sea el más complicado en cuanto a programación, pero es el inicio para poder integrar Java con Hopex, debido a que este proceso puede causar confusión y errores para ejecutar las clases correctamente.
Para comenzar, se debe crear la Macro desde Hopex, los pasos son los siguientes:
Al seleccionar la creación de una Macro, se abrirá el siguiente Wizard de Creación, en el que debemos seleccionar Java Macro:
A continuación, se le debe declarar un nombre dentro de Hopex y también se especificará el nombre de la Clase de Java, es muy importante declarar esto correctamente, debido a que se buscará exactamente lo mismo, recordemos que Java es case sensitive y por tanto, esto debe estar declarado igual que en nuestra IDE de desarrollo. También se indicará el nombre del paquete y el directorio en el que se encontrará dicha clase. En este ejercicio, se guardará directamente en el directorio de java\lib, que es el sitio donde están almacenados todos los JAR de Hopex.
En cuanto se de click a Terminar, la macro estará creada dentro de Hopex y como adicional, se habrá creado un directorio en la ruta que especificamos en "Working Directory" con la estructura del paquete que indicamos.
Dentro de este directorio, habrá un archivo con extensión .java que contendrá lo necesario para comenzar a codificar. Todo este directorio no es necesario, por lo que se puede eliminar sin problema.
Nota: Es muy importante que al terminar de crear la macro de Java en Hopex, se haga una publicación de los cambios y por ahora se debe cerrar esta sesión. El motivo es que Hopex tiene que ser reiniciado para cargar todos los elementos nuevos que se estarán almacenando en java\lib, como lo haremos con el nuevo JAR que añadiremos.
Ahora en nuestro IDE de Eclipse configuraremos el proyecto que utilizaremos para nuestra Macro de Java. Se le asigna un nombre al proyecto y un JRE específico.
IMPORTANTE: NO se debe seleccionar una versión superior de JRE a 1.8 para HopexV5 o nuestra macro no será ejecutada.
Al dar click en siguiente, el paso que sigue es importar las bibliotecas necesarias para manipular elementos de Hopex desde el código de Java, hay que ir a la pestaña de Libraries.
Y una vez dentro de esta pestaña, vamos a añadir JARs externos.
Si recordamos qué implicaba java\lib, iremos a esta ruta para tomar todos los JAR que vienen proporcionados por Hopex.
Por lo tanto, en el Explorador, debe aparecer algo similar a esto:
Ahora, se creará la nueva clase de Java tal cual la declaramos en la creación de la Java Macro de Hopex, con los mismos nombres en el paquete y la clase:
Antes de comenzar a importar bibliotecas de Mega, haremos una prueba sencilla de que la Macro está siendo detectada correctamente por Hopex, en este caso, probaremos con un booleano.
Una vez lista la clase con sus métodos, se exportará un archivo JAR.
Antes de finalizar el export, recordar marcar la opción de "Export Java source files and resources" y en este caso, se estará exportando directamente en el directorio de java\lib.
Ahora, se abrirá un editor de scripts directamente de la ventana principal de Hopex, no es necesario crear otra macro que funcione de trigger para ejecutar esta prueba.
Tomamos la instancia raíz del ambiente y llamamos la macro de Java que creamos anteriormente y simplemente ejecutaremos el Método de nuestra clase llamado "PrintBoolean" y lo mostraremos en el resultado de la macro:
De este modo hemos verificado que Hopex ya está detectando correctamente el JAR de nuestra macro en Java y por lo tanto, podemos seguir añadiendo código con las bibliotecas de Hopex.
En el siguiente ejercicio, simplemente se tomará el nombre de todas las MetaClases que tenemos en nuestro ambiente, el código se ve como lo siguiente y notar que se está importando "com.mega.modeling.api.*".
Aquí ya podemos empezar a utilizar instancias tipo MegaCollection y MegaObject, unas instancias que se utilizarán bastante para manipular los objetos de Hopex. En este caso, estamos obteniendo una colección con todas las MetaClases contenidas en el ambiente DEMO y las recorremos en un bucle for instanciando un MegaObject por cada MetaClase. Después, de cada MegaObject, se está tomando su Nombre Corto y almacenando en una cadena seguido de un salto de línea, para finalmente, regresar una cadena con la lista de todas estas MetaClases a la macro que invocó el método.
Modificando la Macro de VB quedaría lo siguiente:
En la impresión se verán todos los nombres continuos, pero lo llevaremos a un notepad para ver la lista mejor.
La lista final quedaría como lo siguiente:
Existen muchos más métodos para utilizar en Java, por lo que es importante revisar la documentación que proporciona MEGA para saber cómo manipular el MetaModelo y trabajar con los objetos de Hopex. Esperamos que esto haya sido de utilidad para futuras implementaciones y próximamente estaremos revisando cómo ejecutar un MetaComando con una macro de Java.