viernes, 2 de marzo de 2012

Como crear columnas de sito en SharePoint con código

En ocasiones nosotros los desarrolladores requerimos crear columnas de sitio en SharePoint pero no a través de las listas de definición de Visual Studio. En esta publicación veremos una manera que a mi parecer es bastante sencilla y muy útil.

La entidad

En nuestro proyecto de SharePoint creamos una clase que va a funcionara como una entidad que permita almacenar los parámetros necesarios para la creación de las columnas de sitio de SharePoint.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.SharePoint;

namespace MyProject{
class ColumnsPropertiesEntity {
public string ColumnName { get; set; }
public SPFieldType ColumnType { get; set; }
public bool ColumnRequired { get; set; }
public string groupColumnName { get; set; }
}}

Esta entidad almacena el nombre interno de la columna, el tipo de columna que se desea crear y si la columna es de carácter obligatorio.

El método

Una vez esta construida la entidad lo siguiente es crear el método que creara las columnas.

private void AddSiteColumns(SPWeb mySite, System.Collections.Generic.List columns){
foreach (var column in columns) {
SPField myField = mySite.Fields.TryGetFieldByStaticName(column.ColumnName);
if (myField == null) {
string myColumn = mySite.Fields.Add(column.ColumnName, column.ColumnType, column.ColumnRequired);
myField = mySite.Fields.TryGetFieldByStaticName(myColumn);
myField.Group = column.groupColumnName;
myField.Update();
} }}

El resto es tarea de ustedes.

martes, 20 de diciembre de 2011

Error al publicar un Workflow extenso en SharePoint

Cuando se desarrollan aplicaciones que implique lógica de negocios en SharePointse suele utilizar alguna herramienta para la creación y edición de flujos de trabajo (Workflows) ya sea SharePoint Designer, Nintex, K2 o alguna otra del mercado.
El problema que menciono en esta publicación se debe a que cuando los flujos se hacen extensos e implican un gran número de actividades y no es posible o no se desea segmentarlos en subflujos el flujo no es posible publicarlo y se nos presenta una ventana con un anuncio similar al siguiente "Error inesperado al publicar le workflow".
Pues este caso me sucedió utilizando Nintex Workflow 2010 y debido a que en el visor de eventos no aparecía algún registro que me sirviera de ayuda pues recurrí al log de SharePoint y replicar el error con el fin de encontrarlo de manera sencilla, pues el resultado fue el siguiente:
SharePoint Foundation Workflow Infrastructure Workflow dll failed to compile because it exceeded UserDefinedWorkflowMaximumComplexity of 7000
Pues la expliación del por qué del error la encuentran en el siguiente enlace de MSDN,
Pero en resumidas cuentas lo que sucede es que hay un límite de nodos (actividades) que pueden ser agregados en un flujo de trabajo de SharePoint y para modificar dicho umbral lo que se requiere es ejecutar el siguiente script de PowerShell para cada WebApplication que pertenezca a la granja de SharePoint.
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint")
$new_limit = 8000;
$webapp = [Microsoft.SharePoint.Administration.SPWebApplication]::Lookup("http://WebAppURL")
$webapp.UserDefinedWorkflowMaximumComplexity = $new_limit $webapp.Update()
Asegúrense de colocar entre comillas la URL del Root Site de la Web Application.
Hasta una próxima publicación y espero les sea de ayuda.

lunes, 26 de abril de 2010

¿Puedo escribir código en plantillas de Microsoft Office InfoPath 2007?

Es habitual que cuando llevamos un tiempo utilizando Microsoft Office InfoPath 2007 y empezamos a notar las limitantes de las reglas, las validaciones y las operaciones que podemos realizar con el esquema "Sin código" de la herramienta nos surjan las preguntas ¿puedo escribir código en InfoPath?, de poder hacerlo ¿con qué y cómo lo hago? Pues la respuesta a la primera pregunta es un Sí, es posible escribir código que se ejecute en las plantillas de InfoPath, la respuesta a la segunda pregunta es, lo hago a través del VSTA (Visual Studio Tools for Applications) con el cual podemos elegir entre escribir código en Visual Basic o C#.

¿Como instalar Infopath y VSTA?

Aunque instalar InfoPath no tiene ningún misterio ya que el asistente de instalación de Microsoft Office 2007 hace que esta operación sea muy sencilla, si debe quedar claro que VSTA no se instala de manera predetermina. A continuación veremos cómo instalar InfoPath y habilitar la característica VSTA.

  • Ejecute el Setup de instalación de Microsoft Office 2007

  • En el asistente de Instalación de Office ubicamos Microsoft Office InfoPath damos clic en la flecha y seleccionamos la opción Ejecutar todo desde mi PC.

Nota: fíjese que si expande la opción de InfoPath encontrara el subconjunto "Compatibilidad con programación de .NET" que a su vez si lo expande encontrará el conjunto "Compatibilidad con programación de .NET para .NET Framework versión 2.0" el cual contiene el Visual Studio Tools para aplicaciones. Esto indica que para instalar el VSTA necesitamos tener instalado en nuestra computadora el Framework 2.0

  • De clic en Continuar.
  • Espere que el asistente termine de instalar InfoPath 2007 y de clic en Cerrar.

Listo ya contamos con VSTA listo para usar, pero como empezar a utilizarlo y algunos ejemplos de posibles usos los dejo para una próxima publicación.

Espero que esta información les haya sido de ayuda y cualquier duda no duden en preguntarla.

Saludos,
Diego Iván Cáceres