Anteriormente, se presentaron a los MetaWizards que contiene Hopex y se describieron como ventanas que nos ayudan a realizar determinadas acciones sobre los objetos de ciertas MetaClases y también útiles para distintos flujos de trabajo. También, se realizó un ejercicio cuyo propósito era mostrar algunas de las posibilidades que se tenían para utilizar los MetaWizards para la creación de objetos con las herramientas disponibles por defecto. Ahora, se continuará con dicho ejercicio pero haciendo uso de las APIs con las que dispone Mega Hopex, particularmente haciendo uso de Visual Basic Script para la creación de Macros que también ayuden a modificar el comportamiento de los objetos a la antes y después de ejecutar un MetaWizard.
Recordando el ejercicio anterior con el proceso de negocio aquí MetaWizard Parte 1, tenemos actualmente ya definidas unas propiedades dentro del MetaWizard de creación que se hizo para ajustarlo a nuestras necesidades del ejercicio. Ahora, empezaremos recordando la ubicación de dicho MetaWizard.
Tenemos entonces un Meta Wizard Creator que se llama "Creación Proceso de Negocio", ahora, abriremos la sección de "implementation" que es la que contendrá una Macro creada al momento que también se creó el Meta Wizard. Al abrir dicha Macro, veremos lo siguiente:
Estas macro son creadas por defecto con el texto que aparece en la imagen anterior. Ese texto es de bastante utilidad, pese a estar comentado, es la sintaxis necesaria para ejecutar determinadas funciones en el Meta Wizard. A simple vista podemos observas que hay algunas que se ejecutarán al inicializar y terminar el Meta Wizard. También está declarada una para cuando se esté creando un objeto y esto está explícitamente descrito como una función que no se refiere al mismo momento en que el Meta Wizard termina y esto es importante de recordarlo, puesto que los MetaWizard tienen su propia función al momento de finalizar. También existen otro tipo de funciones para manejar comportamientos en los objetos o en algún otro proceso si el MetaWizard es cancelado.
Por ahora, nos quedaremos con las siguientes partes de la macro creada por defecto:
Como podemos observar, hemos conservado las funciones llamadas "OnWizInitialize" y "OnWizTerminate" que son para manejar comportamientos al momento de iniciar y terminar el Meta Wizard. Ahora, agregaremos las siguientes líneas:
A continuación una explicación breve de las líneas añadidas:
- Dentro de la función OnWizInitialize
- mwctxManager: Tal cual está definido en los parámetros de la función, es el objeto que se interpretará como el MetaWizardContext o dicho de otra forma, el MetaWizard que se está abriendo.
- .property: Esto será un método para indicar que vamos a afectar a una determinada propiedad que esté contenida en el MetaWizard. En este caso, tomaremos los campos de Nombre, Código del Proceso de Negocio y Comentario.
- Dentro de la función OnWizTerminate
- objProcesoNegocio: Aquí asignaremos el objeto que se creará al Terminar el Meta Wizard y lo obtendremos por medio del Identificador Absoluto.
- .getProp: En estas líneas se estarán obteniendo los MetaAtributos del objeto "Nombre Corto" y "Existencia" y a su vez, se les asignará un valor específico, en el caso del Nombre, tendrá 2 diferentes a lo largo de este ejercicio.
Nota: Los MetaAtributos están subrayados por el intérprete de Hopex para VisualBasic, sin embargo, realmente se están declarando por su nombre y su identificador absoluto, esto no es necesario, puesto se puede agregar sólo el nombre del MetaAtributo, sin embargo, es recomendado que siempre se utilice el identificador absoluto para referirse en la macro a determinado MetaAtributo.
Ahora procedemos con la creación de un nuevo proceso de negocio para el que ya existe una Macro en su respectivo Meta Wizard.
Ahora, podemos notar que apenas se inicia el MetaWizard, el campo de Nombre se llena automáticamente por el que se definió en la macro como "Prueba de Inicialización del MetaWizard".
En la siguiente página, el nombre se mantiene y también vemos que el código se ha autocompletado con "CBP-00", esto puede ser muy útil para que se evite crear un objeto con un campo que siempre se requiere, como en el código, que anteriormente habíamos definido como "mandatorio". También esto puede ayudar a completar el código, suponiendo que sea necesario rellenar las siglas de la empresa sin cometer errores. También en el campo de Comentario, tenemos que se inicializa con texto definido en la macro.
Al finalizar el MetaWizard dando click en terminar, podemos ver que el nombre del objeto cambia automáticamente, puesto que tenemos una función definida para esta acción. El nombre ha cambiado a "Prueba Finalización del MetaWizard". Esta podría ser otra manera de alterar el objeto después de que se haya creado, puesto que se podría utilizar la macro para definir explícitamente un atributo de acuerdo a nuestras políticas.
De igual manera, el campo de existencia, a pesar de que no llenamos el checkbox al momento de crear el objeto, por definición en la macro, hemos autorellenado ese check por medio del valor booleano "1".
Con esto concluimos este pequeño ejercicio demostrativo esperando que sea de utilidad para satisfacer modificaciones sencillas que se requieran para mejorar la productividad y ayudar a definir ciertas reglas a los objetos que así lo requieran. El uso de APIs como VBs o Java en conjunto con Hopex es bastante extenso y poderoso, así que es recomendado aprovechar este conocimiento para poder lograr una personalización de Hopex más profunda, precisa y profesional.