November 2008 - Artículos
SharePoint es un producto muy fácil de usar:-). El mapa de navegación se va creando de forma automática según el usuario con permisos para ello va añadiendo nuevos subisteis y contenidos. Además desde el la página de "Accione de Sitio" es fácil configurar la navegación, añadiendo o modificando enlaces.
El menú de navegación(superior y lateral), el control de la miga de pan se "conectan" con el mapa de navegación para reflejar los items que lo componen.
El mapa de navegación se puede manipular de forma programática: recuperar, añadir, modificar o quitar entradas.
Todo esto se hace por medio de la clase SPNavigation.
En este enlace podemos muchos ejemplo de como modificar programáticamente la navegación:
HOW TO: Programmatically customize site navigation in WSS 3.0 and MOSS 2007.
Es muy habitual que las aplicaciones que construyamos sobre SharePoint, añadan nuevas entradas en el mapa del sitio. Esto se puede hacer por medio de las características(features) y con la ayuda de los eventos de activación/desactivación.
Otra interesante característica de SharePoint(en realidad de ASP.NET) es la posibilidad de cambiar el proveedor del mapa de sitio(SiteMapProvider).
Un proveedor de mapa de sitio es una clase que extiende la clase SPSiteMapProvider/PortalSiteMapProvider(el último para MOSS), en el método GetChildNodes se construye la colección de nodos que componen el mapa de navegación.
En el fichero web.config de la aplicación web SharePoint podemos "enganchar" nuestros proveedores de mapa de sitio y de esta forma personalizar el origen donde se almacenan los nodos.
Un ejemplo de uso de esta característica es almacenar la navegación en una lista de SharePoint, o incluso generar el mapa de navegación con los títulos en el idioma correspondiente al "idioma actual"(para un sitio multi-idioma).
En el siguiente enlace podemos ver un ejemplo interesante:
Writing a Custom Navigation Provider for MOSS.
En el caso de personalizar el proveedor de mapa de sitio no os olvidéis de optimizar el rendimiento usando técnicas de caché(el proveedor de MOSS ya esta optimizado en este sentido).
Navegando por el sitio SharePoint Reviews comentando el otro día en el blog del CIIN por Juan Carlos González Martín, encontré un interesante producto.
Se trata de MashPoint de la empresa Bamboo Solutions.
Es un producto anunciado recientemente como:
"The new, free data integration platform for SharePoint. Access databases, Web services and line-of-business systems directly from WSS or MOSS."
Suena interesante y a gratis:-) además para WSS!!!!
Por poco que he podido ver, es un producto gratuito(ya se puede descargar e instalar) que permite integrar fuentes de datos externas (Bases de Datos, Servicios Web, BDC, etc) en SharePoint y consumirlas con la ayuda de los WebParts que se incluyen en el producto.
Los WebParts incluidas(no tengo claro aun si también son gratuitas) son:
Bamboo Data-Viewer Web Part, Chart Plus Web Part, Calendar Plus Web Part, Virtual Map View Web Part, Tree View Web Part, and Mini-Calendar Web Part.
Los datos externos se pueden replicar en listas de SharePoint por medio de un nuevo tipo de columna "Bamboo Business Custom Column".
Otro de los componentes que incluye el producto es un componente de Single Sign On que permite almacenar los credenciales para integrarse con las aplicaciones.
El fabricante explica que el funcionamiento de este producto se basa en los mismos principios que el famoso BDC de Microsoft.
La integración es posible en ambos sentidos, tanto trayendo datos desde fuentes externas a las listas de SharePoint como a la inversa.
Se puede encontrar bastante información en esta página:
What is MashPoint™?
Muchos de vosotros conocéis las herramientas Internet Explorer Web Developer Toolbar y Firebug, estas son muy útiles en el día a día de los desarrolladores Web, nos permiten explorar el modelo de objetos de una página, acceder a las propiedades de los objetos, ver los javascript's, etc.
En el articulo 15 Helpful In-Browser Web Development Tools podemos encontrar un análisis de 15 herramientas similares y de gran utilidad.
Entre las herramientas analizadas me ha gustado mucho la herramienta DebugBar, es gratuita, se integra en el Internet Explorer y permite ver tanto los objetos HTML, JS, CSS como ver el trafico HTTP.

Interesante articulo en TechNet que expone unas pruebas de rendimiento con SharePoint en entornos virtualizados con Hyper-V.
Performance and capacity requirements for Hyper-V

Muy interesante.
SPALM - SharePoint 2007 SoftwareFactoryLite es un proyecto alojado en Codeplex y que ha sido desarrollado por la empresa Steria Mummert Consulting.
Se trata de un conjunto de plantilla y asistentes(wizards) de VisualStudio(Microsoft Guidance Automation Extensions) que permiten automatizar el ciclo de vida de las aplicaciones basadas en SharePoint.
Las plantillas y asistentes se pueden extender y adaptar a nuestras necesidades.
La instalación consiste en la descarga de tres ficheros:
1. Microsoft Guidance Automation Extensions: http://www.microsoft.com/downloads/details.aspx?familyid=DF79C099-4753-4A59-91E3-5020D9714E4E&displaylang=en
2. Guidance Automation Extensions Update (GAXP1409)
http://www.microsoft.com/downloads/details.aspx?familyid=E28205C6-BB07-401B-9A76-804784598BF0&displaylang=en
3. SharePoint 2007 SoftwareFactoryLite 0.1 Beta http://www.codeplex.com/spalm/Release/ProjectReleases.aspx?ReleaseId=18053#ReleaseFiles
Una vez instalado tendremos un nuevo tipo de proyecto en VisualStudio
Se ejecutara un asistente que nos guiara por el proceso de creación de una nueva aplicación SharePoint.
SPALM estructura las aplicaciones de SharePoint en tres bloques, en función de la tipología de artefacto que contienen(Contenido, Configuración, Customizacion):
El asistente creara una solución VisualStuido con tres proyectos(contenidos, cutomizacion,configuración).
Una vez creada la solución SPALM nos ayuda incorporar nuevos artefactos a la aplicación:
Por otra parte SPALM automatiza la creación de los paquetes de despliegue (se apoya en los ficheros de solución de SharePoint y en la herramienta MSBuild)
Después de hacer varias pruebas me parece una herramienta muy interesante, y sobre todo puede servir de base para estandarizar los métodos de desarrollo y despliegue en los proyectos SharePoint, máxime que contamos con toda la infraestructura de Microsoft Guidance Automation para ello.
P.D.
Una presentación interesante(en alemán) sobre SPALM:
http://www.mossblogger.de/wp-content/uploads/2008/09/torsten-mandelkow-sharepoint-alm.pdf
En el blog del CIIN, Juan Carlos González Martín comenta que se ha publicado la revisión de noviembre de la SharePoint Guidance.
¡Vale la pena echarle un vistazo!, es muy interesante para todos aquellos que es están pensando en como organizar los entornos para un equipo de desarrollo en un proyecto con SharePoint.
En este sentido hay varias entradas interesantes que nos pueden ayudar en este planteamiento.
Otros temas interesantes que cubre esta guía es el despliegue de las soluciones, su paso entre diferentes entornos, así como los métodos para desplegar nuevas funcionalidades sin afectar las existentes.
Además de estos dos puntos interesantes hay bastantes cosas, por ejemplo intenta ayudarnos en la pregunta ¿cuando uso una lista y cuando una tabla de base de datos?
En fin!!!!! Muy útil para cualquiera que participa en desarrollos con SharePoint.
Recientemente he participado como instructor en un curso sobre SharePoint.
Durante esta experiencia he desarrollado algunos ejemplos muy simples y básicos sobre diversos aspectos de SharePoint.
En este post expondré un ejemplo de una característica(feature) termino que tanto oímos los que trabajamos con SharePoint.
¿Que es una característica?
Una característica es un mecanismo que permite introducir cambios(funcionalidades nuevas) a nuestra solución SharePoint de forma modular.
Los cambios se introduce de forma declarativa y puede afectar a distintos ámbitos(granja, colección de sitios, sitio).
Las características son bloques básicos de construcción de soluciones SharePoint.
Las características se pueden activar y desactivar(la idea es que determinadas funcionalidades de una solución se pueden activar y desactivar por un administrador)

Los cambios que se introducen por medio de una característica, se hacen escribiendo una serie de etiquetas dentro de un fichero XML(lo vemos mas adelante).
Los cambios que se pueden describir son(no es una lista exhaustiva):
- Definiciones de lista, Instancias de lista: Podemos definir nuevos tipos de lista o listas.
- Modulo(module): Este apartado permite introducir archivos en el sistema de ficheros virtualizado de SharePoint(casi todos los ficheros de SharePoint están en una base de datos). También permite configurar las páginas de webpart, indicando que webpart contienen.
- Eventos: Se puede asociar código .NET que se ejecuta en cuando una característica se instala, des-instala , activa y des-activa. Esto permite que la característica pueda aplicar muchos mas cambios de los que se pueden definir de forma declarativa. También permite "limpiar" los cambios introducidos.
- Tipos de Contenido: se pueden "instalar" sin necesidad de introducirlos desde el entorno de SharePoint.
- Definición de campos: se pueden "instalar" sin necesidad de introducirlos desde el entorno de SharePoint.
- Eventos de listas: Se puede asociar código .NET que se ejecutara cuando se produzcan cambios en listas(por ejemplo podríamos extraer los datos EXIF de una foto que se esta introduciendo en una biblioteca).
- Acciones: Se puede modificar los menús(por ejemplo el menú Acciones de Sitio), enlaces(por ejemplo añadir enlaces a la página de Administración del Sitio).
¿Donde están y en que consisten?
A nivel físico una característica consiste en un carpeta alojada en una ruta especifica del sistema de archivos del servidor frontal, esta carpeta contiene un conjunto de elementos XML(CAML).
La ruta es:
C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\FEATURES
Si nos asomamos a esta carpeta en un entorno SharePoint recién instalado veremos un montón de carpetas, cada una de estas son características que componen SharePoint(las listas por defecto, las opciones del menú, etc.)
Cada carpeta de la característica contiene al menos el fichero feature.xml.
Para que las características "actúen" en el entorno se deben de "instalar" por medio del comando stsadm y activar con el comando stsadmin o desde el interfase de SharePoint.
Un ejemplo real
Para asimilar un poco todo lo descrito, vamos a crear una característica, instalarla y activarla.
1. En la ruta: C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\FEATURES creamos la carpeta "HelloWorldFeature".
2. Dentro de esta carpeta creamos el fichero feature.xml con el siguiente contenido:
Este fichero describe la característica: su ID, nombre, descripción, ámbito, visibilidad(hay muchas características que se activan desde el comando stsadm y no aparecen en la página de características).
Declaramos un elemento que se describirá en el fichero elements.xml.
3. Creamos el fichero elements.xml(referenciado en el fichero feature.xml) con el siguiente contenido:
En este ejemplo introduciremos dos cambios(funcionalidades, características) en nuestra solución SharePoint:
- CustomAction : Crea una nueva entrada en el menú de SiteAction, esta entrada invoca la ruta /SitePages/Pagea.aspx. Esta ruta y página se crea(se provisióna) con el siguiente cambio definido en la característica.
- Module: Se crea la pagina con el nombre pagea.aspx en la ruta /SitePages/ utilizando como plantilla la pagina Page01.aspx que esta en la carpeta PageTemplates (esta carpeta y el fichero lo creamos en el siguiente paso).
4. En la ruta de la característica C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\FEATURES\HelloWorldFeature\ creamos la carpeta PageTemplates.
En esta carpeta creamos el fichero Page01.aspx con el siguiente contenido:
Esto es una página básica de SharePoint, utiliza la pagina master por defecto de SharePoint y se coloca en el contenedor principal(PlaceHolderMain).
5. Instalamos la característica en SharePoint con el comando stsadm, para hacerlo mas fácil he colocado el fichero intall.bat en la carpeta de la característica. El contenido del fichero intall.bat es el siguiente:
ejecutamos el fichero install.bat, si todo esta OK aparecerá un mensaje como este:
ahora tenemos que hacer un iisreset y acceder a nuestro sitio SharePoint.
6. La característica se ha instalado, ahora tenemos que activarla lo hacemos accediendo a la página de las características de sitios: desde la página de configuración del sitios, seleccionamos el enlace Características del sitio.
Ahora podemos activar la característica, haciendo clic en el botón "Activar"
7. Si todos los pasos se han hecho bien(seguro!!!) podemos ver que el menú de sitio contiene una nueva entrada que nos permite navegar a la nueva página que acabamos de "activar" con este ejemplo:
Colusiones
Las características es un mecanismo muy potente que permiten configurar los módulos o bloques que componen nuestras soluciones.
Permiten desplegar ficheros y recursos sin tener que usar herramientas como SharePoint Desginer, de esta forma nos facilita notablemente el paso entre distintos entornos(autoamizar paso entre el entorno de desarrollo y producción).