Agradecimientos y mi aportación


([N3] pacosatu) #1

Hola a Todos.

Después de varios meses de aprendizaje con Velneo, termina 2013 con un buen sabor de boca y dispuesto a comenzar el año 2014 con varios proyectos que están esperando a ponerse en marcha.

Ante todo agradecer al equipo de Velneo su interés en que aprendamos la herramienta lo mejor posible, especialmente a Miguel Pérez, Fran Abad, Jesús Arboleya y a Rafael Cueto (que nos soporta en el Soporte). Las fuentes externas de conocimiento Velneo aunque muy pocas de momento, para los que empezamos son una verdadera joya. Gracias Francisco Vila, Jorge Hontoria, Ramiro, Antonio Vela, Cristian Camilo, Arturo Miranda, … por hacer el gran esfuerzo de mantener al día un blog de conocimiento Velneo.

Quiero aportar mi pequeño grano de arena al foro enumerando unos cuantos conceptos aprendidos sobre Velneo, que aunque ahora parezcan obvios, hace unos meses no lo eran tanto. Espero que a los noveles de Velneo les sea útil de alguna manera.

OBJETOS DE VELNEO

  • Los objetos por sí mismos no muestran Listas de registros, necesitan que en el flujo de ejecución el objeto anterior haya creado una Lista (o Ficha) de la misma Tabla.
  • Las Vistas de Datos permiten concentrar varios objetos en un flujo para que el resultado sea la Lista mostrada en el formulario.
  • El comando de instrucción Recalcular(Vista de datos) vuelve a Disparar los objetos que integran el control Vista de datos para obtener de nuevo la Lista. Es decir, se vuelven a comprobar todos los parámetros que conforman la Vista de Datos.
  • Desde un Manejador de Evento de un Formulario no tenemos Acceso a los Manejadores de Evento de los subobjetos de dicho formulario.
  • Los procesos siempre ejecutan los formularios en Modal (Ventana de Diálogo). Para mostrar el formulario No Modal necesitaremos ejecutar una Acción que establezca un flujo nuevo.

PLANOS DE EJECUCIÓN

  • Todos los objetos de las Bases de datos (Triggers, Actualizaciones,… ) siempre se ejecutan en el servidor.
  • Los planos de ejecución son absolutos: 1º plano en cliente, 2º plano en cliente multitarea y 3º plano en servidor.
  • El plano donde realmente se ejecutará el objeto dependerá del plano absoluto en el que se encuentre el objeto llamador.
    Así un proceso en 3º plano ejecutará todos los objetos subsiguientes en el servidor, independientemente del valor del parámetro Plano de ejecución.
  • Los objetos (incluso los procesos) no pueden dispararse (Disparar Objeto) en 2º plano, porque necesitan de un handle local al proceso llamador.

LISTAS

  • Las Listas (y las Fichas) únicamente guardan un puntero interno al registro físico de la Tabla en el vServer.
  • Los registros físicos de las tablas llevan asociado un número de registro o puntero interno (no es el ID) que sirve como puntero para las Listas y Cestas. Tiene un tamaño de 4 Bytes (4.294.967.295). Es el número que aparece a la izquierda en las rejillas.
  • Las Cestas son Listas de punteros a registros de una tabla. No almacenan información, solo apuntan a los registros.
  • La Caché de fichas acelera la carga de los datos en Local. Cuando establecemos una transacción de lectura/escritura se fuerza siempre la lectura de la ficha desde el Servidor para tener siempre la última versión.
  • Las Cestas agilizan los Procesos con muchos registros.
  • Lo que viaja entre cliente y servidor son listas de punteros, no fichas completas de campos.

BLOQUEOS

  • El Bloqueo Blando es el que realizan los formularios por defecto. El Bloqueo Duro es el que realizan los Procesos que transaccionan y los formularios con Estilo = Bloqueo Duro.
  • En Bloqueo Blando las transacciones son independientes para cada tabla. En Bloqueo Duro la transacción es global a todo el Proceso o Formulario.
  • El Refresco terciario no se produce en formularios Modales.
  • Las Funciones en 1º Plano siempre generan transacción independiente, aunque ya estén dentro de otra transacción. En 3º Plano las Funciones se integran en la transacción abierta.

VARIABLES

  • Las Variables Globales en disco se comparten por el Cliente y el Servidor. Usarlas para leer datos globales una vez, almacenando su valor en una variable global en memoria.
  • Las Variables Globales en memoria no se comparten entre el Cliente y el Servidor.
  • Las Tablas en memoria pueden usarse para dar de Alta registros de manera diferida en 2º plano.
  • Las Tablas en memoria no se comparten entre Cliente y Servidor.

OPTIMIZACIÓN

  • En 1º Plano la instrucción Ejecutar Proceso es más rápida que la instrucción Disparar Proceso. En 3º Plano es aproximandamente lo mismo.
  • El campo Alfa 256 es el más rápido de gestionar de los campos alfanuméricos. No confundir con el tamaño del campo.
  • Índices. No abusar innecesariamente de ellos. Lleva su tiempo gestionarlos.
  • Los Índices Condicionados, aunque penalizan un poco, merecen la pena cuando se transacciona poco y se lee mucho.
  • Las Rejillas con campos de tipo objeto demoran la carga para evitar lapsus en la visualización de los registros.
  • JavaScript. ¡Ojo! su uso en fórmulas y/o eventos tiene un gran coste porque se debe cargar el Intérprete con toda la carga de Clases detrás.
    ¡Viva el código Nativo para tareas elementales!

… y más el próximo año …

Bueno, me uno al post de buenos deseos para el nuevo año 2014.
Ahh, y que se anime este foro que está un poco flojito, menos Twitter y más blog.

Saludos
Paco Satué


([N2] AyudaVelneo) #2

Hola Paco:

Excelente resumen.

Me alegra saber que he colaborado a tu formación en Velneo V7 con un granito de arena (una consultoría y un curso intermedio) y me consta que después has dedicado mucho tiempo a entender la plataforma.

Ese es el objetivo de mi blog: ayudar a los desarrolladores que estáis comenzando con la plataforma Velneo V7 a dar los primeros pasos… luego ya podréis correr solos.

Un saludo


([N1] wikan) #3

Muy buenos apuntes Paco


([N4] Jorge) #4

Buenas apreciaciones…

Atentamente,
Jorge Hontoria