SlideShare una empresa de Scribd logo
1 de 54
EXTENSIÓN PARA LA REALIZACIÓN DE BÚSQUEDAS DINÁMICAS Y GUÍA
DE IMPLEMENTACIÓN PARA DESARROLLADORES DE GENEXUS EV2.
UNIVERSIDAD CATÓLICA DE SANTA MARÍA
FACULTAD DE CIENCIAS E INGENIERÍAS FÍSICASY
FORMALES
PROGRAMA PROFESIONAL DE INGENIERÍA DE SISTEMAS
Tema:
Autor:
SONYYVAN GALLEGOS QUISPE
Asesor deTesis:
DR. GUILLERMO CALDERÓN RUIZ
 INTRODUCCIÓN
 EXTENSIÓN
 GUÍA DE IMPLEMENTACIÓN.
 VALIDACIÓN
 CONCLUSIONES
ESTRUCTURA
Introducción
¿Qué es GeneXus Ev2 y para qué
sirve?
Base de Conocimiento
Stakeholders
Analista y
programador
Genexus
Base de datos relacional
Código fuente
Problema
GeneXus presenta la restricción que no se
puede implementar aplicaciones que ayuden
al usuario final a realizar consultas a sus bases
de datos en forma dinámica.
• Consulta SQL
Select nombre, apellido, dni from persona
• Consulta GeneXus
For each
&nombre = nombre
&apellido = apellido
&dni = dni
endfor
¿Porqué existe el problema?
• Consulta SQL
Select nombre, apellido, dni from persona
where dni = ‘45056272’
• Consulta GeneXus
For each
where dni = ‘45056272’
&nombre = nombre
&apellido = apellido
&dni = dni
Endfor
Consultas con condicionales
• Consulta SQL
Select nombre, apellido, dni from persona
where dni in (‘A’, ‘B’ ,‘C’, ‘D’)
• Consulta GeneXus
For each
where dni in (‘A’, ‘B’ ,‘C’, ‘D’)
&nombre = nombre
&apellido = apellido
&dni = dni
Endfor
Consultas con condicionales
Que sucede si…
• Consulta SQL
Select nombre, apellido, dni from persona
where dni in
• Consulta GeneXus
For each
where dni in
&nombre = nombre
&apellido = apellido
&dni = dni
Endfor
Además…
• Select nombre, apellido, dni from persona
where dni in and ciudad in and ocupación in
• For each
where dni in and ciudad in and ocupación in
&nombre = nombre
&apellido = apellido
&dni = dni
Endfor
Solución
• La extensión debe permitir al desarrollador su fácil
instalación en el entorno de desarrollo integrado de
GeneXus Ev2.
• La extensión debe brindar al desarrollador una
solución fácil de implementar consultas dinámicas.
• La extensión debe utilizar objetos de la herramienta
GeneXus Ev2 en su propuesta de la solución.
Objetivos de la extensión
• Segundo problema:
No existe documentación formal que ayude a
desarrollar la extensión.
Pero…¿como se hace una
extensión?
• Objetivo:
– La guía de implementación debe ofrecer
ejemplos prácticos para su fácil
comprensión.
Guía de implementación
Extensión
– El Usuario podrá generar la consulta con las
tablas y atributos que elija.
– El Usuario podrá ejecutar la consulta en tiempo
de diseño.
– El Usuario podrá guardar la consulta.
Requerimientos funcionales
– El Usuario podrá visualizar las consultas que están
almacenadas.
– El Usuario podrá deshacer todas las acciones
realizadas, limpiando todos los objetos que se
muestran en pantalla.
– El Usuario podrá invocar la ejecución de la
consulta en tiempo de ejecución de la aplicación.
Requerimientos funcionales
– La invocación del método de ejecución de la consulta
debe ser programada según la lógica del desarrollador.
– El resultado de la consulta debe ser devuelto en formato
de lenguaje de marcas extensible.
– La consulta debe ser guardada en el objeto Procedure de
GeneXus para obtenerla cuando se le requiera.
– El resultado de la consulta debe ser tomado y mostrado
por el objeto GeneXus Structured Data Type.
Requerimientos no funcionales
Diagrama de caso de uso general
• Iniciar extensión
Diagramas de secuencia
• Definir consulta
Diagramas de secuencia
• Programar con extensión
Diagramas de secuencia
• Realizar consulta
Diagramas de secuencia
Diagrama de clases
Guía de
implementación
– ¿Para qué sirve?
– ¿Cómo conseguirlo?
Identificador único global
– El instalador se encuentra en el centro de descargas de
GeneXus:
http://www2.gxtechnical.com/portal/hgxpp001.aspx?15,8,
8,O,,0,,%202707
– Al instalarse se crean los siguientes directorios y archivos:
• Bin
• PackageBuilder
• PatternBuilder
• Patterns
• Samples
• Schemas
Instalación de la plataforma de
desarrollo.
–Folder
–Procedure
•Variables
•Source
•Rules
–Structured Data Type
–External Object
Objetos GeneXus
Artech.Architecture.Common.Objects
Artech.Architecture.UI.Framework.Services
1. if(UIServices.KB != null && UIServices.KB.CurrentModel != null){
2. Folder folder = Folder.Get(UIServices.KB.CurrentModel,
“iQueries”);
3. if (folder == null){
4. folder = new Folder(UIServices.KB.CurrentModel);
5. folder.Parent = Folder.GetRoot(UIServices.KB.CurrentModel);
6. folder.Name = “iQueries”;
7. folder.Save();
}
}
Folder
Artech.Architecture.Common.Objects
Artech.Architecture.UI.Framework.Services
Artech.Genexus.Common.Objects
Artech.Genexus.Common
1. Procedure procedure =
Procedure.Get(UIServices.KB.CurrentModel, “MiProcedimiento”);
2. if (procedure == null){
3. procedure = new Procedure(UIServices.KB.CurrentModel);
4. procedure.Name = “MiProcedimiento”;
5. procedure.Parent = folder;
6. procedure.Save();
}
procedure.Parent = Folder.GetRoot(UIServices.KB.CurrentModel);
Procedure
1. Variable variable = new Variable(procedure.Variables);
2. variable.Name = “query”;
3. variable.Type = eDBType.VARCHAR;
4. variable.Length = 9999;
5. procedure.Variables.Add(var);
6. procedure.Save();
Variables en un Procedure
Source
1. string source = “&query = ‘Hola mundo con
procedure’”;
2. procedure.ProcedurePart.Source = source;
3. procedure.Save();
 Rules
1. procedure.Rules.Source = “parm(out:&variable);”;
2. procedure.Save();
Source y Rules en un Procedure
Artech.Architecture.Common.Objects
Artech.Architecture.UI.Framework.Services
Artech.Genexus.Common.Objects
Artech.Genexus.Common.Parts.SDT
1. SDT miSdt = SDT.Get(UIServices.KB.CurrentModel, “miSdt”);
2. if(miSdt == null){
3. miSdt = new SDT(UIServices.KB.CurrentModel);
4. miSdt.Parent = folder;
5. miSdt.Name = “miSdt”;
6. SDTLevel sdtLevel = miSdt.SDTStructure.Root;
7. sdtLevel.Name = “Item”;
8. sdtLevel.Items.Clear();
9. sdtLevel.IsCollection = true;
10.sdtLevel.CollectionItemName = “Item”;
Structured DataType
11. SDTItem item = new SDTItem(sdtLevel.SDTStructure);
12. item.Name = “item1”;
13. item.Type = eDBType.VARCHAR;
14. item.Length = 9999;
15. item.IsCollection = false;
16. sdtLevel.AddItem(item);
17. miSdt.Save();
Structured DataType
• Permite al desarrollador agregar funcionalidad a su
aplicación.
Ejemplo:
namespace iLauncher{
public class CLauncher{
public string server;
public string dbname;
public string user;
public string password;
public CLauncher(){}
public String ExecuteQueryToXml(string query){}
}
}
External Object
External Object
• ¿Cómo utilizamos el external object?
• &sqlQuery = ‘select * from ros’
• &sqlResult = &clauncher.ExecuteQueryToXml(&sqlQuery)
External Object
• Obtenemos todas las tablas:
IEnumerator<Table> tables =
Table.GetAll(UIServices.KB.CurrentModel).GetEnumerator();
• Recorremos todas las tablas:
while(tables.MoveNext()){
Table table = tables.Current;
}
Tablas y Campos
• Obtenemos todos los campos:
BaseCollection<TableAttribute> atts =
table.TableStructure.Attributes;
• Recorremos todos los campos:
foreach(TableAttribute att in atts){
string nameTable = att.Table.Name;
string nameAttribute = att.Name;
string descriptionAtributte = att.Attribute.Description;
}
Tablas y Campos
Validación
– Extensión para la realización de consultas dinámicas.
– Guía de implementación de extensiones.
• Indicadores
– Fácil instalación de la extensión.
– Fácil implementación de consultas dinámicas con la
extensión.
– Fácil comprensión de la guía de implementación.
– Ejemplos prácticos en la guía de implementación.
– Utilidad de la extensión.
Variables dependientes
• ¿Qué le pareció la instalación de la extensión?
Muy Fácil Fácil RegularDifícil Muy Difícil
• ¿Qué le pareció la programación para realizar consultas
dinámicas con la extensión?
Muy Fácil Fácil RegularDifícil Muy Difícil
• ¿Cómo califica en grado de utilidad a la extensión?
Muy útil Útil Regular Improductivo
• ¿Cómo le pareció la compresión de la guía de extensiones?
Muy Fácil Fácil RegularDifícil Muy Difícil
• ¿Qué le pareció los ejemplos de creación de objetos GeneXus en
la guía de extensiones?
Muy útil Útil Regular Improductivo
Encuesta
Encuesta
Nombre Ocupación
Eduardo Jorge Jasaui Torres Distribuidor GeneXus
Alfredo Zea García Calderón Analista – Programador GeneXus
Fiorella Rivera Calderón Analista – Programador GeneXus
Ana Belén Arista Huenonte Analista – Programador GeneXus
Lilian Loayza Analista – Programador GeneXus
Virgilio José Torres Otoya Analista – Programador GeneXus
• ¿Qué le pareció la instalación de la extensión?
Fácil instalación de la extensión
• ¿Qué le pareció la implementación para realizar
consultas dinámicas con la extensión?
Fácil implementación de consultas dinámicas
con la extensión.
• ¿Cómo le pareció la comprensión de la guía de
extensiones?
Fácil comprensión de la guía de
implementación.
• ¿Qué le pareció los ejemplos de creación de objetos
GeneXus en la guía de extensiones?
Ejemplos prácticos en la guía de
implementación.
• ¿Cómo califica en grado de utilidad a la extensión?
Utilidad de la extensión.
• PRIMERA la instalación de la extensión es fácil de
realizar por las personas que se ocupan del análisis y
desarrollo de sistemas de información en GeneXus
Ev2.
• SEGUNDA la extensión ayuda a implementar con
facilidad consultas dinámicas en aplicaciones hechas
por la herramienta GeneXus Ev2
Conclusiones
• TERCERA la guía de implementación de extensiones
ayudará a personas interesadas en desarrollar su
propia extensión debido a su fácil comprensión y sus
ejemplos prácticos.
• CUARTA la extensión ayudará a desarrolladores
interesados en implementar consultas dinámicas en
aplicaciones GeneXus debido a su gran utilidad.
Conclusiones
• QUINTA la programación de extensiones para la
herramienta GeneXus Ev2 es bastante similar a la de
aplicaciones convencionales.
• SEXTA la utilización de las librerías GeneXus para la
implementación de nuevas extensiones no es
complicada.
Conclusiones
Preguntas
MUCHAS
GRACIAS!!!

Más contenido relacionado

Similar a EXTENSIÓN PARA LA REALIZACIÓN DE BÚSQUEDAS DINÁMICAS Y GUÍA DE IMPLEMENTACIÓN PARA DESARROLLADORES DE GENEXUS EV2.

02 gfpi f-019 guia de aprendizaje ofimatica-f1 ap2 ga2
02 gfpi f-019 guia de aprendizaje ofimatica-f1 ap2 ga202 gfpi f-019 guia de aprendizaje ofimatica-f1 ap2 ga2
02 gfpi f-019 guia de aprendizaje ofimatica-f1 ap2 ga2
lizeth0331
 
Ingeniería de software
Ingeniería de softwareIngeniería de software
Ingeniería de software
mat3matik
 
Ingeniería%20de%20 software[1], maryy
Ingeniería%20de%20 software[1], maryyIngeniería%20de%20 software[1], maryy
Ingeniería%20de%20 software[1], maryy
nelly
 
Ingeniería de software16
Ingeniería de software16Ingeniería de software16
Ingeniería de software16
Ramon
 
Ingenier%c3%ada de software
Ingenier%c3%ada de softwareIngenier%c3%ada de software
Ingenier%c3%ada de software
Marilupe
 
Ingeniería de software
Ingeniería de softwareIngeniería de software
Ingeniería de software
142918
 
Ingeniería de software
Ingeniería de softwareIngeniería de software
Ingeniería de software
samantha
 
Ingen de software
Ingen de softwareIngen de software
Ingen de software
erikapoh
 

Similar a EXTENSIÓN PARA LA REALIZACIÓN DE BÚSQUEDAS DINÁMICAS Y GUÍA DE IMPLEMENTACIÓN PARA DESARROLLADORES DE GENEXUS EV2. (20)

UNIDAD_I.ppt
UNIDAD_I.pptUNIDAD_I.ppt
UNIDAD_I.ppt
 
Introduccion al desarrollo
Introduccion al desarrolloIntroduccion al desarrollo
Introduccion al desarrollo
 
Proceso unificado de desarrollo de software
Proceso unificado de desarrollo de softwareProceso unificado de desarrollo de software
Proceso unificado de desarrollo de software
 
case
casecase
case
 
Ciclo de vida
Ciclo de vidaCiclo de vida
Ciclo de vida
 
Presentación Sesión 1 Ingeniería del Software.pptx
Presentación Sesión 1 Ingeniería del Software.pptxPresentación Sesión 1 Ingeniería del Software.pptx
Presentación Sesión 1 Ingeniería del Software.pptx
 
Presentaciã³n1
Presentaciã³n1Presentaciã³n1
Presentaciã³n1
 
Metodología de SI
Metodología de SIMetodología de SI
Metodología de SI
 
Metodología
MetodologíaMetodología
Metodología
 
02 gfpi f-019 guia de aprendizaje ofimatica-f1 ap2 ga2
02 gfpi f-019 guia de aprendizaje ofimatica-f1 ap2 ga202 gfpi f-019 guia de aprendizaje ofimatica-f1 ap2 ga2
02 gfpi f-019 guia de aprendizaje ofimatica-f1 ap2 ga2
 
Respuestas de analisis de sistema
Respuestas de analisis de sistemaRespuestas de analisis de sistema
Respuestas de analisis de sistema
 
Ingeniería de software
Ingeniería de softwareIngeniería de software
Ingeniería de software
 
Ingeniería%20de%20 software[1], maryy
Ingeniería%20de%20 software[1], maryyIngeniería%20de%20 software[1], maryy
Ingeniería%20de%20 software[1], maryy
 
Ingeniería de software16
Ingeniería de software16Ingeniería de software16
Ingeniería de software16
 
Ingenier%c3%ada de software
Ingenier%c3%ada de softwareIngenier%c3%ada de software
Ingenier%c3%ada de software
 
Clase 11
Clase 11Clase 11
Clase 11
 
Ingeniería de software
Ingeniería de softwareIngeniería de software
Ingeniería de software
 
Ingeniería de software
Ingeniería de softwareIngeniería de software
Ingeniería de software
 
Ingen de software
Ingen de softwareIngen de software
Ingen de software
 
7984
79847984
7984
 

Último

707555966-El-Libro-de-La-Inteligencia-Artificial-Version-11-Alfredovela.pdf
707555966-El-Libro-de-La-Inteligencia-Artificial-Version-11-Alfredovela.pdf707555966-El-Libro-de-La-Inteligencia-Artificial-Version-11-Alfredovela.pdf
707555966-El-Libro-de-La-Inteligencia-Artificial-Version-11-Alfredovela.pdf
ErnestoCano12
 
bombeo-de-cavidad-progresiva_compress (1).pptx
bombeo-de-cavidad-progresiva_compress (1).pptxbombeo-de-cavidad-progresiva_compress (1).pptx
bombeo-de-cavidad-progresiva_compress (1).pptx
EstefannyMedrano1
 
Tema 1 ECONOMIA del MECANIZADO.pptx.mfse
Tema 1 ECONOMIA del MECANIZADO.pptx.mfseTema 1 ECONOMIA del MECANIZADO.pptx.mfse
Tema 1 ECONOMIA del MECANIZADO.pptx.mfse
yohepirell
 

Último (20)

Embriologia-2 en ganado bovino lechero .ppt
Embriologia-2 en ganado bovino lechero .pptEmbriologia-2 en ganado bovino lechero .ppt
Embriologia-2 en ganado bovino lechero .ppt
 
Responsabilidad de padres con sus hijos (1).pptx
Responsabilidad de padres con sus hijos (1).pptxResponsabilidad de padres con sus hijos (1).pptx
Responsabilidad de padres con sus hijos (1).pptx
 
ESPECIFICACIONES TECNICAS MURO DE CONTENCION.docx
ESPECIFICACIONES TECNICAS MURO DE CONTENCION.docxESPECIFICACIONES TECNICAS MURO DE CONTENCION.docx
ESPECIFICACIONES TECNICAS MURO DE CONTENCION.docx
 
EXPOSICION TERCERA LEY DE LA TERMODINAMICA.pptx
EXPOSICION TERCERA LEY DE LA TERMODINAMICA.pptxEXPOSICION TERCERA LEY DE LA TERMODINAMICA.pptx
EXPOSICION TERCERA LEY DE LA TERMODINAMICA.pptx
 
Escenario económico - Desarrollo sustentable
Escenario económico - Desarrollo sustentableEscenario económico - Desarrollo sustentable
Escenario económico - Desarrollo sustentable
 
707555966-El-Libro-de-La-Inteligencia-Artificial-Version-11-Alfredovela.pdf
707555966-El-Libro-de-La-Inteligencia-Artificial-Version-11-Alfredovela.pdf707555966-El-Libro-de-La-Inteligencia-Artificial-Version-11-Alfredovela.pdf
707555966-El-Libro-de-La-Inteligencia-Artificial-Version-11-Alfredovela.pdf
 
guia-diseno-instalaciones-electricas.pdf
guia-diseno-instalaciones-electricas.pdfguia-diseno-instalaciones-electricas.pdf
guia-diseno-instalaciones-electricas.pdf
 
Presentación de proyecto y resumen de conceptos (3).pdf
Presentación de proyecto y resumen de conceptos (3).pdfPresentación de proyecto y resumen de conceptos (3).pdf
Presentación de proyecto y resumen de conceptos (3).pdf
 
Anexos del Decreto Supremo N° 049-2002-MTC.pdf
Anexos del Decreto Supremo N° 049-2002-MTC.pdfAnexos del Decreto Supremo N° 049-2002-MTC.pdf
Anexos del Decreto Supremo N° 049-2002-MTC.pdf
 
Procedimeiento y secuencias para el diseño mecánico de ejes
Procedimeiento y secuencias para el diseño mecánico de ejesProcedimeiento y secuencias para el diseño mecánico de ejes
Procedimeiento y secuencias para el diseño mecánico de ejes
 
PROCESO CONSTRUCTIVO DE UNA CALZADURA EN OBRA
PROCESO CONSTRUCTIVO DE UNA CALZADURA EN OBRAPROCESO CONSTRUCTIVO DE UNA CALZADURA EN OBRA
PROCESO CONSTRUCTIVO DE UNA CALZADURA EN OBRA
 
Circuitos_basicos_de_neumatica miquel carulla .pdf
Circuitos_basicos_de_neumatica  miquel carulla .pdfCircuitos_basicos_de_neumatica  miquel carulla .pdf
Circuitos_basicos_de_neumatica miquel carulla .pdf
 
METRADOS EN OBRAS DE PAVIMENTACION- ACTUALIZADA.pptx
METRADOS EN OBRAS DE PAVIMENTACION- ACTUALIZADA.pptxMETRADOS EN OBRAS DE PAVIMENTACION- ACTUALIZADA.pptx
METRADOS EN OBRAS DE PAVIMENTACION- ACTUALIZADA.pptx
 
REGLA DE PROBABILIDADES Y REGLA DE BAYES.pptx
REGLA DE PROBABILIDADES  Y REGLA DE BAYES.pptxREGLA DE PROBABILIDADES  Y REGLA DE BAYES.pptx
REGLA DE PROBABILIDADES Y REGLA DE BAYES.pptx
 
368165951-Procedimiento-de-Gruas-e-Izaje.doc
368165951-Procedimiento-de-Gruas-e-Izaje.doc368165951-Procedimiento-de-Gruas-e-Izaje.doc
368165951-Procedimiento-de-Gruas-e-Izaje.doc
 
Trabajo de cristalografia. año 2024 mes de mayo
Trabajo de cristalografia. año 2024 mes de mayoTrabajo de cristalografia. año 2024 mes de mayo
Trabajo de cristalografia. año 2024 mes de mayo
 
bombeo-de-cavidad-progresiva_compress (1).pptx
bombeo-de-cavidad-progresiva_compress (1).pptxbombeo-de-cavidad-progresiva_compress (1).pptx
bombeo-de-cavidad-progresiva_compress (1).pptx
 
Tema 1 ECONOMIA del MECANIZADO.pptx.mfse
Tema 1 ECONOMIA del MECANIZADO.pptx.mfseTema 1 ECONOMIA del MECANIZADO.pptx.mfse
Tema 1 ECONOMIA del MECANIZADO.pptx.mfse
 
Guía de SGSST para MYPES según Ley 28793
Guía de SGSST para MYPES según Ley 28793Guía de SGSST para MYPES según Ley 28793
Guía de SGSST para MYPES según Ley 28793
 
TABLA DE ROSCAS invetiga las rescas . milimetricas , en pulgada
TABLA DE ROSCAS invetiga las rescas . milimetricas , en pulgadaTABLA DE ROSCAS invetiga las rescas . milimetricas , en pulgada
TABLA DE ROSCAS invetiga las rescas . milimetricas , en pulgada
 

EXTENSIÓN PARA LA REALIZACIÓN DE BÚSQUEDAS DINÁMICAS Y GUÍA DE IMPLEMENTACIÓN PARA DESARROLLADORES DE GENEXUS EV2.

  • 1. EXTENSIÓN PARA LA REALIZACIÓN DE BÚSQUEDAS DINÁMICAS Y GUÍA DE IMPLEMENTACIÓN PARA DESARROLLADORES DE GENEXUS EV2. UNIVERSIDAD CATÓLICA DE SANTA MARÍA FACULTAD DE CIENCIAS E INGENIERÍAS FÍSICASY FORMALES PROGRAMA PROFESIONAL DE INGENIERÍA DE SISTEMAS Tema: Autor: SONYYVAN GALLEGOS QUISPE Asesor deTesis: DR. GUILLERMO CALDERÓN RUIZ
  • 2.  INTRODUCCIÓN  EXTENSIÓN  GUÍA DE IMPLEMENTACIÓN.  VALIDACIÓN  CONCLUSIONES ESTRUCTURA
  • 4. ¿Qué es GeneXus Ev2 y para qué sirve?
  • 5. Base de Conocimiento Stakeholders Analista y programador Genexus Base de datos relacional Código fuente
  • 6. Problema GeneXus presenta la restricción que no se puede implementar aplicaciones que ayuden al usuario final a realizar consultas a sus bases de datos en forma dinámica.
  • 7. • Consulta SQL Select nombre, apellido, dni from persona • Consulta GeneXus For each &nombre = nombre &apellido = apellido &dni = dni endfor ¿Porqué existe el problema?
  • 8. • Consulta SQL Select nombre, apellido, dni from persona where dni = ‘45056272’ • Consulta GeneXus For each where dni = ‘45056272’ &nombre = nombre &apellido = apellido &dni = dni Endfor Consultas con condicionales
  • 9. • Consulta SQL Select nombre, apellido, dni from persona where dni in (‘A’, ‘B’ ,‘C’, ‘D’) • Consulta GeneXus For each where dni in (‘A’, ‘B’ ,‘C’, ‘D’) &nombre = nombre &apellido = apellido &dni = dni Endfor Consultas con condicionales
  • 10. Que sucede si… • Consulta SQL Select nombre, apellido, dni from persona where dni in • Consulta GeneXus For each where dni in &nombre = nombre &apellido = apellido &dni = dni Endfor
  • 11. Además… • Select nombre, apellido, dni from persona where dni in and ciudad in and ocupación in • For each where dni in and ciudad in and ocupación in &nombre = nombre &apellido = apellido &dni = dni Endfor
  • 13. • La extensión debe permitir al desarrollador su fácil instalación en el entorno de desarrollo integrado de GeneXus Ev2. • La extensión debe brindar al desarrollador una solución fácil de implementar consultas dinámicas. • La extensión debe utilizar objetos de la herramienta GeneXus Ev2 en su propuesta de la solución. Objetivos de la extensión
  • 14. • Segundo problema: No existe documentación formal que ayude a desarrollar la extensión. Pero…¿como se hace una extensión?
  • 15. • Objetivo: – La guía de implementación debe ofrecer ejemplos prácticos para su fácil comprensión. Guía de implementación
  • 17. – El Usuario podrá generar la consulta con las tablas y atributos que elija. – El Usuario podrá ejecutar la consulta en tiempo de diseño. – El Usuario podrá guardar la consulta. Requerimientos funcionales
  • 18. – El Usuario podrá visualizar las consultas que están almacenadas. – El Usuario podrá deshacer todas las acciones realizadas, limpiando todos los objetos que se muestran en pantalla. – El Usuario podrá invocar la ejecución de la consulta en tiempo de ejecución de la aplicación. Requerimientos funcionales
  • 19. – La invocación del método de ejecución de la consulta debe ser programada según la lógica del desarrollador. – El resultado de la consulta debe ser devuelto en formato de lenguaje de marcas extensible. – La consulta debe ser guardada en el objeto Procedure de GeneXus para obtenerla cuando se le requiera. – El resultado de la consulta debe ser tomado y mostrado por el objeto GeneXus Structured Data Type. Requerimientos no funcionales
  • 20. Diagrama de caso de uso general
  • 23. • Programar con extensión Diagramas de secuencia
  • 27. – ¿Para qué sirve? – ¿Cómo conseguirlo? Identificador único global
  • 28. – El instalador se encuentra en el centro de descargas de GeneXus: http://www2.gxtechnical.com/portal/hgxpp001.aspx?15,8, 8,O,,0,,%202707 – Al instalarse se crean los siguientes directorios y archivos: • Bin • PackageBuilder • PatternBuilder • Patterns • Samples • Schemas Instalación de la plataforma de desarrollo.
  • 30. Artech.Architecture.Common.Objects Artech.Architecture.UI.Framework.Services 1. if(UIServices.KB != null && UIServices.KB.CurrentModel != null){ 2. Folder folder = Folder.Get(UIServices.KB.CurrentModel, “iQueries”); 3. if (folder == null){ 4. folder = new Folder(UIServices.KB.CurrentModel); 5. folder.Parent = Folder.GetRoot(UIServices.KB.CurrentModel); 6. folder.Name = “iQueries”; 7. folder.Save(); } } Folder
  • 31. Artech.Architecture.Common.Objects Artech.Architecture.UI.Framework.Services Artech.Genexus.Common.Objects Artech.Genexus.Common 1. Procedure procedure = Procedure.Get(UIServices.KB.CurrentModel, “MiProcedimiento”); 2. if (procedure == null){ 3. procedure = new Procedure(UIServices.KB.CurrentModel); 4. procedure.Name = “MiProcedimiento”; 5. procedure.Parent = folder; 6. procedure.Save(); } procedure.Parent = Folder.GetRoot(UIServices.KB.CurrentModel); Procedure
  • 32. 1. Variable variable = new Variable(procedure.Variables); 2. variable.Name = “query”; 3. variable.Type = eDBType.VARCHAR; 4. variable.Length = 9999; 5. procedure.Variables.Add(var); 6. procedure.Save(); Variables en un Procedure
  • 33. Source 1. string source = “&query = ‘Hola mundo con procedure’”; 2. procedure.ProcedurePart.Source = source; 3. procedure.Save();  Rules 1. procedure.Rules.Source = “parm(out:&variable);”; 2. procedure.Save(); Source y Rules en un Procedure
  • 34. Artech.Architecture.Common.Objects Artech.Architecture.UI.Framework.Services Artech.Genexus.Common.Objects Artech.Genexus.Common.Parts.SDT 1. SDT miSdt = SDT.Get(UIServices.KB.CurrentModel, “miSdt”); 2. if(miSdt == null){ 3. miSdt = new SDT(UIServices.KB.CurrentModel); 4. miSdt.Parent = folder; 5. miSdt.Name = “miSdt”; 6. SDTLevel sdtLevel = miSdt.SDTStructure.Root; 7. sdtLevel.Name = “Item”; 8. sdtLevel.Items.Clear(); 9. sdtLevel.IsCollection = true; 10.sdtLevel.CollectionItemName = “Item”; Structured DataType
  • 35. 11. SDTItem item = new SDTItem(sdtLevel.SDTStructure); 12. item.Name = “item1”; 13. item.Type = eDBType.VARCHAR; 14. item.Length = 9999; 15. item.IsCollection = false; 16. sdtLevel.AddItem(item); 17. miSdt.Save(); Structured DataType
  • 36. • Permite al desarrollador agregar funcionalidad a su aplicación. Ejemplo: namespace iLauncher{ public class CLauncher{ public string server; public string dbname; public string user; public string password; public CLauncher(){} public String ExecuteQueryToXml(string query){} } } External Object
  • 38. • ¿Cómo utilizamos el external object? • &sqlQuery = ‘select * from ros’ • &sqlResult = &clauncher.ExecuteQueryToXml(&sqlQuery) External Object
  • 39. • Obtenemos todas las tablas: IEnumerator<Table> tables = Table.GetAll(UIServices.KB.CurrentModel).GetEnumerator(); • Recorremos todas las tablas: while(tables.MoveNext()){ Table table = tables.Current; } Tablas y Campos
  • 40. • Obtenemos todos los campos: BaseCollection<TableAttribute> atts = table.TableStructure.Attributes; • Recorremos todos los campos: foreach(TableAttribute att in atts){ string nameTable = att.Table.Name; string nameAttribute = att.Name; string descriptionAtributte = att.Attribute.Description; } Tablas y Campos
  • 42. – Extensión para la realización de consultas dinámicas. – Guía de implementación de extensiones. • Indicadores – Fácil instalación de la extensión. – Fácil implementación de consultas dinámicas con la extensión. – Fácil comprensión de la guía de implementación. – Ejemplos prácticos en la guía de implementación. – Utilidad de la extensión. Variables dependientes
  • 43. • ¿Qué le pareció la instalación de la extensión? Muy Fácil Fácil RegularDifícil Muy Difícil • ¿Qué le pareció la programación para realizar consultas dinámicas con la extensión? Muy Fácil Fácil RegularDifícil Muy Difícil • ¿Cómo califica en grado de utilidad a la extensión? Muy útil Útil Regular Improductivo • ¿Cómo le pareció la compresión de la guía de extensiones? Muy Fácil Fácil RegularDifícil Muy Difícil • ¿Qué le pareció los ejemplos de creación de objetos GeneXus en la guía de extensiones? Muy útil Útil Regular Improductivo Encuesta
  • 44. Encuesta Nombre Ocupación Eduardo Jorge Jasaui Torres Distribuidor GeneXus Alfredo Zea García Calderón Analista – Programador GeneXus Fiorella Rivera Calderón Analista – Programador GeneXus Ana Belén Arista Huenonte Analista – Programador GeneXus Lilian Loayza Analista – Programador GeneXus Virgilio José Torres Otoya Analista – Programador GeneXus
  • 45. • ¿Qué le pareció la instalación de la extensión? Fácil instalación de la extensión
  • 46. • ¿Qué le pareció la implementación para realizar consultas dinámicas con la extensión? Fácil implementación de consultas dinámicas con la extensión.
  • 47. • ¿Cómo le pareció la comprensión de la guía de extensiones? Fácil comprensión de la guía de implementación.
  • 48. • ¿Qué le pareció los ejemplos de creación de objetos GeneXus en la guía de extensiones? Ejemplos prácticos en la guía de implementación.
  • 49. • ¿Cómo califica en grado de utilidad a la extensión? Utilidad de la extensión.
  • 50. • PRIMERA la instalación de la extensión es fácil de realizar por las personas que se ocupan del análisis y desarrollo de sistemas de información en GeneXus Ev2. • SEGUNDA la extensión ayuda a implementar con facilidad consultas dinámicas en aplicaciones hechas por la herramienta GeneXus Ev2 Conclusiones
  • 51. • TERCERA la guía de implementación de extensiones ayudará a personas interesadas en desarrollar su propia extensión debido a su fácil comprensión y sus ejemplos prácticos. • CUARTA la extensión ayudará a desarrolladores interesados en implementar consultas dinámicas en aplicaciones GeneXus debido a su gran utilidad. Conclusiones
  • 52. • QUINTA la programación de extensiones para la herramienta GeneXus Ev2 es bastante similar a la de aplicaciones convencionales. • SEXTA la utilización de las librerías GeneXus para la implementación de nuevas extensiones no es complicada. Conclusiones