Archivo de la categoría: Visual Studio 2010

Como lanzar un Workflow programaticamente en SharePoint

Tras un periodo de inactividad, vuelvo con un nuevo post… Esta vez se trata, de la necesidad de lanzar un nuevo Workflow a nivel de listas o biblioteca en todos los ítems, previamente creados. Si el Workflow se configura para que se lance a la creación o modificación del ítem, puede que haya muchos ítems, que por antigüedad, no se modifiquen y no se lance el Workflow asociado.

Para realizar esto desde el API de SharePoint, la forma mas sencilla es la siguiente:

static private void LanzarWorkflow()
{
  //definición de variables necesarias para la ejecución
  string SP_URL = "http://mi_sharepoint";
  string LIST_NAME = "Pages";
  //este es el GUID del BaseID del Workflow que queremos ejecutar
  Guid wfBaseId = new Guid("b81abdd8-faf4-4bed-86ca-a49d9cc9913e");
  //se ejecuta con privilegios elevados
  SPSecurity.RunWithElevatedPrivileges(delegate
  {
	try
	{
	  using (SPSite site = new SPSite(SP_URL))
	  {
		using (SPWeb web = site.OpenWeb())
		{
		  SPList list = web.Lists[LIST_NAME];
		  SPListItemCollection items = list.Items;
		  for (int i = 0; i < items.Count; i++)
		  {
			web.AllowUnsafeUpdates = true;  
			//selecciona el item actual
			SPListItem item = items[i];
			Console.WriteLine(string.Format("[Item] Lanzando workflow para el item Id: {0} ", item.ID));
			//obtiene el objeto plantilla de WF asociado a la lista que queremos
			SPWorkflowAssociation associationTemplate = list.WorkflowAssociations.GetAssociationByBaseID(wfBaseId);
			//lanzar el WF a nivel del item
			web.Site.WorkflowManager.StartWorkflow(item, associationTemplate, associationTemplate.AssociationData);
			web.AllowUnsafeUpdates = false; //bloquea cambios por codigo
		  }
		}
	  }
	}
	catch (Exception ex) { Console.WriteLine(string.Format("***ERROR*** {0}", ex.ToString())); }
  });
}

Los únicos parámetros que necesita esta función son:

  • SP_URL: Url del sitio de SharePoint donde se encuentra la lista que tiene asociada el Workflow que deseamos lanzar
  • LIST_NAME: Nombre de la lista o biblioteca que tiene el Workflow
  • wfBaseId: por ultimo el Base ID del Workflow (este GUID lo puedes ver, por ejemplo, desde SharePoint Designer, editando el archivo XML de configuración del propio Workflow)

 

Libro gratuito: Time-Saving VS11 and ASP.NET 4.5 Features You Shouldn’t Miss

Gracias a la gente de Telerik, podemos disfrutar más que de un libro, yo lo clasificaría como artículo muy completo sobre a las mejores características que ahorran tiempo en Visual Studio 2012 y ASP.NET 4.5.

Tiene un total de 20 paginas y está escrito por los mejores ingenieros en Telerik, donde se explican varias características especiales de Visual Studio 2012, como:

  • JavaScript Intellisense
  • CSS Intellisense
  • ASP.NET y Web API (Información general y las operaciones CRUD)
  • Strongly Typed Data Binding
  • Page Inspector (nueva herramienta de depuración)

Para poder descargarte este articulo en formato PDF, puedes hacerlo desde aquí.

 

Como usar SPDisposeCheck con SharePoint 2010

Una buena práctica cuando se desarrolla sobre SharePoint 2010 es el control de la destrucción de objetos no manejados (objetos COM) en memoria (como pueden ser los objetos SPSite y SPWeb).

SharePoint mezcla objetos manejados como no manejados, por lo que tenemos que tener muy claro cuales son cada uno de ellos, y como debemos destruirlos después de haberlos usado.

Para tener claro y conocer las buenas practicas indicadas por Microsoft, sobre como eliminar objetos de SharePoint o dejo este enlace: Best Practices: Using Disposable Windows SharePoint Services Objects, creo que es un articulo que todo desarrollador debería leer y tener claro.

Para poder llevar a la practica estas instrucciones o reglas, existe una herramienta que nos permite detectar estas posibles fugas de memoria, desde Visual Studio 2008/2010 llamada SPDisposeCheck como un add-in más. Se puede descargar desde aquí: http://archive.msdn.microsoft.com/SPDisposeCheck

¿Como podemos usar SPDisposeCheck?

1) Una vez nos hemos descargado la aplicación y hemos instalado en nuestro entorno de desarrollo, paramos a configurarla… abrimos el Visual Studio 2008/2010, en el menú de herramientas nos vamos a “Toos” y ahí veremos un nuevo elemento llamado “SharePoint Dispose Check”

2) Abrimos la herramienta debemos rellenar los campos “Path to SPDisposeCheck” que es la ruta donde hemos instalado la herramienta y el campo “Treat problems as” yo siempre prefiero “Warnings” en vez de “Errors”. Luego guardas y ya esta finalizada la configuración.

3) Una vez finalizada la configuración, solo queda realizar una prueba (usando un código incorrecto)… créate una aplicación de consola, añade la referencia a la librería Microsoft.SharePoint y usa el siguiente código:

SPSite site = new SPSite("http://server");
SPWeb web = site.OpenWeb();
String str = web.Title;

Una vez lo tengamos, solo tenemos que compilar, y ver que el compilador nos muestra dos warnings:

4) Si cambiamos nuestro codigo anterior por este otro (utilizando using para la instancia de objetos) veremos como desaparecen las advertencias:

using (SPSite site = new SPSite("http://server")) 
{
  using (SPWeb web = site.OpenWeb())
  {
	String str = web.Title;
  }
}

Gracias a herramienta podemos corregir nuestras implementaciones sobre SharePoint 🙂

Otra funcionalidad que os puede venir bien, es la posibilidad de pasar la herramienta SPDisposeCheck directamente a un DLL. Esto os sera muy útil en el caso de tener que comprobar algún “memory leak” o perdidas de memoria con librerias de un entorno de Producción, solo hay que ejecutar desde linea de comandos SPDisposeCheck, pasandole como parametro la ruta de la DLL que quieres analizar. Aqui os dejo los parametros que admite por linea de comandos:

Usage:

  SPDisposeCheck.exe  [options]

Options:

  -?    Display command-line help
  -od   Display only the Sharepoint types that have been disposed e.g. the "Do Not Dispose" violations
  -ond  Display only the Sharepoint types that have not been disposed e.g. the "Dispose" violations
  -xml  Display output as XML

 

 

Visual Studio 11 Developer Preview Training Kit

Microsoft ha publicado el pasado día 17, la primera release del Developer Preview Kit para Visual Studio 11,  el cual incluye laboratorios prácticos para ayudarte a entender cómo aprovechar las mejoras de Visual Studio 11 y. NET Framework 4.5,  y sobre todo cómo gestionar el ciclo de vida de toda la aplicación.

Si no quieres instalarte el Developer Preview Kit al completo, tienes la opción de descargarte el Web Platform Installer Preview y seleccionar únicamente los labs que desees.

En cuanto a contenido del training kit, el resumen es el siguiente (de los laboratorios incluidos):

  • Visual Studio Development Environment:
    • A Lap Around the Visual Studio 11 Development Environment.
  • Languages:
    • Asynchronous Programming in .NET 4.5 with C# and Visual Basic.
  • Web:
    • What’s New in ASP.NET and Visual Studio 11 Developer Preview.
    • What’s New in ASP.NET Web Forms 4.5.
    • Build RESTful APIs with WCF Web API.
  • Application Lifecycle Management:
    • Building the Right Software: Generating Storyboards and Collecting Stakeholder Feedback with Visual Studio 11.
    • Agile Project Management in Team Foundation Server 11.
    • Making Developers More Productive with Team Foundation Server 11.
    • Diagnosing Issues in Production with IntelliTrace and Visual Studio 11.
    • Exploratory Testing and Other Enhancements in Microsoft Test Manager 11.
    • Unit Testing with Visual Studio 11: MSTest, NUnit, xUnit.net, and Code Clone.
  • Windows Metro Style Apps:
    • Windows 8 Developer Preview Hands on Labs from BUILD.

Visual Studio 2010 Service Pack 1 (SP1)

El Service Pack 1 para Visual Studio 2010 (y todas sus variaciones como TFS 2010, Report Viewer 2010, etc)
Este paquete de funcionalidades y correcciones, introduce una serie de mejoras para los desarrolladores, incluso mejor ayuda con el nuevo Help Viewer, IntelliTrace F5 para 64 bits y proyectos de SharePoint, un asistente de rendimiento de Silverlight, interruptor de tiempo de ejecución de VB Compiler, etc..
Puedes descargarte el SP1 de:
  • Si eres suscriptor a MSDN​, puedes hacerlo desde aquí.
  • Para el resto del mundo podrá descargarlo en este sitio.