tutor de procesos - Velneodl.velneo.com/.../openapps/documentos/tutor_de_procesos.pdfpresenta el...

24
Pol. Ind. A Granxa | Rúa D Esquina paralela 3 Edif. vCenter, 36400 Porriño | Pontevedra | España Telf. (+34) 902 366 382 | Fax (+34) 902 932 324 [email protected] | www.velneo.com Tutor de procesos Fecha de creación 09/04/2010 12:30:00 1 Tutor de procesos El proceso es un objeto contenedor de instrucciones definible por el programador. Las instrucciones se ejecutarán de forma secuencial y harán uso de comandos de instrucción de proceso que pueden acceder a otros objetos de los proyectos incluyendo otros procesos. El proceso tiene una entrada y una salida, es decir, un origen ficha, lista o ninguno y una tabla asociada, y un destino ficha, lista o ninguno y una tabla asociada. Esto permite trabajar con uno o varios registros de entrada y que el proceso devuelva un o varios registros como salida. Cada una de las instrucciones tiene un origen y un destino condicionados por el origen y el comando anterior, el primero de ellos determinado por la entrada del proceso. De esta forma el flujo de datos es gestionado por el proceso, permitiendo una salida programada en función de la entrada. Los procesos se pueden ejecutar en distintos planos, lo que permite que sean ejecutados en local o el servidor, en multi-tarea en local, y esperando respuesta o no por parte del proceso llamado. Para crear un proceso haremos doble clic sobre el icono de la galería de objetos (Tecla Insert) de Velneo vDevelop V7. Sus propiedades son: » Identificador: Etiqueta alfanumérica que identifica al objeto. Este identificador será el que se usa para referenciarlo en los inspectores y en las propiedades de otros objetos. » Nombre: Etiqueta alfanumérica que servirá como descriptor del objeto. Es el texto que se presentará al usuario final de la aplicación para referenciar al objeto. Podemos definir una etiqueta por cada idioma presente en el proyecto. » Estilos: Podemos definir los estilos: o Privado: Que limita el acceso del usuario final al objeto desde puntos donde no se haya programado el acceso al mismo. Por ejemplo, si marcamos un proceso de un proyecto de datos como privado, dicho proceso no estará accesible al ejecutar la instancia de dicho proyecto con Velneo vDataClient V7. o Accesible web: Un proceso que tenga activado este estilo podrá ser ejecutado vía web. Ver el capítulo dedicado a Velneo vModApache V7 para ampliar información al respecto. » Comentarios: Esta propiedad nos permite documentar el uso del proceso. » Tabla asociada: Esta propiedad nos permite establecer el origen del proceso. Podremos, o bien seleccionar una tabla de un proyecto de datos heredado, o bien seleccionar el valor .Ninguna en el caso de que el origen del proceso no tenga origen. » Origen: Esta propiedad aparecerá solamente en el caso de que en la propiedad Tabla asociada hayamos seleccionado una tabla. Los valores posibles son: o Ficha: El origen del proceso será una ficha (registro) de la tabla seleccionada en la propiedad Tabla asociada.

Transcript of tutor de procesos - Velneodl.velneo.com/.../openapps/documentos/tutor_de_procesos.pdfpresenta el...

Page 1: tutor de procesos - Velneodl.velneo.com/.../openapps/documentos/tutor_de_procesos.pdfpresenta el formulario de petición al usuario. Si el usuario acepta el formulario de petición

Pol. Ind. A Granxa | Rúa D Esquina paralela 3 Edif. vCenter, 36400 Porriño | Pontevedra | España Telf. (+34) 902 366 382 | Fax (+34) 902 932 324 [email protected] | www.velneo.com

Tutor de procesos

Fecha de creación 09/04/2010 12:30:00 1

Tutor de procesos El proceso es un objeto contenedor de instrucciones definible por el programador. Las instrucciones se ejecutarán de forma secuencial y harán uso de comandos de instrucción de proceso que pueden acceder a otros objetos de los proyectos incluyendo otros procesos. El proceso tiene una entrada y una salida, es decir, un origen ficha, lista o ninguno y una tabla asociada, y un destino ficha, lista o ninguno y una tabla asociada. Esto permite trabajar con uno o varios registros de entrada y que el proceso devuelva un o varios registros como salida. Cada una de las instrucciones tiene un origen y un destino condicionados por el origen y el comando anterior, el primero de ellos determinado por la entrada del proceso. De esta forma el flujo de datos es gestionado por el proceso, permitiendo una salida programada en función de la entrada. Los procesos se pueden ejecutar en distintos planos, lo que permite que sean ejecutados en local o el servidor, en multi-tarea en local, y esperando respuesta o no por parte del proceso llamado.

Para crear un proceso haremos doble clic sobre el icono de la galería de objetos (Tecla Insert) de Velneo vDevelop V7. Sus propiedades son:

» Identificador: Etiqueta alfanumérica que identifica al objeto. Este identificador será el que se usa para referenciarlo en los inspectores y en las propiedades de otros objetos.

» Nombre: Etiqueta alfanumérica que servirá como descriptor del objeto. Es el texto que se

presentará al usuario final de la aplicación para referenciar al objeto. Podemos definir una etiqueta por cada idioma presente en el proyecto.

» Estilos: Podemos definir los estilos:

o Privado: Que limita el acceso del usuario final al objeto desde puntos donde no se

haya programado el acceso al mismo. Por ejemplo, si marcamos un proceso de un proyecto de datos como privado, dicho proceso no estará accesible al ejecutar la instancia de dicho proyecto con Velneo vDataClient V7.

o Accesible web: Un proceso que tenga activado este estilo podrá ser ejecutado vía

web. Ver el capítulo dedicado a Velneo vModApache V7 para ampliar información al respecto.

» Comentarios: Esta propiedad nos permite documentar el uso del proceso.

» Tabla asociada: Esta propiedad nos permite establecer el origen del proceso. Podremos,

o bien seleccionar una tabla de un proyecto de datos heredado, o bien seleccionar el valor .Ninguna en el caso de que el origen del proceso no tenga origen.

» Origen: Esta propiedad aparecerá solamente en el caso de que en la propiedad Tabla

asociada hayamos seleccionado una tabla. Los valores posibles son:

o Ficha: El origen del proceso será una ficha (registro) de la tabla seleccionada en la propiedad Tabla asociada.

Page 2: tutor de procesos - Velneodl.velneo.com/.../openapps/documentos/tutor_de_procesos.pdfpresenta el formulario de petición al usuario. Si el usuario acepta el formulario de petición

Pol. Ind. A Granxa | Rúa D Esquina paralela 3 Edif. vCenter, 36400 Porriño | Pontevedra | España Telf. (+34) 902 366 382 | Fax (+34) 902 932 324 [email protected] | www.velneo.com

Tutor de procesos

Fecha de creación 09/04/2010 12:30:00 2

o Lista: El origen del proceso será una lista de registros de la tabla seleccionada en la propiedad Tabla asociada.

» Tabla destino: Esta propiedad nos permite establecer la salida del proceso. Podremos, o

bien seleccionar una tabla de un proyecto de datos heredado, o bien seleccionar el valor .Ninguna en el caso de que el proceso no tenga salida.

» Destino: Esta propiedad aparecerá solamente en el caso de que en la propiedad Tabla

destino hayamos seleccionado una tabla. Los valores posibles son:

o Ficha: La salida del proceso será una ficha (registro) de la tabla seleccionada en la propiedad Tabla destino.

o Lista: La salida del proceso será una lista de registros de la tabla seleccionada en

la propiedad Tabla destino. La entrada de un proceso está determinada por la configuración de éste, y a su vez, determina dónde puede ser utilizado. Podemos usarlo desde otros objetos alimentándolo con los datos del objeto origen y permitiendo al proceso “procesarlos”, valga la redundancia, como puede ser, por ejemplo, desde otro proceso, desde una rejilla, desde un botón de un formulario accediendo a la ficha desde la que se lanza, una opción en un casillero, etc. También puede no tener origen ni tabla asociada, pudiéndose lanzar desde opciones de menú, formularios, rejillas, etc., por medio de acciones, y por tanto independientemente del contenido del objeto origen. La salida también ha de determinarse en la configuración del proceso, pero debemos determinar mediante los comandos correspondientes con qué registros alimentaremos la salida del proceso. Los comandos son Añadir ficha a la salida, Añadir lista a la salida. Debemos usar el comando con un origen correspondiente con el de la salida. En el caso de que la salida sea ficha, debemos tener como origen de la instrucción una ficha de la tabla asociada como salida, y usaremos el comando Añadir ficha a la salida para alimentar la salida. En el caso de que la salida sea lista, podemos añadir tanto registros individuales como registros debemos tener como origen de la instrucción una ficha o una lista de la tabla asociada indistintamente, y usaremos el comando correspondiente para cada caso, Añadir ficha a la salida o Añadir lista a la salida para añadir los registros a la salida. Si comenzamos con un proceso sin origen, normalmente realizaremos una búsqueda con el comando correspondiente Búsqueda, o Disparar objeto, o bien cargaremos una lista de registros de una tabla con Cargar lista resolviendo, si acaso, alguno de los índices. Solicitaremos algún dato al usuario y procesaremos la lista de acuerdo a unas condiciones preprogramadas. Un ejemplo de este proceso sería una facturación que carga una lista de albaranes y los factura.

Un proceso con origen puede ser de ficha o lista. Normalmente, un proceso con origen ficha evaluará ciertos datos del registro en curso y realizará una serie de instrucciones que los tenga en cuenta. Un ejemplo de proceso sería uno que carga los históricos de una factura para devolver las líneas de un proceso.

Page 3: tutor de procesos - Velneodl.velneo.com/.../openapps/documentos/tutor_de_procesos.pdfpresenta el formulario de petición al usuario. Si el usuario acepta el formulario de petición

Pol. Ind. A Granxa | Rúa D Esquina paralela 3 Edif. vCenter, 36400 Porriño | Pontevedra | España Telf. (+34) 902 366 382 | Fax (+34) 902 932 324 [email protected] | www.velneo.com

Tutor de procesos

Fecha de creación 09/04/2010 12:30:00 3

Un proceso con origen lista seguramente realizará ciertas operaciones o bien con la lista completa, bien dividiéndola en partes, agrupándola y ordenándolas, y puede, finalmente, recorrer uno a uno los registros que compongan la lista o listas resultantes para realizar ciertas operaciones. Un ejemplo de proceso sería aquel preparara un listado de albaranes para facturar, agrupándolos por cliente y realizando la facturación por cada lista resultante, devolviendo la lista de facturas obtenida.

Los procesos pueden hacer uso de objetos de las cajas de aplicación o datos a las que tengan acceso. Pero además puede hacer uso del subobjeto Variable. Este subobjeto nos permite almacenar información local al objeto proceso que estamos editando y ejecutando. Hay una serie de comandos, perteneciente al grupo de comandos de Objeto que nos permiten, además de hacer uso de los objetos, obtener y asignar valores de variables locales de los objetos usados. Un ejemplo sería un proceso que llama a otro asignándole ciertos valores a las variable del proceso llamado y, tras su ejecución, obteniendo los valores finales de las variables locales para ser usados en el proceso llamador.

Page 4: tutor de procesos - Velneodl.velneo.com/.../openapps/documentos/tutor_de_procesos.pdfpresenta el formulario de petición al usuario. Si el usuario acepta el formulario de petición

Pol. Ind. A Granxa | Rúa D Esquina paralela 3 Edif. vCenter, 36400 Porriño | Pontevedra | España Telf. (+34) 902 366 382 | Fax (+34) 902 932 324 [email protected] | www.velneo.com

Tutor de procesos

Fecha de creación 09/04/2010 12:30:00 4

Un proceso puede ser ejecutado en cuatro planos distintos, que definiremos en el momento de lanzar el proceso: 1º plano: Local. El proceso se ejecuta en local, es decir, en el cliente si se inicia en el cliente, en el servidor si se inicia en el servidor. En el caso de que el proceso se ejecute en el cliente, éste se verá bloqueado hasta finalizar su ejecución. 2º plano: Multi-tarea. Además de ejecutarse en local, en este caso el proceso es contemporáneo de otros procesos que se puedan realizar. Si se ejecuta en el cliente, el usuario puede seguir haciendo uso de la aplicación sin que se vea afectado ni bloqueado. 3º plano: El proceso será lanzado en el servidor aunque lo iniciemos desde el cliente. El proceso llamador esperará respuesta y por tanto quedará a la espera hasta que termine el proceso llamado, recibiendo el resultado de las operaciones realizadas. 4º plano: No es funcional en la versión actual. El proceso será lanzado en el servidor aunque lo iniciemos desde el cliente pero, en este caso, el proceso llamador no esperará respuesta y por tanto no quedará a la espera hasta que termine el proceso llamado ni recibirá el resultado de las operaciones realizadas. Los procesos que se realicen en primer plano y necesiten datos, recibirán estos registros del servidor, aunque mientras trabajemos con listas y no con fichas, el registro completo no será enviado ni recibido. Los procesos que se realicen en tercer plano no necesitarán enviar o recibir datos excepto del resultado, por lo que, por regla general, serán mucho más rápidos ya que no habrá diálogo entre cliente y servidor. Pero debemos tener en cuenta que subirán la carga de trabajo del servidor.

Page 5: tutor de procesos - Velneodl.velneo.com/.../openapps/documentos/tutor_de_procesos.pdfpresenta el formulario de petición al usuario. Si el usuario acepta el formulario de petición

Pol. Ind. A Granxa | Rúa D Esquina paralela 3 Edif. vCenter, 36400 Porriño | Pontevedra | España Telf. (+34) 902 366 382 | Fax (+34) 902 932 324 [email protected] | www.velneo.com

Tutor de procesos

Fecha de creación 09/04/2010 12:30:00 5

Comandos básicos El grupo de comandos Básicos es un conjunto que incluye comandos para la gestión de flujos y petición, muestra y asignación de valores.

El proceso de ejemplo pide al usuario el número de veces que se ejecutará el bucle. En cada ejecución se sumará un valor aleatorio a una variable. Si el usuario no indica número de pasos o cancela, se muestra un mensaje de error en cada caso y se finaliza el proceso. Al final del proceso, el resultado se guarda en una variable global que puede ser usada posteriormente y se muestra el valor resultante en un mensaje. En el proceso de ejemplo vemos como comienza dando valor a una variable por medio del comando Set. Este comando, que podemos usar en cualquier punto de nuestro proceso independientemente del origen, nos permite asignar el resultado de una fórmula en la que pueden intervenir números, literales, variables, campos del origen, constantes, etc.

Page 6: tutor de procesos - Velneodl.velneo.com/.../openapps/documentos/tutor_de_procesos.pdfpresenta el formulario de petición al usuario. Si el usuario acepta el formulario de petición

Pol. Ind. A Granxa | Rúa D Esquina paralela 3 Edif. vCenter, 36400 Porriño | Pontevedra | España Telf. (+34) 902 366 382 | Fax (+34) 902 932 324 [email protected] | www.velneo.com

Tutor de procesos

Fecha de creación 09/04/2010 12:30:00 6

Si la variable no existe, como es el caso, se crea de forma automática. Debemos a continuación asignar el tipo de variable. Si ya existe, podemos seleccionarla y darle un nuevo valor. A continuación, con el comando Pedir dato solicitamos al usuario cuántas veces quiere que se ejecute el bucle del comando For. El comando Pedir dato guarda el valor obtenido en una variable. Como previamente le habíamos dado valor, usa éste como valor por defecto cuando presenta el formulario de petición al usuario. Si el usuario acepta el formulario de petición de datos y da un valor, retornará 1 (true) en la variable local OK que hemos definido como retorno y el valor indicado por el usuario en la variable local LOOP_LIMIT que hemos definido para recoger el valor. El siguiente paso es comprobar si el usuario ha aceptado y ha introducido un límite para el bucle. Para ello hacemos uso del comando If que gestiona el flujo del proceso. Este comando tiene como parámetro una condición expresada como una fórmula. Admite por tanto una variable local o una variable global booleana o cualquier operación lógica que definamos en la fórmula y que incluya cualquier elemento disponible en el asistente para edición de fórmulas. Si la condición se cumple, se ejecuta el subproceso del comando, manteniendo el origen que tuviera que puede ser tratado en las líneas del subproceso. Es decir, si estuviéramos modificando una ficha o recorriendo una lista, tendríamos acceso al origen en el subproceso del comando. La condición que establecemos: ( OK & LOOP_LIMIT > 0 ) indica que, para ejecutarse el subproceso, la variable OK ha de tener valor 1 y la variable LOOP_LIMIT ha de contener un valor mayor que 0. Si no, la condición impuesta en el comando If no se cumple. En el subproceso hemos programado un bucle, que realizamos por medio del comando For. El funcionamiento del comando For puede ser distinto al que esperamos que tenga. Así, aunque incremente la variable contador partiendo del valor inicial, debemos definir la condición por la que continúa ejecutándose el bucle, de forma análoga a como se definen sentencias del tipo while presentes en otros lenguajes. Es decir, no es necesario indicar un valor límite para la variable contador, si no una condición para que continúe ejecutándose el bucle. Esta condición puede ser que el bucle no se detenga mientras la variable contador no llegue a un límite impuesto, pero también puede ser en función de un valor obtenido en la ejecución de las líneas incluidas en el bucle u otra condición. En este caso hemos optado por un límite clásico para un comando For estándar. Se ejecutará mientras la variable contador LOOP no llegue a límite definido por el usuario final en la variable LOOP_LIMIT. Pero en otro caso, la condición podría ser una variable local o una variable global booleana o cualquier operación lógica que definamos en la fórmula. Dentro del bucle For alimentamos una variable local por medio del comando Set con el resultado de una fórmula que incluye el valor anterior de la variable (usando esta misma en la fórmula) sumado al resultado de la función random() que nos devuelve un número aleatorio. Si la condición del comando If no se cumple, se pasa al siguiente comando de flujo Else if. If, Else if y Else son los tres comandos de gestión de flujo de procesos condicionado además de For que tenemos disponibles. Los comandos de flujo han de estar definidos uno a continuación del otro para ser tenidos en cuenta, no han de haber líneas Libre, Rem u otros comandos entre ambos. El comando Else if se ejecuta siempre detrás de un comando If u otro comando Else if cuya condición no se haya cumplido.

Page 7: tutor de procesos - Velneodl.velneo.com/.../openapps/documentos/tutor_de_procesos.pdfpresenta el formulario de petición al usuario. Si el usuario acepta el formulario de petición

Pol. Ind. A Granxa | Rúa D Esquina paralela 3 Edif. vCenter, 36400 Porriño | Pontevedra | España Telf. (+34) 902 366 382 | Fax (+34) 902 932 324 [email protected] | www.velneo.com

Tutor de procesos

Fecha de creación 09/04/2010 12:30:00 7

Si se cumple la condición del comando Else if, no se pasará al siguiente comando de flujo Else if o Else, si no que se saltará a la siguiente línea después de los comandos de flujo a no ser que se encuentre otro If. La condición del comando If previo no se cumple o bien si la variable local OK no es 1, es decir, el usuario no ha aceptado, o bien la variable local LOOP_LIMIT no es mayor que 0. En este caso, con el comando Else if comprobamos en primera instancia si el usuario ha aceptado la petición de dato, dato que conocemos gracias a la variable local OK. Informamos al usuario final usando para ello el comando Mensaje. Éste nos permite configurar el texto que se presentará en la ventana de mensaje por medio de una fórmula, por lo que podemos incluir cualquier literal, campo o variable a la que tengamos acceso desde el asistente. Además, podemos definir el tipo de mensaje, lo que condicionará el icono y sonido de presentación de la ventana según tenga definido el sistema operativo. También podemos definir el tiempo que estará la ventana del mensaje antes de que se auto-acepte y el título de la ventana que se presenta. Por último, el comando Else, se ejecuta siempre que no se hayan dado todas las condiciones anteriores. En ese caso, el error estaría entonces en que el usuario no ha introducido un valor para la variable local LOOP_LIMIT válido, que era la segunda parte de la condición inicial. De nuevo, usando el comando Mensaje presentamos el error al usuario final. El proceso finaliza haciendo uso del comando Modificar variable global que nos permite acumular en una variable global el valor obtenido en el proceso y guardado en la variable local. Como podemos ver, desde los procesos tenemos acceso tanto a leer como modificar las variables globales. Por último, volvemos a usar el comando Mensaje para mostrar el valor obtenido, haciendo uso para ello de la variable local en que retornamos el resultado de la modificación de la variable global. Cuando modificamos una variable podemos recoger el valor obtenido tras la modificación en una variable local. De esta forma nos aseguramos de que el dato que leemos no haya sido modificado por otro proceso en ese mismo instante. Si mostráramos el valor de la variable unas líneas más abajo podríamos encontrarnos con que el valor no es ya el obtenido tras la modificación, si no que otro proceso mientras tanto modificó la misma variable.

Page 8: tutor de procesos - Velneodl.velneo.com/.../openapps/documentos/tutor_de_procesos.pdfpresenta el formulario de petición al usuario. Si el usuario acepta el formulario de petición

Pol. Ind. A Granxa | Rúa D Esquina paralela 3 Edif. vCenter, 36400 Porriño | Pontevedra | España Telf. (+34) 902 366 382 | Fax (+34) 902 932 324 [email protected] | www.velneo.com

Tutor de procesos

Fecha de creación 09/04/2010 12:30:00 8

Comandos de ficha y campos El grupo de comandos de Ficha y campos nos permite crear y manejar fichas, leerlas y modificarlas y acceder a sus campos e índices.

El proceso de ejemplo primero crea una ficha en memoria, da valores a los campos y luego da de alta la ficha. La ficha resultante se muestra en un formulario para que el usuario final pueda ver el resultado final.

Page 9: tutor de procesos - Velneodl.velneo.com/.../openapps/documentos/tutor_de_procesos.pdfpresenta el formulario de petición al usuario. Si el usuario acepta el formulario de petición

Pol. Ind. A Granxa | Rúa D Esquina paralela 3 Edif. vCenter, 36400 Porriño | Pontevedra | España Telf. (+34) 902 366 382 | Fax (+34) 902 932 324 [email protected] | www.velneo.com

Tutor de procesos

Fecha de creación 09/04/2010 12:30:00 9

El proceso comienza creando la ficha en memoria con el comando Crear nueva ficha en memoria. Este comando permite definir los valores que tendrá la ficha cuando la demos de alta. Hasta ese momento no se realizan operaciones reales y por tanto el comando no genera transacción. Como parámetro del comando debemos definir el Manejador y la tabla en que vamos a crear el registro. Más adelante en el proceso, con ayuda de ese manejador, podremos gestionar el alta y la modificación de esa ficha. En el subproceso del comando tendremos acceso a la ficha, pudiendo leer y modificar sus campos. Al tener origen en la ficha podemos leer cualquier campo del registro y usaremos el comando Modificar campo para asignar valores a los campos. El comando Modificar campo aunque opera en sí mismo no transacciona. Debe estar incluido dentro de una transacción. En el punto que estamos del proceso, todavía la ficha no ha sido dada de alta. Es el comando Alta de ficha, como veremos más adelante, el que realmente generará la transacción. Si, por ejemplo, usamos Modificar campo en el subproceso de un comando Recorrer lista solo lectura, el comando no actuará realmente, ya que el comando no transacciona. Sin embargo, si lo usamos en el subproceso de un comando Recorrer lista lectura/escritura, éste sí transacciona, por lo que el comando Modificar campo será efectivo. El parámetro que define el valor del campo es fórmula por lo que podemos hacer uso del asistente para edición de fórmulas para definirlo. Éste valor, por tanto, puede ser un literal, un número, una variable local, una variable global, el resultado de una función de fórmula, el resultado de una función de proceso, etc. A la hora de crear la ficha también podemos alimentar valores a los campos objeto. Para ello hay dos comandos específicos: El comando Importar dibujo nos permite alimentar un campo objeto dibujo con la imagen cuya senda en disco pasemos como parámetro. En el proceso usamos el comando Ventana de selección de fichero para definir la senda, pero como el parámetro es fórmula, podemos hacer uso del asistente para edición de fórmulas para definirlo. De igual forma, para asignar el valor de un campo objeto texto hemos de usar el comando Importar texto, al que debemos pasar como parámetro también la senda del fichero cuyo contenido queremos asignar como valor del campo. Entre los comandos Ficha y campos tenemos algunos que nos dan información sobre el registro. El comando Get atributos de dibujo nos da información sobre el tamaño del dibujo que contiene el campo. El resultado lo almacenamos en variables locales que mostramos al usuario con ayuda del comando Mensaje. También podemos mostrar el contenido del campo dibujo ayudados del comando Editor de dibujos, que nos muestra la imagen dentro del editor incorporado. Las modificaciones que realicemos serán guardadas si luego la ficha es guardada. El último paso del proceso es dar de alta la ficha en la base de datos, que hasta ahora estaba únicamente en memoria. Para ello usamos el comando mencionado anteriormente Alta de ficha que creará el registro en la base de datos. En el subproceso del comando tendremos acceso a leer el registro resultante, pero no a modificar. Como hasta ahora la ficha estaba en memoria, el registro no tenía código. En el subproceso del comando la ficha ya ha sido dada de alta, por lo que podemos leer el código obtenido. En el proceso nos quedamos con el valor y se lo asignamos a una variable local que luego presentaremos por medio de un mensaje.

Page 10: tutor de procesos - Velneodl.velneo.com/.../openapps/documentos/tutor_de_procesos.pdfpresenta el formulario de petición al usuario. Si el usuario acepta el formulario de petición

Pol. Ind. A Granxa | Rúa D Esquina paralela 3 Edif. vCenter, 36400 Porriño | Pontevedra | España Telf. (+34) 902 366 382 | Fax (+34) 902 932 324 [email protected] | www.velneo.com

Tutor de procesos

Fecha de creación 09/04/2010 12:30:00 10

A continuación, usamos el comando Pedir formulario para mostrar el registro creado al usuario final. Al igual que sucede con Modificar campo, las modificaciones de los valores del registro que realicemos en el formulario sólo serán efectivas si estamos en el subproceso de un comando que transaccione. Este no es el caso, puesto que en el subproceso de Alta de ficha ya no podremos modificar la ficha, sólo leerla.

En el proceso de ejemplo segundo crearemos una ficha en memoria, asignándole un valor al campo ID con clave única de forma aleatoria y comprobando que no exista previamente el valor de dos formas distintas. Por último daremos de alta el registro.

Page 11: tutor de procesos - Velneodl.velneo.com/.../openapps/documentos/tutor_de_procesos.pdfpresenta el formulario de petición al usuario. Si el usuario acepta el formulario de petición

Pol. Ind. A Granxa | Rúa D Esquina paralela 3 Edif. vCenter, 36400 Porriño | Pontevedra | España Telf. (+34) 902 366 382 | Fax (+34) 902 932 324 [email protected] | www.velneo.com

Tutor de procesos

Fecha de creación 09/04/2010 12:30:00 11

Comenzamos el proceso creando una nueva ficha en memoria con el comando Crear nueva ficha en memoria y dando valor a los campos con el comando Modificar campo. Como segundo paso vamos a definir el código de la ficha, comprobando previamente que no exista dicho código. Para ello creamos un bucle con el comando For que se ejecutará mientras que la variable local EXISTS_ID tenga valor 1, valor que tendrá si determinamos que la clave está duplicada en cada iteración. En el subproceso del comando For procesamos la ficha que tenemos en memoria con el comando Procesar ficha en memoria. Este comando nos permite acceder en cualquier punto del proceso a la ficha que hayamos creado previamente en memoria. En su subproceso tenemos acceso a leer y modificar la ficha. Aprovechamos entonces a modificar el campo ID con ayuda del comando Modificar campo, asignándole un valor al azar. Para comprobar si un valor de un campo con clave única existe ya en la base de datos y por tanto no podemos repetirlo, la primera manera es usando el comando ¿Ya existe en el índice?. Este comando nos retorna en una variable local booleana si existe o no el valor. Si el valor existe, lo que comprobamos por medio de un comando If, mostramos un mensaje indicándolo y el bucle For se vuelve a ejecutar ya que usamos la misma variable de retorno como condición para seguir ejecutando el bucle. Otra forma de revisar si algún valor de un campo con clave única está repetido es haciendo uso del comando ¿Ya existe en alguno de sus índices? Este comando revisa todas las claves únicas y retorna dos parámetros que recogemos en las variables locales correspondientes: el primero nos indica si alguna de las claves está repetida, el segundo es un mensaje que indica cuál de ellas, mensaje que podemos presentar al usuario. Una vez que hemos comprobado las claves, podemos dar de alta el registro en la base de datos con el comando Alta de ficha y mostrárselo al usuario con el comando Pedir formulario.

Page 12: tutor de procesos - Velneodl.velneo.com/.../openapps/documentos/tutor_de_procesos.pdfpresenta el formulario de petición al usuario. Si el usuario acepta el formulario de petición

Pol. Ind. A Granxa | Rúa D Esquina paralela 3 Edif. vCenter, 36400 Porriño | Pontevedra | España Telf. (+34) 902 366 382 | Fax (+34) 902 932 324 [email protected] | www.velneo.com

Tutor de procesos

Fecha de creación 09/04/2010 12:30:00 12

En el tercer ejemplo, seleccionaremos una carpeta de disco en la que guardaremos el contenido de los campos objeto texto y objetos dibujo de los registros. A continuación borraremos el contenido de los campos objeto y mostraremos el formulario del registro resultante. Comenzamos el proceso usando el comando Ventana de selección de directorio para que el usuario pueda seleccionar la carpeta de destino de los objetos. Usamos entonces el comando Cargar lista para obtener todos los registros, por lo que no resolvemos ninguno de los índices. Recorremos la lista en modo lectura y escritura con el comando correspondiente Recorrer lista lectura/escritura. Es necesario el modo escritura ya que vamos a limpiar los campos objetos, en caso contrario, que estuviéramos en sólo lectura, los comandos que usáramos no tendrían efecto. Primero exportamos los objetos con los comandos respectivos: Exportar dibujo y Exportar texto. Para ello usamos la senda obtenida en el comando Ventana de selección de directorio y, en el caso de Exportar dibujo, la extensión determina el formato con que se exporta la imagen, estando soportado para ello los formatos JPG, PNG, BMP, etc. El siguiente paso del proceso es eliminar ambos objetos de la base de datos, usando el comando Limpiar campo objeto, que los borra del contenedor. El último paso presenta el registro en un formulario con el comando Pedir formulario.

El cuarto proceso de ejemplo recorre una lista de registros realizando modificaciones al azar. En el proceso veremos dos comandos que nos permiten conocer si se ha modificado un campo o la ficha. El proceso comienza cargando los registros de una tabla con el comando Cargar lista y recorriéndolos para modificarlos con el comando Recorrer lista lectura/escritura. A continuación modificamos un campo con el comando Modificar campo con el resultado obtenido de la función de fórmula random(). Debemos recordar siempre que si queremos realizar modificaciones hemos de incluirlas en el subproceso de un comando que transaccione como es el caso del comando Recorrer lista lectura/escritura, para que las modificaciones sean efectivas.

Page 13: tutor de procesos - Velneodl.velneo.com/.../openapps/documentos/tutor_de_procesos.pdfpresenta el formulario de petición al usuario. Si el usuario acepta el formulario de petición

Pol. Ind. A Granxa | Rúa D Esquina paralela 3 Edif. vCenter, 36400 Porriño | Pontevedra | España Telf. (+34) 902 366 382 | Fax (+34) 902 932 324 [email protected] | www.velneo.com

Tutor de procesos

Fecha de creación 09/04/2010 12:30:00 13

Cuando modificamos un campo con un valor que ya tiene, no se produce realmente la operación ni genera transacción para optimizar la ejecución de nuestras aplicaciones. A continuación comprobamos si ha habido algún cambio en la ficha con el comando ¿Ha cambiado la ficha? Este comando nos devuelve en una variable local booleana 1 (true) si así ha sido. Usamos la variable local para con el comando If condicionar la presentación de un mensaje indicando el hecho. Para comprobar si hemos modificado el valor de un campo en concreto usamos a continuación el comando ¿Ha cambiado el campo? que, de nuevo, nos retorna en una variable local booleana 1 (true) si así ha sido. Estos comandos se pueden usar también si las modificaciones son en memoria y el registro no ha sido guardado todavía, por ejemplo en un evento previo a aceptar en un formulario o en los eventos de tabla(triggers). Usamos el resultado del comando anterior para mostrar al usuario un mensaje indicándole la modificación del campo.

Page 14: tutor de procesos - Velneodl.velneo.com/.../openapps/documentos/tutor_de_procesos.pdfpresenta el formulario de petición al usuario. Si el usuario acepta el formulario de petición

Pol. Ind. A Granxa | Rúa D Esquina paralela 3 Edif. vCenter, 36400 Porriño | Pontevedra | España Telf. (+34) 902 366 382 | Fax (+34) 902 932 324 [email protected] | www.velneo.com

Tutor de procesos

Fecha de creación 09/04/2010 12:30:00 14

El quinto proceso de ejemplo comienza creando una ficha en memoria, asignando valores y vemos dos formas de asignar un maestro, creándolo y asignándolo o seleccionándolo de una lista. También accedemos al maestro una vez asignado para tomar valores que usaremos en la propia ficha que, finalmente, daremos de alta. Comenzamos usando el comando Crear nueva ficha en memoria y asignando valores a los campos con Modificar campo. A continuación vemos dos formas de asignar el maestro, la primera se hace usando el comando Alta de ficha de maestro con formulario que muestra al usuario un formulario de la tabla maestra que permite dar de alta un maestro y asignárselo al registro. Otra forma es usar el comando Cargar lista para seleccionar un registro al azar con Seleccionar ficha por posición. Usaremos el comando Leer ficha seleccionada para quedarnos con el código del maestro en una Variable local. Usaremos este código para asignárselo al registro por medio del comando Modificar campo. Con el comando Leer ficha de maestro que usamos a continuación podemos acceder al maestro asignado al registro para lectura, por lo que usamos una Variable local para quedarnos con un dato y asignar su valor al registro con el comando Modificar campo. El comando no permite más que leer el registro, no podemos acceder para escribir. También podemos acceder al maestro para modificar con el comando Modificar ficha de maestro. Al contrario que con el comando anterior, Leer ficha de maestro, este comando transacciona por lo que los comandos Modificar campo y otros, tendrán efecto. Por último, damos de alta el registro con Alta de ficha y mostramos el registro en un formulario con Pedir formulario.

Page 15: tutor de procesos - Velneodl.velneo.com/.../openapps/documentos/tutor_de_procesos.pdfpresenta el formulario de petición al usuario. Si el usuario acepta el formulario de petición

Pol. Ind. A Granxa | Rúa D Esquina paralela 3 Edif. vCenter, 36400 Porriño | Pontevedra | España Telf. (+34) 902 366 382 | Fax (+34) 902 932 324 [email protected] | www.velneo.com

Tutor de procesos

Fecha de creación 09/04/2010 12:30:00 15

Comandos de listas El grupo de comandos de Listas es un conjunto de comandos que nos permiten gestionar listas, modificarlas y acceder a sus elementos.

En el proceso de ejemplo veremos las funcionalidades de los distintos comandos y cómo afectan a la lista. Comenzamos obteniendo una lista. Para ello usamos el comando Cargar lista en cuyo subproceso accedemos a la lista obtenida, una tabla completa ordenada por el índice seleccionado. En el subproceso conocemos el tamaño de la lista con ayuda de la variable de sistema sysListSize. Comenzamos con el comando Cortar lista. Lo que hace es dejar en el subproceso la lista resultante tras aplicar los parámetros de corte: posición inicial y número de elementos. No quiere decir esto que los elimine de la base de datos si no que los quita de la lista, a partir de ese

Page 16: tutor de procesos - Velneodl.velneo.com/.../openapps/documentos/tutor_de_procesos.pdfpresenta el formulario de petición al usuario. Si el usuario acepta el formulario de petición

Pol. Ind. A Granxa | Rúa D Esquina paralela 3 Edif. vCenter, 36400 Porriño | Pontevedra | España Telf. (+34) 902 366 382 | Fax (+34) 902 932 324 [email protected] | www.velneo.com

Tutor de procesos

Fecha de creación 09/04/2010 12:30:00 16

momento trabajaremos sobre la lista resultante. En el ejemplo mostramos el tamaño de la lista antes de realizar el corte y después, para ver cómo realiza el corte. El siguiente comando, Filtrar lista, nos permite los mismo, pero dejando los elementos que cumplan cierta condición que establecemos como parámetro. Como en el caso anterior se trata de quitar los elementos que no cumplen la condición de la lista, no de eliminarlos de la base de datos. Esta operación es secuencial, es decir, se requiere recorrer uno a uno los elementos solicitándolos al servidor. Esto implica lentitud por lo que no es recomendable el uso de este comando si el número de registros es grande, sustituyéndolo por otros comandos como Búsqueda, Cargar lista, Disparar objeto que, con la ayuda de los índices, nos permitan obtener la lista necesaria de forma más eficiente. El comando Invertir lista, como su propio nombre índica, altera el orden invirtiendo el que tiene en ese momento. Es útil por ejemplo, si hemos cargado una lista de registros por fecha, como es el caso, y queremos mostrar o trabajar primero con los más recientes. El comando Multipartir lista que usamos a continuación permite generar tantos subprocesos como diferentes valores vaya encontrando en la lista del campo seleccionado. Lo usual es que previamente hayamos ordenado la lista por el campo por el que queremos multipartir, para que resulte un subproceso por cada valor existente en la relación de registros. Si no hemos ordenado previamente la lista, si un valor se repite pero se trata de elementos que no están contiguos si no que se encuentran dispersos en diferentes puntos de la lista, se generarán tantos subprocesos como diferencias encuentre, aún para valores iguales. Para ordenar no es necesario usar un comando específico como Ordenar lista que veremos más adelante, si no que si la lista viene ordenada ya según el campo requerido, es suficiente. Por ejemplo, en este caso, el orden lo determinó ya el índice del comando Cargar lista usado en un principio. En el subproceso del comando Multipartir lista podemos acceder a las listas resultantes y trabajar sobre ellas. En el proceso de ejemplo, hemos mostrado las listas resultantes con ayuda del comando Seleccionar ficha de la lista. Se trabajará de forma secuencial, una lista tras otra. El comando permite trabajar en el subproceso con las listas resultantes, pero no altera la lista inicial, sobre la que podemos seguir trabajando, como hacemos en el ejemplo. A continuación variamos el orden previo con ayuda del comando Ordenar lista. Este comando nos permite definir hasta 6 resoluciones de orden. El siguiente comando que usamos, Quitar ficha de la lista, nos permite quitar un elemento de la lista, de nuevo sin eliminarlo, indicando la posición que ocupa en la lista. Podemos quitar el primero, el último o una posición cualquiera, ayudados por la variable de sistema sysListSize. Además de gestionar la lista, podemos acceder a los elementos que la componen. Para ello tenemos una serie de comandos que nos permiten recorrer los elementos, algunos de ellos realizando operaciones de escritura (generando transacción), otros leyendo. El primer comando que usamos, Recorrer lista solo lectura, nos permite recorrer una a una las fichas que componen la lista. En el subproceso de este comando podremos acceder a la ficha y leer el valor de sus campos. Este comando no transacciona, por lo que no podemos realizar modificaciones, pero podremos usar los comandos de Ficha y campos que permiten leer registros. En el ejemplo mostramos cada registro en un formulario con ayuda del comando Pedir formulario.

Page 17: tutor de procesos - Velneodl.velneo.com/.../openapps/documentos/tutor_de_procesos.pdfpresenta el formulario de petición al usuario. Si el usuario acepta el formulario de petición

Pol. Ind. A Granxa | Rúa D Esquina paralela 3 Edif. vCenter, 36400 Porriño | Pontevedra | España Telf. (+34) 902 366 382 | Fax (+34) 902 932 324 [email protected] | www.velneo.com

Tutor de procesos

Fecha de creación 09/04/2010 12:30:00 17

El comando Recorrer lista lectura/escritura nos permite acceder a los registros no sólo para su lectura si no también para escribir, generando transacción y una operación para cada registro. En el subproceso del comando podremos usar los comandos de Ficha y campos que permiten leer y modificar registros. En el ejemplo hemos modificado campos usando el comando Modificar campo. El siguiente comando, Recorrer lista eliminando fichas nos permite recorrer la lista de registros eliminándolos de la base de datos, generando transacción y una operación para cada registro. En el subproceso tenemos acceso al registro que se va a eliminar, por lo que podemos realizar operaciones previas. En el ejemplo eliminamos previamente todos los plurales, necesario para mantener la integridad de la base de datos, para ello hacemos uso del comando Cargar plurales, que nos permite acceder a sus plurales y usamos de nuevo el comando Recorrer lista eliminando fichas. Tenemos también un comando que elimina los registros pero con un matiz. El comando Recorrer lista eliminando fichas sin desactualizar permite realizar la misma operación que el anterior comando pero no lanza las actualizaciones. De esta forma, si tenemos un histórico de datos, podemos mantenerlo aunque eliminemos los registros que generaron los acumulados. Por último, el comando Imprimir informe permite seleccionar un objeto informe asociado a la tabla que de lista, usando esta lista como entrada del informe.

Page 18: tutor de procesos - Velneodl.velneo.com/.../openapps/documentos/tutor_de_procesos.pdfpresenta el formulario de petición al usuario. Si el usuario acepta el formulario de petición

Pol. Ind. A Granxa | Rúa D Esquina paralela 3 Edif. vCenter, 36400 Porriño | Pontevedra | España Telf. (+34) 902 366 382 | Fax (+34) 902 932 324 [email protected] | www.velneo.com

Tutor de procesos

Fecha de creación 09/04/2010 12:30:00 18

Comandos de listas: Ficha seleccionada El grupo de comandos de Listas: Ficha seleccionada nos permite trabajar con una lista, seleccionado registros y trabajando con el registro seleccionado.

En el proceso de ejemplo la funcionalidad de los distintos comandos que componen el grupo de comandos Listas: Ficha seleccionada. Comenzamos el proceso obteniendo una lista sobre la que trabajaremos.

Page 19: tutor de procesos - Velneodl.velneo.com/.../openapps/documentos/tutor_de_procesos.pdfpresenta el formulario de petición al usuario. Si el usuario acepta el formulario de petición

Pol. Ind. A Granxa | Rúa D Esquina paralela 3 Edif. vCenter, 36400 Porriño | Pontevedra | España Telf. (+34) 902 366 382 | Fax (+34) 902 932 324 [email protected] | www.velneo.com

Tutor de procesos

Fecha de creación 09/04/2010 12:30:00 19

El primer comando que encontramos es Seleccionar ficha de la lista. Este comando nos presenta una rejilla que hemos seleccionado en el comando con los registros de la lista origen, permitiendo al usuario seleccionar uno de los registros. El comando nos devuelve también si el usuario ha seleccionado un registro o ha cancelado. Para ello, en una variable local booleana nos devuelve 1 (true) si el usuario ha seleccionado un registro y 0 (false) si ha cancelado la operación. Otra forma de seleccionar un registro es usar el comando Seleccionar ficha por posición, que nos permite definir qué registro queremos seleccionar por medio de un parámetro fórmula. En el ejemplo escogemos el primero de la lista, pero podemos definir el último (con ayuda de la variable de sistema sysListSize) o cualquier posición de la lista. Existe otra forma de seleccionar un registro. Cuando accedemos a una lista con la que interactúa el usuario final, por ejemplo una rejilla en la que selecciona un registro, un proceso que acceda a la lista tiene como elemento seleccionado el que ha seleccionado el usuario, sin necesidad de usar los comandos que hemos visto hasta ahora. Por tanto podría usar un comando como el que viene a continuación, Leer ficha seleccionada, sin usar los comandos de selección, permitiéndole, como sucede en este caso, acceder a la ficha seleccionada vara ver sus campos. En el ejemplo, mostramos uno de los campos por medio del comando Mensaje. Al igual que podemos leer, también podemos modificar la ficha seleccionada con el comando correspondiente Modificar ficha seleccionada. En el subproceso de este comando podemos leer los valores de los campos y modificarlos, ya que este comando genera transacción, por lo que son efectivos los comandos de Ficha y campos como puede ser el comando Modificar campo que usamos en el ejemplo. También podemos modificar la ficha seleccionada mostrando al usuario un formulario con el que hacerlo, usando para ello el comando Modificar ficha seleccionada con formulario. Este comando además indica por medio del retorno en una Variable local si el usuario ha aceptado el formulario o, en caso contrario, si ha cancelado la operación. Otras operaciones que podemos realizar sobre la ficha seleccionada son eliminar la ficha seleccionada de dos maneras: forma normal haciendo uso del comando Eliminar la ficha seleccionada, en cuyo subproceso tenemos acceso a la ficha antes de ser eliminada, para realizar tareas como eliminar los plurales para respetar la integridad de la base de datos. También podemos usar el comando Eliminar la ficha seleccionada sin desactualizar para hacer lo mismo pero sin que se lancen las actualizaciones, de tal forma que podamos conservar los históricos de acumulados realizados por las actualizaciones. Por último, al igual que conocemos el número de elementos con ayuda de la variable de sistema sysListSize, también podemos conocer la posición de la ficha seleccionada en la lista, por medio de la variable de sistema sysListPos.

Page 20: tutor de procesos - Velneodl.velneo.com/.../openapps/documentos/tutor_de_procesos.pdfpresenta el formulario de petición al usuario. Si el usuario acepta el formulario de petición

Pol. Ind. A Granxa | Rúa D Esquina paralela 3 Edif. vCenter, 36400 Porriño | Pontevedra | España Telf. (+34) 902 366 382 | Fax (+34) 902 932 324 [email protected] | www.velneo.com

Tutor de procesos

Fecha de creación 09/04/2010 12:30:00 20

Comandos de navegante y búsquedas El grupo de comandos Navegante y búsquedas es un conjunto de comandos que nos permiten obtener fichas y listas de registros como origen para otros comandos.

En el ejemplo mostramos diversas formas de obtener fichas y listas de registros, y en particular el uso del comando Cargar lista para obtener registros de distintas formas. Comenzamos el proceso obteniendo todos los registros de una tabla ordenados por un índice. Para ello usamos el comando Cargar lista seleccionando el índice por el que queremos ordenados los registros resultantes. No usaremos para ello ninguna de las posibilidades de resolución. En el subproceso del comando tendremos acceso a la lista obtenida. Usamos el comando Seleccionar ficha de la lista para ver los registros obtenidos. En el subproceso tenemos información del número de registros que contiene la lista obtenida en la variable de sistema sysLisSize. Usamos el comando Mensaje para presentar el dato en ejecución.

Page 21: tutor de procesos - Velneodl.velneo.com/.../openapps/documentos/tutor_de_procesos.pdfpresenta el formulario de petición al usuario. Si el usuario acepta el formulario de petición

Pol. Ind. A Granxa | Rúa D Esquina paralela 3 Edif. vCenter, 36400 Porriño | Pontevedra | España Telf. (+34) 902 366 382 | Fax (+34) 902 932 324 [email protected] | www.velneo.com

Tutor de procesos

Fecha de creación 09/04/2010 12:30:00 21

El uso del comando Cargar lista de esta forma nos permite obtener todos los registros de una tabla según un índice. Podemos usar cualquier índice pero lo más lógico será usar los de tipo acepta repetidas o clave única. Debemos tener en cuenta que no obtendremos registros no estén indexados. Si, por ejemplo, cargamos una lista de registros por un índice de clave única y hay registros que no tiene valores en los campos que incluye el índice, esos registros no aparecerán. El siguiente uso de Cargar lista nos permite obtener una lista de registros ordenada por el índice seleccionado y cuyo valor se corresponda con el resuelto. Para ello usamos el comando seleccionando un índice y resolviendo las partes que nos interesen. Un índice compuesto por más de una parte podemos resolverlo parcial o totalmente, y los registros que obtendremos estarán ordenados por ese índice y los valores de los campos coincidirán con aquellos que hayamos resuelto. El ejemplo carga una lista por el índice DATE y lo resolvemos con el resultado de la función de fórmulas currentDate(). De esta forma se retorna la lista de registros cuya fecha se corresponda con la fecha del día. En este caso únicamente resolvemos una de las partes del índice pero podríamos resolver todas las que nos interesen. El resto de partes del índice condicionan el orden en que se presentan los registros. En el siguiente ejemplo de Cargar lista resolvemos dos de las partes que componen el índice. El resultado del comando es siempre una lista, aunque se componga de un único elemento. Si el índice fuera de tipo clave única y resolvemos todas las partes, obtendremos el único registro que puede tener esos valores, pero continuaríamos teniendo un subproceso con una lista de un único elemento. Es lo que hacemos en el siguiente ejemplo de uso del comando Cargar lista en el que seleccionamos el índice TELEPHONE de clave única y resolvemos. A continuación tenemos un ejemplo de uso del comando Búsqueda. Este comando nos permite lanzar cualquier objeto búsqueda que tengamos definido en nuestra base de datos accediendo en el subproceso del comando a la lista de registros resultante. Podremos usar variables globales para resolver los componentes de búsqueda. En el caso de que queramos hacer uso de variables locales, tendremos que usar los comandos del grupo Comandos de objetos. La ejecución de búsquedas en procesos suele sustituir al uso del comando Cargar lista cuando queremos encontrar registros de una forma más compleja, usando varios índices o buscando entre límites. El comando Localizador que usamos a continuación nos permite usar el objeto localizador desde el proceso. En el subproceso del comando tendremos acceso a la ficha seleccionada por el usuario. Este subproceso no se ejecutará si el usuario no ha seleccionado ficha alguna. En el ejemplo usamos el comando Pedir formulario para mostrar la ficha elegida. El comando Cargar plurales nos permite obtener los registros plurales del maestro, en función del plural que hayamos seleccionado como parámetro. En el ejemplo, tras cargar la lista de maestros con el comando correspondiente, cargamos los plurales por el plural seleccionado y mostramos la lista resultante con el comando Seleccionar ficha de la lista. De igual forma, el comando Cargar maestros nos permite acceder a los maestros de una lista de registros que tengamos como entrada, seleccionando el campo enlaza al maestro. En el subproceso accedemos a la lista resultante, donde usamos Seleccionar ficha de la lista para mostrarla en el ejemplo.

Page 22: tutor de procesos - Velneodl.velneo.com/.../openapps/documentos/tutor_de_procesos.pdfpresenta el formulario de petición al usuario. Si el usuario acepta el formulario de petición

Pol. Ind. A Granxa | Rúa D Esquina paralela 3 Edif. vCenter, 36400 Porriño | Pontevedra | España Telf. (+34) 902 366 382 | Fax (+34) 902 932 324 [email protected] | www.velneo.com

Tutor de procesos

Fecha de creación 09/04/2010 12:30:00 22

Comandos de procesos

En el proceso de ejemplo veremos la funcionalidad de los distintos comandos de este grupo. Comenzamos el proceso con el comando Forzar transacción. Este comando genera una transacción en el proceso, aunque no tenga comandos que realicen operaciones. De esta forma, si llama a otros procesos que sí realicen operaciones agrupa todas las operaciones en una única transacción de forma solidaria. De otro modo, cada proceso transaccionaría de forma independiente. Agrupar todas las operaciones en una única transacción tiene como ventaja que si alguno de los procesos llamados no finaliza correctamente, se deshace toda la transacción, incluyendo las operaciones realizadas por el resto de procesos. A continuación usamos el comando Cargar lista para obtener una lista de registros sobre la que trabajar. El comando que usamos seguidamente, Cambiar título de la transacción, nos permite que la información que aparece sobre este proceso esté definida por medio de la fórmula que admite como parámetro. El título de la transacción, por tanto, puede ser dinámico, y podemos usar este comando tantas veces como queramos.

Page 23: tutor de procesos - Velneodl.velneo.com/.../openapps/documentos/tutor_de_procesos.pdfpresenta el formulario de petición al usuario. Si el usuario acepta el formulario de petición

Pol. Ind. A Granxa | Rúa D Esquina paralela 3 Edif. vCenter, 36400 Porriño | Pontevedra | España Telf. (+34) 902 366 382 | Fax (+34) 902 932 324 [email protected] | www.velneo.com

Tutor de procesos

Fecha de creación 09/04/2010 12:30:00 23

El siguiente paso en este ejemplo es usar el comando Cargar plurales y Cortar lista para quedarnos con un conjunto pequeño de registros. Nos quedamos ahora con el número de registros que tiene la lista en una Variable local, usando para ello la variable de sistema sysListSize. Además, inicializamos una Variable local para llevar un contador de registros. Recorremos a continuación los registros usando el comando Recorrer lista solo lectura y por cada registro aumentamos el contador en una unidad. De esta forma podemos mostrar el porcentaje realizado del proceso, usando el comando Cambiar porcentaje realizado del proceso y pasando como parámetro la fórmula que nos dice en porcentaje cuántos registros se han procesado ya, en las ventanas en que se muestre información de la transacción, además del título, veremos información en forma de barra de progreso del proceso. Un comando muy importante en la programación de procesos es Ejecutar proceso. Este comando nos permite llamar a otros procesos para continuar la ejecución. Tenemos la posibilidad de llamar a procesos en 1º plano, local al proceso llamador, 2º plano local al proceso llamador en multitarea, 3º plano en el servidor y 4º plano en el servidor sin esperar (no operativo en la versión actual). Si el comando está en un subproceso con origen ficha o lista, este origen puede ser compartido por el proceso llamado. Además, si el proceso llamador recibe un retorno (Retornos) del proceso llamado, en el subproceso del comando Ejecutar proceso podemos procesar la lista recibida. Si no, procesaremos la lista de origen. En ambos casos, el subproceso se generará si el proceso llamado es correcto. Este retorno, podemos también aprovecharlo para que sea la salida del propio proceso llamador, como hacemos en el ejemplo, por medio del comando Añadir lista a la salida. En la variable local de retorno de ok, recibimos si el proceso ha finalizado correctamente. También sabemos que se ha ejecutado correctamente si se ejecuta el subproceso. En el proceso de ejemplo, usamos esta misma variable local para forzar que se deshaga la transacción si además así lo hemos configurado con una variable global con el comando correspondiente Deshacer transacción, que deshará todas las operaciones incluidas en la transacción en curso. A continuación, si no se cumple la condición anterior para deshacer la transacción, forzamos la finalización del proceso con el comando Finalizar proceso, que permite parar el proceso en curso en cualquier punto de éste y salir. En el caso de que no haya ningún problema con el proceso, continúa recorriéndose la lista, y usamos el comando Esperar, último de este grupo, para mantener el proceso a la espera los milisegundos que pasemos este parámetro. Este comando normalmente lo usaremos cuando dependamos de algún proceso externo al programa o a una operación del usuario, que nos obligue a mantener inactivo el proceso un tiempo determinado.

Page 24: tutor de procesos - Velneodl.velneo.com/.../openapps/documentos/tutor_de_procesos.pdfpresenta el formulario de petición al usuario. Si el usuario acepta el formulario de petición

Pol. Ind. A Granxa | Rúa D Esquina paralela 3 Edif. vCenter, 36400 Porriño | Pontevedra | España Telf. (+34) 902 366 382 | Fax (+34) 902 932 324 [email protected] | www.velneo.com

Tutor de procesos

Fecha de creación 09/04/2010 12:30:00 24

Comandos de retornos El grupo de comandos Retornos nos permiten gestionar los retornos de los procesos, eventos, eventos de tabla, funciones de proceso, etc.

En este ejemplo veremos los cuatro tipos de retornos que podemos programar. Comenzamos obteniendo una lista con el comando Cargar lista. El primer comando del ejemplo, Añadir lista a la salida envía los registros de la lista en la que nos encontramos a la salida. Para ello, el objeto que estamos programando debe tener configurada la salida del mismo destino (ficha o lista) y de la misma tabla. Podemos usar este comando las veces que veamos necesarias, enviando todos los registros que queramos a la salida. No importa que estén repetidos, la salida será únicamente un elemento por cada registro. La salida de este objeto servirá como entrada del siguiente. De igual manera, ayudados por los comandos Seleccionar ficha por posición, para seleccionar la primera ficha de la lista y el comando Leer ficha seleccionada para acceder a la ficha, podemos usar el comando Añadir ficha a la salida, que nos permite enviar a la salida una ficha. Este comando, al contrario que el anterior, sirve tanto para salidas ficha o lista, de la tabla seleccionada en el objeto. Si la salida tiene como destino una ficha, podremos seleccionar cuál con este comando. Si el destino es una lista, nos permite añadir a la salida tantas fichas, una a una, como queramos, combinando su uso con el comando Añadir lista a la salida. El retorno del objeto que estamos programando servirá para alimentar la entrada del siguiente objeto en alguno de los objetos disparables o amalgamables en acciones, procesos, control objeto en formularios, multivistas, etc. En procesos podemos gestionar también un retorno no correcto por medio del comando Set retorno proceso = NO. De esta forma el proceso llamador recibirá en la variable local de retorno de Ok que tiene como parámetro el comando Ejecutar proceso, un valor 0 (false) indicando el error. Este comando también nos sirve para evitar un alta, modificación o baja usándolo en un evento de tabla, continuar de un control a otro en un formulario controlando la pérdida de foco con un evento, etc. Por último, el comando Set dato de retorno del proceso nos permite definir qué dato devolverán objetos como funciones de proceso o funciones remotas.