En este mini-artículo mostramos en qué consisten los calendarios de eventos avanzados, sin entrar en gran detalle.
Tareas y Eventos
Supongamos que pretendemos poder gestionar las Tareas y Eventos que correspondan a cada usuario. Para ello, los usuarios con permisos adecuados podrán crear Tareas y/o Eventos y asignárselas directamente a los usuarios que hayan de realizarlas. Y gracias a la funcionalidad de Suscripción a Alertas, que podremos asignar a las listas de Tareas o a los Calendarios de Eventos, o bien a sus elementos individualmente, podremos tener un control del cumplimiento de dichas Tareas o de la asistencia a dichos Eventos.
Ejemplo de Calendario de Eventos Básico
Este calendario de Eventos lo mostramos con una vista de Texto y a continuación con una vista de Calendario. Ambas están relacionadas y las modificaciones en uno se muestran en ambas.


Calendario de Eventos Avanzado (asociado a un área de reuniones).
Podemos llevar más allá el concepto de gestión de Eventos, de modo que a un evento se le asigne un área de trabajo en el que se gestionen otros datos relacionados con el mismo, como los Objetivos del Evento, Asistentes Convocados, Agenda, Biblioteca de documentos asociada, Tareas, Decisiones, Periodicidad y Recurrencia del evento, etc...
Es decir, partimos de un sitio en el que mostramos nuestro Panel de Eventos en vista de Lista (o de calendario). El icono
significa que nuestro Evento tiene un Área de Reuniones asociada. Esta opción se puede escoger al crear la lista de Eventos, de modo que a cualqueir evento le podamos asignar su Área de Reuniones.

Si vamos a ver un evento, pinchando en él, podemos ver todos los detalles relacionados con el mismo, así como la susodicha área de trabajo asociada que le hemos asignado previamente:

Y en dicha área de trabajo vemos todas las fechas en que se repite el susodicho evento (si es periódico), así como el resto de parámetros (objetivos, asistentes, agenda, etc...) que definen el área de trabajo de nuestro evento, permitiéndonos almacenar todo lo que nos interese de dichas reuniones.

Configuración del servidor
- Ahora que ya hemos publicado la plantilla (ver artículo anterior, Procedimientos para la administración y configuración del Infopath Server y las plantillas de formulario (I)), hemos de configurar el servidor para que esta plantilla se cargue en el mismo y sea efectiva. Para ello, desde la herramienta "Administración central", nos vamos a la pestaña "Administración de aplicaciones".

Y nos situamos en la sección de "Infopath Forms Services"

Es desde esta sección desde donde configuraremos y administraremos las plantillas de que vamos disponiendo.
Si pulsamos el link "Configurar Infopath Forms Services" podemos definir los parámetros de configuración:
- Permitir que los usuarios habiliten plantillas de formulario para el explorador.
- Procesar plantillas de formulario habilitadas para el explorador por los usuarios.
- Tiempos de espera de la conexión de datos.
- Tamaño de respuesta de la conexión de datos.
- Conexiones de datos HTTP ("Requerir SSL para autenticación HTTP en orígenes de datos")
- Autenticación de SQL incrustado.
- Acceso entre dominios para plantillas de formulario de usuario
- Otras.


- Si pulsamos el link "Administrar plantillas de formulario" veremos las plantillas que están implementadas actualmente y podremos cargar la nuestra.

Seleccionamos "Cargar plantilla de formulario" y le indicamos la ruta donde habíamos guardado nuestra plantilla en el equipo local.


Para comprobar que la plantilla no tiene errores, podemos pulsar el botón "Comprobar". En las pruebas realizadas esta comprobación nos informaba de errores en el formulario. Sin embargo, escogimos validar las plantillas y cargarlas desde línea de comandos con la herramienta STSADM.EXE.
Utilizamos las instrucciones:
- Stsadm -o verifyformtemplate -filename "C:\XXX\XXX\Nombredelaplantilla.xsn"
- Stsadm -o uploadformtemplate -filename "C:\XXX\XXX\Nombredelaplantilla.xsn"

La línea de comandos nos indica que la plantilla es de plena confianza, así como que se ha iniciado correctamente.
- Ahora hemos de Activar el formulario para una colección de sitios determinada. Seleccionamos la plantilla que hemos cargado --> "Activar para una colección de sitios" y seleccionamos el portal en el cual se va a colgar nuestro formulario dinámico.

- Tenemos ya una plantilla activada para una colección de sitios. Ahora lo que tenemos que hacer es, en algún sitio de esa colección, crear una Biblioteca de formularios. Nos situamos en la configuración de dicho sitio, y pulsamos "Crear nuevo contenido". En la página de crear, seleccionamos "Biblioteca de formularios"


Rellenamos los parámetros exigidos (Nombre: Biblioteca de formularios ) y pulsamos "Crear".

- Se nos ha creado la biblioteca de formularios. Acto seguido, vamos a la opción de "Configuración de Biblioteca de formularios" de la misma.

Activaremos la opción de utilizar los tipos de contenido en la biblioteca. Para ello, seleccionamos "Configuración Avanzada"

- En configuración avanzada de Biblioteca de formularios, configuramos la primera opción "Tipos de Contenido", y en "¿Desea permitir la administración de tipos de contenido?" seleccionamos "Sí"

Además, en "Documentos habilitados por el explorador", seleccionamos "Mostrar como página web"

- De vuelta a la Configuración de nuestra biblioteca de formularios, observaremos que disponemos de una sección nueva denominada "Tipos de Contenido". Pulsamos en el link "Agregar a partir de tipos de contenido de sitio".

Desde la nueva página web, en "Seleccionar tipos de contenido" desplegamos y seleccionamos "Microsoft Office Infopath".
Nos mostrará a continuación las plantillas que tengamos incorporadas en el servidor para la utilización de formularios de Infopath. Seleccionamos la que nos interesa, y pulsamos "Agregar". Se nos ha de mostrar en la sección de la derecha.


- Una vez que hemos terminado la configuración de la biblioteca de formularios, nos vamos a la propia Biblioteca y seleccionamos "Nuevo". En las opciones se nos mostrará la opción de creación de un nuevo formulario basado en la plantilla que habíamos cargado previamente en el servidor.

Si disponemos de múltiples formularios, podremos repetir este proceso y en la opción de "Nuevo" se mostrarán todos los tipos de formularios que podemos crear nuevos.
- Al ir a crear cualquier nuevo formulario en esta librería, automáticamente se cargará, vía web, el formulario Infopath seleccionado (cuya plantilla hemos subido al servidor de formularios). Las opciones de "Agregar", "Modificar" y "Eliminar", el histórico de las modificaciones, el control de versiones, y la asignación de permisos y seguridad a nivel de formularios se crean de modo automático. Adicionalmente se pueden crear flujos de trabajo con estas bibliotecas de formularios.

Si al rellenar el formulario modificamos cualquier valor de cualquiera de los campos (como es lógico)

al guardar el formulario habrá de hacerlo con los cambios realizados. A este nuevo formulario que hemos creado y rellenado le damos un nombre y pulsamos "Guardar"

Carga el documento en el servidor

Si cerramos ahora el formulario volveremos a la biblioteca de formularios en que estábamos trabajando y veremos que se ha creado el formulario nuevo.

y Voilá!
La seguridad y el acceso a los formularios es una funcionalidad que viene desarrollada en Sharepoint 2007 a nivel de todo el portal, así que en estos formularios no es necesario complicarse con ese tema; Sharepoint 2007 cuenta con un modulo de seguridad que puede llegar hasta el nivel de accesos para cada formulario.
Una de las funcionalidades que se incluye en la versión Enterprise de MOSS 2007 es el servidor de formularios, que en esta versión viene con el nombre de Forms Server 2007.
Con este servidor de formularios solo hemos de configurar la parte de diseño de los formularios con que queremos trabajar. Una vez que contamos con el diseño óptimo, lo colgaremos en el servidor de formularios y a continuación lo publicamos dentro del portal de MOSS 2007.
Podemos crear formularios muy complejos, con infinidad de campos, tablas dinámicas, campos que consumen información de bases de datos o web services, de modo rápido. Si más adelante queremos agregar un nuevo campo a un formulario solo hemos de actualizar el formulario que se encuentra en el servidor y todos los formularios del portal cambiarán automáticamente.
A continuación enumeramos y detallamos los pasos a seguir para configurar los formularios y el servidor.
Publicación de la Plantilla
-
Diseñamos un formulario con Infopath 2007, y lo guardamos como plantilla (archivo "
.xsn")

-
La plantilla debe ser creada con compatibilidad para ser mostrada en browser. Para ello, con la propia plantilla abierta en Infopath, seleccionamos "
Herramientas" --> "
Opciones de formulario"

-
A continuación, en la ventana que se nos abre de "Opciones de formulario", seleccionamos la categoría "
Compatibilidad", y chequeamos la opción de "Compatibilidad con el explorador:
Diseñe una plantilla de formulario que se pueda abrir en un explorador o en Infopath".

-
A continuación, marcamos la Categoría "
Seguridad y Confianza", y seleccionamos la seguridad
"Plena confianza (el formulario puede obtener acceso a los archivos y a la configuración del equipo)".

-
El siguiente paso es la publicación de la plantilla. Para ello, nos vamos desde el Infopath a "
Archivo --> Publicar..."

Se nos mostrará un "Asistente para la publicación". Escogemos dónde deseamos publicar la plantilla: "En un servidor de Sharepoint con o sin Infopath Forms Services"

Seguimos con el asistente, le señalamos el servidor de publicación:


Seguimos con el botón siguiente dejando lo que se nos muestra por defecto.

Especificamos la ubicación y el archivo de formulario que hemos salvado antes

Si queremos mostrar alguna columna podemos hacerlo utilizando el botón agregar que aparece a continuación. Esto puede resultarnos útil para la utilización de flujos de trabajo en función del cambio de valor de algún campo/columna.

Y escoger los campos para mostrar como columnas. Si no queremos mostrar ninguno podemos pulsar en "Siguiente" directamente.
A continuación comprobamos la información y pulsamos "Publicar"

Y si todo ha ido bien, pulsamos "Cerrar"

En el siguiente artículo publicaré la segunda parte.
Cuando nos planteamos el almacenamiento y gestión de los documentos de nuestra empresa o departamento, podemos optar por varias opciones. Un área de documentación podrá constar de una o más bibliotecas de documentos en los que se almacenará y gestionará toda la documentación necesaria.
Básicamente hemos de decidir si usamos una o más bibliotecas para albergar los documentos necesarios. Supongamos por ejemplo que el Departamento Financiero de nuestra empresa piensa almacenar y gestionar de modo adecuado Temas Generales, Temas Presupuestarios y Temas Tributarios.
Podemos optar por una de estas tres opciones:
- La creación de 1 biblioteca con 3 carpetas principales: General, Temas Presupuestarios, y Temas Tributarios, en los que se almacenen los documentos en la Biblioteca, y dentro de la carpeta que le corresponda.

- La creación de 3 bibliotecas principales, sin utilización de carpetas, albergando cada biblioteca la documentación sobre el tema que le corresponde.



- La creación de 1 biblioteca para el sitio, con un campo diferenciador desplegable que permita seleccionar el tema deseado, unido a la aplicación de filtros por parte de los usuarios. Para ello habrá que crear un nuevo tipo de columna de Elección.
Ejemplo de Documento de Temas Tributarios:


Ejemplo de Documento de Temas Prespuestarios:


A nivel de rendimiento y capacidad, las ventajas e inconvenientes de la utilización de una u otra propuesta son distintas. Durante el proyecto, habrá que analizar la cantidad de documentación que se va a tratar y el uso que se le va a dar, y contrastar dicho análisis con las indicaciones sugeridas por Microsoft para el Cálculo de Requisitos de Rendimiento y Capacidad con MOSS 2007
También será muy importante tomar la decisión en función del número de documentos que se pretenda almacenar, ya que existen unos parámetros de rendimiento de bibliotecas variables en función de si se usan o no carpetas en las bibliotecas, y el número de archivos que se almacenan en cada una de ellas.
Así a botepronto se puede estimar que podremos utilizar más de 2.000 elementos en una lista, sin que esto afecte al rendimiento. En caso de que incorporemos más archivos, habremos de utilizar contenedores de carpetas en la misma lista (para almacenar hasta 5 millones de elementos), o bien crear nuevas listas.
A nivel funcional, habrá que tener otros temas en cuenta, como quienes van a tener permisos, cómo se gestionan, si hay herencias, etc...
Cómo optimizar la Caché de Objetos para mejorar el rendimiento
Según el artículo de Steve Sheppard sobre el Object Cache , podríamos categorizar la compactación en 3 categorías:
- Inaceptable: Compactación de caché más de 6 veces / hora.
- Aceptable: Compactación de caché de entre 2 y 6 veces / hora
- Óptima: Máximo 1 compactación de caché /hora
Ojo, solamente hay que intentar esta compactación óptima si tenemos suficiente memoria física instalada en nuestros servidores, y si además tenemos suficiente memoria física libre para soportar otras operaciones críticas del servidor.
Deberemos monitorizar con regularidad los vaciados de memoria (caché flushes) porque son muy costosos en impacto de rendimiento. Un vaciado de memoria implica la eliminación de todos los contenidos de caché.
Estos vaciados son activados por la creación, eliminación o movimiento de una web. Pueden monitorizarse desde el Performance Monitor:
En Inicio -> Ejecutar escribimos "perfmon"

Se abre la consola del Performance Monitor, y sobre la pantalla, botón derecho "Agregar contadores"

Seleccionamos el Objeto de Rendimiento "Caché de publicación de SharePoint", así como los contadores de "Número total de vaciados de caché"

Si observas vaciados de caché durante las horas de producción, deberías revisar la gestión de la web.

Steve comenta su método para obtener un rendimiento aceptable de cara a los usuarios que necesiten economizar sus recursos sin sacrificar la memoria limitada, usando el "Número total de compactaciones de caché".

Los pasos son un método iterativo, y han de repetirse hasta alcanzar el nivel de rendimiento deseado. Estos pasos son:
- Comenzamos con 100MB, por defecto
- Capturamos 8 horas de datos de rendimiento de los WFEs durante horarios de carga habitual, utilizando el "Número total de compactaciones de caché". Al estar interesados en rastrear las compactaciones por hora, es aceptable capturar los datos en intervalos de 1 minuto.
- Tras el análisis de los datos, si excedemos el umbral para una compactación aceptable, podemos añadir 50MB al Tamaño Máximo de Caché y realizar el test de nuevo.
- Proseguimos hasta que tengamos una compactación adecuada.
MOSS 2007 permite que almacenemos en caché algunos elementos de página, léase datos de navegación y los datos obtenidos en las consultas de todas las listas: La caché de objetos se utiliza internamente para optimizar la representación de las páginas mediante el almacenamiento de las propiedades de los sitios, los diseños de página y las páginas.
Gracias a esta caché evitamos tener que recuperar los datos de campo de la BBDD cada vez que mostramos una página. También almacena en memoria caché datos de campo completo para una página, excepto los datos de los controles de elementos web en la página.
Para Gestionar la Caché de Objetos nos vamos a Acciones del Sitio -> Configuración del sitio -> Modificar toda la configuración del sitio

En Administración de la colección de sitios, escogemos el link de "Caché de objetos de la colección de sitios"

En la página que se muestra, podemos configurar diferentes parámetros. Comentaremos para qué sirve cada uno.
Tamaño de la caché de objetos
Ajustamos este valor para especificar el tamaño máximo de la memoria que se puede usar en la caché de objetos.
Es importante tener en cuenta que el valor de caché máximo es un límite, no un valor estático. Es decir, si la caché en algún momento va a sobrepasar el valor marcado (100MB por defecto), significa que será compactada para reducir el consumo de memoria a un nivel menor del límite estipulado.
Restablecimiento de la caché de objetos
Si activamos esta casilla, todas las entradas de la caché de objetos se vaciarán al Aceptar. En caso contrario, la caché administrará la caducidad de los elementos en función de si ha transcurrido su tiempo de espera o de si se han modificado en el sitio

Restablecimiento de caché basada en disco: caché BLOB
La caché basada en disco o caché BLOB es una forma de lograr un procesamiento más rápido del contenido almacenado en una base de datos de aplicación Web. Si la aplicación Web contiene archivos de gran tamaño, como imágenes y archivos multimedia, al habilitar la caché basada en disco se mejora el tiempo de entrega de páginas, ya que la caché almacena los archivos en el servidor Web cliente, lo que reduce el tráfico de base de datos.
La caché BLOB se puede habilitar en el archivo web.config de la aplicación Web a la que desee aplicarla. Los cambios que se realicen en el archivo web.config se aplicarán a todas las colecciones de sitios de la aplicación Web.
Si se selecciona esta opción, se vaciarán todas las entradas de la caché de disco al Aceptar. De lo contrario, la caché de disco se dejará como está y la caducidad de los elementos se administrará mediante la eliminación de los mismos si se cambian en el sitio o si se supera el tamaño del disco.

Cambios en la caché de consulta en todas las listas
La memoria caché de objetos también se usa para almacenar en memoria caché elementos que se recuperan como parte de consultas en todas las listas. Estas consultas agregan elementos de varias listas y sitios de su colección de sitios. El uso más común de estas consultas se encuentra en el elemento web Consulta de contenido. Cada uso de la consulta en todas las listas requiere una acción de ida y vuelta al servidor de la base de datos. Mediante la memoria caché de objetos, puede reducir considerablemente el número de acciones de ida y vuelta necesarias para atender las consultas en todas las listas y, por lo tanto, mejorar el rendimiento de características, como el elemento web Consulta de contenido, que presentan resultados de consultas en todas las listas
Especificar un periodo de tiempo para almacenar en caché los resultados de una consulta en todas las listas puede tener un efecto positivo en el rendimiento de la funcionalidad, aunque es posible que los resultados mostrados no reflejen los cambios más recientes de los elementos que devuelva la consulta. La consulta al servidor cada vez que se ejecuta una consulta en todas las listas produce resultados más precisos, con la contrapartida de un rendimiento más bajo en todo el sitio

Multiplicador de resultados de consulta en todas las listas: Número de elementos que recuperar
La configuración de Multiplicador de resultados de consulta en todas las listas controla el número de elementos que se recuperan y que se almacenan en memoria caché. Debido a que las consultas en todas las listas pueden recuperar elementos para varios usuarios con distintos permisos, es importante recuperar suficientes elementos de la consulta de modo que todos los usuarios vean los elementos correctos. Para garantizar que todos los usuarios vean los elementos correctos en los resultados de la consulta tras los recortes de seguridad, la memoria caché de consulta en todas las listas debe extraer más resultados de los solicitados originalmente. Esta configuración requiere un entero que especifique el multiplicador del número de elementos que debería recuperar la memoria caché de consulta en todas las listas.
- Establecer el multiplicador para un valor mayor recupera más elementos y consume más memoria. Un valor mayor es adecuado en un sitio web donde muchos usuarios tengan permisos únicos en diferentes listas y elementos.
- Establecer el multiplicador para un valor menor recupera menos elementos y consume menos memoria. Un valor más pequeño es adecuado en un sitio web donde los usuarios tengan la misma seguridad, como los usuarios anónimos en un sitio de Internet

Nos encontramos con el siguiente error en el visor de Eventos:
Tipo: Error
Source: crypt32
Category: None
Event ID: 8
Este error se repite 10 veces cada 5 minutos, en el visor de Aplicación.

El texto completo es:

Failed auto update retrieval of third-party root list sequence number from: <http://www.download.windowsupdate.com/msdownload/update/v3/static/trustedr/en/authrootseq.txt> with error: This network connection does not exist.
o bien
Error en la recuperación de actualización automática del número de secuencia de la lista raíz de terceros de: <http://www.download.windowsupdate.com/msdownload/update/v3/static/trustedr/en/authrootseq.txt> con el error....
La solución al error consiste en desactivar la actualización de los certificados raíz en los servidores que se indiquen en el visor de eventos (revisar que no haya otros afectados), según nos indica el siguiente KB317541 de Microsoft:
"Para evitar este comportamiento, debe conectarse a Internet o desactivar el componente Actualización de certificados raíz. Para desactivar el componente Actualización de certificados raíz, siga estos pasos:
- En el Panel de control, haga doble clic en Agregar o quitar programas.
- Haga clic en Agregar o quitar componentes de Windows.
- Desactive la casilla de verificación Actualización de certificados raíz y continúe con el Asistente para componentes de Windows."
Ojo, si hay un proxy, hay que realizar algún paso más, que viene bien explicado.
En el artículo Software para Sharepoint: Frameworks y Paquetes de idioma habilité los links a los distintos paquetes de software de frameworks y sus paquetes de idioma.
Ahora mostramos los links para los paquetes de idioma de WSS y MOSS.
Para instalar MOSS hay que disponer del la plataforma correcta, y sus últimas actualizaciones.
Enumero primero los links a los Frameworks y sus Service Packs, y a continuación los paquetes de idioma de los mismos.
Y ahora los paquetes de lenguaje (de los frameworks): recuerda que si tienes el Sharepoint instalado en un idioma determinado, no necesitas instalar el paquete de lenguaje en dicho idioma.
Llevo ya cuatro o cinco años (¿o seis? cómo pasa el tiempo...) trabajando con Sharepoint, desde la versión de WSS 2.0 y SPS 2003, hasta las actuales WSS 3.0 y MOSS 2007. Cierto que también trabajé un poco con Sharepoint 2001, pero los juguetes no cuentan como herramientas
.
En estos años la web ha ido avanzando, y lo que ahora se conoce como Web 2.0 se inició, al menos en parte, con la mejora de la red y la opción que tomaron muchos usuarios de utilizarla como medio para aportar y recibir conocimiento de y a otros.
En mi caso particular, llevo muchos años trabajando de autónomo como Instructor y Consultor Sharepoint, y siempre he "absorbido" toda la información que muchas de estas personas han publicado desinteresadamente. Sin embargo, por diversos motivos, nunca he aportado nada, y la verdad, me siento en deuda. Así que espero a partir de ahora ir aportando mi granito de arena a la comunidad Sharepoint.
Gracias a todos los Gustavo Vélez, Héctor Insúa, Carlos Segura Sanz, CIIN y tantos tantos otros, tanto en Español como en Inglés, que me han ido aportando conocimiento en este mundillo.
Carlos Más