Herramientas de migración
Herramientas de migración
Velneo V7 incorpora herramientas para facilitar la migración de aplicaciones desarrolladas en Velneo 6.x a V7.
Velneo vMap2ProjectAid V7
Se trata de una utilidad que nos permite crear un proyecto de datos partiendo de la estructura de datos que contiene el mapa. Nos generará las tablas y variables globales que encuentre en el mapa de origen. Además creará un proyecto de aplicación que hereda el proyecto de datos con las rejillas y los procesos del mapa de origen.
A continuación iremos concretando cada uno de los objetos y subobjetos sucetibles de ser migrados.
Tabla
De las tablas es capaz de replicar todos sus campos, incluyendo punteros, índices y actualizaciones. Esto incluye todas las propiedades de tipo de campo o índice, longitud, campos enlazados, fórmulas, contenidos iniciales de los campos, etc.
Eventos de tabla
Además es capaz de migrar eventos de tabla (triggers) incluyendo, claro está, las instrucciones y las variables locales. Debemos tener en cuenta dos cosas:
Por un lado que si usamos instrucciones que hacen uso de objetos que irían en el proyecto de aplicación, estos no estarán disponibles.Dentro de la filosofía de separar interfaz de estructura de datos, haciendo de ésta última un ente autónomo, el proyecto de datos no conoce el proyecto de aplicación. De ahí, que si necesitamos compartir procesos, estos han de encontrase en el proyecto de datos.
Por otro lado, las variables locales del evento de tabla o trigger, como sucede en otros objetos, son compartidas por el objeto padre del subobjeto. En este caso, todas las variables locales serán subobjetos de tabla, por lo que no nos ha de extrañar que tras la migración, tengamos una serie de variables locales en el editor de tablas. Podremos hacer uso, por tanto, de esas variables en todos los triggers de una tabla.
Tablas estáticas
En la migración de tablas estáticas se migran tanto el campo código como el campo nombre correspondiente. En Velneo V7 no se admite el valor nulo o un espacio en blanco, que es sustituido por un guión bajo “_”, así que deberemos revisar las implicaciones que tiene este cambio en las funcionalidades de nuestra aplicación. Tampoco se tienen en cuenta los iconos correspondientes, que debemos crear de nuevo.
Enlaces plurales
Debemos tener en cuenta que los enlaces plurales (históricos) en Velneo V7 se generan de forma automática, teniendo en cuenta los índices correspondientes por los que se realiza el enlace. Por supuesto, no se migran en este caso. Debemos tener en cuenta esto para revisar su uso correcto en nuestras aplicaciones una vez migradas
Variables globales
En cuanto a las variables globales, debemos tener en cuenta que en Velneo V7 son realmente globales. Así, la opción que existe en Velneo 6.X de que sean independientes por cada tarea no será tenida en cuenta. Ese uso de las variables globales, recordad que en Velneo V7 se realiza con variables locales al objeto, que se compartirán por todos los subobjetos. Además, con ayuda de los Comandos de Instrucción de Objeto, podemos manejar las variables locales de otros objetos.
Esto hace que debamos revisar el uso que hagamos de las variables globales para ver si es necesario programar el uso de variables locales en esos casos.
Fórmulas
Las fórmulas son convertidas al nuevo sistema, cambiando los delimitadores de campo, variable global y local, etc., haciendo uso de un único delimitador inicial y todas las modificaciones necesarias. Debemos tener en cuenta sin embargo que no todas las funciones de Velneo 6.X tienen correspondencia en Velneo V7.
Rejillas y procesos
Velneo vMap2ProjectAid V7 también migra rejillas y procesos del panel derecho de un mapa de Velneo 6.x, aunque lógicamente, debido a las diferencias entre ambas plataformas, no todas las funcionalidades de dichos objetos serán migradas. En los proceos, por ejemplo, no es posible conseguir la migración total ya que la forma de programar en Velneo V7 es distinta, entran en juego multitud de elementos (las fórmulas, por ejemplo, de las que hemos hablado anteriormente) y dependerá de las decisiones que tome el desarrollador en cuanto al resultado concreto que quiera obtener.
Reprogramación del resultado
En cualquier caso, viendo los detalles que comentamos, hemos de tener en cuenta que este componente es una ayuda, no un migrador completo, y no puede realizar una migración fidedigna y que comience a funcionar sin tener que reprogramar nada. No ya pensando sólo en aprovechar toda la potencia de Velneo V7, si no teniendo en cuenta que no existen paralelismos para todos los elementos que se puedan resolver de forma automática, lo que requiere de un trabajo posterior: una vez realizada la migración deberemos repasar todos los objetos generados y desarrollar y reprogramar aquellas funcionalidades que se hayan visto afectadas.
Modo de uso
Podemos acceder para su descarga en la zona Mis Productos de Velneo directo. Una vez instalado siguiendo el asistente, lo ejecutaremos y nos solicitará el mapa de Velneo 6.X cuya estructura de datos queremos migrar. Debemos escoger un mapa libre de errores para comenzar la migración:

Nos solicitará entonces la VRL de acceso al servidor (vatp://v7cloud3.velneo.com:puerto):

Comienza entonces la migración del mapa hacia el servidor. Tardará unos minutos en función del tamaño del mapa y de la velocidad de transmisión de nuestra conexión:

Si nos hemos equivocado en la introducción de los datos de acceso mostrará un error y se cerrará. Tendremos que abrir de nuevo Velneo vMap2ProjectAid para recomenzar el proceso.
Si el mapa contiene errores, mostrará un mensaje indicando que no ha podido realizar la migración. Hemos de revisar nuestro mapa antes de realizar el proceso de nuevo, comprobando en Velneo vDevelop con el Inspector de errores que no tenemos ninguno.
Si el mapa no contiene errores será migrado a nuestro servidor en Velneo V7, en el que habrá creado una solución para los proyectos de aplicación y de datos con el nombre del mapa y la fecha y hora de la migración.
Ejecución desde Velneo 6.x de funciones remotas de Velneo V7
El aplicativo que nos permite disponer de esta funcionalidad es la librería vRemoteFunctionV7.dll, la cual es distribuida con Velneo vMap2ProjectAid V7.
Esta librería es funcional solamente en sistemas operativos Windows.
Esta librería debe ser distribuida junto con otras librerías de las que depende. Todas ellas las encontraremos en el directorio de instalación de Velneo vMap2ProjectAid.
También necesitará del sistema de Windows las librerías del Runtime de Visual C++ 2005 SP1. Dichas librerías suelen estar instaladas en los sistemas operativos modernos, aunque Velneo vMap2ProjectAid V7 las instala en caso de no existir. No obstante en caso de copiar vRemoteFunctionV7.dll a otro equipo, y si no existen dichas librerías en él, será necesario que sean instaladas por el usuario (pueden ser descargadas gratuitamente del sitio web de Microsoft).
¿Qué debo hacer en Velneo V7 para que una función pueda ser llamada desde Velneo 6.x?
Simplemente definir en el proyecto de Velneo V7 la función que deseamos llamar, activarle el estilo Ejecutabe en remoto e instanciar el proyecto en el que está definida, no hay que hacer nada en especial por el hecho de que vaya a ser llamada desde Velneo 6.x, salvo asegurarse de definir un identificador en las propiedades de la instancia desde Velneo vAdmin V7, para que Velneo 6.x sepa a qué instancia llamar.
El proceso detallado sería:
1.- Definir la función remota que deseamos ejecutar en Velneo V7:

Como vemos, la función se define normalmente, sin diferencias añadidas por el hecho de que vaya a ser llamada desde Velneo 6.x
2.- Crear una instancia en Velneo vAdmin V7, y definir un identificador para dicha instancia:

Definiendo un nombre para el identificador desde Velneo vAdmin V7, podremos decir a Velneo 6.x qué instancia deseamos que ejecute la función remota que queremos llamar.
NOTA: Lógicamente desde Velneo 6.x se llamará a la función con el usuario y contraseña que deseemos, por lo que la configuración en Velneo vAdmin V7 debe permitir el acceso a la instancia en cuestión con ese usuario.
Declaración de la librerá para llamar a la función de Velneo V7 en el mapa de Velneo 6.x
En el mapa que vayamos a usar, debemos crear un elemento en “Librerías de funciones (dll)” donde dar de alta la librería que se ocupará de enlazar Velneo 6.x con Velneo V7, que como comentamos al inicio de este artículo se llama “vRemoteFunctionV7.dll”.
Dicha librería contiene una función a la que debemos llamar desde Velneo 6.x con los parámetros necesarios para ejecutar la función definida en Velneo V7. La configuración debe ser:


Los parámetros que afectan a la función son los siguientes:
1.- El retorno será “char *”, por lo que la función definida en Velneo V7 siempre devolverá una cadena de texto. Caso de no ser así, y si por ejemplo devolviese un número, dicho número sería convertido automáticamente a cadena de texto.
2.- La convención será “_cdecl” por diseño
3.- El nombre de la función debe ser “RemoteFuncV7”
4.- El número de parámetros definidos para la función serán 13, todos ellos del tipo “char *”. Los parámetros serían:
char* szServer: Contiene el Velneo vServer V7 al que deseamos conectarnos. La cadena debe comenzar siempre por “vatp://” seguido del nombre o dirección IP del servidor y su puerto. Por ejemplo: “vatp://80.80.80.80:691” o “vatp://servidorV7.com”
char* szInstancia: Contiene el identificador que definimos para la instancia que queremos ejecutar. Para las capturas de imagen anteriores, el identificador sería “FUNCAPP”.
char* szIdFuncion: Contiene el identificador de la función que queremos ejecutar dentro de la instancia definida en el punto anterior. Para las capturas de imagen anteriores, el identificador sería “FUNCION”
char* szUsuario: El nombre de usuario con el que conectarnos al Velneo vServer V7.
char* szPassword: La clave del usuario anterior.
char* szParam1, char* szParam2, …. , char* szParam8: Son los parámetros que enviamos a la función remota para su ejecución. El número máximo de parámetros como vemos es 8, no es posible introducir más. En caso de que nuestra función necesite menos de 8 parámetros, para evitar problemas deberemos definir igualmente los 8 aunque posteriormente no se usen.
Lanzar la función

En este ejemplo lanzamos la función desde el proceso OnInit. Como vemos el uso es simple:
“Set -> retorno, »VREMOTE1.RemoteFuncV7(“vatp://Servidor”, “FUNCAPP”, “FUNCION”, “usuario”, “clave”, “2″,”",”",”",”",”",”",”")
Donde VREMOTE1 fue el nombre que dimos en el mapa Velneo 6.x a la librería de funciones. El retorno volverá en la variable “retorno” que después procesaremos como deseemos. Es importante, que tal y como vemos en el ejemplo, se envíen los 8 parámetros en la función, dejando “” en caso de que no los usemos.
