Entradas

Mostrando las entradas con la etiqueta kbtools

Trabajar con bases de conocimiento GeneXus

Imagen
Hace unos años, había tenido la idea de hacer una herramienta para el manejo de bases de conocimiento GeneXus. Es común para las empresas de desarrollo de software que usan GeneXus que tenga varias KB en diferentes versiones de GeneXus. Y también es necesario tener diferentes Upgrades de la misma version, pues es imposible migrar todas las KB en forma simultánea. Esto no esta muy bien soportado por GeneXus pues el instalador intenta desinstalar una versión del Upgrade Viejo y sustituirlo por el que se instala. Hay que renombrar previamente el upgrade viejo para que no lo borre. Esta es la herramienta que me gustaría tener. Les paso unos wireframes (algo actualizados) Aca tendria catalogadas todas las KB que tengo en mi disco local y puedo hacer tareas en forma batch sobre la misma. También el usuario puede agregar scripts personalizados. Los logs se pueden guardar en una historia y se pueden consultar desde la misma interface. Al Editar una KB Puedo elegir co...

Limpiando una KB GeneXus - un ejemplo práctico.

Imagen
Una empresa amiga me mando una KB, para que diagnosticara algunos problemas de performance bastante serios que estaban teniendo, en el proceso de build de la misma. Es una KB recién migrada desde GeneXus 9.0 a GeneXus Evolution 3 U8. Me mandaron el MDF (archivo de la base de datos SQL Server) de la KB ya convertida por ellos y con eso me puse a trabajar. Esta KB me dio la oportunidad de practicar una limpieza a fondo de la misma, en código escrito por otros, que me permite probar el KBDoctor en un entorno diferente al que tenemos en Concepto. Al empezar la KB tenia: 13.872 objetos. 10.662 atributos y 674 tablas. Con esos datos iniciales, me puse a trabajar. Revisar propiedades. Lo primero que hago cuando trabajo con KB grandes, es revisar algunas propiedades de las mismas. En este caso lo que hice fue: Deshabilitar el Indexado dentro de la KB (esto enlentence mucho cada vez que se salva un objeto) Poner el Generate Developer Menu en *NO No generar prompts.  ...

KBSaveReorganization - Nueva Versión

Imagen
Subí al marketplace una nueva versión de la extensión KBSaveReorganization Esta extensión permite almacenar un script de la reorg en al KB, como un objeto del tipo File. Esta versión, tiene ademas la nuevas funcionalidades: Se salvan los programas pare ejecutar la reorg GeneXus en .NET en un directorio Se crean scripts CMD para ejecutar la reorg forzada, otro en forma batch y otro para contar la cantidad de registros de las tablas a reorganizar. Es compatible con Evolution 3.  Ademas de funcionar en el IDE, funciona cuando se reorganiza con MSBUILD task.  Si alguien la baja y la prueba, me agradaría mucho conocer sus opiniones.

Nueva versión de KBTools (2016-03)

Imagen
Subí una nueva versión de KBTools, que tiene algunas cosas interesantes. Se agregan los utilitarios:  KBBackup   Hace un backup de las base de datos de las KB. Pide un directorio origen (donde estan las KB) y un directorio destino (donde se salvaran los archivos de backup) y realiza  un backup de dichas bases de datos.  Es util para respaldar el trabajo del PC en un disco externo o en la nube.  KBCompile Compila todos los mains de una KB.  KBWSDL Recibe una url donde se instala la aplicacion y un archivo con todos los nombres de los Webservices SOAP.  Guarda una foto de los WSDL de los web services, para poder comparararlas luego.  KBBuildAll Recibe un directorio de una KB y si se quiere hacer rebuild all o solo build all forzado y lo ejecuta.  Con pequeñas modificaciones sirve para hacer Integracion Continua. Mejoras * KBProcessOutputLog Se mejoro el armado de la lista de objetos con error en C#. Se toman en cuenta los procedures mai...

KBTools - GeneXus Command Line Utilities

Imagen
A lo largo del tiempo he ido haciendo, juntando y repartiendo algunos utilitarios para el manejo de GeneXus a través de la linea de comando. En intercambios recientes con colegas, algunos planteaban la necesidad de hacer determinadas tareas,  las cuales nosotros en Concepto ya teníamos implementadas. Me parece una buena idea, poner a disposición de quien lo necesite algunas herramientas para automatizar algunas de estas tareas. Espero que puedan servir de insipiracion para proyectos que necesiten hacer Integración Continua con GeneXus o trabajos similares. Quedo publicada en el Marketplace Genexus, las KBTools  (aun no están aprobadas, pero supongo que alguien las aprobara en breve) Esta primera versión (2015.12) incluye: KBCompress Abre y compacta las KB que se encuentre bajo un directorio dado.  Funciona a correctamente a partir de la Evo3. Reorganiza los indices dentro de la base de datos. KBCompressMDFFiles Modifica la base de datos, pasando las mism...

KBdelete - Utilitario para borrar bases de conocimiento GeneXus.

Imagen
Por mi trabajo en Concepto, me toca hacer migraciones, probar las nuevas versiones de GeneXus con sus Night Builds, reproducir errores para reportarlos etc, por lo que paso creando bases de conocimiento que luego no uso por bastante tiempo. Por alguna extraña razón que no conozco, GeneXus no trae ninguna opción ni utilitario para borrar una base de conocimientos y todos los archivos generados con ella. Me disponía a borrar varias KB que ya no usaba, y me di cuenta que podía ser mas rapido hacer un utilitario para borrar la KB que ponerme a borrar a mano cada una de ellas.  La idea es siempre tratar de automatizar lo automatizable.  Para cada KB que se quiera borrar se debe hacer: * Borrar la base de datos SQL Server correspondiente * Borrar todos los archivos y directorios bajo dicha KB. Para esto hice un utilitario dado un directorio busca todos los archivos GX_KB_*.MDF (nombre por defecto con que se crean las bases de datos de KB GeneXus en SQLServer) y borra la...

Rebuild All en GeneXus

Imagen
Me llego una consulta de un colega y dejo la respuesta tambien aca, por si a alguien mas le sive. Antes de hacer un REBUILD ALL, con GeneXus, es bueno aprovechar y borrar algunos archivos que pueden haber quedado desactualizados. Lo que yo hago antes de ejecutar un rebuild es ejecutar el BAT echo ---------------------------------- set dirGX=C:\GeneXus\GeneXusEv2U7 set dirKB=C:\models\ev2\KBdir echo --- Borrado previo REBUILD ALL --- del %dirKB%\*.ari /s/q  del %dirKB%\*.0?? /s/q  for /f %%i in ('dir /a:d /s /b %dirKB%\*') do rd /s /q %%i MSBuild /nologo Rebuild.msbuild /p:KBDir=%dirKB%;GXDir=%DirGx%  /t:Rebuild echo --- TERMINO EN BUILD ALL       --- Que hace este archivo de comandos?  Borra todos los archivos *.ARI de la KB (de la version actual y de todas la versiones de la KB).  Borra todos los archivos donde se guardan referencias entre objetos que tienen extensiones 001, 005, etc). Estos archivos muchas veces quedan...

Nueva versión de KBDoctor 10.9

Imagen
Subi al GeneXus Marketplace una version nueva de KBDoctor . Tiene algunas funcionalidades nuevas: Facilita la comparacion de navegaciones.  Search & Replace en objetos Borrar objetos no referenciados Inicializacion de objetos y varios arreglos de errores. Aun le quedan algunos errores por corregir, pero quería liberar esta versión para Ev2 y ponerme a pasarla a la Ev3. Se puede consultar algo de documentación aqui

KBDoctor : Para que sirve?

Imagen
En el GeneXus Marketplace esta la extensión  KBDoctor , que desarrollamos con Diego y Marcos hace unos cuantos años.  Se basa en una herramienta que teniamos para GeneXus 9.0, que permitia depurar KBs. Hace unos días, me preguntaron para que servia y si valía la pena instalarla. La idea de esta extensión, es poder corregir algunos problemas comunes que se presentan en KB GeneXus. A la pregunta si vale la pena instalarla, mi respuesta es que si vale le pena, pues permite diagnosticar algunos problemas y solucionar otros. También permite borrar aquellos objetos que no están siendo usados, que enlentecen el desarrollo y entorpecen el mantenimiento. Voy a contar cuales son los reportes que pueden sacarse. Reporte de Atributos Todos los atributos deben estar basados en dominios. El reporte "Attributes without domain" , permite listar todos aquellos atributos que no estan basados en dominios y que a su vez no ...

KBSynchro - Algunos errores reportados

Imagen
Algunos amigos que probaron el KBSynchro me reportaron errores, y los comento por si alguien quiere usarlo y le pasa lo mismo.  1) Instalo y me da error al ejecutar, sin llegar a mostrar nada.  Posible causa  Falta instalar el .NET Framework 2.0.  Falta instalar el J# redistributable 2.0 (alcanza solo con la vjslib.dll, que voy a incluir en el proximo zip).  2) Instalo y me da error al ejecutar, sin llegar a mostrar nada.  Posible causa  Estoy ejecutando la aplicacion desde la red y no tengo los permisos necesarios. Probar ejecutar desde un disco local o setar los permisos en la intranet.  3) Se ven todos los objetos de una KB como faltantes, que existen. En algunas oportunidades, a pesar de conectarse a la KB, la misma devuelve un recordset vacio de objetos. Esto sucede cuando otras personas estan accediendo a la KB y no se puede acceder correctamente al modelo de diseño.  Posible solucion: Copiarse la kb (solo los archivos de la raiz de la misma) a un disco local y trabajar con esa ...

KBSynchro

Puede haber novedades.. por ahora, solo un video.  Para verlo a pantalla completa se puede ver en : http://www.screencast.com/t/upwXkcT7

A falta de módulos, buenos son los folders. (KBModule 1.0)

Imagen
Después de algunos dias entretenido con la performance de un SQLServer que decidió empezar a consumir mas memoria y disco que lo habitual, volvi a dedicarme un poco al KBModule, para poder modularizar una KB. La idea es poder ayudar a quien desarrolla a tener modulos mas independientes dentro de la KB y tener interfases bien definidas entre ellos. Que ganaré con esto?. El poder cambiar sin miedo los objetos internos de un modulo, sin afectar el comportamiento de los otros objetos de mi KB. Nos pasa bastante seguido que al realizar un cambio en un determinado módulo, el comportamiento de otros objetos del sistema funcionan diferentes o dan error, sin haberlos cambiado directamente. Bueno, pero bajando un poco a tierra la idea: Que es el KBModule?. Es un programa que toma una KB y las especificaciones (archivos SP0, para poder saber que objetos hacen select/update/insert/delete sobre una tabla) y carga esa información en una base de datos. Además permite clasificar de una forma particula...

A falta de módulos, buenos son los folders.

Imagen
En el post Modularizando una KB , planteo el problema de tener una KB dividida lógicamente en módulos, donde los cuales pueden interactuar entre ellos a traves de interfaces conocidas (y controladas) y poder evitar (o al menos informar) la utilización de objetos "privados" de mis módulos. Que ventajas tiene este enfoque?. El tener bien definidos los módulos dentro de una KB y sus interfaces (objetos públicos) permite independizar el desarrollo de cada uno de estos módulos, haciendo posible que cada uno de ellos se desarrolle/testee por separado, aumentando asi mucho la productividad. También se van a necesitar menos horas en la integración en el armado de la solución, pues deberían existir menos problemas. Si soy el desarrollador de un modulo, y tengo definido todos los objetos que alguien puede invocar desde afuera de mi módulo, voy a poder cambiar la implementación de todos los objetos de mi modulo, siempre y cuando no cambie el comportamiento de los objetos interfaz (obje...

PIENSOPIENSO - Que objetos tienen variables N(16)? (Posibles soluciones)

Imagen
En PIENSOPIENSO - Que objetos tienen variables N(16)? planteaba uno de los problemas que se nos presento en las últimas semanas que creo que es típico de quienes desarrollan y mantienen aplicaciones con GeneXus. La solución que nosotros hicimos fue: 1) Usando KBQuery consultar la tabla Variable para ver los objetos que tienen variables N(16) Esto se hace corriendo el KBQuery y haciendo la consulta select * from variable where MdlId=1 and VarTyp=4 and VarLen=16 and VarDec=0 MdlId=1 //Modelo de diseño Vartyp=4 //Variable Numerica VarLen=16 //Largo de la variable VarDec=0 //Posiciones decimales de la variable. Si la KB es grande (tiene muchos objetos) y tenemos muchas variables por objeto, la consulta puede demorar bastante. En nuestro caso, demoro menos de 5 minutos. Salvamos el resultado de esta consulta en un archivo CVS (separado por comas) para procesarlo posteriormente. Esta consulta, tiene la contra que devuelve únicamente los ObjId, o sea los identificadores internos de los obje...

KBTools : Herramientas para ayudar al desarrollo GeneXus

Imagen
Varios me preguntaron que eran las KBtools y que tenían. Las KBtools son un conjunto de herramientas que ayudan para el desarrollo de aplicaciones GeneXus (8.0 y 9.0). Algunas están publicadas en GXOpen (KBQuery y KBObjectfromTable) y otras no, porque no están como para su uso "industrial". Dejo aca una presentación (muy casera y de entre casa) donde listo algunas de las herramientas incluidas. | View | Upload your own Tenemos algunos extras, para la generación de código (previo a los patterns, para implementar programas de carga de la Data Warehouse, para la generación de lectura y grabacion de XML, y unos cuantos etcéteras mas.

KBSynchro: Comparacion de Objetos de dos Knowledge base GeneXus

Imagen
KBSynchro es la mas reciente incorporación a las KBTools para GeneXus 9.0. Es una herramienta que permite seleccionar dos directorios de dos KB y comparar los objetos de las mismas. Lo que hace es cargar en una grilla todos los objetos que tienen diferencias, controlando varias cosas: Fecha de modificación Descripción del objeto Folder en que se encuentra Si es main También compara los atributos y controla las diferencias de : Tipo de datos y tamaños Pictures Se puede filtrar por los tipos de errores, o también por el folder raíz de todo un sistema, por ejemplo tomando solo los objetos que sean objetos que están en un folder o en los subfolders del mismo. Se pinta de rojo cuales son los campos que tienen diferencias y también se indica cual de los objetos es mas nuevos y por cuanto tiempo. En dicha pantalla, se puede COMPARAR los objetos (para lo cual se hace un distribute de ambos objetos). Se utiliza el comparador de objetos provisto con GeneXus. y si se presiona en el ultimo nivel...