Poder extraer conocimiento de una KB GeneXus
Mientras desarrollo con GeneXus, me resulta muy común enfrentarme a situaciones donde necesito resolver un problema relacionado con un subconjunto de objetos de la KB y resulta muy difícil encontrar ese subconjunto a pesar de tener todo el conocimiento en la KB.
Algunos ejemplos de los últimos días:
Problema 1)
En GX 16 tenemos un comportamiento diferente de la forma en que se valida que una grilla tenga un renglón seleccionado.
En Evo3 si el usuario no habia seleccionado nada, traía las variables / atributos del renglón vacios y ahora queda con el ultimo cargado.
Para poder probar esto necesito recuperar todos los webpanels que tengan un grilla que acepte seleccionar registros.
Problema 2)
Apareció un error de datos en la base de datos y sospechamos que un programa esta grabando mal un atributo.
Necesito todos los objetos (van a ser procedures o business component) que inserten o actualicen datos en esa tabla (pero solo para un atributo especifico).
Problema 3)
Quiero cambiar un dominio, en el que se basan varios atributos.
Me interesa saber que tablas serán reorganizadas, cuando cambie dicho dominio.
Problema 4)
Apareció un problema de performance en unas consultas web y eran causadas porque tenían un dynamic combobox que accedía a una tabla con bastantes registros en una grilla.
Necesito tener una lista de todos los objetos web panel que tengan una grilla y que dentro tengan un dynamic combobox.
Problema 5)
Debido a un error de datos en producción, quiero, dado un dominio, recuperar todos los objetos que tengan asignaciones de la forma:
<Atributo|&Variable> = <expresión>
donde Atributo o &variable están basados en el dominio y <expresion> no lo este.
Problema 5 bis)
Dado el mimos problema 5) dado un dominio, dar todos los programas que tengan un parámetro OUT: o INOUT: que este basado en ese dominio.
Problema 6)
En GX16U5, no esta respetando el Exposed Name de los SDT, cuando se define como variable collection. Necesito recuperar todos los procedures main SOAP que tengan un SDT como parámetros de salida, que este definido como variable collection de salida.
Tengo mas ejemplos, pero creo que con esos alcanzan.
Mi sueño, seria tener un herramienta donde pudiera usar un lenguaje de consulta que permita acceder a todo este conocimiento encerrado en la KB y darle a los desarrolladores una forma de llegar esa lista de objetos.
Creo que podria ser bueno tener consultas sencillas (de un paso) y luego poder componer/concatenar las consultas hasta llegar al resultado deseado.
Tal vez que de mas claro con un ejemplo, viendo el Problema 6).
(Seleccionar todos los SDT
Seleccionar todos los objetos con Exposed Name no default
Seleccionar todos los Procedures que hagan referencia )
UNION
(Seleccionar todos los Procedures
Seleccionar todos los que tengan la propiedad de main
Seleccionar todos los que tengan la propiedad Protocol=SOAP
(Seleccionar todos los que tengan parámetros OUT:
UNION
Seleccionar todos los que tenga parámetros INOUT:)
Si bien esta lista no seria exacta, pero nos ayudaria muchisimo para minimizar la lista de objetos a revisar.
Si la lista se fuera haciendo en forma iterativa (viendo el conjunto de objetos que tengo para revisar) yo pararía cuando llego a una lista de poco objetos y sea mas rapido revisar el objeto que afinar la consulta.
Teniendo forma de:
se podrían generar consultas muy interesantes.
Algunos ejemplos de los últimos días:
Problema 1)
En GX 16 tenemos un comportamiento diferente de la forma en que se valida que una grilla tenga un renglón seleccionado.
En Evo3 si el usuario no habia seleccionado nada, traía las variables / atributos del renglón vacios y ahora queda con el ultimo cargado.
Para poder probar esto necesito recuperar todos los webpanels que tengan un grilla que acepte seleccionar registros.
Problema 2)
Apareció un error de datos en la base de datos y sospechamos que un programa esta grabando mal un atributo.
Necesito todos los objetos (van a ser procedures o business component) que inserten o actualicen datos en esa tabla (pero solo para un atributo especifico).
Problema 3)
Quiero cambiar un dominio, en el que se basan varios atributos.
Me interesa saber que tablas serán reorganizadas, cuando cambie dicho dominio.
Problema 4)
Apareció un problema de performance en unas consultas web y eran causadas porque tenían un dynamic combobox que accedía a una tabla con bastantes registros en una grilla.
Necesito tener una lista de todos los objetos web panel que tengan una grilla y que dentro tengan un dynamic combobox.
Problema 5)
Debido a un error de datos en producción, quiero, dado un dominio, recuperar todos los objetos que tengan asignaciones de la forma:
<Atributo|&Variable> = <expresión>
donde Atributo o &variable están basados en el dominio y <expresion> no lo este.
Problema 5 bis)
Dado el mimos problema 5) dado un dominio, dar todos los programas que tengan un parámetro OUT: o INOUT: que este basado en ese dominio.
Problema 6)
En GX16U5, no esta respetando el Exposed Name de los SDT, cuando se define como variable collection. Necesito recuperar todos los procedures main SOAP que tengan un SDT como parámetros de salida, que este definido como variable collection de salida.
Tengo mas ejemplos, pero creo que con esos alcanzan.
Mi sueño, seria tener un herramienta donde pudiera usar un lenguaje de consulta que permita acceder a todo este conocimiento encerrado en la KB y darle a los desarrolladores una forma de llegar esa lista de objetos.
Creo que podria ser bueno tener consultas sencillas (de un paso) y luego poder componer/concatenar las consultas hasta llegar al resultado deseado.
Tal vez que de mas claro con un ejemplo, viendo el Problema 6).
(Seleccionar todos los SDT
Seleccionar todos los objetos con Exposed Name no default
Seleccionar todos los Procedures que hagan referencia )
UNION
(Seleccionar todos los Procedures
Seleccionar todos los que tengan la propiedad de main
Seleccionar todos los que tengan la propiedad Protocol=SOAP
(Seleccionar todos los que tengan parámetros OUT:
UNION
Seleccionar todos los que tenga parámetros INOUT:)
Si bien esta lista no seria exacta, pero nos ayudaria muchisimo para minimizar la lista de objetos a revisar.
Si la lista se fuera haciendo en forma iterativa (viendo el conjunto de objetos que tengo para revisar) yo pararía cuando llego a una lista de poco objetos y sea mas rapido revisar el objeto que afinar la consulta.
Teniendo forma de:
- crear conjuntos de objetos (Todos los procedures, Objetos que referencia a, Objetos referenciados por, etc)
- Filtro por Propiedad (Call Protocol='SOAP', Name like '%Documento%')
- Filtro por variables (poder filtrar por tipo de variable o nombre)
- Filtro por parametros (poder filtrar por signature)
- Filtro por código (poder buscar dentro del código)
- Filtro por Form (poder buscar por controles en pantalla)
- Filtro por .... (cada parte tendrá filtros específicos)
- Operaciones con conjuntos (UNION, INTERSECCION, DIFERENCIA, etc) ,
se podrían generar consultas muy interesantes.
y cuanto estaba el GXPublic tenia una aproximacion a eso.. "select * from models" por ej. pero se descontinuo ese camino.
ResponderBorrarY lo que se ve en "search" actual tiene un monton de propiedades para filtrar.. que no se sabe muy bien para que son (o mas bien que buscan)
Esteban:
BorrarCon GXPublic, habiamos hecho una herramienta que se llamaba KBQuery que permitia hacer un conjunto limitado de consultas.
En algun momento voy a implementar algo sencillo para poder hacer algo como lo que planteo, pero hay que tener tiempo para que quede usable.
Gracias por el comentario
Enrique
Buen día Sr. Almeida
ResponderBorrarNecesitaría hacerle una consulta, pero no sé si esta etiqueta es donde referenciar mis inquietud.
Un saludo cordial.
Pablo, mándame msil a ealmeida @ concepto.com.uy
Borrar