viernes, 10 de mayo de 2013

Controles de usuario GeneXus (User Controls): Úsese con precaución.

Desde la introducción de GeneXus X, tenemos a nuestra disposición los User Controls (en adelante los llamare UC, para abreviar) .  Con ellos, podemos agregar fácilmente a nuestra aplicación funcionalidades que nativamente no se tienen.
Ademas, con la llegada del GeneXus Marketplace, la instalación y manejo de los UC se vio muy simplificada, cosa muy buena.

Algunos de los UC son muy lindos y fáciles de usar, por lo que la tentación de incorporarlos a nuestra aplicación es muy grande. Al usar cualquier componente externo en nuestra aplicación, se agregan dependencias las cuales agregan complejidad a nuestra solución, por lo que es conveniente tomarse un tiempito para  hacer una evaluación de los user controls que pensamos usar.

Algunos de los criterios que me gusta usar para dicha evaluación son:

Costo
Este es el mas fácil de analizar, porque podemos ver si se necesita pagar para usarlo.

Licenciamiento
Algunas veces, si los UC usan licencias no muy conocidas, en necesario evaluarlas con profundidad, para saber si nosotros como desarrolladores o nuestro cliente como usuario no esta incurriendo en algún problema legal por usar dicho UC.
Por ejemplo, es fácil usar GXui Library, los componentes necesarios se encuentran disponibles para que todo el mundo los instale, pero al usarla en aplicaciones comerciales (que no sean GPL v3), necesitamos para desarrollar un licencia comercial de EXTjs.
Esto puede empeorar, si lo que usa GXui, es directamente GeneXus o algún pattern que tengamos instalado
Por ejemplo Workwithplus exige instalar GXUI el cual exige EXTJs, el cual necesita licencias. *

Volumen de uso.
Algunas preguntas que conviene hacerse :

  • El UC tiene buena performance ? Escala correctamente?
  • Soporta la cantidad de usuarios que tengo que manejar?
  • Cuantas veces lo voy a usar/invocar por dia?
  • Transmite mucha información/Usa mucho ancho de banda?

Es común que algunos servicios sean gratuitos hasta N invocaciones diarias (o mensuales/anuales) y luego de pasado dicho umbral hay que pagarlo. Conviene tener muy claro esto, para no tener sorpresas cuando me empiece a ir muy bien con mi aplicación.

Facilidad de Uso. 
Ademas de ver como queda la aplicación terminada, hay que ver que tanto trabajo da desarrollar con dicho control, cuantas horas de capacitación se necesitan para usarlos, si hay buenos ejemplos. A veces, no vale la pena el esfuerzo de programación necesario para agregar algún detalle estético  Otro caso es cuando hacer el primer desarrollo es razonablemente sencillo, pero luego al hacer cualquier cambio, demoro mucho en el mantenimiento de los programas.

Soporte y Mantenimiento 
Conviene evaluar si el control que estoy por empezar a usar, tiene soporte o no. Conviene pensar lo siguiente:

Una vez que tenga mi aplicación funcionando, me empieza a dar un problema relacionado con este user control:

  • Tengo a quien llamar?. Responden en un tiempo aceptable? 
  • Tengo alternativas de sustitución?
  • Puedo anular su funcionamiento y la aplicación puede seguir funcionando?
Si mi aplicación es de misión crítica o de uso intensivo y dependo de un UC externo en su ejecución  conviene tener respuestas para dichas preguntas. 


Versionado
Los UC como todo programa, evoluciona y tiene nuevas versiones. Casi siempre es opcional su instalación pero es común encontrarnos con pequeñas (o grandes) incompatibilidades entre las versiones de los UC.

  • Cuando sale una nueva versión, debo instalarla?
  • Se la debo instalar a mi cliente?
  • Como pruebo mi aplicación cuando hay una nueva versión de alguno de los UC que utilizo?
También es común, que se actualicen algunas de las bibliotecas que son utilizadas por los UC. 
Por ejemplo, si tengo 2 UC que dependen de jQuery y hay una nueva versión de la misma, debo instalarla?
Tengo forma de conocer dichas dependencias? Como pruebo los otros UC que dependen de dicha biblioteca?

Hay algunos UC que utilizan servicios online, por ejemplo el Google Gadget Control usa servicios online de Google.  En estos casos debemos preguntarnos:
  • Que pasa, cuando se cambian dichos programas y mis programas empiezan a mostrar mal los datos?
  • Tengo forma de enterarme?
  • Que hacer en caso de corte de comunicación con los servidores de la otra empresa (en este caso Google). ?
Incompatibilidades y manejo de instalaciones GeneXus. 
Hoy con GeneXus no podemos tener diferentes versiones de UC en la misma instalación  Esto implica que si un proyecto necesita un UC v1.0 y otro el UC v1.1, debo tener 2 instalaciones de GeneXus en mi maquina de desarrollo. Esto duplica el trabajo al instalar otros controles, o al instalar nuevas versiones de GeneXus. 
Cuando la combinación de controles es grande, se puede llegar a tener una instalación de GeneXus por cada KB personalizada que se tenga, lo cual no es demasiado productivo. Para quienes desarrollamos para varios clientes y en diferentes versiones, puede ser un dolor de cabeza. 

Concluyendo
El tema es bastante amplio y da para mas, pero creo que haciéndonos algunas estas preguntas sencillas, nos sera mas fácil poder evaluar si nos conviene usar un determinado control. Hay que usarlos, porque mejoran mucho nuestras aplicaciones, pero hay que usarlos con precaución.

UPDATE: Un tema que no inclui, es la integracion de controles en un mismo formulario.
No es extraño que controles funcionen por separado, pero tengan problemas cuando se usan en conjunto.
Hay que realizar pruebas de como se comportan los UC que van a ser usados en conjunto para no tener problemas Sobre todo, no tener problemas de javascript, que son dificiles de detectar y de solucionar.
Tambien hay que testear los UC con varios navegadores, pues el comportamiento de los mismos es diferente en los distintos navegadores.
Hay varios controles que se comportan bien diferente en Internet Explorer que en otros navegadores.


* Me comentaron que evalúan sacar una versión de WW+ que no tenga estas dependencias. 






sábado, 27 de abril de 2013

domingo, 14 de abril de 2013

GeneXus has stopped working (solucionado)

Hace cerca de 3 años, me empezó a pasar que se caia GeneXus cuando me cambiaba de KB.

Después de instalarle Windows 8 a mi notebook, opté por una instalación limpia e instalar todos los programas nuevamente y  me puedo cambiar de KB sin que se caiga.

También estoy usando SQL Server 2012, que tambien puede haber influido en algo.

Esperemos que no revisa es problema nunca mas.

UPDATE: Canté victoria antes de tiempo. Solo unas horas despues que publique el post, se me cayó nuevamente, cuando cambié de KB.
Seguimos a la espera..

viernes, 5 de abril de 2013

Homologación de factura electrónica

CONCEPTO logró  homologar el desarrollo en el SIGE para factura electrónica, frente a la DGI.

Según veo en la lista de empresas homologadas, (al 5/04/2013) estamos dentro de las primeras 22 empresas que pueden facturar actualmente en forma electrónica y en la lista hay varios repetidos que corresponden a una cadena de supermercados. 

Si alguien quiere una solución que se integre a soluciones GeneXus o también para otros ERP y sistemas de facturación para factura electrónica en Uruguay, no tienen mas que mandarme un mail a ealmeida @ concepto.com.uy y hago los contactos necesarios.   


lunes, 18 de marzo de 2013

KBDoctor 10.4

Salió y se puso a la venta la versión 10.4 del KBDoctor.
Tiene varias funcionalidades nuevas, que pueden servirle para el desarrollo de aplicaciones, en particular para las grandes KB.
Tiene algunas funcionalidades que MODIFICAN Y BORRAN objetos de la KB, por lo que les recomiendo que antes de usarla hagan un backup de su KB, pero puede ahorrarle unas cuantas horitas de trabajo.


Nuevos Reportes
 - Tablas y objetos que hacen Update/Insert/Delete/Read
 - Attributos solo en transacciones, se excluyen los BC.
 - Se agrega Borrado de variables en toda la KB  (Gracias a Dvelop que me prestó el codigo para esto!!).
 - Search and Replace en Objetos.
 - Clases Faltantes en el Theme y Clases sobrantes en el Theme
 - Generacion Forzada de SDT
 - Tablas -> Transacciones que las generan
 - Remover atributos que no estan en ninguna tabla.
 - Atributos Formula
 - Se agrega el CleanmyKBAsMuchAsPosible.
 - Se agrega AddINParmRule, que cambia la regla rule y le agrega IN: a todos los parametros que no tienen
 - Se agrega reporte de ancho de tablas.


Arreglos
 - Se agrego la funcion LinkObject
 - CleanKBasMuchAsPosible hace borrado de variables.
 - CSS es Case Insensitive - Se arregla reporte.
 - Se deja de usar  // UIServices.KB.CurrentKB.Disconnect();  porque Artech lo discontinuo.
 - Se cambia opcion de Objects Unreachables para que no cambie las imagenes
 - Category KBDoctor.Unreachables, se crea siempre con el mismo GUID.
 - Se hace mas rapido el reporte de VarChar y Clave, porque estaba lento.
 - En Borrar Atributos sin Tablas, quita referencia de variables y borra los atributos.