133 nuevo pattern de px tools - pxflow-controller - control de flujo entre interfaces gráficas para...
TRANSCRIPT
Nuevo pattern de
PXTools -
PXFlowControllerIng. Juan Marcelo Bustamante Lamas
#GX2487
Nuestra Empresa
• Conocemos GeneXus desde su versión 3.3
• Comenzamos el trabajo en Web con GeneXus desde 2002
• En el 2006 comenzamos a brindar soporte de migraciones de aplicaciones Win a Web y creamos nuestro producto PXTools.
• Tenemos Presencia en 8 países de América
• Tenemos más de 20 clientes que utilizan PXTools
• Superamos las 100 licencias otorgadas.
El Contexto inicial
• Resolver el dialogo Modal en migraciones Win a Web.– El código posterior a una llamada de una IG se ejecuta antes de la IG.
– Múltiples invocaciones a IGs se pierden quedando solo la última.
• Posibles soluciones– Reingeniería de procesos.
– Programación manual basado en máquina de estados.
Características de la solución
• Definir el flujo de un proceso en una instancia de pattern.
• Facilitar el salvado de contexto de variables al pasar entre distintas interfaces.
• Integración con GXFlow.– Poder invocar a más de una IG en una sola tarea del WorkFlow.
– Precarga automática de ciertas variables del Flow.
• Control de Cierre de Ventana.
• Impresión de Texto en Cliente masivo.
• Confirms.
Ejemplo1 TClientes.Call(TrnMode.Update ,&CliNro )
2 Do 'Cargo Nombre Cliente'
3 &CountDirecciones = 0
4 For Each
5 Where CliNro = &CliNro
6 Defined By CDrNro
7 &CountDirecciones += 1
8 EndFor
9 If &CountDirecciones > 0
10 &Msg = "¿Desea Actualizar las Direcciones de " + CliNom.Trim() + "?"
11 Confirm(&Msg)
12 If Confirmed()
13 For Each
14 Where CliNro = &CliNro
15 TCliDir.Call(TrnMode.Update ,&CliNro ,CDrNro )
16 EndFor
17 EndIf
18 EndIf
19 Do 'Verifico Contactos‘
20
Ejemplo21 Sub 'Cargo Nombre Cliente'
22 For Each
23 Where CliNro = &CliNro
24 &CliNom = CliNom
25 EndFor
26 EndSub
27
28 Sub 'Verifico Contactos'
29 &CountContactos = 0
30 For Each
31 Where CliNro = &CliNro
32 &CountContactos += 1
33 EndFor
34 If &CountContactos
35 &Msg = "¿Desea Actualizar los Contactos de " + &CliNom.Trim() + "?"
36 Confirm(&Msg)
37 If Confirmed()
38 For Each
39 Where CliNro = &CliNro
40 Defined By CCtNro
41 TCliCon.Call(TrnMode.Update ,&CliNro ,CCtNro )
42 EndFor
43 EndIf
44 EndIf
45 EndSub
¿ Cómo funciona?
• Declarar bloques de Código– Cada bloque terminará invocando a una IG.
– Cada IG puede ser un conjunto de pantallas.
• Solo una se ejecutará al finalizar el bloque
– Los bloques son definidos con código GeneXus.
¿Cómo funciona?1 TClientes.Call(TrnMode.Update ,&CliNro )
2 Do 'Cargo Nombre Cliente'
3 &CountDirecciones = 0
4 For Each
5 Where CliNro = &CliNro
6 Defined By CDrNro
7 &CountDirecciones += 1
8 EndFor
9 If &CountDirecciones > 0
10 &Msg = "¿Desea Actualizar las Direcciones de " + CliNom.Trim() + "?"
11 Confirm(&Msg)
12 If Confirmed()
13 For Each
14 Where CliNro = &CliNro
15 TCliDir.Call(TrnMode.Update ,&CliNro ,CDrNro )
16 EndFor
17 EndIf
18 EndIf
19 Do 'Verifico Contactos‘
20
¿ Cómo funciona?
• Declarar bloques de Código– Cada bloque terminará invocando a una IG.
– Cada IG puede ser un conjunto de pantallas.
• Solo una se ejecutará al finalizar el bloque
– Los bloques son definidos con código GeneXus
• Las IG son declaradas con Acciones especialmente consideradas en la instancia.– Las acciones se ejecutan en un Bloque con Comandos específicos del
PXFLowController. Los comandos pueden ser:
• ControllerAction <Action Name>
• ControllerConfirm <Confirm Name>
• ControllerGotoLine <Line Number>
• ControllerReturn
¿Cómo funciona?
Algunas features
• Integración con GXFlow.– Precarga de Variables.
– Control de Cola de Mensajes.
• Control de Cierre de Ventana.
• Impresión de Texto en Cliente masivo.
• Confirms.
Algunas Features
Algunas features
• Integración con GXFlow.– Precarga de Variables.
– Control de Cola de Mensajes.
• Control de Cierre de Ventana.
• Impresión de Texto en Cliente masivo.
• Confirms.
• Invocación a IG dentro de una iteración.
Algunas Features
Algunas features
• Integración con GXFlow.– Precarga de Variables.
– Control de Cola de Mensajes.
• Control de Cierre de Ventana.
• Impresión de Texto en Cliente masivo.
• Confirms.
• Invocación a IG dentro de una iteración.
• Soporte de Subrutinas con IGs.
Algunas Features
Conclusión
• Ventajas– No es necesario realizar reingeniería de procesos.
– Bajo tiempo de implementación.
• Futuro– Automatizar la generación de la instancia en migraciones Win a Web.
– Parseo sintáctico del Lenguaje GeneXus.
¿Preguntas?