Evolución de Genexus serverSebastián Gómez		Jorge Mastropietrosgomez@artech.com.uy	jjm@artech.com.uy
¿Quién trabaja con Genexus en equipo?
Características básicasCaracterísticas avanzadas¿Hacia dónde vamos?
ArquitecturaAuthentication & AuthorizationService LayerVisualizerGX4GXGenexus Business Logic
ArquitecturaAuthentication & AuthorizationService LayerVisualizerGX4GXGenexus Business Logic
ArquitecturaAuthentication & AuthorizationService LayerVisualizerGX4GXGenexus Business Logic
ArquitecturaAuthentication & AuthorizationService LayerVisualizerGX4GXGenexus Business Logic
ArquitecturaAuthentication & AuthorizationService LayerVisualizerGX4GXGenexus Business Logic
ArquitecturaAuthentication & AuthorizationService LayerVisualizerGX4GXGenexus Business Logic
Características BásicasCrear KB a partir de una en el serverEnviarcambiosRecibiractualizacionesVercambiosrealizadoshttp://public.genexusserver.com/GXserver
Integración automática del conocimientoBase de Conocimiento coherenteControl de cambios simultaneosMejora el rendimiento del equipoMás tranquilidadAhorra esfuerzo y tiempo en la integración
Características avanzadasPermisos y RolesCrear Versiones
Características avanzadasPermisos y RolesCrear VersionesAutomatizar tareasTestingEditar documentaciónSacar KB del serverCambio URLConfiguraciones para el server
¿Hacia dónde vamos?
Integración Continua
Servicios REST
Servicios REST
Servicios REST
Servicios REST
Windows Azure
Extensions
¿Preguntas?
¿y ahora…?public.genexusserver.com/gxserverwww.genexus.com/gxserverwww.gxtechnical.com/gxserverConferencias relacionadasGenexus Server: Evolución del Paradigma para el trabajo en Equipo, http://bit.ly/silviajoseGeneXus X Evolution 1 y GXServer aplicados a sistema de misión crítica de trazabilidad ganadera, http://bit.ly/hugocorreaCafé con GeneXus Server, Hoy 15:15 25TGExtender GeneXus programando en GeneXus, Hoy 16:30 2ALanzamiento de GeneXus CollaborativeProjects 2.0, Hoy 17:15 2CJorge Mastropietro, Desarrollo Genexus, jjm@artech.com.uySebastián Gómez, Desarrollo Genexus, sgomez@artech.com.uy
¡Muchas gracias!

76 Evolucion De Genexus Server

Notas del editor

  • #2 Saludo inicial, presentación. Con Mastro somos integrantes del equipo de desarrollo de Artech, yo desde hace 3 años, Mastro un poco mas.Antes de entrar en detalle quiero hacerles una pregunta...
  • #3 Todos trabajamos en equipo, porque “el desarrollo de software se hace en equipo, el desarrollo en equipo con GeneXus se hace con GeneXus Server”. Genexus Server es la herramienta para el trabajop en equipo con Genexus.Por ser un repositorio de versiones, incluso quienes no trabajan en equipo van a obtener beneficio del trabajo con Genexus Server.
  • #4 Durante los próximos 40 minutos iremos sobre los siguientes temas.Características básicas, les vamos a estar contando el día a día con GxserverCaracterísticas avanzadas, Mastro les contará qué mas se puede hacer con GxserverHacia donde vamos, les voy a estar contando que tenemos pensado para Gxserver, y que tenemos pensado para ustedes, la comunidad.
  • #5 Ahora voy a realizar un brevísimo repaso de qué es Gxserver y como funcionan sus partes como para nivelar y que todos partamos del mismo punto.
  • #6 Genexus Server nace en base a Genexus. Comparte la misma capa de lógica de negocio (BL). Esa BL es la que atiende (se comunica) las bases de conocimiento, y es la que le agrega valor a GXserver como manejador de versiones. Un manejador de versiones "común" de archivos mantiene historia de los archivos, GXserver no solo mantiene la historia sino que tiene inteligencia sobre los objetos enviados. GXserver por ejemplo no permite hacer un commit si se está enviando algo incorrecto o que pueda dejar la KB del server inconsistente.Mastro hablará mas adelante sobre eso.
  • #7 La siguiente es la capa de servicios web (WCF) que es la que se utiliza como punto de entrada para la interoperabilidad con Genexus. Todas las operaciones que se realizan desde Genexus con GXserver se realizan a través de esta capa. En la imagen se ve el diálogo de TeamDev con sus opciones.
  • #8 La otra capa es la UI web. Esto es lo que se ve cuando uno pone la url del server en el navegador.Esta capa tiene varias particularidades.- Nació como una aplicación hecha en Genexus. Para eso utiliza Gx4Gx para interactuar con las KBs del server desde Genexus.- Fué desarrollada con Genexus X Evolution 1 mientras esta estaba siendo desarrollada. Fuimos nuestros propios betatsters.- Se desarrolló siguiendo la metodología de GXserver. Inicialmente teníamos un solo integrante que trabajaba en su KB y mandaba los cambios a la KB consolidada. Esto también mientras GXserver estaba siendo desarrollado. También fuimos nuestros propios betatesters de GXserver.
  • #9 Por último, por encima de todo esto, esto quiere decir antes de llegar a ejecutar nada en cualquiera de las otras capas, se encuentra la capa de autenticación y autorización. Esta capa es la que maneja los roles, usuarios, y permisos del GXserver y donde se define que usuario tiene acceso a que. TambénMastro va a hablar un poco mas de esto mas adelante.Esta capa es también una aplicación Genexus desarrollada en Genexus X Evolution 1 y con el esquema de trabajo en equipo de Genexus Server, de vuelta, mientras ambos eran aún betas.
  • #10 Hasta aquí mi intención fué nivelarlos para poder entender las características que va a mencionar Mastro a continuación.
  • #12 Aquí GX nos indica qué objetos fueron cambiados y están prontos para ser enviados. El programador GX entonces agrega un comentario describiendo el trabajo realizado y así el nuevo desarrollo queda pronto en el server para cualquiera de los otros usuarios.Ahora vamos a ver 3 posibles escenarios y vemos como nos ayuda GXServer para estos casos.Caso 1: Un desarrollador modifica un objeto o atributo que alguien más modificó y envió al server.Este 2do desarrollador, que vamos a llamarle Ana, estuvo trabajando en su kb local traída desde el server (quizás estuvo trabajado desde su casa ya que no debe estar conectado para trabajar en su kb local) y decide confirmar sus modificaciones y para eso ejecuta el mismo proceso ejecutando el comando commit, pero en este caso el server detecta automáticamente que alguno de los objetos fue modificado por alguien más en el server. Esto hace que ningún objeto sea procesado en el server y son descartados todos los cambios enviados, ya que es una operación atómica. El GX local sabe que no fue exitoso el commit intentado quedando los mismos objeto pendientes para hacer commit y además, recibe la sugerencia de sincronizar los objetos con el server, en este caso utilizando el comando Update.Cuando esta operación se realizaba vía Export/Import ese objeto modificado en común iba a sobrescribir al objeto que estaba en la kb consolidada si no había ningún administrador del consolidado atento!.La analistaAna desarrollador ejecuta el Update, que trae los cambios realizados en el server y en el caso del objeto modificado simultáneamente se hace automáticamente un “merge”, teniendo en cuenta los cambios realizados por los ambos desarrolladores. Esta operación puede terminar bien con ambos cambios integrados o en conflicto (en caso de haber modificado ambos desarrolladores en el mismo lugar del objeto), en este último caso Ana puede ver las 2 versiones, la nueva, traída desde el server y la que ella tenía y acomodar las cosas según el caso.Luego de esto sí podrá hacer el Commit que había intentado en primer término. Recordemos que GX ya sugiere los objetos cambiados lo que nos permite estar mucho más tranquilos de no olvidarnos ningún objeto o de tener que buscar y seleccionar los objeto que el desarrollador piensa que ha cambiado.
  • #16 Desde el GX IDE la primera vez que me voy a conectar al server se pide usuario y contraseña lo que será controlado por la capa de autorización que mostró Sebastián al comienzo de la charla cuando mostró la arquitectura.Desde el visualiador se puede configurar los permisos y los roles para cada usuario. Como por ejemplo dejar sólo hacer Update pero no commit o alguna restricción similar.Estos permisos se definen a nivel de la KB.Genexus tiene manejo de versiones y desde el visualizador web se puede crear una versión congelada una vez que se decida y a partir de ella se puede crear una versión de trabajo. Luego cuando un desarrollador va a crearse una Base de conocimientos desde el server se puede elegir en que version estará basada.
  • #17 Ya que cada operación que se puede hacer con el Server tiene una tarea asociada del MSBuild (que es el procesador de tareas batch de Microsoft), como SendKB, CreateKB, Commit, Update, etc… se pueden automatizar cualquiera de ellas.Entonces se puede armar un Script para crear un test: que haga update de la kb y luego un buildall. Para así poder hacer test de la aplicación final.Desde el Navegador web se puede editar la documentación Wiki de la base de conocimientos. Por ejemplo para agregar requerimientos para los desarrolladores en la propia kb.Otra tarea administrativa que se puede realizar es la de sacar del catálogo una kb (sin borrarla del server) de esta forma dejará de estar visible para los que se conecten a ese server.Se ofrece la posibilidad de cambiar la url en una Base de Conocimientos local conectada a un server. Por ejemplo cuando se está cambiando la url de un servidor.Tener el GXserver Enterprise o Professional Edition, teniendo la aplicación GXServer en mi empresa en vez de tenerla como SaaSSi necesito especificar qué versión del SqlServer quiero utilizar para almacenar las kb que se envian al server o si no es la default de la máquina donde está el server hay un archivo de configuración donde indicarlo. Lo mismo que dónde se almacenarán las base de conocimientos y con qué usuario conectarse.Para resolución y análisis de problemas se puede habilitar el LOG en el server.
  • #19 Hasta aqui el presente, que es lo que hay hoy. Ahora les voy a contar que es lo que tenemos pensado para GXserver.Lo que van a ver a continuación son ideas, algunas mas desarrolladas que otras pero siguen siendo ideas, esto no está escrito en pierda, ni siquiera en papel dado que mantenemos todo en un wiki.
  • #20 La integración continua es una metodología (…) que consiste en hacer integraciones automáticas de un proyecto lo más a menudo posible para así poder detectar fallos cuanto antes. (Wikipedia)Integración continua es de las primeras funcionalidades que queremos agregar a GXserver. Como mencionaba Mastro anteriormente ya se puede (con lo que está liberado) armar un escenario de integración continua donde yo puedo armar un script msbuild que cada cierta cantidad de tiempo se haga update, corra algunos test y haga el build completo de la aplicación (eso es lo que tenemos hoy en día para las kbs de las aplicaciones del Visualizer y GAM)A lo que queremos llegar es a tener una consola donde yo pueda de alguna forma establecer ciertas reglas que deberán ser ejecutadas según sus condiciones. Por ejemplo, cada cierta cantidad de operaciones de commit o cada cierta cantidad de objetos enviados al server que se dispare el armado de la KB completa y se corran ciertos tests considerados críticos. También podría agregar una regla que indique que todas noches a las 2AM se dispare el proceso completo de armado, tests, y deploy (armado de war o lo que sea) para que quede disponible por ejemplo para poder ser bajada por mis betatesters como nightbuild, suena familiar?
  • #21 Para cierto perfil de los asistentes de esta charla, tal vez 2, esto ya les gusta. La noticia de tener servicios REST en GXserver para acceder a las kbs del server ya parece una buena idea. Pero para el resto? En que me puede beneficiar a mi el contar con servicios REST?Son servicios web orientados a Recursos. Usanlastecnologias de HTTP ( URLs, Metodos , cache , autenticacion, etc)Acá podemos ver en un browser lo que retorna el GET al servicio que me devuelve las KBshosteadas en el server. Notar que cada una tiene una url. Si quiero acceder a esa url…
  • #22 …me aparecen los objetos de esa KB, también con una url
  • #23 Y si voy a esa url veo la representación de un objeto Genexus. Y de vuelta, y esto de que me sirve?Esto es la representación de un objeto Genexus por lo que si o copio y pego eso un archivo y le digo a genexus que lo importe, genexus creará (si es que no existe) ese objeto en m KB.También podría utilizar esto para ver el estado actual de un objeto en el server. Tengan en cuenta que hoy en día yo puedo comparar las modificaciones hechas a mis objetos con la última sincronización del mismo, siempre haciendo comparaciones entre versiones locales. Esto, sin embargo, me permitiría comparar mi objeto local con el del server y poder verificar antes de hacer el commit si voy a tener conflicto o no.
  • #24 Y esta es la cereza en la torta.Esto es un cliente de los servicios que les mostré anteriormente, que integrado en el shell de Windows me permite navegar por la KB en el explorer como si fueran carpetas y archivos.
  • #25 En el PDC 2008 Microsoft anunciaba el lanzamiento de Windows Azure. Windows Azure es la solución de Microsoft al Cloud Computing, pero no es una máquina donde instalo la aplicación y la dejo disponible, sino que es una plataforma de servicios.Artech recientemente ha sido seleccionada por Microsoft para participar del programa “EarlyAdopter” del Windows Azure. En este momento estamos trabajando para que GeneXus Server pueda correr en Windows Azure almacenando las bases de conocimiento en SQL Azure. Actualmente esto está en CTP, y hay cosas que no están prontas pero Microsoft creo que lo libera en el próximo PDC (creo que Noviembre de 2009) asique espero que antes que eso tengamos noticias.
  • #26 Nuestra idea es que Genexus Server se convierta en una plataforma que acompañe todo el ciclo de vida de desarrollo de una aplicación. Para esto es que vamos a tener que agregar varias extensions al server. Dado que Gxserver comparte la BL con GX es que las extensions de BL que alguien haga ya le pueden funcionar en Gxserver. Aparte estamos trabajando en poder permitir lo que serían las extensions de UI. Imaginemos un escenario donde yo quiera integrar los commit que hacen los desarrolladores con un sistema de seguimiento de incidentes (bugs) de la aplicación.Yo puedo hacer una extension, que va a agregar “páginas” en el visualizador para acceder a mi aplicación y crear incidentes que podré asignar a un desarrollador. Luego cuando el desarrollador arregla ese bug manda el commit al server y puede agregar como parte del comentario algo que nosotros vamos a reconocer internamente (por ejemplo fix#25) que marcará como resuelto el incidente en cuestión (en este caso el 25)Estas extensiones van a ir surgiendo de las necesidades de la comunidad y serán provistas por Artech o por terceros, gente que encontró una necesidad y decide implementar la solución.
  • #27 Con esto finalizamos la presentación
  • #29 ¡Muchas gracias!