Buscar palabras clave en la documentación    Buscar Ayuda

Doc. Ref. 9512
Título: Cómo gestióna Hexa 9 las interacciones de los procesos con el usuario
Autor: Hexa
Última actualización: 15/05/2014


Uno de los objetivos de las versiones de la serie 9 de Hexa-SGN ha sido alcanzar una separación completa entre los procesos y la interacción que necesitan con el usuario.

Para ello se ha definido tres clases para tres objetos importantes:

Diario: Es una colección en la que se registra todos los formularios, y sus propiedades, que el usuario ha ido abriendo. En una aplicación Windows-forms, permite tener un historial incluso de aquellos formularios que el usuario ha cerrado. Pero es más importante en una aplicación web en la que sólo se muestra un formulario al mismo tiempo en la página. Gracias al Diario, el sistema sabe siempre qué página debe mostrar y el usuario puede desplazarse fácilmente a los formularios que ha ido abriendo.

Interacción: Cualquier recogida de opciones para un proceso, muestra de mensaje o solicitud de aprobación o cancelación de un proceso, se gestiona con este objeto. Las propiedades del objeto permiten definir los datos a recoger, mensajes a mostrar, valores introducidos por el usuario y botones de aceptación o cancelación pulsados.

Script en curso: Todas las acciones que se ejecutan en la aplicación son gestionadas mediante scripts almacenados en la base de datos. Pueden ser opciones de menú, acciones de formulario o procesos de evento. Los scripts pueden acceder a cualquier objeto de Hexa y también a los objetos “Diario” para mostrar formularios e “Interacción” para recoger datos del usuario.

En script que necesita recoger datos del usuario antes de ejecutar un proceso, lo deberá hacer en dos pasos. La aplicación de hecho, ejecuta dos veces el script y ese debe realizar el proceso necesario en función de si ya ha recogido los datos o no.

En la primera ejecución, el script debe reconocer que no hay una interacción en marcha y por lo tanto crearla con los datos a recoger

El sistema mostrará a continuación los datos a recoger. Lo hará por pantalla o en una página web según sea el caso. Cuando el usuario los introduzca y pulse el botón “Aceptar” reconocerá que había una interacción en marcha y ejecutara por segunda vez el mismo script.

En la segunda ejecución, el propio script debe detectar que la interacción ya existe con los datos recogidos y ejecutará el proceso creando una nueva interacción con el resultado.

El sistema reconocerá después de esta segunda ejecución que la interacción sólo tiene un mensaje con el resultado y lo mostrará sin volver a ejecutar el script.

Ejemplo de script que carga un formulario:

Sub Main (Criterio, Orden, Opciones)
   Diario.NuevoFormulario "editor", Criterio, Orden, "Nombre='EdiCliente9'"
End Sub

Ejemplo de un script que ejecuta un proceso y muestra un resultado:

Sub Main (Criterio, Orden, Opciones)
   Interact.Reinicia "Resultado", Esp.ProcesoX (Criterio, Orden, Opciones)
End Sub

Ejemplo de script que pide confirmación para ejecutar un proceso, lo ejecuta en caso de aceptación y muestra el resultado

Sub Main (Criterio, Orden, Opciones)
   If Not Interact.Aceptado Then
      Interact.Reinicia "Resultado", "¿Ejecutar el proceso X?" : Interact.Cancelable = True
   Else
      Interact.Reinicia "Resultado", Esp.ProcesoX (Criterio, Orden, Opciones)
   End If
End Sub

Ejempo de un script que recoge datos, ejecuta un proceso y muestra un resultado:

Sub Main (Criterio, Orden, Opciones)
   If Not Interact.Aceptado Then
      Interact.Reinicia "Resultado", "¿Ejecutar el proceso X con los valores especificados?" : Interact.Cancelable = True
      Interact.NuevoValor "Parametro1", "Parametro1", "Texto", 0, ""
      Interact.NuevoValor "Parametro2", "Parametro2", "Texto", 0, "ValorPorDefecto"
   Else
      Resultado = Esp.ProcesoX (Criterio, Orden, "Parametro1=" & Parametro1 & " Parametro2=" & Parametro2)
      Interact.Reinicia "Resultado", Resultado
   End If
End Sub

Ejemplo de script que recoge datos, ejecuta un proceso y no muestra ningún resultado:

Sub Main (Criterio, Orden, Opciones)
   If Not Interact.Aceptado Then
      Interact.Reinicia "Resultado", "¿Ejecutar el proceso X con los valores especificados?" : Interact.Cancelable = True
      Interact.NuevoValor "Parametro1", "Parametro1", "Texto", 0, ""
      Interact.NuevoValor "Parametro2", "Parametro2", "Texto", 0, "ValorPorDefecto"
   Else
      Resultado = Esp.ProcesoX (Criterio, Orden, "Parametro1=" & Parametro1 & " Parametro2=" & Parametro2)
      Interact.Reinicia "", ""
   End If
End Sub

Flujo del proceso

El flujo del proceso de ejecución de un script está basado en los métodos internos:

“EjecutaHSC” que ejecuta realmente el script

“IrAFormAct” que lleva la aplicación a su situación final en función de si se ha agregado un nuevo formulario al “Diario” o de si hay una “Interaccion”

El proceso en sí es el siguiente:

EjecutaHSC

  1. Carga todos los objetos necesarios en el control VBScript
  2. Ejecuta el script
  3. Comprueba si el script ha creado una “Interacción” de recogida de datos o de solicitud de cancelar o aceptar. En caso de que si, guarda el script como “Script en curso”

IrAFormAct

  1. En caso de que haya una “Interacción” aceptada y “Script en curso” almacenado, significa que el usuario ya ha introducido los datos solicitados: vuelve ejecutar el script almacenado, paso 1)
  2. En caso de que haya una “Interacción” no aceptada significa que el usuario todavía no ha introducido los datos. Se muestra la interacción por pantalla y cuando el usuario ha introducido la información y pulsa el botón aceptar, se vuelve a lanzar el proceso a partir del paso 4)
  3. Si hay una “Interacción” aceptada pero ningún script almacenado, significa que es un propio proceso de la aplicación y no un script quien ha solicitado datos. En este caso no se realiza ninguna acción más
  4. Si hay una “Interacción” aceptada pero esta no tiene ningún dato, se trata de una simple muestra de un mensaje de texto al usuario sin recogida de datos. Se destruye el objeto “Interacción” para que no se vuelva a mostrar.
  5. Finalmente, se comprueba si hay un formulario nuevo en el “Diario”. Si lo hay, en caso de aplicación Windows Forms, se muestra. En el caso de una aplicación web, se redirige su página correspondiente.
Tags Relacionados:

interacción usuario formulario web windows forms proceso resultado