Lab genexusintroductorio

26
Laboratorio GeneXus X Evolution 1 For Dummies Última actualización: 24 de Marzo de 2011

Transcript of Lab genexusintroductorio

Page 1: Lab genexusintroductorio

Laboratorio GeneXus X

Evolution 1

For Dummies Última actualización: 24 de Marzo de 2011

Page 2: Lab genexusintroductorio

Laboratorio GeneXus X Evolution 1

Página 1

Copyright Artech Consultores S. R. L. 1988-2010.

Todos los derechos reservados. Este documento no puede ser reproducido en cualquier medio sin el consentimiento

explícito de Artech Consultores S.R.L. La información contenida en este documento es para uso personal únicamente.

Marcas Registradas

Artech y GeneXus son marcas o marcas registradas de Artech Consultores S.R.L. Todas las demás marcas

mencionadas en este documento son propiedad de sus respectivos dueños.

Page 3: Lab genexusintroductorio

Laboratorio GeneXus X Evolution 1

Página 2

1. Tabla de Contenido

1. Tabla de Contenido ............................................................................................. 2

2. Objetivo ............................................................................................................. 3

3. Preparación ........................................................................................................ 3

4. Diseño y gestión ................................................................................................. 6

Principales secciones del nuevo Integrated Development Environment (IDE) ..................... 6

Documentación ......................................................................................................... 7

Búsqueda ................................................................................................................. 8

Categorías .............................................................................................................. 11

Diagramas de Transacciones y tablas ......................................................................... 12

5. Desarrollo de la aplicación .................................................................................. 13

Patterns ................................................................................................................. 13

Web Transactions .................................................................................................... 17

Objeto Query .......................................................................................................... 21

6. Glosario ........................................................................................................... 25

Categories ........................................................................................................... 25

Fórmulas ............................................................................................................. 25

Patterns .............................................................................................................. 25

Reorganización ..................................................................................................... 25

User Controls ....................................................................................................... 25

Automatic Refresh ................................................................................................ 25

Query Object ........................................................................................................ 25

Page 4: Lab genexusintroductorio

Laboratorio GeneXus X Evolution 1

Página 3

2. Objetivo

Poner en práctica varios de los conceptos de la versión GeneXus X Evolution 1, familiarizarse con el entorno

de desarrollo de la versión, y conocer algunas funcionalidades WEB, en particular el Query Viewer y User

Control.

3. Preparación

En la carpeta c:\LabIntroductorio tiene los XPZ que se usarán durante el lab, al igual que el resto del

material requerido.

Crear una nueva base de conocimiento, para lo cual, se le presentará el siguiente diálogo. Seleccionar

el generador Ruby en el combobox de Prototyping Environment:

Configurar las propiedades de conexión del modelo. Ir por Knowledge Base Navigator-> Preferences, y

seleccionar el DataStore SQL Server del Ruby Environment, como indica la figura más abajo.

Editar el valor de las propiedades, considerando:

o Database Name = Futbol

o ServerName = localhost\sqlexpress

Page 5: Lab genexusintroductorio

Laboratorio GeneXus X Evolution 1

Página 4

o Use Trusted Connection = No

o User Id = sa

o User password = artech

Page 6: Lab genexusintroductorio

Laboratorio GeneXus X Evolution 1

Página 5

Importar todos los objetos del XPZ1.xpz: Knowledge Manager -> Import:

Presionar F5 para ejecutar. GeneXus automáticamente detectará que han habido cambios y es

necesario reorganizar. Observe el Impact Analysis Report, donde se muestran los cambios a realizar

sobre las tablas y además las sentencias SQL que serán ejecutadas sobre la BD.

Para ejecutar la reorganización, presione el botón “Create”. Una vez terminada la reorganización,

aparecerá el mensaje “Reorganization Success” en el output window.

Luego de la ejecución de la reorganización, observe que automáticamente se genera la aplicación, se

ejecuta el Webrick (servidor web liviano) y se abre el browser, donde lo primero que ejecuta es el

DeveloperMenú, que presenta las transacciones, y un Web Panel de nombre “Load Data”. Ir por el link

del “Load Data” para cargar datos iniciales antes de empezar a trabajar.

El Web Panel “LoadData” implementa una carga básica de datos. Solicita el path en donde se

encuentran las imágenes de la aplicación. Ud. solo debe presionar el botón para que se efectúe la

carga.

A partir de aquí estará listo para realizar los ejercicios que siguen.

Page 7: Lab genexusintroductorio

Laboratorio GeneXus X Evolution 1

Página 6

4. Diseño y gestión

Inicialmente introduciremos algunos conceptos de Diseño y gestión de la versión GeneXus X Evolution 1.

Principales secciones del nuevo Integrated Development Environment (IDE)

Las principales áreas del IDE de GeneXus X Evolution 1:

1: Knowledge Base Navigator. Un conjunto de menús contextuales para navegar sobre objetos (ya sea en su vista por directorios [“Folder View”] o categorías [Category View]), para visualizar la lista de los últimos cambios [“Latest Changes View”] y Preferencias del modelo [“Preferences"].

2: Principal. Aquí se despliega la Start Page y una pestaña por cada uno de los Objetos abiertos

3: Salida de las distintas operaciones (especificación, generación, compilación, etc) [“Output”]

4: Diálogo de propiedades y toolboxes de controles, objetos y variables que están seleccionadas

5: Toolbars de GeneXus para acceder a todas las opciones de la Knowledge Base.

Page 8: Lab genexusintroductorio

Laboratorio GeneXus X Evolution 1

Página 7

Documentación

La documentación y organización del proyecto forma parte fundamental de un proceso de desarrollo,

principalmente en sus fases iniciales pero además acompañando el desarrollo en todas sus instancias, no solo

generándose nueva documentación sino incrementando o iterando sobre documentación generada en fases

previas. Estas necesidades son satisfechas por GeneXus X Evolution 1 con el objeto Documentation, y

además se brinda una mayor potencia a la documentación de cada objeto, utilizando la tecnología de wiki

pages.

Para ver esta funcionalidad de GeneXus comenzaremos realizando la edición de la documentación principal de la

KB, donde agregaremos una referencia a la documentación de la transacción “Player”.

Para esto se deben realizar los siguientes pasos:

1. Abrir la transacción “Player” (File -> Open Object, también la puede encontrar directamente buscando en el folder “Transactions”).

2. Escribir un texto de documentación en el tab Documentation de la misma:

3. Abrir el objeto de tipo Documentation llamado “Main”. En la vista de carpetas (“Folder View”)

Documentation / Main Document.

4. Abrir la vista de edición del objeto. (ver figura 1)

Figura 1: Vistas del objeto de tipo Documentation

5. Agregar el siguiente texto:

Objects Documentation:

Documentation of Player Transaction:

6. Salvar la página, mediante Ctrl.+S o File / Save

7. Agregar el link a la documentación de la transacción “Player”:

a. Escribir a continuación de “Documentation of Player Transaction” el texto “[[tr”, esto desplegará la lista de los diferentes tipos que pueden ser linkeados en la documentación:

Page 9: Lab genexusintroductorio

Laboratorio GeneXus X Evolution 1

Página 8

8. Seleccionar el tipo de objeto Transaction. Al seleccionar el tipo se desplegará la lista con todas las

transacciones existentes en la KB.

9. Seleccionar la transacción “Player”, y salvar.

10. Volver al objeto Main. Pasando a la sección “Browse” del objeto podrá ver la documentación que se ha

editado, permitiéndose navegar por los hyperlinks hacia los objetos que son referenciados.

11. Pasando a la sección de “History”, se podrá ver el histórico de cambios del documento lo que permitirá hacer un seguimiento de las modificaciones de la documentación, pudiéndose acceder a cada una de estas versiones para ver su contenido y las diferencias con la versión anterior.

Búsqueda

Un elemento que permite una mayor fluidez en el desarrollo y que permitirá encontrar fácilmente cualquier

recurso buscado dentro de la KB, es la capacidad de búsqueda por contenido provista por el Search del IDE.

1. Abrir la toolbar de Búsqueda View / Other Tool Windows / Search

2. Escribir “Player” en el campo “Enter a word or phrase” y realice la búsqueda (clic en search)

Esto traerá varios resultados. Se puede observar que esta búsqueda por contenidos retorna elementos de la KB

si la frase por la que se realiza la búsqueda está en cualquiera de las secciones del objeto (reglas, eventos,

estructura, documentación, web Form, nombre, descripción, etc.)

Se muestra un link para abrir el objeto y al mismo tiempo otro link para abrir cada una de las secciones del

objeto que contiene la frase buscada.

Page 10: Lab genexusintroductorio

Laboratorio GeneXus X Evolution 1

Página 9

3. Ahora realizaremos una búsqueda avanzada, donde buscaremos los objetos que son “Business Component” (transacciones que tienen la propiedad “Business Component” en True).

a. Dejar vacío el campo de búsqueda (“Enter a word or phrase”)

b. Abrir el diálogo para agregar la propiedad “Business Component” al criterio de búsqueda, clic en el botón “[…]”. Ver figura:

c. Clic en “OK”, lo que hará aparecer una línea en la sección “Criteria” con la propiedad Business Component y sus valores posibles

d. Seleccionar el valor “True”. Ver figura:

Page 11: Lab genexusintroductorio

Laboratorio GeneXus X Evolution 1

Página 10

e. Hacer la búsqueda (clic en Search). Aparecerán todas las transacciones que sean Business components.

Page 12: Lab genexusintroductorio

Laboratorio GeneXus X Evolution 1

Página 11

Categorías

Además de la vista por folders GeneXus X Evolution 1 incorpora la categorización de objetos, que permite

agrupar objetos bajo una (o más) categorías, que podrán ser definidas en forma estática por el analista

GeneXus, o que podrán ser mantenidas dinámicamente en base a criterios de búsqueda. Las categorizaciones

de objetos permitirán organizar de diferentes formas los objetos de la KB, según diferentes criterios que el

usuario podrá definir.

1. Para comenzar pasaremos a la vista por categorías (Category View) del Knowledge Base Navigator (si este no está desplegado View / Other Tool Windows / KnowledgeBase Navigator, en el área 1)

2. Crear una nueva categoría: clic derecho sobre el folder “All” y en el menú ir por New / Category. El nombre de la categoría será “Documented Objects”.

3. Ahora agregaremos a esta nueva categoría, un objeto que tiene documentación (en este caso, la transacción Player). Para esto haremos lo siguiente:

a. Pasar nuevamente a la vista de Carpetas (Folder View).

b. Seleccionar la transacción Player en el Folder View Objects / Transactions / Player. Al

momento de seleccionarla sus propiedades se desplegarán en la ventana de propiedades.

c. Dentro de la ventana de propiedades (en la parte inferior) está la sección de categorías del objeto. Allí (en Add Category) escribir “Documented Objects” y dar Enter.

d. Salvar la transacción.

e. Si volvemos a la vista por categorías (Category View) veremos la transacción Player bajo la categoría “Documented Objects”

Page 13: Lab genexusintroductorio

Laboratorio GeneXus X Evolution 1

Página 12

Diagramas de Transacciones y tablas

El nuevo diagrama de tablas y transacciones permite obtener una visión global de la KB mediante diagramas

de Bachman. Se permite realizar diagramas de tablas, transacciones o ambos mezclados, permitiendo editar el

diagrama (agregando o quitando objetos) para mostrar diferentes perspectivas de las tablas o transacciones de

la KB, dándole al diagrama una mayor expresividad y poder de abstracción.

Crear un diagrama que nos permita ver la relación entre las transacciones del modelo.

1. Crear un nuevo objeto de tipo “Diagram”.

Una manera de hacerlo es presionar las siguientes teclas del teclado: Ctrl + N y seleccionar un objeto de tipo “Diagram”. Elegir un nombre para dicho objeto: “Diagram1” (por defecto) y hacer clic en “Create”.

2. Volver a la vista de objetos (Folder View) y arrastrar hacia el diagrama las transacciones “Player”, “Team”, y “Match”.

Ver como se relacionan las mismas.

5.

IDE TIP: Los atributos de una tabla o una TRN se pueden ocultar o visualizar en el

diagrama simplemente haciendo clic en el icono para colapsar, que está en la esquina

superior derecha.

Page 14: Lab genexusintroductorio

Laboratorio GeneXus X Evolution 1

Página 13

6. Desarrollo de la aplicación

Patterns

1. Aplicar el Pattern Work With a todas las transacciones del modelo. En la vista de Folder View, seleccionar

las transacciones “Team”, “Player”, “Match”, y “Group” (presionando la tecla “Shift” se pueden seleccionar

varios objetos), y mediante botón derecho, seleccionar “Apply Pattern” -> “Work With”.

Observar que el Pattern Work With está integrado en esta versión. Verificar que se hayan generado los objetos

correspondientes al Pattern Work With. Puede ver los objetos generados en el Folder View, bajo cada una de las

transacciones.

2. Abrir la instancia del pattern WW de la transacción Team (para esto, abrir la transacción Team, seleccionar

la pestaña inferior Patterns, y luego la pestaña superior Work With), y eliminar el atributo “TeamHistory”:

Page 15: Lab genexusintroductorio

Laboratorio GeneXus X Evolution 1

Página 14

3. Presionar F5 para ver la aplicación en ejecución. Lo primero que ejecuta es el Developermenu. Haga clic en

el “Work With Teams” y observe que aplicación ya está “enmarcada” en una MasterPage dada, que viene por

default (propiedad “Default Master Page” de la Versión). Esta propiedad se encuentra en la vista de

“Preferences”.

Page 16: Lab genexusintroductorio

Laboratorio GeneXus X Evolution 1

Página 15

Page 17: Lab genexusintroductorio

Laboratorio GeneXus X Evolution 1

Página 16

4. Abrir el objeto AppMasterpage (ubicado en la carpeta “GeneralWeb” en la vista “Folder View”) y modificar el

caption del Textblock del cabezal:

5. La página de Inicio de la aplicación será el Web Panel “Home”, por lo cual, se debe configurar dicho objeto

como el Start Up Object. En el Folder View, ubicar el Web Panel Home bajo los “Main Programs” y con botón

derecho seleccionar “Set as Startup Object”.

Page 18: Lab genexusintroductorio

Laboratorio GeneXus X Evolution 1

Página 17

Ejecutar la aplicación con F5. Hacer clic en “Work With Matches”. Observar que se tiene un grid con un filtro, en el

que el refresh es automático, es decir, ingresado un filtro los datos se cargan automáticamente sin necesidad de

presionar un botón de búsqueda.

Web Transactions

1. Editar la transacción “Match”. Realizar los siguientes pasos:

a. Abrir la transacción “Match”, y clic sobre la pestaña “Web Form”.

b. Configurar los atributos CountryIdentifier y CityIdentifier como combos dinámicos, como se muestra a

continuación:

Page 19: Lab genexusintroductorio

Laboratorio GeneXus X Evolution 1

Página 18

b. A continuación, vamos a modificar la edición de los datos del grid para que sea posible ingresar un

jugador mediante una lista de sugerencia (que no sea necesario recordar el Identificador del jugador ni

seleccionarlo mediante un prompt); y que solo se pueda ingresar un jugador que pertenezca a uno de

los dos equipos del Match.

En la transacción “Match”, ir por la pestaña “Web Form”. Para editar las columnas del grid, hacer clic

con botón derecho sobre el grid, e ir por la opción “Columns” del menú contextual:

Page 20: Lab genexusintroductorio

Laboratorio GeneXus X Evolution 1

Página 19

Eliminar la columna PlayerName, y para el atributo PlayerIdentifier configurar:

La propiedad “Input Type” = Descriptions, “ItemDescriptions” = PlayerName

“Suggest” = On Request

“Conditions” = TeamIdentifier=MatchTeam1Identifier or

TeamIdentifier=MatchTeam2Identifier;

Page 21: Lab genexusintroductorio

Laboratorio GeneXus X Evolution 1

Página 20

c. Ejecutar “Work With Matches”. Hacer clic en para poder ingresar un nuevo Match. En la transacción,

observar el comportamiento de los combos dinámicos que se cargan de manera relacionada.

Observar también el prompt GeneXus que se abre de forma modal. Ver que una vez seleccionada la

clave del equipo se infiere automáticamente la descripción del mismo.

Notar que si ingresa dos veces el mismo equipo de dispara la siguiente regla automáticamente:

error('Matches cannot be the same!') if MatchTeam1Identifier =

MatchTeam2Identifier;

En el grid, notar el funcionamiento del suggest para seleccionar los jugadores que realizaron goles.

Observar que en el suggest solo están los jugadores de alguno de los dos equipos del Match. Además,

cuando se ingresan los goles de los jugadores se actualiza de manera automática las fórmulas de

cantidad de goles de cada equipo y total de goles del partido.

Page 22: Lab genexusintroductorio

Laboratorio GeneXus X Evolution 1

Página 21

Objeto Query

1. Crear un Objeto Query (“Query1”) como el siguiente:

2. Consolidar XPZ2.xpz (Knowledge Manager -> Import).

3. Insertar en el form del objeto “PlayerScore”, el User Control “Query Viewer” (seleccionar el control de la toolbox, en la sección “Extended Controls” y arrastrarlo hacia el form. En caso de no tener disponible la toolbox, la puede abrir haciendo clic en View -> Other Tool Windows -> Toolbox)

Page 23: Lab genexusintroductorio

Laboratorio GeneXus X Evolution 1

Página 22

Page 24: Lab genexusintroductorio

Laboratorio GeneXus X Evolution 1

Página 23

4. Configurar las siguientes propiedades del “Query Viewer” control:

Object= Query1 (el Query creado anteriormente)

Type=Chart

5. Observar que el objeto Query (“Query1”) que se ha creado anteriormente recibe como parámetro el TeamIdentifier. Entonces, en el webpanel PlayerScore, seleccionar la pestaña “Events” y programar lo siguiente (notar que la variable &TeamIdentifier ya está como combo dinámico en la pantalla):

Event Refresh &Parameter = new() &Parameters = new() &Parameter.Name = "TeamIdentifier" &Parameter.Value = trim(&TeamIdentifier.ToString()) &Parameters.Add(&Parameter) EndEvent

4. Para que sea posible cambiar el tipo de gráfica presionando el botón “confirm”; programar lo siguiente (notar que la variable &QueryType ya está como combo en la pantalla):

Event Enter queryViewer1.ChartType = &QueryType EndEvent

5. Ejecutar el webpanel, haciendo clic con el botón derecho sobre “PlayerScore”, “Run With this Only”.

Page 25: Lab genexusintroductorio

Laboratorio GeneXus X Evolution 1

Página 24

Page 26: Lab genexusintroductorio

Laboratorio GeneXus X Evolution 1

Página 25

6. Glosario

Categories

http://wiki.gxtechnical.com/commwiki/servlet/hwikibypageid?5287

Fórmulas

http://wiki.gxtechnical.com/commwiki/servlet/hwikibypageid?5861

Patterns

http://wiki.gxtechnical.com/commwiki/servlet/hwikibypageid?2814

Reorganización

http://wiki.gxtechnical.com/commwiki/servlet/hwikibypageid?3154

User Controls

http://wiki.gxtechnical.com/commwiki/servlet/hwikibypageid?5273

Automatic Refresh

http://wiki.gxtechnical.com/commwiki/servlet/hwikibypageid?6744

Query Object

http://wiki.gxtechnical.com/commwiki/servlet/hwikibypageid?9026