SharePoint Latin Rotating Header Image

December, 2005:

slow? try BackgroundWorker Component

Entre tantas y nuevas características y posibilidades que tenemos con Visual Studio 2005, una de las que mas me ha llamado la atención es la del BackgroundWorker Component un nuevo componente que tenemos disponible para el desarrollo de clientes inteligentes con Windows Forms 2.0. Este componente nos permite correr sub. procesos o tareas en un proceso separado al de nuestra aplicación, preemitiéndonos ejecutar dos tareas simultáneamente. Un ejemplo sencillo es el cargar un servicio Web, por ejemplo, el cargar un servicio Web en ocasiones al principio puede ser una tarea un poco pesada de ejecutar haciendo que durante el proceso de ejecución nuestra aplicación Windows Forms se congele en espera del resultado. Con este componente podemos mandar que el servicio Web se ejecute en una segunda tarea o por detrás haciendo que nuestra aplicación Windows no se congele y permita realizar otras tareas mientras que por detrás se carga el servicio Web. Antes hacer realidad este tipo de funcionalidad era complejo, teníamos que crear delegates encargados de asociar los eventos de inicio y fin de ejecución del proceso, un poco complejo de escribir, pero hoy, de entrada es tan sencillo que creo que vale la pena escribir de ello


El componente BackgroundWorker cuenta con tan solo tres eventos:


  • DoWork
    En este evento podemos escribir el codigo de la tarea que deseamos realizar en un segundo plano.
  • ProgressChanged
    Este es un evento que podemos utilizar para asociar un control ProgessChange y mostrar el porcentaje de avance en un control.
  • RunWorkerCompleted
    Este evento se dispara cuando se termino de realizar la funcionalidad en segundo plano

Mira el siguiente codigo es verdaderamente sencillo, lo que hacemos es invocar un web service en segundo plano:

 1:    private void Form1_Load(object sender, EventArgs e)
 2:         {
 3:             this.backgroundWorker1.RunWorkerAsync();                 
 4:         }
 5: 
 6:         private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
 7:         {    localhost.TramitesWS ws = new LAB01WIN.localhost.TramitesWS();
 8:              e.Result = ws.CargarTramite();
 9:          }
10: 
11:         private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
12:         {
13:             DataSet ds = (DataSet)e.Result;
14: 
15:             this.dataGridView1.DataMember = ds.Tables[0].TableName;
16:             this.dataGridView1.DataSource = ds;
17:         }

 

Verdaderamente facil, pruebalo y veraz.

El tiempo pasa rapido en estas fechas

Es increíble pero en estas fechas, cuando el amor se deja respirar en el ambiente y el espíritu navideño te invade, las casas con luces, los monos de nieve, santa claus por todos lados, pues resulta que en estos días de diciembre he estado trabajando mucho, tan pero tan ocupado que no he tenido la oportunidad de escribir nada en mis weblogs. Lo bueno del caso es que precisamente por tener mucho trabajo también tengo mucho por escribir asi que estos son algunos recursos que espero te sean de utilidad.


 



 


Por otro lado, hoy domingo 18 de diciembre del 2005 mi esposa encontró en mi algo que de verdad me ha puesto a pensar en mi presente, pasado y futuro. Mi primera y legitima cana, jejje, esta para el recuerdo ya que nunca de los nuncas me había percatado de una mía, no se, como han pasado los años.


 


Bueno eso es todo por hoy, para variar, tengo que regresar a trabajar. Saludos

Encarta en tu MSN Messenger

No pude evitar blogear sobre la funcionalidad que Encarta tiene. Resulta que si agregas esta cuenta “encarta@conversagent.com” en tu lista de contactos de MSN Messenger entonces te tendrás un agente encargado de chatear contigo para consultar la base de información y responderte lo que preguntas.


 

 

Windows Workflow Foundation

En el pasado PDC 2005 Microsoft anuncio algunas de sus tenologias mas actuales, si alguna vez escuchaste sobre Indigo, Avalon, WhiteHorse, etc pues hoy esos code names ya han sido bautizados, sin embargo, una nueva tecnologia fue liberada, esta tecnologia es una tecnologia muy peculiar que al verla me transporto al pasado para hacer interesantes cosas hoy en el presente. Recuerdas los diagramas de flujo?, recuerdas lo que representaban?, recuerdas lo importante que son para modelar y entender el flujo de un programa?.


Bien, pues hoy vovleras de nuevo a utilizarlos y dominarlos en un contexto mas integrado y rico para producir verdaderas aplicaciones que cuentan con un flujo bien definido permitiendo controlar el estado de un proceso. Windows Workflow Foundation es la tecnologia de Microsoft para crear aplicaciones y soluciones que requieren contar con un flujo de trabajo coordinado y transparente. Con esta tecnologia que Microsoft ya puso a disposicion como Beta 1, podemos entender como utilizar nuestra logica de negocio en un componente que permite disenar y controlar el flujo de una aplicacion, si lo vez mas a profundidad, cuando escribes codigo o programas el flujo del sistema y proceso sigue ahi, expresado totalmente en codigo. Lo que Windows Workflow Foundation entre otras cosas nos ofrece es abstraer esa logica de proceso en un componente adicional que cuenta con una serie de servicios y esta encargado de coordinar el flujo de la ejecucion de todo un programa permitiendote tener bien definidos mecanismos que te puedan ofrecer el estado  apropiado y la transparencia de un proceso.


Imagina que escribes tu codigo o logica de negocio expresado en clases y funciones, con todas las caracteristicas de la POO, ahora, imagina que escribes otro codigo o componente adicional encargado de contener el flujo de un proceso y que ademas en ciertos puntos del flujo manda llamar al codigo de tu logica de negocio permitiendote tener fuera de la logica de tu aplicacion el flujo de un proceso dandote todas las caracteristicas de facil mantenimiento, migracion y soporte. Por ejemplo, Windows Workflow Foundation soporta una arquitectura basada en multi-threading dentro de su motor de ejecucion, asegurando que tu aplicacion cuenta con una gran velocidad de repuesta y ejecucion.


Ademas la vision que se tiene para Windows Workflow Foundation es muy ambiciosa ya que se planea integrar este motor dentro de SharePoint Services para integrar funcionalidad de ciclo de vida de documentos, escenarios relacionados con procesos de ejecucion larga en colaboracion, office 12 tambien soportora esta tecnologia. Bueno es una brevisima introduccion que se me ocurrio hacer con la intencion de aterrizar un poquito el concepto.


Algo que definitivamente vale mucho la pena seguir al tanto.


 


 

Editando plantillas de procesos en TFS

En pasados días publique un post sobre el editor de plantillas para los procesos registrados en Visual Studio 2005 Team System y no quise dejar pasar la oportunidad de blogear sobre como hacer realidad la creación de un proceso personalizado y además integrarlo a Team System. En este sencillo pero un poco extenso articulo, veremos como rápidamente podemos manipular una plantilla de proceso y registrarla en Team Foundation Server.


Primero hay que descargar esta herramienta: VSTS Process Template Editor.


Al descargarla te darás cuenta que no cuenta con un programa de instalación, simplemente genera una carpeta con múltiples ensamblados.

Algo así como lo que muestro a continuación:


clic para ver 

Estos ensamblados obviamente contienen demasiada información sobre los tipos que se utilizan internamente en Visual Studio Team Foundation Server lo cual nos permitirá personalizar nuestras plantillas y asociarlas a propiedades de estos objetos.

Con la idea de no iniciar la creación de una plantilla de proceso desde cero, opte por buscar en la carpeta C:\Program Files\Microsoft Visual Studio 2005 Team Foundation Server\TF Setup el archivo de formato .zip llamado: MsfAgile_new.zip el cual contienen la plantilla de uno de los procesos definidos (MSF Agile) de manera predeterminada en Team Foundation Server con la idea de que me sirva como marco de referencia para manipular mi plantilla de proceso. Copie el archivo a otro fólder, lo descomprimí y solamente renombre la carpeta con el nombre de mi proceso.

El siguiente paso fue cargar la herramienta Process Template Editor para iniciar la manipulación  de mi nuevo proceso. Al cargar esta herramienta me presenta un dialogo para especificar si me quiero conectar a mi Team Foundation Server para manipular los procesos definidos ahí o si deseo trabajar de manera desconectada, y asi lo configere, seleccione la copcin Work Discconected y desde la barra de herramientas seleccione Open para buscar mi carpeta de plantilla de proceso y seleccionar el archivo ProcessTemplate.xml el cual contiene todas las referencias a los archivos de las subcarpetas donde se encuentran los detalles de todos los servicios que este proceso ofrece a través de Team Foundation Server.

Lo que obtengo es:


clic para ver

Como puedes ver tenemos todo el proceso cargado, por mi parte, para efectos de este post ya manipule un poco mi metodología, especifique el nombre, la descripción, y algunas propiedades adicionales que nos permiten establecer ciertos plugins para nuestro proceso.
Los tabs o pestañas contienen todas las categorías de aspectos que podemos involucrar y relacionar con nuestro proceso y que además Team Foundation Sever soporta internamente.

Tal es el caso de Work Item Tracking que es toda un servicio de control y seguimiento de tareas de trabajo. Podemos crear las tareas que consideremos requeridas en nuestro proceso, ademas configurar consultas (querys) y definir categorías de tipos (Type Definition) por ejemplo puede suceder que ciertas tareas están bajo la categoría de Factibilidad, defecto o de requerimiento. Como podemos ver en la imagen anterior, tengo definido una tarea de tipo tarea, podemos crear cualquier numero de tareas eso nos lo define nuestro proceso.

Cabe mencionar que podemos especificar información adicional a la tarea como lo son lo siguiente:


clic para ver

La pestana de areas & itertions nos permite especificar fases o estados de nuestro proceso permitiendo fácilmente agrupar Work Ítems.


clic para ver

La sección de Groups & Permissions nos permite especificar grupos o roles del desarrollo, con esto habilitamos la creación de categorías de miembros del equipos y además para coda grupo podemos especificar permisos que a su vez serán reforzados en la herramienta cuando un usuario perteneciente a un grupo accede.


clic para ver

En la pestaña de Source Control podemos configurar las Cheking Policies o características del controlador de versiones.
En la pestaña Portal obviamente podemos manipular la estructura del portal SharePoint que se creara para nuestro proyecto, aquí podemos realizar la asociación de la documentación inicial para cada una de las fases de nuestro proceso, verdaderamente muy poderosa esta herramienta ya que me permite extender a detalle mi proceso. Y por ultimo tenemos la pestaña de Reports donde podemos configurar repotes específicos para consultar nuestras indicadores de desarrollo o work ítems.


clic para ver

Para finalizar procederemos a registrar nuestro nueva plantilla de proceso en Team Fonudation Server, para hacerlo simplemente accedemos a Visual Studio 2005 Team Suite y de Team Explorer seleccionamos nuestro servidor Team Foundation Server y damos clic derecho, buscamos el menú contextual la opcion Team Foundation Server Settings y después seleccionamos Process Template Manager. Esta opción nos carga un dialogo que nos permite subir al Team Founation Server una plantilla de proceso.

Simplemente seleccionamos el botón upload y buscamos nuestro archivo ProcessTeamplate.xml, esperamos unos segundos.


clic para ver

Y lito, queda registrado nuestro proceso dentro de Team Foundation Server y ya lo podemos ver reflejado en el Team Project Wizard.


clic para ver




Como pudimos ver en este extenso post, con esta herramienta fácilmente podemos reforzar nuestro proceso dentro de Visual Studio Team System. Mucho trabajo se requiere para poder crearlo y asegurar la calidad de nuestros desarrollos, pero al final del día contamos con una excelente estrategia para elevar la productividad y la calidad de los desarrollos de software con Microsoft Visual Studio 2005. 

Presentaciones InfoPath que se dieron en el PDC

OFF201 ”Office 12”: Introduction to the Programmable Customization Model for the “Office 12″ User Experience (Part 1)
OFF302 ”Office 12”: Developing with the Programmable Customization Model for the “Office 12″ User Experience (Part 2)
OFF303 Groove: Building Enterprise Workgroup Applications
OFF304 Assembling, Repurposing and Manipulating Document Content Using the New Office File Format
OFF306 “InfoPath 12″: Creating Browser-Based Forms for Enabling Data and Application Integration
OFF307 “Access 12″: Developing Collaboration Solutions with “Access 12″ and Windows SharePoint Services “v3″
OFF308 Windows SharePoint Services ‘v3′: Creating and Defining Custom Templates, Sites, Features, and Solutions
OFF310 Windows SharePoint Services: Developing Collaboration and Tracking Applications
OFF311 ”Project Server 12”: Developing Project Management Solutions
OFF312 “Outlook 12″: Developing Solutions Using the Consolidated Outlook Object Model
OFF313 Web Content Management Application Development and Engine Extensibility
OFF314 Developing Enterprise Document Solutions Using Office Client and Server Technologies
OFF316 Word “12”: Integrating Business Data into Documents using XML-based Data/View Separation and Programmability
OFF318 Developing Document Archiving, Records Management, and Policy Enforcement Extensions to the Microsoft Office System
OFF319 ”InfoPath 12”: Developing Forms for the Smart Client and the Browser
OFF320 Developing with Microsoft Office System Search Technology
OFF321 Surfacing Your Application’s Line-of-Business Data and Actions within Enterprise Portals
OFF322 Building a Solution Using a Spreadsheet in Server-Based Scenarios
OFF323 Building Business Intelligence Solutions Using “Excel 12″ and SQL Server 2005 Analysis Services
OFF324 “Visio 12”: Building Data Visualization Solutions
OFF325 Microsoft CRM: Extending and Customizing Microsoft CRM Solutions
OFF405 Windows SharePoint Services: Using ASP.NET 2.0 Technology to Extend Pages, Sites, and Server Farms
OFF409 Windows SharePoint Services: Advancements in Document, Content, and Data Storage
OFF415 Windows SharePoint Services: Developing Custom Workflows
OFF417 Visual Studio Tools for Office ‘v3′: Creating Office Application Customizations

 


suerte y diviertete!!!

InfoPath Next Version

En este video te presentan lo nuevo de InfoPath 12 y parte de la vision que se tiene para la version 12 de Office. Vale mucho la pena ya que conoceras al equipo de producto y puedes conocer de primera linea que nos espera con esta tecnologia.

DSL Tool

Platicando ayer con Carlos Alexei de Microsoft México me comento que hace tan solo dos días se libero el CTP (Community Technology Preview – Noviembre) de las herramientas (add ins) para DSL (Domain Specific Language) que podrán ser utilizadas desde Visual Studio 2005. DSL imagínalo como un lenguaje de programación de muy alto nivel dedicado resolver a una problemática o dominio especifico.



A domain-specific language (DSL) is a programming language or executable specification language that offers, through appropriate notations and abstractions, expressive power focused on, and usually restricted to, a particular problem domain.



Permitiéndonos expresar la solución de una problemática en un modelo, independientemente de la implementación tecnológica para resolverla.



Bueno es tiempo de descargar y probar esta herramienta.

buen recurso

Visual Studio Team System TechNotes

de regreso a la ciudad del smog

Voy de regreso a la ciudad de Mexico, despues de haber estado en Baja California por practicamente dos semanas, hoy regreso al DF. Mucho trabajo pendiente, algunas platicas agendadas y muchos mails que responder. No queria dejar la oportunidad de blogear sobre los nuevos StarterKits que Microsoft a liberado. Estos son proyectos de codigo desarrollados con Visual Studio 2005 donde nos demuestran los conceptos mas basicos del desarrollo bajo esta herramienta.


Por otro lado desde hace tiempo ya habia instalado en nuestro servidor web el Community Server de Telligent de Rob Howard. Lo que puedo decir es que es verdaderamente facil instalar y configurar esta servidor comunitario y ofrece una gran variedad de servicios utiles para comunidades como lo son blogs, foros y galeria de imagenes todo conectado entre si, se ve que es una verdadera fina pieza de codigo esta fenomenal, buen trabajo y muy util. El PlexIT Consulting Team es nuestro portal comunitario que apenas estoy iniciando, tendremos los weblogs de nuestro equipo y abrire unos foros para darle seguimiento a las dudas y comentarios de tanta gente que nos pregunta y nos pide ayuda sobre aspectos de tecnologia Microsoft.


Por lo pronto en la seccion de foros puedes encontrar respecto a lo que nosotros llamamos Artefactos de Productividad y Calidad para el Desarrollo del Software donde discutiremos aquellos aspectos que todo departamento de desarrollo o de sistemas debe de considerar para contar con un ambiente de desarrollo sano que contemple aquellos aspectos basicos para lograr el desarrollo en equipo. Estamos en proceso de configuracion y pronto liberaremos todo nuestro sitio comunitario.