SharePoint 2010: Otra vez las fórmulas para columnas de tipo calculado!

Hace una temporada escribía un artículo, a título de referencia, sobre las fórmulas disponibles en SharePoint 2010 tanto para realizar validaciones a nivel de lista o columna como para poder crear columnas de tipo calculado. El caso es que, a raíz de una consulta en relación a su uso en MSDN, he decidido completar dicho artículo con algunas referencias adicionales en las que se muestra como usar dichas fórmulas tanto para SharePoint 2007 como para SharePoint 2010:

Además, hay que tener en cuenta que para ciertas fórmulas el separador por defecto no será la “,” que aparece en los ejemplos, sino el que tengamos configurado en nuestro servidor de acuerdo al idioma o cultura instalada. Pro ejemplo, un separador habitual es “;”, de manera que si por ejemplo estábamos aplicando la fórmula LEFT([Columna],3) y SharePoint nos devuelve el correspondiente error lo solucionaremos cambiándola por LEFT([Columna];3).

SharePoint2010_thumb

SharePoint 2010: Alternativas para acceder a datos (I)!

Hace un tiempo comentaba en este artículo sobre cuando se debería usar SPQuery y cuando LINQ  To SharePoint a la hora de acceder a los datos de una lista de un sitio de SharePoint. Yendo un poco más allá, además de estas dos opciones disponemos de una serie de alternativas para el acceso a datos en listas de SharePoint que incluye a ambas:

  • Mediante consultas CAML que utilicemos en objetos de tipo SPQuery y SPSiteDataQuery. El uso de CAML introduce los inconvenientes ya conocidos de que las consultas no son fáciles de construir, de que dichas consultas las definimos “pegándolas” en código lo que dificulta la depuración,etc. Ahora bien, el mayor punto a favor de CAML es que sigue siendo el corazón para realizar operaciones de acceso a datos que en SharePoint 2010 incorpora novedades ya vistas en este blog como el soporte de Joins o la posibilidad de acceder a datos externos a través de consultar listas externas. En cuanto a la diferencia entre usar SPQuery y SPSiteDataQuery, la fundamental es que con el primero sólo podremos realizar consultas a listas del sitio actual mientras que con SPSiteDataQuery podremos realizar consultas a listas de varios sitios.
  • Mediante consultas LINQ To SharePoint, que nos permite definir consultas LINQ para realizar operaciones de datos contra listas de SharePoint y que incluye soporte de Joins además de la ya consabida ventaja de que tenemos tipado fuerte en la definición de las consultas, de que disponemos de la utilidad SPMetal para generar las entidades a consultar, etc. Internamente, las consultas LINQ To SharePoint se traducen al correspondiente CAML.
  • Mediante el modelo de objetos de BCS que facilita la interacción con datos externos permitiendo de forma programática navegar entre entidades y asociaciones definidas en los modelos de BDC.

Aparte de estos tres tipos de alternativas, tenemos otras para el acceso a datos como:

  • El uso del modelo de objetos de SharePoint (en servidor y en cliente).
  • El uso de los servicios web de SharePoint.
  • El uso de la API REST de SharePoint.
  • La clase ContentIterator, que permite iterar en bloque con sitios, listas y elementos de lista superando los umbrales fijados en la consulta de listas
  • La clase ContentByQueryWebPart  que forma parte de la infraestructura de publicación de SharePoint 2010 y permite realizar consutas CAML a listas y sitios de una cierta colección de sitios.
  • La clase PortalSiteMapProvider también perteneciente a la infraestructura de publicación de SharePoint 2010 y que permite consultas objetos cacheados a nivel de colección de sitios.

Volviendo a las tres opciones iniciales, ¿Cuáles son los escenarios de uso? Pues tal y como podéis leer en la SharePoint Guidance tenemos los siguientes escenarios:

image

SharePoint 2010: Limitaciones en los Document Sets!

Como sabéis, y ya comenté en este artículo, una de las novedades en el área de ECM (Enterprsie Content Management) de SharePoint 2010 son los Document Sets o Conjuntos de Documentos que permiten trabajar con agrupaciones de documentos de forma atómica. Además de conocer como funcionan los Document Sets, es importante tener claro las limitaciones que nos podemos encontrar al respecto. En este sentido, el siguiente artículo de Michal Pisarek refleja y resume muy bien los límites que nos podemos encontrar: Document Set Limitations and Considerations in SharePoint 2010. El resumen rápido de limitaciones sería el siguiente:

  • Cannot declare document sets as In-Place Records.
  • Cannot nest Document Sets within Document Sets.
  • You cannot send a Document Set larger than 50MB using the Send To Command.
  • Cannot create folders within Document Sets.
  • Document Set routing requires time jobs to run.
  • Routing Content into Document Sets can be tricky.
  • Document Sets are available in SharePoint Server only.
  • Cannot create Document Sets in Lists.
  • Be Careful of performance with lots of Document Sets.
  • Downloading the entire Document Set.
  • Shared Columns may not update instantaneously.
  • Be careful with Content Type Syndication.

 

SharePoint2010_thumb

SharePoint 2010: Acceso a sitios de SharePoint con CloudShare Web Access!

Como ya comenté en este post, una alternativa muy interesante que tenemos para crear nuestros entornos de desarrollo de SharePoint 2010 es la de recurrir a proveedores que nos ofrezcan la posibilidad de montar este entorno en la nube de manera que tengamos los recursos necesarios en términos de característica hardware. En este sentido, llevo ya varios meses trabajando con CloudShare en cuanto a que me permite montar un entorno de desarrollo para SharePoint 2010 en unos pocos minutos gracias al conjunto de plantillas de máquinas virtuales de las que dispone y además con unas capacidades HW adecuada…por ejemplo, en el entorno de desarrollo que tengo montado en CloudShare la máquina virtual de SharePoint 2010 cuenta con sus 8 GB de RAM y el acceso vía RDP es realmente fluido. Una de las últimas novedades que ha incorporado CloudShare a su offering es el denominado Web Access que permite que compartir una aplicación web de una forma muy simple…aunque para el caso de SharePoint es necesario realizar alguna que otra configuración:

  • Lo primero que necesitamos es copiar la Url de Web Access que CloudShare genera para cada entorno y que tenemos disponible en la página principal de nuestro “Environment” de CloudShare.
  • A continuación nos vamos a la máquina virtual y a la Administración Central de SharePoint 2010. En la sección de gestión de aplicaciones web creamos una nueva aplicación web, definiendo como puerto para la misma el 80 y especificando como Host Header la Url de Web Access de CloudShare.
  • Una vez creada la aplicación web, veremos que se muestra en el listado de aplicaciones web identificada por dicha Url.
image image image
  • Si revisamos las rutas de acceso alternativo, veremos que para la zona default de la aplicación web recién creada se muestra como ruta de acceso la url del Web Access de CloudShare.
  • Si salimos de la máquina virtual y especificamos la Url en un navegador, veremos que accedemos al sitio de SharePoint…cool!
image image

Sin duda, una característica más que interesante la de Web Access de CloudShare para compartir entornos y facilitar que por ejemplo usuarios externos puedan acceder a los mismos sin necesidad de utilizar un acceso por escritorio remoto.Finalmente, os dejo el enlace al post escrito en el blog de CloudShare respecto a las ventajas que aporta esta tecnología para los que trabajamos en el mundo de SharePoint: http://blog.cloudshare.com/archives/170.

SharePoint 2010: Capacity Management con Log Parser!

Una vieja conocido para la gestión de capacidad en SharePoint es la herramienta Log Parser que nos permite extraer información de los logs de IIS en los que SharePoint como no podía ser de otra forma registra la correspondiente información. Se trata de una herramienta de línea de comandos que con una sintaxis tipo T-SQL nos permite extraer información de uso de SharePoint y persistirla en una base de datos, un archivo o un gráfico. Por ejemplo, para este último caso podríamos construir sencillamente con la ayuda de Microsoft Office Excel gráficos como los siguientes:

image image image

Los recursos claves de Log Parser son los siguientes:

Finalmente, os dejo un par de ejemplos de como se usaría la utilidad:

   1: logparser -i:IISW3C "select top 20 count(*) as ct,cs-username as user from *.log group by user order by ct desc

   2:  

   3: logparser -i:IISW3C -o:CSV "select count(*) as ct,TO_INT(LOG(count(*))) as bin,cs-username from *.log 

   4:     where sc-status<>401 group by cs-username order by ct desc" -q >userfreq.csv

Por cierto, esta herramienta no está soportada oficialmente por Microsoft.

¡CompartiMOSS…Extra, extra…el # 9 ya está disponible para descarga!

Pues nada, gracias al estupendo trabajo de autores y editores acaba de ver la luz un nuevo número de CompartiMOSS y ya vamos por 9. En esta ocasión los contenidos son los siguientes:

  • Editorial
  • Consejos prácticos de cómo aplicar el Branding Corporativo en SharePoint 2010 sin modificar la página maestra (Juan Manuel Herrera)
  • El lado social de SharePoint – III (Alberto Díaz Martín)
  • SolidQ Managed Matadata Exporter: Herramienta para exportar Metadatos Administrados de SharePoint 2010 (José Quinto Zamora)
  • Instrucciones para organizar un simposio de SharePoint (Vielka Rojas)
  • Integración de Windows Azure y SharePoint 2010 (I) (Juan Carlos González Martín)
  • Entrevista con Ricardo Muñoz
  • SharePoint 2010 BI (Juan M. Alvarado)
  • Patrón MVP con SharePoint 2010 (Juan Pablo Capdevila)
  • Site Definitions vs. Web Templates (Carlos Ariel Dantiags)
  • Herramientas de Comunidad (Gustavo Velez)
  • Modelo de Objetos de Cliente (Juan Pablo Pussacq Laborde)

image_thumb_2BCC7725[1]

Como siempre, cualquier número de la revista se puede descargar desde el sitio de SkunkWorks a través de este enlace. También podéis visitar el sitio de CompartiMOSS en Facebook (http://www.facebook.com/group.php?gid=128911147140492). Y si estás interesado en colaborar como autor en la revista, no tienes más que ponerte en contacto con Fabián Imaz, Gustavo Vélez o un servidor.

SharePoint 2010: Learning Kit en Codeplex!

Sin duda, una de las grandes características de la plataforma SharePoint es la de que es posible definir sobre ella distintos tipos de soluciones verticales para dar respuesta a requerimientos variados en ámbitos también variados: educación, gestión de proyectos, reservas hoteleras, etc. Si nos centramos en el concepto de e-Learning, desde la versión 2007 de la plataforma disponemos del denominado SharePont Learning Kit disponible en Codeplex que implementa una completa solución de eLearning de acuerdo a los estándar definidos sobre la base proporcionada por SharePoint…para SharePoint 2010, podremos descargarnos el Learning Kit desde este enlace.

SharePoint2010_thumb

Windowsw 8: Instalación de la developer preview paso a paso!

Por supuesto, y como no podía ser de otra forma, no me he podido resistir a instalar la primera preview que tenemos disponible de Windows 8 desde varios días. Como muchos habréis comprobado, el proceso de instalación es bastante sencillo, lleva poco tiempo y a mi particularmente me llamó la atención la integración que tiene con Windows Live. En mi caso, la primera instalación que he realizado de Windows 8 (con las herramientas de desarrollo) la he hecho en una máquina de Virtual Box y me han servido los tips explicados en este post: http://www.sysprobs.com/guide-install-windows-8-virtualbox. Sin más, pasemos a la instalación:

  • Por supuesto, las primeras pantallas de instalación son las típicas en las que eliges idioma de instalación, idioma y cultura para el teclado, etc.
  • Aceptas el correspondiente acuerdo de uso y a instalar.
image image image
  • El proceso inicial de descarga y configuración de archivos de instalación es idéntico al que ya conocíamos para Windows 7 (y por endé creo que para Windows Vista si el Alzheimer no me hace recordar mal).
  • Y es a partir de aquí dónde empiezan algunos cambios mínimos. Por ejemplo, la pantalla de configuración es completamente negra.
  • Una vez que el entorno está configurado (por cierto hasta aquí todo el proceso ha llevado unos pocos minutos), de nuevo aceptamos unos términos de uso de Windows 8 en el equipo en el que lo hemos instalado.
image image image
  • A continuación comenzaremos con la personalización en cuanto a nombre del equipo y las configuraciones iniciales.
  • Podremos elegir entre hacer estas configuraciones de forma personalizada o las sugeridas por Windows.
  • A continuación llegamos a una primera novedad en la que se nos pide una dirección de e-mail para el logon lo que me lleva a la integración con Windows Live comentada anteriormente.
image image image
  • Especificamos esa dirección de correo y la contraseña para que a continuación se inicie el proceso final de preparación de nuestro equipo con Windows 8 corriendo.
  • Una vez finaliza este proceso, llegaremos a la nueva interfaz METRO de Windows 8 ya de sobra conocida por todos.
image image image
  • Y a partir de aquí a hacer pruebas, como por ejemplo la pantalla de inicio de nuestro equipo cuando se vuelve a arrancar.
  • Movernos por la interfaz METRO y hacer el switch a la vista de escritorio.
  • Y por supuesto, lanzar y explorar la preview de Visual Studio 11.
image image image

Próximos pasos en mi caso, instalar Windows Server 8 Preview e instalar la Windows 8 Preview en un Netbook para ver que tal lo mueve.

SharePoint 2010: Operadores soportados en LINQ To SharePoint y su traducción en CAML!

Como sabéis, LINQ To SharePoint es el proveedor de LINQ para realizar consultas integradas en el lenguaje contra listas y bibliotecas de SharePoint. Como proveedor que es, no podemos esperar que cualquier tipo de operador que podamos usar en expresiones LINQ tenga su equivalente en LINQ To SharePoint y por lo tanto pueda ser traducido a su equivalente CAML. Así, operadores como Equals o HasValue no tienen un equivalente CAML. Tal y como podéis leer en la SharePoint Guidance, los operadores soportados, cuyo uso no incurre en penalizaciones de rendimiento, y sus equivalentes CAML en LINQ To SharePoint son los siguientes:

Operador LINQ

Traducción CAML

&&

And

||

Or

==

Eq

>=

Geq

> 

Gt

<=

Leq

< 

Lt

!=

Neq

== null

IsNull

!= null

IsNotNull

String.Contains

Contains

String.StartsWith

BeginsWith

SharePoint 2010: Limitaciones del BCS (II)!

Hace un tiempo escribía en torno a algunas de las limitaciones de los Business Connectivity Services (BCS) en lo que a capacidades se refiere. El caso es qué además de estas limitaciones, tenemos otras relativas a cuestiones de rendimiento en cuanto a los valores por defecto que se usan para número de elementos devueltos, tiempos de presupuesta en una consulta, etc. Lógicamente, estos valores van a ser dependientes de la fuente de datos o aplicación de línea de negocio que estemos integrando con los BCS:

  • 2.000 filas cuando estamos realizando una consulta a una base de datos (BD).
  • 3 M de bytes para la respuesta de un servicio web o de un servicio WCF.
  • 180 segundos de tiempo de respuesta al realizar una BDo un servicio WCF.
  • 200 conexiones en total para BDs, servicios web o servicios WCF.

Fuente: SharePoint Guidance disponible en http://spg.codeplex.com/releases

SharePoint2010_thumb