Está en la página 1de 32

CompartiMOSS

Revista Especializada en Tecnologas SharePoint


Volumen

2008

Gestin Eficiente de LOGS en SharePoint Busquedas Empresariales

E s p a o l

02

Solucion al problema Active X Validacin de datos en la Data Form Web Part 4 Pilares Porta Web Tips El centro de Registros de Moss Enloqueciendo al elemento Web Editor de contenido

CompartiMOSS
Gracias a ustedes, la comunidad hispanohablante de SharePoint, y la aceptacin que le brindaron a la primera entrega es que hoy estamos aqu con el Numero 2 de CompartiMOSS, renovado, con aportes de lectores, y con ms contenido Ms de 3000 descargas del Numero 1 de la revista, una excelente aceptacin, muy buenos comentarios y sobre todo, el compromiso y la colaboracin de todos ustedes, nos ha dado la motivacin para continuar con la idea, y seguir impulsando el intercambio de ideas y conocimientos alrededor de SharePoint. Queremos decirles que nos sentimos profundamente agradecidos y contentos por haber logrado el objetivo inicial, el cual da nombre al Magazine Compar tiMOSS. Aunque sabamos que SharePoint es un producto extensivamente utilizado en Latinoamrica y Espaa, es innegable que el nmero de descargas del primero nmero ha sobrepasado con creces nuestras expectativas, y demuestra el impacto que herramientas de colaboracin como WSS y MOSS estn teniendo en el mundo de la informtica en todo el mundo. La aceptacin de SharePoint ya es visible en el mundo de habla hispana, ahora lo que falta es que Microsoft lo reconozca, y comience a generar informacin en nuestro idioma, y apoyo tcnico y logstico en todas las formas posibles. Una primera aproximacin al apoyo de Microsoft a la comunidad la hemos visto en el Primer Encuentro para partners de Microsoft LATAM en la Educacin, en Cancn, Mxico, realizado a principios de mayo. Ms de 200 participantes de toda Latinoamrica se reunieron para ver y analizar las nuevas tendencias y productos de Microsoft utilizables en el mundo de la Educacin, y para discutir nuevas estrategias y formas de incrementar la presencia de la empresa y sus productos en el mbito educativo. SharePoint representa una de las tecnologas de punta en este sector, gracias a su adaptabilidad y posibilidades para mejorar la comunicacin e intercambio de informacin, y por su presencia en productos especializados para la Educacin, como son el SharePoint Learning Kit, el Learning Gateway y live@edu. De regreso a CompartiMOSS, en esta ocasin contamos con un diseo renovado y con artculos escritos por varios de nuestros lectores, adems, como podrn ver, esta vez tenemos temas para todos los gustos: Administradores, Arquitectos, Desarrolladores, Usuarios esperamos que la comunidad siga creciendo, que las mejoras sean de su agrado y que sobre todo, sigan leyendo y contribuyendo con el magazine.

CompartiMOSS es una publicacion independiente de distribucin libre en forma electrnica. Las opiniones aqui expresadas son de estricto orden personal. Direccin General Gustavo Velez Hector Insua Diseo & Diagramacin: Raquelina Sanchez

Contctenos gustavo@gavd.net hinsua@gmail.com raquelina.sanchez@gmail.com blogs www.sharepoint2007.co.cc www.gavd.net Escribanos: compartimoss@gavd.net Vistenos: www.compartimoss.com

Hector Insua Gustavo Velez

CompartiMOSS 3

7
Busquedas Empresariales

CompartiMOSS
17
en SharePoint

Tecnologa SharePoint N2

Gestin Eficiente de LOGS

24 28
4 Pilares Porta Web

Solucion al problema Active X

32
El centro de Registros de Moss

40

Validacin de datos en la Data Form Web Part

Empresa

Busquedas empresariales

En el escenario empresarial uno de los temas ms importantes y que son ms cuidados a nivel de informacin es el de las bsquedas, tener lo que se requiere en el momento en el que se requierees uno de los principios ms importantes que rigen a la informacin. Existen distintos escenarios que nos pueden ayudar a entender este tema:

mbitoWeb
Para cualquier empresa es vital estar informado de las cosas que pasan en el mundo y que giran en torno a su lnea de negocio, a la vez que no se puede descuidar la presencia de negocio en Internet que en el mundo actual est en la agenda de toda empresa. Para ello podemos encontrar soluciones como Windows Live Search desde una perspectiva y el mismo SharePoint desde la otra.

mbito Interno

Las redes empresariales en todos los casos debern contar con un punto de unin en donde la informacin est disponible para ser compartida dentro de la organizacin, es por ello que el servicio de Intranet es algo que la gran mayora busca como solucin y es aqu donde SharePoint juega un papel importante ofreciendo un servicio de bsqueda empresarial enriquecido y completo que le permite a los usuarios acceso a la informacin cuando y donde lo necesiten, mientras que a los profesionales de la tecnologa (ITPros) se les provee de una plataforma de clase Es de todos sabido que el mayor peso de empresarial integrada. Con SharePoint volumen de informacin recae siempre en podemos cubrir necesidades de negocio este mbito, es por ello que tambin e s p e c f i c a s d e b s q u e d a c o m o : podemos encontrar soluciones de negocio Sistemas de lnea de negocio y para dicho campo como lo es Windows fuentes de Datos Estructuradas Desktop Search, el cual puede ser usado desde equipos con Windows Vista de manera Informacin no estructurada integrada al mismo Sistema y con Windows donde sea en la organizacin XP como un servicio adicional.

mbito Personal

Perfiles Personales de usuarios Sitios Web Externos y Servicios de Subscripcin

CompartiMOSS 7

Cules son entonces las caractersticas que hacen de SharePoint la solucin completa para las bsquedas empresariales? Veamos: Bsqueda dedicada de personas Indexacin del (los) Directorio(s) Activos(s) Pestaa dedicada en el Centro de Bsqueda Resultados agrupados por Distancia Social Informacin de Lnea de Negocios Acceso a travs del Catlogo de Negocios (BDC) WebParts dedicadas Uso sin necesidad de cdigo Integracin con mbitos (Scopes) y el Centro de Bsqueda Personalizacin Configuracin y uso de metadatos Configuracin de mbitos (Scopes) Diferentes niveles de personalizacin (WebParts, XSLT/CSS, Modelo de Objetos) Reportes de uso Ahora bien, para ver la importancia que Microsoft le da al valor de las bsquedas empresariales basta con echar un vistazo a las distintas versiones del producto que se ofrecen y a las caractersticas de cada una de ellas, para ello la siguiente tabla comparativa puede sernos de mucha ayuda, en ella se presentan las distintas caractersticas que son soportadas por las bsquedas en cada versin del producto:

1 2

Requiere de Protocol Handler(s) adicionales FS no soporta Security Trimming personalizado 3 FS no cuenta con pestaas en su Centro de Bsqueda 4 Tcnicamente no existe, pero se recomiendan 50 millones de documentos, depende adems del hardware. Adentrndonos a temas ms tcnicos podemos hablar de algunos detalles sobre la forma en que trabajan las bsquedas empresariales en SharePoint; por ejemplo, la arquitectura que encontramos dentro de SharePoint para el funcionamiento de las bsquedas, que puede ser representada con la siguiente estructura:

Como se puede apreciar en la estructura anterior, contamos con dos motores separados que nos ayudan a tener un servicio de bsquedas completo, uno de ellos se encarga de toda la parte de indexacin de contenido, mientras que el otro se encarga de responder a las peticiones de bsqueda de los usuarios, dichos motores pueden ser puestos por separado fsicamente, usando ms de un servidor para el de bsquedas y uno solo para el de indexacin, lo que permite en situaciones de gran cantidad de peticiones, balancear la carga de trabajo y mantener un performance estable y adecuado para los usuarios. Lo anterior lo podemos entender mejor con la siguiente imagen:

CompartiMOSS 9

Como se puede apreciar, el servicio de indexacin solo podr ser nico, sin importar la estructura, mientras que el servicio de bsqueda puede ser repartido en ms de un servidor, los cuales estn conectados al servicio de indexacin, que se encarga de realizar la propagacin de ndices a todos los servidores que compongan el servicio de bsqueda.

Por default SharePoint contiene una fuente de contenido actualizada automticamente que contiene todos los sitios locales creados sobre SharePoint. Es posible limitar el rastreo a sitios especficos de una fuente de contenido con la ayuda de las reglas de rastreo; ahora bien, para el caso de la bsqueda de personas se requiere antes llevar a cabo el proceso de importacin de perfiles del directorio activo y despus realizar un rastreo completo de las fuentes de contenido. Los tipos de fuentes de contenido que son soportados por SharePoint son: Sitios de SharePoint Sitios Web Recursos compartidos de archivos Carpetas pblicas de Exchange Catlogo de Negocios Asignacin de Propiedades de Metadatos Dentro de SharePoint podemos encontrar dos tipos de propiedades de metadatos, las rastreadas y las administradas; para las primeras es necesario llevar a cabo el proceso de rastreo de fuentes de contenido, ya que durante dicho proceso las propiedades son descubiertas, mientras que otras que son bsicas de SharePoint ya se encuentran disponibles. Para el caso de las segundas es necesario crearlas dentro del Proveedor de Servicios Compartidos (SSP), ya que es el encargado de administrar dichas propiedades para el uso en, por ejemplo, el servicio de resultados de bsquedas o el de filtrado de bsquedas; estas propiedades se basan en las primeras citadas, por tanto, una propiedad administrada basada en propiedades personalizadas, solo puede crearse despus de hacer el rastreo de las fuentes de contenido, pueden adems crearse propiedades administradas basadas en ms de una propiedad rastreada.

Protocol Handlers
Un tema necesario para entender las bsquedas es el de los manejadores de protocolos, que son componentes de software del Filter Daemon que amplan las capacidades del servicio de indexacin y permiten que las fuentes externas de datos sean rastreadas por el servicio de indexacin. Un Protocol Handler implementa el protocolo necesario para tener acceso a la fuente de contenido en su formato nativo; por tanto, expone la fuente para poder ser rastreada por el servicio de indexacin. Existen protocolos que ya son soportados de manera predeterminada por el servicio de indexacin de SharePoint (Out Of the Box), los cuales son: Archivos compartidos/Web: file, http, https SharePoint v2: sps, spsimport, spss, sts, sts2, sts2s SharePoint v3: sps3, sps3s, sts3, sts3s BDC: bdc, bdc2 Otros que ya se encuentran disponibles a travs de internet son: Un IFilter contiene la informacin necesaria para entender como extraer la informacin ms significativa del archivo en cuestin, como los metadatos y el contenido. Los IFilters soportados por SharePoint de manera predeterminada se pueden encontrar en la pgina de Microsoft , una clasificacin de los mismos es la siguiente: Contenido Web: ascx, asp, aspx, htm, html, jhtml, jsp, mspx, php, url Documentos Office: doc, docm, docx, dot, ppt, pptm, pptx, pub, vdx, vsd, vss, vst, vsx, vtx, xls, xlsm, xlsx Email: eml, msg, exch Otros: mhtml, mht, odc, msf, txt, xml Microsoft lanzo un en versin de 32 y de 64 bits, con soporte para tipos de documentos adicionales Existen otros IFilters que podemos encontrar va Web como: , , , , por mencionar algunos; sin olvidar que se pueden crear los propios.

Lotus Notes Documentum WorkSite


Finalmente podemos apoyarnos en el para desarrollar Protocol Handlers personalizados.

Fuentes de Contenido
Las fuentes de contenido representan un contenedor arbitrario de informacin y son usados por SharePoint para saber qu contenido ser rastreado, por lo que requieren de por lo menos una direccin de inicio, aunque esto no es restrictivo ya que pueden ser proporcionadas mltiples direcciones. La direccin de inicio que es usada dentro de una fuente de contenido no puede ser rehusada en otra y cada direccin requiere de un Protocol Handler que le ayude a realizar su labor.

IFilters
Los IFilters son componentes de software que son requeridos por algn Protocol Handler cuando es encontrado un documento que requiere ser indexado; dependiendo de la extensin del archivo, se usar el IFilter necesario.

CompartiMOSS 10

mbitos
Un mbito se entiende como un filtro aplicado a los resultados de bsqueda y que puede ser usado por el usuario para limitar los resultados mostrados y encontrar informacin ms especfica de manera ms rpida, algo que ya comentamos al inicio de este artculo. Para crear un mbito es necesario definir reglas sobre la informacin, que permitan definir qu contenido indexado es el que se desea obtener; por default SharePoint crea dos mbitos: Todos los sitios Personas Cuando un mbito es creado, es necesario especificar la pgina sobre la que trabajar el mismo para mostrar los resultados de bsqueda, por tanto se vuelve indispensable crear una pgina de resultados dentro de nuestros sitios de SharePoint que trabajarn con dicho mbito. Ahora bien, existen dos niveles sobre los que se pueden crear mbitos de bsqueda: Proveedor de Servicios Compartidos (SSP); un mbito creado a este nivel podr ser usado en cualquier coleccin de sitios que se encuentre bajo dicho Proveedor. Coleccin de Sitios; un mbito creado a este nivel solo estar disponible dentro de los sitios que componen dicha coleccin, mientras que para las dems colecciones de sitos, dicho mbito ser inexistente.

Configuracin de bsquedas a nivel Coleccin de Sitos


Dentro de cada coleccin de sitios es posible realizar algunas configuraciones al componente de bsquedas, por ejemplo el usar o no mbitos personalizados, usar un centro de bsquedas para la coleccin o usar una pgina administrada por SharePoint para mostrar los resultados. Tambin encontraremos la posibilidad de crear mbitos personalizados a nivel coleccin de sitios y configurar los mbitos que sern posibles de utilizar, ya sea que sean proporcionados por el Proveedor de Servicios Compartidos (SSP) o los creados dentro de la misma coleccin de sitios. Otra cosa que puede ser configurada es la creacin de un glosario de trminos importantes dentro de la organizacin, conocido en SharePoint como palabras clave; la asociacin de sinnimos, la configuracin de resultados ms probables (best bets), fechas de inicio, de finalizacin y de revisin y, finalmente la configuracin de un contacto que sea el administrador de bsquedas.

Visibilidad
La visibilidad la podemos entender como la posibilidad de permitir o negar que cierto contenido aparezca dentro de los resultados de bsqueda; al negarse, dicho contenido no ser indexado por el servicio correspondiente. Existen tres niveles de visibilidad en SharePoint: Sitio, con esto se permite o niega la indexacin de todo un sitio, tomando en cuenta la configuracin de permisos de las pginas aspx que componen al mismo Lista o Biblioteca Carpeta

Pginas Autoritativas
La configuracin de pginas autoritativas ayuda a priorizar los resultados dentro de las bsquedas; en otras palabras, es una manera de influenciar la relevancia de los resultados de las bsquedas ligadas a las pginas autoritativas. Para ello encontramos cuatro niveles: Ms autoritativas De segundo nivel De tercer nivel De nivel mnimo El orden en el que se muestra la lista es el orden de importancia y por tanto el orden en el que se mostrarn los resultados de las bsquedas, entendiendo un orden de importancia de mayor a menor.

Centro de Bsquedas
El centro de bsquedas se compone de dos tipos de pginas, la de bsqueda y la de resultados de bsqueda, en la primera podemos encontrar las pestaas de bsqueda (no para el caso de las versiones For Search) y la caja de bsqueda; para el caso de la pgina de resultados tenemos nueve distintas secciones: Pestaas Caja de Bsqueda Resultados Alta confidencialidad Estadsticas Paginacin Acciones Palabras Clave y Best Bets Quiso decir?

CompartiMOSS 12

CompartiMOSS 13

Existe tambin la opcin de bsqueda avanzada donde tenemos componentes para especificar mejor la forma de nuestra bsqueda, por ejemplo con las propiedades administradas, los mbitos, lenguajes y tipos de contenido.

A nivel Coleccin de Sitios encontramos: Cuatro reportes de consultas: Consultas en los 30 das anteriores Consultas en los 12 meses anteriores Principales consultas en los 30 das anteriores Consultas por mbito en los 30 das anteriores Cinco reportes de resultados de bsqueda de los ltimos 30 das: Principales pginas de destino de resultados de bsqueda Consultas con cero resultados Resultados ms probables con ms clics (best bets ms visitados) Consultas con cero resultados ms probables (resultados sin Best bets) Consultas con bajo ndice de clic sobre aviso

Cmo es que se lleva a cabo el proceso de filtrado de la informacin mediante el security trimming? Veamos: Proceso de indexacin: 1. 2. 3. El Servidor de rastreo obtiene la informacin de los contenidos (Protocol Handler/IFilter) El ndice es creado en el Ser vidor de indexacin localmente El servidor de indexacin escribe las propiedades y la informacin de seguridad en la Base de Datos de Bsqueda Pr o c e s o d e B s q u e d a : 1. 2. 3. El usuario realiza una bsqueda en el Front-End Server El Front-End contacta al servidor de bsqueda Un arreglo de GUIDs (Global Unique Identifiers) que indican los elementos que contienen las palabras de la bsqueda es regresado al Front-End El Front-End contacta a la Base de Datos de Bsqueda y ajusta los resultados en base al contexto de seguridad del usuario (security trimming) Solo los resultados disponibles para el usuario son devueltos al Front-End para que los muestre al usuario

Reportes
Los reportes o informes de uso de bsquedas nos muestran informacin relevante sobre el uso que dan los usuarios al componente de bsquedas de SharePoint, dichos reportes los tenemos a nivel del Proveedor de Servicios Compartidos (SSP) y a nivel de Coleccin de Sitios A nivel SSP encontramos los siguientes reportes divididos por el tipo de servicio: Cinco reportes de consulta Consultas en los 30 das anteriores Consultas en los 12 meses anteriores Principales colecciones de sitios de origen de consulta en los 30 das anteriores Consultas por mbito en los 30 das anteriores Principales consultas en los 30 das anteriores Cinco repor tes de resultados de bsqueda de los ltimos 30 das: Principales pginas de destino de resultados de bsqueda Consultas con cero resultados Resultados ms probables con ms clics (best bets ms visitados) Consultas con cero resultados ms probables (resultados sin Best bets) Consultas con bajo ndice de clic sobre aviso

4.

5.

Seguridad
Como ltimo punto hablemos de la seguridad dentro de las bsquedas. Primero podemos decir que la cuenta de acceso que es usada para el rastreo de las fuentes de contenido solo requiere tener permisos de lectura, con lo que limitamos la posibilidad de ataques. Ahora bien, SharePoint usa de manera predeterminada el security trimming para asegurarse que los usuarios no vern contenidos o links a contenidos que ellos no tienen permiso de ver. En SharePoint 2003 exista una versin de sta tcnica en las bsquedas pero no en la navegacin. Esta tcnica no puede ser deshabilitada usando configuraciones especiales (Administracin Central o STSADM) o claves de registro mgicas. Ni siquiera en el Modelo de Objeto existen mtodos que puedan ser usados para burlar el security trimming. Solo en algunos escenarios (principalmente Sitios de Internet) los usuarios podrn ver todos los resultados aunque no tengan permisos, pero debern tener una clave de acceso para poder entrar a dichos resultados.

Conclusiones
Dentro de este artculo hemos podido revisar cada una de las posibilidades que nos brinda SharePoint en el tema de bsquedas empresariales; como hemos podido apreciar, Microsoft se ha tomado muy en serio dicho tema dentro de la nueva versin 2007 y ahora nos ofrece una solucin completa que cuida muy bien cada uno de sus aspectos importantes y nos ofrece una gama de posibilidades inmensa; el mismo tema de bsquedas es muy grande dentro de SharePoint, como lo hemos podido apreciar en este artculo y entender y dominar cada uno de los aspectos que abarca es una labor ardua para cualquier ITPro. Espero que lo que les he ofrecido aqu sirva de gua para comenzar a adentrarse en la materia. Para todos aquellos que estn ms orientados a Windows SharePoint Services 3.0, tambin existe una solucin provista por Microsoft que cubre las bsquedas en ese sistema: Search Server 2008, que tambin se encuentra en versin Express. Saludos a todos

CompartiMOSS 14

Vladimir Medina vmedina@sharepoint.com.mx Blog: http://sharepointmx.mvps.org/blogs/medinav

Empezaremos por la configuracin del Generador de LOGS, para lo cual, accedemos a la Administracin Central de SharePoint, y dentro de OPERACIONES, encontramos el siguiente segmento:

Gestin Eficiente de LOGS en SharePoint


Dentro de las tareas rutinarias de los administradores de SharePoint, una de las ms proactivas es la revisin completa de los Logs de SharePoint, que por defecto se almacenan en: \Program Files\Common Files\Microsoft Shared\web server extensions\12\LOGS
Ahora, los LOGS son un registro muy completo del funcionamiento de la herramienta, pero si no son configurados correctamente, pueden provocar reducciones en el rendimiento del servidor (sin contar con la cantidad de espacio que suelen ocupar estos archivos en nuestro Disco Duro). Me he encontrado con casos donde la carpeta LOGS, ubicada en el disco de Sistema del servidor, ocupa de 2 a 4GB debido a fallas en la parametrizacion de los mismos, ocasionando graves perjuicios al Servidor. Como dijimos, los LOGS nos dan muchsima informacin, ms de la que necesitamos para una supervisin optima de los servicios, lo cual generalmente nos provoca un rechazo al anlisis de los mismos, debido principalmente a que son : Archivos de Gran Tamao y con Mucha Informacin. Difciles de Analizar en Tiempo Real. Formas de Acceso Complejas. Datos Repetitivos y Poco Claros. No Brindan una solucin efectiva al Problema. Bien, veamos un ejemplo de un archivo de LOGS en su forma normal, es decir, editndolo directamente: Esta pantalla est dividida en las siguientes reas: Programa de Mejora de la Experiencia del Cliente Nos permite la subscripcin annima en el Programa de Mejora de la experiencia del cliente, el cual informara a Microsoft de los Errores que se generen en la aplicacin, para su posterior anlisis. Informes de Errores Bsicamente seleccionamos si queremos recopilar informes de errores o no y parametrizar bsicamente como queremos gestionarlos. Limite de Eventos Y esto es solo la cuarta parte del ancho del archivo de Texto, ya que las columnas que maneja el archivo de LOGS son las siguientes: Timestamp Process TID Area Category EventID Level Message Correlation Es donde debemos configurar que tan completo sea el Log y es el punto clave donde se debe evaluar correctamente el tipo de monitoreo a realizar, cuanto ms especifico sea, mas fcil ser detectar errores. Por norma necesitamos evaluar solamente eventos de Advertencia y superiores. Luego de ello, accedemos a Registro de Diagnostico

CompartiMOSS 16

CompartiMOSS 17

La categorizacin de Eventos nos permite evaluar en periodos especficos, errores puntuales, por ejemplo, si se nos presentan errores en Forms Server, querremos generar un log solo para dichos eventos a fines de que el Troubleshooting sea orientado solamente a los incidentes que se nos presenten con Forms. A continuacin veremos algunas de las categoras que podemos seleccionar. Pero a pesar de ello, evidentemente el log seguir teniendo un tamao considerable, ajustemos un poco ms la estructura del archivo, seleccionando el evento Menos Critico a incluir en el LOG de Eventos:

Esta Herramienta es sumamente completa, y su uso es muy simple, iniciamos configurando el FARM, para lo cual, se cuenta con un asistente automtico de Discovery, el cual detecta los servidores configurados para iniciar el anlisis:

De esta forma, seleccionando Error de Auditoria o Advertencia, se generaran lneas especificas, facilitndonos la tarea de descubrir el Error. De igual manera, aplicamos un nuevo filtro para el Registro de Seguimiento: Seleccionaremos Medio para controlar solo los verdaderos errores. De esta forma, no solo lograremos reducir el Tamao del LOG sino que tendremos una poderosa herramienta para solucionar inconvenientes. A continuacin podremos definir el camino donde guardaremos estos logs; ya habamos visto cual es el camino por defecto, mi consejo es que utilicemos una nueva carpeta, fcilmente identificable y en otra unidad de disco que no sea la de sistema para mejorar la performance del servidor. Ejemplo : d:\mosslogs

El nmero de Archivos de Registro, nos permite, conjuntamente con el tiempo de uso de cada uno de ellos, tener un control histrico del funcionamiento del server, en este caso 96 Archivos, generndose cada 30 minutos nos da un total histrico de 48 horas de informacin del servidor. Tiempo ms que suficiente para monitorear, si filtramos eficientemente el log, podemos elevar el nmero de minutos para utilizar un archivo a 60 y el nmero de archivos de registro a 168 para tener un histrico de una semana (7 Das) en nuestro servidor. Seleccionamos los servidores del FARM para monitorear y comienza el proceso, en la ventana principal:

El anlisis de estos archivos supone un trabajo complejo, afortunadamente existen algunas herramientas generadas para hacer este trabajo por nosotros, analizaremos 2 de ellas: Nombre SharePoint Logging Spy Fabricante SharePoint@stiow.co.uk WebSite http://www.codeplex.com/SharePointloggings py/ Precio Freeware

Se detallan en Color Rojo los Eventos de Nivel Critico (High) que son a los cuales debemos prestar ms atencin. Tambin se nos brinda informacin adicional de cada uno de los eventos, posicionndonos sobre ellos y haciendo doble click sobre el evento, podemos Realizar la bsqueda de mayor informacin en los sitios de: Live y MSDN as como tambin ver ms detalles del evento en un cuadro de texto el cual nos permite copiar la informacin para luego r e a l i z a r b s q u e d a s e n l a We b . Adicionalmente contamos con otras herramientas (Desde el Men Windows) como ser el STSADM Helper el cual nos detalla los parmetros de ejecucin del comando que estemos buscando.

a parmetros provistos Out Of The Box y al igual que el SharePoint Logging Spy, su funcionalidad es ahorrarnos valioso tiempo en la administracin y deteccin temprana de Errores en nuestros servidores.Basicamente PAL es un VBScript que requiere de Parametros y argumentos para monitorear nuestros LOGS de Performance.Para instalar PAL necesitamos instalar Previamente 2 Herramientas de Microsoft, Log Parser 2.2 y Microsoft Office Web Components 2003 (Inclusive si tenemos instalado Office 2007). Pal presenta una interfaz un poco compleja y solo apta para entendidos ya que maneja trminos que, si no nos son familiares, sern complejos de entender y por tanto configurarla de forma eficiente.

Especificamos con el Botn EDIT, los parmetros para monitorear:

Los pasos 3 y 4 nos permiten configurar el Intervalo de tiempo para el Anlisis y luego, adicionamos esos parmetros al Batch que se ejecutara, seguidamente, utilizamos el botn EXECUTE para iniciar el monitoreo previo a la generacin de Reportes HTML donde tendremos la valiosa informacin que buscamos

Tambin es posible generar y guardar el Reporte en formato XML para registros de monitoreo. Como podrn ver, es una herramienta simple pero muy potente, de esas que siempre nos sacan de apuros y nos ayudan con nuestras tareas diarias como A d m i n i s t r a d o r e s d e S h a r e Po i n t . Nombre Performance Analysis of Logs (PAL) Tool Fabricante SharePoint@stiow.co.uk WebSite http://www.codeplex.com/PAL Precio Freeware Esta herramienta nos permite, mediante el uso de logs, determinar problemas de performance en nuestro servidor, mediante la lectura de Counters de Performance y el anlisis en base

Primero identificamos el Path donde estn a l m a c e n a d o s l o s LO G S , y l u e g o determinamos el tipo de Contenido (Aplicacin) para la cual trabajaremos con el LOG.

CompartiMOSS 20

La Ejecucin, abre una ventana de Comando donde podemos ver ms informacin del producto y los parmetros ejecutados:

Y finalmente, un ejemplo de cmo podemos visualizar la informacin generada.

Los Complementos para la ejecucin de PAL se Pueden Descargar de los Siguientes Links : Log Parser 2.2 http://www.microsoft.com/downloads/details.aspx?FamilyID=890cd06babf8-4c25-91b2-f8d975cf8c07&DisplayLang=en Office Web Components 2003 http://www.microsoft.com/downloads/details.aspx?FamilyID=890cd06b-abf8-4c25-91b2f8d975cf8c07&DisplayLang=en Espero que el artculo les sea de utilidad, y como siempre, cualquier consulta o sugerencia no duden en hacrnosla llegar a nuestro Correo.

Hctor Insua (hinsua@gmail.com)

CompartiMOSS 22

noticias.noticias.noticias.noticias.noticias.noticias
Sharepoint & BlackBerry?
Uno de los problemas de BlackBerry para la integracion con SharePoint es la imposibilidad de estos dispositivos de Renderizar contenido ASP .NET, los formularios Infopath se renderizan como Web Forms Standard y no son soportados. Pero agregar soporte para dispositivos adicionales no es tan dificil en SharePoint y puede ser realizado adicionando informacion al archivo "compat.browser" que se encuentra en la carpeta "App_Browsers" dentro del Directorio Virtual de SharePoint, lo unico que hay que hacer es adicionar el siguiente codigo : <!-- BlackBerry RIM Browser --> <browser id="RIM40" parentID="Default"> <identification> <userAgent match="BlackBerry" /> </identification> <capabilities> <capability name="isMobileDevice" value="true" /> <capability name="javascript" value="true" /> <capability name="ecmascriptversion" value="1.3" /> <capability name="version" value="${version}" /> <capability name="majorVersion" value="${major}" /> <capability name="minorVersion" value="${minor}" /> <capability name="supportsCss" value="true" /> <capability name="frames" value="false" /> <capability name="cookies" value="true" /> <capability name="isColor" value="true" /> <capability name="requiresLeadingPageBreak" value="true" /> <capability name="requiresUniqueFilePathSuffix" value="true" /> <capability name="suppor tsBold" value="true" /> <capability name="supportsFontSize" value="true" /> <capability name="supportsImageSubmit" value="true" /> <capability name="suppor tsItalic" value="true" /> <capability name="requires303Redirect" value="true" /> </capabilities> </browser> Con esto, su dispositivo BlackBerry sera reconocido como Mobile y Forms Server podra renderizar el contenido de la forma apropiada.

PodCasting Kit for SharePoint!

Una buena noticia, ya se encuentra disponible el PodCasting Kit para SharePoint, en descarga directa desde el Sitio de Codeplex. Algunas de sus funcionalidades : Access audio or video podcasts on PCs, Windows Mobile devices, Zune devices and any other devices that play podcasts Share content by producing personal podcasts and publishing content on PKS Connect and engage with podcasters via integrated instant-messaging programs Find the most relevant content using a rating system, tags clouds and search functions Receive automatic podcast updates by subscribing to RSS feeds, fully compatible with Zune and other devices that play podcasts Play podcasts in real time using Silverlight and progressive playback Descarga y mas info en : http://www.codeplex.com/pks.

Microsoft Sharepoint

Links de Sitios Creados en SharePoint 2007


Os envo unos sitios que hemos desarrollado usando MOSS

Vinculos

Solucin l problema
en vista hoja de Datos

ActiveX

http://www.adecco.co.uk/

Este problema se da cuando intentamos acceder en modo Vista de Datos. Nos muestra una pantalla tal que

Lo que tenemos que hacer para solucionarlo es simple: Cerramos todos los Internet Explorer que tengamos abiertos Nos vamos a Inicio, Ejecutar, y tecleamos REGEDIT (intro) En el registro nos vamos a HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\ActiveX Compatibility. Y Borramos la Carpeta : Sub-Key: {65BCBEE4-7728-41A0-97BE14E1CAE36AAE} Una vez modificada, abrimos internet Explorer y comprobamos que funciona correctamente.

CompartiMOSS 24

http://www.adecco.no/Pages/Default.aspx

http://www.alexandretic.com

http://www.cainco.org.bo http://www.elempresario.com.mx

CompartiMOSS 26

David Mena Martn Departamento de Sistemas de Informacin DETEA S.A

Paso a Paso

4Portal
ilares
Pieza fundamental de una pgina, y por extensin, del Sitio. Es el conjunto de informacin, y servicios, que el usuario puede encontrar en el. Contenido El grado de cumplimiento de las expectativas buscadas con el sitio por parte de la Organizacion. Por tanto, exige facilitar que el usuario ejecute las acciones perseguidas

Alto grado de usabilidad o aceptable con una eficiencia escasa consigue que el usuario consiga los propsitos que buscaba al entrar, pero la organizacin no habr obtenido sus resultados. Una eficiencia buena o aceptable con una usabilidad mala permite que el propietario recoja sus resultados, pero el usuario expresara quejas y malas experiencias. Un diseo pobre repercutir en la eficiencia, porque este tipo de disposiciones se traducen en poca profesionalidad y dedicacin. Especialmente el diseo de baja calidad repercute en la eficiencia ya que hace menos fiable la gestin y servicios de la empresa. Por tanto, aunque el diseo no sea fundamental para sitios personales que slo buscan transmitir un determinado contenido (siempre y cuando la usabilidad sea alta), en el mbito empresarial o profesional es un factor bsico que altera los grados de usabilidad y eficiencia. Un diseo rico pero con usabilidad y eficiencia pobres dar iguales resultados que el contenido nulo: ni el usuario quedar satisfecho ni la organizacin conseguir sus objetivos. Si una de las variables es buena y la otra mala, nos remitiremos a lo ya explicado. Un diseo atractivo, usabilidad media o alta, y eficiencia alta, junto con el contenido accesible o rico es lo ideal, ya que consigue un grado de profesionalidad suficiente, una satisfaccin del usuario que le hace volver en el futuro (que a su vez es otro resultado imprescindible) y conseguir los objetivos de la pgina.

La valoracin de un Portal depende de cuatro variables Bsicas contenido, usabilidad, eficiencia y diseo

web

El grado de respuesta a las necesidades de informacin y servicio del usuario. Engloba: Que el usuario encuentre lo que busca y existe en el sitio. Que tenga vas rpidas de acceso a la informacin lo encuentre fcilmente. sin tener que dar demasiados "clic" del ratn o rellenar casillas de formulario.

Soluciones
Como dijimos, el contenido es la base que hace que el usuario entre. Por tanto ha de dotarse a la pgina de toda la informacin imprescindible sobre el tema o temas tratados para que el usuario encuentre lo que se supone que la pgina indica que va a encontrar. Si no se puede abarcar todo, ser preciso especializarse en un determinado nicho o parcela de la que s se pueda ofrecer toda la informacin. Usabilidad. En este terreno no hay como ponerse en lugar del usuario y buscar dentro de la pgina las diferentes informaciones ofrecidas. Evaluaremos entonces las diferentes dificultades para acceder a ellas, y las pondremos ms alcance del usuario en su caso. Adems invitaremos a usuarios objetivos a opinar y evaluar, haciendo caso de sus advertencias. Una buena mtrica es el conteo de Clicks necesarios para acceder a la informacin especfica. Eficiencia. Evaluaremos por qu no se consiguen los resultados buscados: si es p orque lo que perseguimos no est lo suficientemente visible y accesible entre la informacin, si el usuario no tiene motivaciones para elegirlo y slo se queda en que l busca o sencillamente lo que ofrecemos no es atractivo comparado con otros sitios. Podemos hacer encuestas entre los visitantes para conocer estas respuestas. Puede ser que ofrezcamos tanta informacin que los objetivos queden escondidos. En este caso deberemos averiguar la forma de resaltarlo.

Usabilidad

Eficiencia
Es importante determinar el resultado de las combinaciones entre los distintos grados de estas variables descritas anteriormente: La disposicin de los elementos de la pgina que la hace ms o menos atractiva a la vista del usuario, y ms o menos sencillos los procesos de hallar lo que el visitante requiere y a la vez lo que el dueo persigue.

Diseo

Contenido pobre, nulo o escaso. Una debilidad en la informacin o servicios ofrecidos da poco valor al sitio entero ya que es lo que el usuario busca al entrar a la pgina, independientemente de si el diseo es atractivo o no. La usabilidad y la eficiencia carecen de sentido porque sern nulas en este caso. Partiendo de que el contenido sea rico o aceptable, fijmonos en las dems variables:

Diseo. Si la pgina es personal y no busca grandes objetivos, ms que transmitir nuestra informacin, basta con que el diseo est lo suficiente bien distribuido como para que el lector acceda fcilmente a la informacin. Es decir, en pginas personales la usabilidad s puede sustituir al diseo. En cuanto a pginas de empresas o profesionales el diseo es imprescindible para transmitir confianza y dedicacin. En este caso es necesario ponerse en manos de profesionales del sector. En consecuencia, es preciso no descuidar ninguna de estas cuatro variables si se pretende conseguir los resultados que compensen los esfuerzos de construir y mantener un Portal, ya sea para Internet o Intranet.

in n
Hctor Insua (hinsua@gmail.com)

ova

25

CompartiMOSS 28

Quick Tips

TIPS

Opciones de Editar en Hoja de Clculo (Potente y Escondida)


Una de las funciones ms interesantes para gestionar Listas, es la de Editar en Hoja de Clculo (Datasheet).

Hacemos clic en el Icono y se nos desplegar la siguiente pantalla de opciones:

1
Accedemos desde el Men de Acciones:

Ese men, tiene opciones muy interesantes, como Graficar los datos en Excel, realizar consultas o imprimir el contenido de la lista directamente desde Excel.

Ahora bien, si prestamos atencin, cuando estamos manejando esta vista, encontraremos un men expansible sobre el sector derecho de nuestra pantalla.

El completo men de herramientas adicionales, permanece escondido en esta vista y en muchas ocasiones puede resultar en un ahorro de tiempos muy interesante, sobre todo al trabajar con listas de muchos elementos. Generalmente esta opcin permanece escondida.

5 3
Hector Insua hinsua@gmail.com

CompartiMOSS30

El Centro de Registros de

MOSS
CompartiMOSS) y para preservarla en un lugar seguro e inaccesible a usuarios normales (Centro de Registros). El Centro de Registros de Microsoft Office SharePoint Server (MOSS) es el componente diseado para guardar informacin que se desea preservar fuera del uso cotidiano por una u otra razn. Por ejemplo, una empresa que genere informes financieros mensuales destinados a la declaracin de impuestos; si en algn momento ocurre un conflicto con la oficina de impuestos, un juez puede exigir a la empresa que recobre los informes, y que garantice que no han sido alterados en el tiempo transcurrido.

El Centro de Registros de MOSS no es ms que una plantilla para crear sitios en SharePoint, y se pueden crear tantos centros como s e a n e c e s a r i o, p e r o solamente uno puede estar activo cada vez. El sitio para el Centro dispone de las Listas mnimas necesarias para su funcionamiento, junto con los mecanismos para encaminar la informacin hacia las Listas y todo el sistema de autorizacin necesario para que usuarios normales n pueden verlo, pero s enviarle documentos. El diseo del Centro de Registros debe ser bien realizado desde un principio y Microsoft ha publicado extensa informacin al respecto (Records Management Guide for Microsoft Office SharePoint Server 2007

Creacin del Centro de Registros

1
Cree una nueva Aplicacin Web para el Centro de Registros, o utilice una Aplicacin Web diferente a la Aplicacin donde estn las Libreras que van a hacer uso de l. El teora, y segn las especificacin de Microsoft, esto no es necesario, pero la experiencia en la prctica indica que el Centro de Registros funciona ptimamente en una Aplicacin Web aislada

En la nueva Aplicacin Web cree una Coleccin de Sitios utilizando la plantilla Centro de

Para empresas de cualquier tipo y tamao, conservar informacin de una forma segura y confiable se ha convertido en una labor imprescindible, tanto para su propio funcionamiento, como por las implicaciones legales que puede tener. Todos hemos visto en los ltimos meses las consecuencias legales y financieras que puede tener la perdida voluntaria o involuntaria de informacin. SharePoint, en su funcin como depsito central de informacin empresarial, dispone de diferentes mecanismos para regular el acceso a ella en el sistema (autenticacin y autorizacin), para registrar su utilizacin (auditorias, vea el articulo al respecto en el primer nmero de

En este caso, el departamento financiero de la empresa puede dirigir mensualmente los informes al Centro de Registros de su intranet de SharePoint y acoplarlos a una pliza de utilizacin (hasta cuando se debern guardar, por ejemplo). Los informes sern guardados por SharePoint en un sitio a donde solo personal autorizado puede entrar, junto con su auditoria y pueden ser bloqueados en cualquier momento. Nota: El Centro de Registros es un componente de MOSS, y no se encuentra disponible en Windows SharePoint Services (WSS).

3
En la Administracin Central de SharePoint, en la pestaa A d m i n i s t r a c i n de aplicaciones, bajo la seccin Conexiones de ser vicios externos, utilice el vinculo Centro de registros para configurar la Coleccin de Sitios acabada de crear. En la nueva pantalla, seleccione Conectarse a un centro de registro y en Direccin URL configure la direccin del sitio creado con el Centro de Registro, utilizando la sintaxis http://NombreServidor/SubSitio /_vti_bin/officialfile.asmx (por e j e m p l o , http://MiServidorMoss/_vti_bin/ officialfile.asmx si el Centro de Registros ha sido creado bajo la raz de la Coleccin de Sitios); note que la parte .../_vti_bin/officialfile.asmx es obligatoria. Finalmente seleccione un Nombre para mostrar que identifique al Centro de Registros para el usuario

Figura 1. Configuracin del Centro de Registros en la Administracin Central

CompartiMOSS 32

Configuracin de las Bibliotecas que van a usar el Centro de Registro

4
Cree una Directiva. En el sitio en donde se va a crear la Librera (o Libreras; tambin es posible usar el Centro de Registros con Listas) que va a utilizar el Centro de Registros, vaya a Acciones del sitio, Configuracin del sitio, Directivas de coleccin de sitios y cree una nueva Directiva. Para el ejemplo se ha creado una Directiva notarial en donde se ha usado Habilitar Caducidad, con un periodo de retencin basado en la ltima modificacin ms un ao y que el elemento se deber Eliminar cuando haya transcurrido el tiempo configurado. Esto le indicar al Centro de Registros que el documento deber ser eliminado, sin pasar por la Papelera de reciclaje, un ao despus de la ltima modificacin

Regrese al sitio y cree una Biblioteca de Documentos (llamada Documentos para registrar en el ejemplo), utilizando todas las opciones por defecto

Configuracin del Centro de Registros

Utilizacin del Centro de Registros

10

8
Desde la pgina de la Biblioteca, vaya a Configuracin, Configuracin de biblioteca de documentos, Configuracin avanzada y seleccione que desea permitir la administracin de tipos de contenido (Si)

Vaya al sitio que contiene el Centro de Registros (punto 2). Cree una nueva Biblioteca que contendr los registros del tipo acabado de crear. En el ejemplo se ha creado una Librera llamada Centro Notarial utilizando todas las opciones por defecto de una Biblioteca

11

9
De regreso en la pgina de configuracin de la Biblioteca, seleccione Agregar a partir de tipos de contenido de sitio bajo la seccin Tipos de contenido; bajo Tipos de contenido personalizados encontrara el Tipo de Contenido Documento notarial creado en el punto 4; agrguelo al documento. De la misma manera, seleccione el Tipo de Contenido Documento (creado por defecto) y elimnelo de la Biblioteca, de tal forma que quede solo el Tipo de Contenido acabado de crear

Vaya a la Lista Distribucin de registros y cree una nueva entrada. En el Titulo utilice el nombre del Tipo de Contenido creado en el punto 4: Documento notarial; este campo le indica al Centro de Registros que todos los documentos creados con el Tipo de Contenido configurado debern ser guardados en esta Librera. En Ubicacin escriba el nombre de la Librera a donde se deben dirigir los documentos, en el caso del ejemplo, Centro Notarial

SharePoint est configurado desde este momento para guardar documentos creados en Libreras que utilizan el Tipo de Contenido Documento notarial en la Librera Centro Notarial del Centro de Registros. Vaya a la Librera creada en el punto 6 (Biblioteca Documentos para registrar) y cree un nuevo documento. Desde el men contextual del documento ver un vinculo a El Centro de Registros bajo Enviar a

5
Cree un Tipo de Contenido. Vaya a Acciones del sitio, Configuracin del sitio, Tipo de contenido de sitio y cree un nuevo Tipo de Contenido: para el ejemplo se ha creado un Tipo de Contenido llamado Documento notarial del Tipo de Contenido primario Tipos de contenido de documento - Documento

Figura 2. Creacin del Tipo de Contenido

6
Si lo considera necesario, agrguele columnas al nuevo Tipo de Contenido creado. Desde la pantalla de configuracin del Tipo, vaya a Configuracin de la directiva de administracin de la informacin, seleccione Utilizar una directiva de coleccin de sitios y seleccione la Directiva creada en el punto 4

Figura 3. Configuracin del Centro de Registros

CompartiMOSS 35

Figura 4. Envi de un documento al Centro de Registros Programacin del Centro de Registros Tanto utilizando el Modelo de Objetos de MOSS como sus WebServices es posible trabajar programticamente con el Centro de Registros. El Modelo de Objetos provee seis Libreras (Microsoft.Office.RecordsManagement. Holds, InformationPolicy, PolicyFeatures, R e c o r d s R e p o s i t o y, R e p o r t i n g y SearchAndProcess) que provee todas las clases necesarias para interactuar con el Centro. El WebService Official File Web Ser vice permite obtener alguna informacin sobre el servidor en donde se encuentra el Centro, sobre el Centro que est activo y subir documentos a l Probablemente la labor ms importante para usar programticamente el Centro de Registros es subir documentos para guardar y poderlos suspender o reactivar: Cargar documentos en el Centro de Registros usando el Modelo de Objetos Configuracin y uso de Suspensiones Despus de algunos instantes SharePoint indicara que la operacin se ha realizado con xito (o si ha habido algn error, de que tipo). Si se va al Centro de Registros se podr comprobar que en la Librera configurada se ha creado una carpeta en donde se encuentra una copia del documento enviado, con algunos caracteres nicos al final del nombre que lo identifican en el caso de que el documento sea subido ms de una vez a la Librera (y evitan que sea sobre-escrito). Tambin se encuentra un subfolder llamado Propiedades que contiene un documento xml con el mismo nombre del documento en el que se puede encontrar toda la configuracin del documento y Librera originales. La siguiente rutina en una aplicacin de consola sube un documento de una Librera en un sitio de MOSS al Centro de Registros (todo el cdigo puede ser descargado desde el sitio de CompartiMOSS) InformacionAdicional es una variable (string) necesaria para enviar informacin complementaria sobre el documento al Centro de Registros; ResultadoOperacion es otra variable (OfficialFileResult) que guardar el resultado de la subida del documento indicando si todo ha salido bien, o si ha ocurrido un error (los valores podrn ser fileChecedOut, FileRejected, InvalidConfiguration, MoreInformation, N o t Fo u n d , S u c c e s o U n k n o w n E r r o r ) . Dos objetos del tipo SPSite y SPWeb son creados para poder referenciar el documento (miDoc del tipo SPFile) a guardar en el Centro. Finalmente, el mtodo SendToOfficialFile de la clase SPFile se encarga de enviar el documento seleccionado al Centro de Registros, y devuelve el resultado de la accin.

12

El Centro de Registros contiene una Lista llamada Suspensiones. Cree un nuevo elemento en ella (Suspensin para documentos notariales en el ejemplo), indicando una Descripcin y Administrador si es necesario Vaya a la Librera donde est el documento que se desea suspender (directamente en el documento, folders no se pueden suspender) y desde su men contextual elija Administrar suspensiones. Seleccione Agregar a una suspensin y seleccione la suspensin creada en el punto 12 De la misma forma se puede eliminar una suspensin del documento. En la pgina de la Librera se podr ver el Estado de la suspensin en la columna respectiva Si se selecciona una Suspensin especfica en la Lista de Suspensiones, en su pantalla de propiedades se podrn ver informes sobre que documentos estn usando la Suspensin.

Nota: El cdigo necesita una referencia a Windows SharePoint Services (Microsoft.SharePoint.dll) y una directiva a using Microsoft.SharePoint;.

static void EnviarDocumentoACentroRegistrosMO() { try { string InformacionAdicional = string.Empty OfficialFileResult ResultadoOperacion; SPSite miSitio = new SPSite("http://NombreServidor"); SPWeb miWeb = miSitio.OpenWeb(); SPFile miDoc = miWeb.GetFile("LibreriaDoc/NombreDoc.docx"); ResultadoOperacion = miDoc.SendToOfficialFile(out InformacionAdicional); Console.WriteLine("Estado de la Operacion: " + ResultadoOperacion); } catch (Exception ex) { Console.WriteLine("Error - " + ex.ToString()); } }

CompartiMOSS 36

CompartiMOSS 37

Cree una referencia Web en Visual Studio a _vti_bin/officialfile.asmx (llamada CentroRegistrosWS en el ejemplo). Los primeros renglones de cdigo crean el objeto necesario, localizan el archivo asmx en el servidor y Aplicacin Web en donde el Centro de Registros se encuentra, y le indica que utilice las credenciales apropiadas. Los objetos SPSite, SPWeb y SPFile han sido creados en el ejemplo para tener una referencia al documento a guardar, pero por estar usando un WebService, probablemente el documento se encontrar en un sistema externo a SharePoint, por lo que la referencia ser obtenida en alguna otra forma. Lo importante es tener una imagen del documento en forma de un byte array (miDocByte en el ejemplo). La variable PropiedadesRepositorio es un array que contiene informacin sobre el documento a guardar, y que ser encontrada posteriormente en el archivo correspondiente en el folder Propiedades del Centro; en el array se pueden crear tantas propiedades como sea necesario, y pueden contener cualquier tipo y contenido deseable. Finalmente, el mtodo SubmitFile utiliza la corriente de bytes (stream) con el documento, la variable con sus propiedades, el nombre del Tipo de Contenido de la Librera del documento, su direccin URL y el usuario que lo sube como parmetros para enviar el documento al Centro de Registros. El mtodo entrega a su vez el resultado de la operacin (Success, MoreInformation, InvalidConfiguration, InvalidArgument, InvalidUser, NotFound, FileRejected o UnknownError).

Suspender documentos usando el Modelo de Objetos Solamente el Modelo de Objetos provee los mtodos necesarios para suspender o reactivar documentos en el Centro de Registros, aunque es posible crear un WebService para el objeto sin grandes problemas. La siguiente rutina suspende un documento ya presente en una Librera del Centro: static void SuspenderRegistro() { SPSite miSite = new SPSite("http://NombreServidor:Puerto"); SPWeb miWeb = miSite.OpenWeb(); SPList miListaRetension = Hold.GetHoldReportsList(miWeb); Console.WriteLine(miListaRetension.Title);

Primero se crean objetos SPSite y SPWeb conteniendo el Centro de Registros. La variable miListaRetension (SPList) es una referencia a la Lista de Retencin utilizada por Centro, y el bucle siguiente tiene por objetivo solamente encontrar el identificador (integer) de una de las plizas de suspensin (para el ejemplo se usa el nombre de la suspensin, pero probablemente alguna otra forma de encontrar el identificador sea ms efectiva). Conclusin

El mtodo ReleaseHold que utiliza como parmetros de entrada el identificador de la suspensin, una referencia al SPWeb de la Librera en donde se encuentra el documento y un comentario, permiten eliminar suspensiones de documentos. En el Modelo de Objetos existe un mtodo RemoveHold, pero es solamente para uso interno de SharePoint.

El Centro de Registros es un componente de SharePoint muy importante para empresas que necesitan guardar de forma segura informacin crucial o legalmente sensitiva. El Centro garantiza el acceso solamente a personal autorizado, y mantiene la informacin aislada de los sitios utilizados en el uso cotidiano del Portal. El Modelo de Objetos de MOSS y uno de sus WebService permiten el acceso programtico al Centro de Registros, permitiendo enviarle documentos y manipular su suspensin o reactivacin.

int SuspensionID = 0; foreach(SPListItem unaRetension in miListaRetension.Items) { if(unaRetension.Name.Contains("Suspension para documentos notariales") == true) SuspensionID = unaRetension.ID; } SPList CentroNotarial = miWeb.Lists["Centro Notarial"]; SPListItem DocASuspender = null; foreach(SPListItem unDoc in CentroNotarial.Items) { if (unDoc.Name.Contains("Un documento para el Registro") == true && unDoc.Name.Contains(".docx") == true) DocASuspender = unDoc; } } Hold.SetHold(SuspensionID, DocASuspender, "Hecho con codigo");

Nota: Fuera de la referencia al dll de SharePoint, el cdigo necesita una referencia a Microsoft Office Server DLC component (Microsoft.Office.Policy.dll) y una directiva a using Microsoft.Office.RecordsManagement.H olds;

De la misma forma se crea una referencia a la Librera en donde se encuentra el documento a suspender (CentroNotarial) y el objeto que contiene al documento (DocASuspender del tipo SPListItem). Finalmente, el mtodo SetHold de la clase Hold perteneciente al NameSpace Microsoft.Office.RecordsManagement. Holds permite suspender el documento y agregar un comentario. Un Override de SetHold permite suspender todos los documentos contenidos en un SPListItemCollection, que puede ser utilizado para suspender documentos masivamente. Gustavo Velez gustavo@gavd.net

CompartiMOSS 38

Hecho con SharePoint


Una de las grandes caractersticas de la plataforma SharePoint es su carcter extensible y abierto, de manera que permite desarrollar y encajar casi cualquier tipo de solucin, as como resolver problemticas de negocio realmente complejas. Si nos centramos en la funcionalidad de insercin de datos [1], SharePoint no proporciona por defecto mecanismos para la validacin de los datos que el usuario est introduciendo en los distintos campos del formulario. Sin embargo, estas validaciones son necesarias para implementar verdaderas aplicaciones de negocio. Por otro lado, a veces es necesario que las validaciones no penalicen el rendimiento de la aplicacin o bien incumplan determinadas polticas de seguridad, por lo que hay que evitar realizarlas utilizando cdigo de servidor. Figura 1: Ejemplo de aplicacin modelada con SD 2007.

A la hora de crear soluciones en SharePoint, tenemos dos entornos de desarrollo posibles: SharePoint Designer 2007 (SD 2007) o bien Visual Studio 2005 / 2008. Sin duda, SD 2007 permite crear rpidamente vistas avanzadas y formularios en una solucin SharePoint. Y la clave de este desarrollo rpido y sin cdigo est en la versatilidad y juego que nos da la Data Form Web Par t. Esta Web Part tan especial permite consumir datos de orgenes de datos diversos como: listas y bibliotecas de SharePoint, fuentes RSS, datos de una base de datos, ser vicios web o bien combinaciones de estos. Si nos centramos en la interoperabilidad con bases de datos, la Data Form Web Part nos permite mostrar datos en modo vista mltiple, vista simple o bien modelar formularios de vista mltiple, vista simple o de insercin de datos.

Data Form Web Part

en la

Validacin
CompartiMOSS 40

de datos

Modelando la solucin Llegados a este punto, se nos plantea un gran interrogante: Cmo podemos realizar estas validaciones sin penalizar el rendimiento e incumplir las polticas de seguridad? La respuesta est en la capacidad que nos proporciona JavaScript para realizarlas en el cliente sin desmejorar el rendimiento de nuestras aplicaciones de negocio. Si inspeccionamos de nuevo nuestra aplicacin de ejemplo (Figura 1), nos daremos cuenta de que se trata de una pgina ASP .NET que permite insertar datos en la BD SQL Server [2] mediante un formulario de insercin. Ahora bien, y retomando el prrafo anterior, por defecto la Data Form Web Part configurada en modo New Item Form no implementa ningn mecanismo de validacin. Para construir esta funcionalidad de validacin, utilizaremos por un lado SD 2007 como entorno de desarrollo, y por otro JavaScript como lenguaje de modelado. Adems, tendremos que tener en cuenta que este cdigo ir encajado dentro de etiquetas XSL (Extensible Stylesheet Language), por lo que habr que prestar especial atencin al uso de caracteres extraos no tolerados por XSL. Tal y como se comenta en [1] y [3], el principal escollo que hay que superar para implementar el mecanismo de validacin de datos consiste en determinar cmo aadir un evento a alguno de los controles de tipo botn que genera la Data Form Web Part. Estos controles, que son creados en el momento en el que estamos insertando una vista de datos desde SD 2007 de acuerdo a la opcin New Item Form [2], no exponen de manera pblica un evento que se pueda programar. De acuerdo a [1], la solucin a este inconveniente pasa por utilizar la funcin AttachEvent de JavaScript que nos permite, para Internet Explorer (restriccin muy importante!), registrar eventos para cualquier tipo de control y especificar la funcin JavaScript que se encargar de manejar dicho evento (Nota: Para el caso Firefox la funcin JavaScript equivalente es addEventListener). Una vez que sabemos cmo registrar un evento para un control, el siguiente paso es elegir el evento que vamos a registrar. Dado que una vez cargado, el formulario ya habr pasado por el proceso de Submit, no podremos registrar el evento click y por lo tanto no se podr cancelar el proceso (en este caso se trata del proceso de guardar los datos en la BD). Ahora bien, como alternativa, podemos utilizar otro evento tpico para controles de tipo botn, hiperlink o imagen como es onmouseup o bien onmouseover (que es el que voy a utilizar en el artculo). Finalmente, necesitamos saber dnde colocar todo el cdigo JavaScript que vamos a utilizar para registrar los eventos de los controles, as como aadirlo en el evento Load de la carga del formulario. Para el primer punto, se puede decir que no hay una regla fija, sino que simplemente hay que pensar en la estructura de XSL y utilizar un poco de experiencia e intuicin para saber dnde colocar todo el cdigo JavaScript con el que implementamos la lgica de validacin. En el caso que estamos modelando, se ha colocado el cdigo JavaScript a continuacin de los controles de tipo botn para los que queremos registrar el evento (botones Save y Cancel) y antes del tag </xsl:template> (Nota: Para comprender mejor la estructura XSL de la Data Form Web Part, se recomienda la lectura de [4]). Por inspeccin del markup de la pgina ASP.NET, tendramos que el cdigo JavaScript tendra que ser insertado en la zona subrayada en el siguiente listado (Listado 1):

<xsl:template name="dvt_1.formactions"> <td nowrap="nowrap" class="msvb"> <input type="button" value="Save" name="btnSave" onclick="BLOCKED SCRIPT {ddwrt:GenFireServerEvent('__commit')}" /> </td> <td Una vez que sabemos cmo registrar el nowrap="nowrap" class="ms-vb" width="99%"> evento para un control y hemos elegido el <input evento que vamos a registrar, necesitamos type="button" una forma de obtener el control especifico al que vamos a aadirle este evento. En este value="Cancel" name="btnCancel" caso, el modelo DOM (Document Object onclick="BLOCKED SCRIPT Model) de JavaScript expone los mtodos {ddwrt:GenFireServerEvent('__cancel')}" /> o . El primero nos devuelve la referencia al </td> objeto que tiene como identificador (id) el <script language="javascript" valor que recibe. type="text/javascript"> //Cdigo JavaScript El segundo devuelve dicha referencia al </script> objeto que tiene como nombre (name) el </xsl:template> valor que recibe.

CompartiMOSS 42

Para el segundo de los puntos, es necesario aadir todo este cdigo JavaScript a la pila de funciones JavaScript que dispara el evento Load de la pgina dnde se embebe el formulario. Para ello, utilizaremos la siguiente funcin JavaScript (propia de SharePoint):
_spBodyOnLoadFunctionNames.push("EventButton");

Listado 3: Implementacin de la funcin EventButton. Nota: En el cdigo he aadido una funcin adicional PonerFocoInicial() que simplemente pone el foco del cursor en una de las cajas de texto del formulario. Una vez que hemos registrado los eventos y aadido los correspondientes manejadores, pasaremos a definir e implementar estos ltimos: Manejador Cancelar, que simplemente mostrar por pantalla un mensaje informativo (utilizando alert()).

Listado 4: Codificacin del manejador Cancelar. Manejador Aceptar, que es dnde introduciremos la lgica de validacin. Lgicamente es aqu dnde empiezan las complicaciones, y dnde ms obstculos y problemas de todo tipo nos vamos a encontrar, puesto que para buscar el control a comprobar no tenemos una referencia clara de identificador tal y como ocurre con los controles de tipo botn. De hecho, el ID de una caja de texto tiene la siguiente forma (nada fcil de conocer de antemano):

Listado 2: Funcin que permite aadir una funcin a la pila de funciones JavaScript. Esta funcin es la que aparece en la cabecera de todo el cdigo JavaScript que vamos a utilizar para i m p l e m e n t a r e l m e c a n i s m o d e v a l i d a c i n. Una vez modelada la validacin, vamos a ver como implementarla. Implementando la validacin Lo primero que tenemos que hacer es llamar a la funcin JavaScript anterior que se encarga de aadir la funcin EventButton a la pila de funciones JavaScript de la pgina. Una vez que hemos hecho esto, creamos la funcin y en la misma tenemos que realizar los siguientes pasos:

Sin embargo, si nos fijamos en el ID, podremos comprobar que hay una parte que se corresponde con el ID que aparece en SD 2007 cuando examinamos los controles que ha generado la Data Form Web Part: ff2_new. Por lo tanto, nos podemos aprovechar de esta circunstancia para utilizar la funcin getTagFromIdentifierAndTitle que aparece en [3] (si bien, y como se podr comprobar, ha sido necesario modificar e implementar de modo personalizado la funcin getTagFromIdentifierAndTitle para que funcione correctamente encajada dentro del XSL de la Data Form Web Part). La implementacin final del manejador Aceptar es la que se muestra en el siguiente listado (Listado 5): function Aceptar() { var ICancelarEvento=false; var lsNombreProducto=null; lsNombreProducto=document.getElementById(getTag FromIdentifierAndTitle("input","ff2_new","")); if(lsNombreProducto.value=="") { alert("EL campo Nombre Producto no puede estar vaco!"); lsNombreProducto.focus(); } return ICancelarEvento; }

function Cancelar() { var ICancelarEvento=false; alert("Cancelada la inserccin de un nuevo curso"); return ICancelarEvento; }

ctl00$m$g_5437d929_64a3_4a68_be7 0_f2452c6f6981$ff2_new

Declarar dos objetos que se correspondan con los controles (los botones Save y Cancel del formulario) a los que les vamos a registrar los eventos. Localizar estos objetos dentro de toda la coleccin de controles del formulario. Para ello utilizar la funcin getElementById, puesto que para el caso de los botones SharePoint devuelve un ID limpio y conocido (lo que no sucede con los controles de tipo caja de texto). Registrar mediante attachEvent el evento onmouseover para cada control y especificar la funcin que se encargar de manejarlo. La implementacin de estos tres primeros pasos es la que se recoge en el Listado 3. function EventButton() { PonerFocoInicial(); var objAceptar=document.getElementById("btnSave"); objAceptar.attachEvent("onmouseover",Aceptar); var objCancelar=document.getElementById("btnCancel"); objCancelar.attachEvent("onmouseover",Cancelar); }

Listado 5: Implementacin del manejador Aceptar. Cmo se puede deducir del listado, la clave de la funcin anterior est en encontrar el control a validar est de nuevo en el mtodo getElementById dentro de la cual se llama a la funcin getTagFromIdentifierAndTitle que recibe como parmetros el tipo de control y la cadena de texto a buscar entre los ID de la coleccin de controles del formulario. La codificacin de dicha funcin es la que se muestra a continuacin (Listado 6): function getTagFromIdentifierAndTitle(tagName, identifier, title) { var len = identifier.length; var tags = document.getElementsByTagName(tagName); for (var i=0;i&lt;tags.length;i++) { var tempString = tags[i].id; if (tags[i].title == title &amp;&amp; (identifier == "" || tempString.indexOf(identifier) == tempString.length len)) { } } } return tempString

CompartiMOSS 45

Listado 6: Codificacin de la funcin getTagFromIdentifierAndTitle. En este caso, aparte de la sencillez del algoritmo de bsqueda del control cuyo nombre contiene un tag concreto, lo ms peculiar de esta funcin es que debido a las caractersticas propias de XSL, en el bucle for se ha tenido que usar la representacin estndar HTML del smbolo < (i&lt;) pues SD 2007 y SharePoint no admiten que especifiques este smbolo a no ser que indique un etiqueta real. Dentro del bucle for, que recorre todos los controles del formulario (y que se almacenan en el objeto tags, completado mediante el mtodo ), simplemente se busca y devuelve aquel control cuyo ID contenga la palabra clave que se ha pasado a la funcin (por cierto, de nuevo el lector habr notado que en la sentencia if se ha reemplazado && por &amp;&amp; por el mismo motivo comentado para el smbolo <). Funcin PonerFocoInicial, esta es la ms sencilla de todas una vez explicadas las funciones anteriores. La implementacin de la misma es la que se detalla en el Listado 7.

Listado 7: Implementacin de la funcin PonerFocoInicial. Como vemos, utilizando el mtodo getElementById buscamos el control concreto en el que queremos poner el foco inicial, y una vez encontrado forzamos mediante la funcin Focus(). Juntndolo todo y probando la validacin Una vez que tenemos modelada e implementada la validacin, ya estamos listos para probar si funciona de manera correcta. Para ello, podemos optar por abrir nuestra solucin con Internet Explorer o bien directamente desde SD 2007 haciendo un Preview de la pgina: Al pasar el ratn por el botn Save, aparece un mensaje indicando que el usuario no ha introducido un cierto dato definido como obligatorio (Figura 3).

Finalmente, para concluir este artculo, el cdigo completo que tendramos que incluir a continuacin de los controles de tipo botn (y antes de </xsl:template) es el que a continuacin se muestra (Listado 8): <xsl:template name="dvt_1.formactions"> <td nowrap="nowrap" class="ms-vb"> <input type="button" value="Save" name="btnSave" onclick="BLOCKED SCRIPT {ddwrt:GenFireServerEvent('__commit')}" /> </td> <td nowrap="nowrap" class="ms-vb" width="99%"> <input type="button" value="Cancel" name="btnCancel" onclick="BLOCKED SCRIPT {ddwrt:GenFireServerEvent('__cancel')}" /> </td> <script language="javascript" type="text/javascript"> // Esta funcin es propia de Sharepoint y nos permite poner //una funcin nuestra dentro de la pila de funciones que sern //disparadas en el evento Load del mismo cuando //se carge. _spBodyOnLoadFunctionNames.push("EventButton"); function EventButton() { PonerFocoInicial(); var objAceptar=document.getElementById("btnSave"); objAceptar.attachEvent("onmouseover",Aceptar); var objCancelar=document.getElementById("btnCancel"); objCancelar.attachEvent("onmouseover",Cancelar); } function getTagFromIdentifierAndTitle(tagName, identifier, title) { var len = identifier.length; var tags = document.getElementsByTagName(tagName); for (var i=0;i&lt;tags.length;i++) { var tempString = tags[i].id;

function PonerFocoInicial() { var ICancelarEvento=false; var lsNombreProducto=null; lsNombreProducto=document.getElem entById(getTagFromIdentifierAndTitle("in put","ff2_new","")); if(lsNombreProducto.value=="") { lsNombreProducto.focus(); } return ICancelarEvento; }

Figura 3: Prueba de la validacin del botn Save. Al pasar el ratn por el botn Cancel, aparece un mensaje indicando que el usuario ha cancelado la operacin de insercin (Figura 3).

if (tags[i].title == title &amp;&amp; (identifier == "" || tempString.indexOf(identifier) == tempString.length - len)) { return tempString } } } function Aceptar() { var ICancelarEvento=false; var lsNombreProducto=null; lsNombreProducto= document.getElementById(getTagFromIdentifierAndTitle("input","ff2_new","")); if(lsNombreProducto.value=="") { alert("EL campo Nombre Producto no puede estar vaco!"); lsNombreProducto.focus(); } return ICancelarEvento; } function Cancelar() { var ICancelarEvento=false; alert("Cancelada la inserccin de un nuevo curso"); return ICancelarEvento;

CompartiMOSS46

Figura 3: Prueba de la validacin del botn Cancel.

} function PonerFocoInicial() { var ICancelarEvento=false; var lsNombreProducto=null; lsNombreProducto= document.getElementById(getTagFromIdentifierAndTitle("input","ff2_new","")); if(lsNombreProducto.value=="") { lsNombreProducto.focus(); } return ICancelarEvento; } </script> </xsl:template>

Listado 8: Implementacin completa de la funcionalidad de validacin. Conclusiones Sin duda, SD 2007 es una alternativa muy vlida para el desarrollo rpido de soluciones sencillas de integracin en plataforma SharePoint. La clave de esta integracin est en la flexibilidad y posibilidades de la Data Form Web Part. Ahora bien, en escenarios complejos de integracin que impliquen validaciones de datos sin penalizar el rendimiento y sin comprometer la poltica de seguridad, es necesario recurrir a funciones y funcionalidades clsicas y estndar de JavaScript y DOM para realizar estas validaciones en el cliente, de una manera intuitiva y sin introducir tiempos de respuesta no tolerables para el usuario final. Referencias [1] [2] [3] [4] Formularios personalizados de listas en SharePoint Parte III. Fabin Imaz Siderys Elite Software WSS 3.0 & MOSS: Construyendo vistas avanzadas con SharePoint Designer 2007 (II). Juan Carlos Gonzlez Martn. Centro de Innovacin en Integracin. Using Javascript to Manipulate a List Form Field. Rob Howard, Microsoft SharePoint Designer Team Blog. Spaghetti Code: Estudiando la estructura del xsl de un DataForm WebPart.

Centro de Innovacin en Integracin (CIIN) Juan Carlos Gonzlez Martn Arquitecto de Soluciones MVP de MOSS

CompartiMOSS 49

Para enloquecerlo, abra la pantalla de Editor de cdigo fuente de la WebPart e introduzca las siguientes dos lneas de cdigo:

ENLOQUECIENDO al Elemento Web Editor de contenido


La WebPart por defecto Elemento Web Editor de contenido permite incluir cualquier tipo de cdigo HTML o JavaScript en una pgina de SharePoint:
Figura 1. El Elemento Web Editor de contenido

<script> < /script> Note que entre < y /script> hay un espacio vaco. El resultado es que la WebPart se come todas las WebParts que hay en la zona, impidindolas ver, elimina el panel de configuracin y, si se usa el vinculo Salir del modo de edicin y se intenta regresar a Editar pagina por medio del men Acciones del sitio, aparece un error terminal en la pagina

Figura 2. Error en el Elemento Web Editor de contenido

CompartiMOSS 51

Timer

Entorno de desarrollo
Es primordial disponer de un entorno de desarrollo o test donde poder desarrollar nuestros componentes y probarlos sin ningn riesgo. Yo soy partidario de disponer de una mquina virtual con todas las herramientas necesarias y desarrollar en ella, de modo que desarrollamos nuestros componentes en el servidor.

El proceso para crear la nuestro trabajo temporizado es el siguiente: 1. Crearemos un nuevo proyecto de tipo Class Library donde crearemos las clases necesarias. 2. Borramos la clase Class1.cs y creamos una nueva clase CompartiMOSSTimerJob.cs 3. Aadimos la referencia Microsoft.SharePoint.dll (C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12\ISAPI\Microsoft.SharePoint.dll) 4. Aadimos una nueva clave al proyecto y firmamos con ella el proyecto. El motivo no es otro que el poder deployar las libreras en la GAC de los servidores. 5. Copiamos el siguiente cdigo en la clase:

JOBS

Introduccin/motivacin
Muchas veces debemos extender SharePoint para que se adapte a los requerimientos de un proyecto y no nos queda otra opcin que abrir Visual Studio y compilar. En mi opinin, SharePoint es un producto donde se cumple el "Principio de Pareto". As el 80% de la funcionalidad de un proyecto concreto se cumple con la configuracin y adaptacin del producto a travs de la interficie de usuario o a travs de SharePoint Designer, lo que no requiere un gran esfuerzo y el riesgo es mnimo. En cambio, para cubrir el 20% restante de los requerimientos funcionales de un proyecto, es necesario muchas veces desarrollar componentes a medida (web parts, flujos de trabajo, trabajos temporizados, ). De aqu, la importancia de minimizar los desarrollos y sacar el mximo rendimiento a la funcionalidad que el producto ofrece. Para ello es necesario conocer a fondo el producto para evitar desarrollos costosos que se podran sustituir por pequeas extensiones de SharePoint. En el siguiente artculo trataremos el desarrollo de tareas programadas en SharePoint. Las tareas programadas o Timer Jobs nos permiten ejecutar un proceso de forma peridica. Una de las mayores ventajas que nos ofrecen respecto a otras alternativas como servicios Windows o tareas programadas son que el despliegue se realiza de forma sencilla a travs del comando stsadm, el cual se encarga de distribuirlo a lo largo de nuestro conjunto de servidores. Por el contrario la versin actual de SharePoint no ofrece una forma fcil de gestin y configuracin de las tareas programadas, por lo que es necesario crear nuestros propios mecanismos para su administracin. Este ejemplo no pretende solucionar ninguna necesidad real sino que intenta mostrar una solucin simple pero completa donde intervengan el mayor nmero de componentes.

Aunque es posible desarrollar fuera del servidor de SharePoint, es mucho ms cmodo si todos los desarrolladores tienen su propio servidor, ya que pueden de este modo probar su cdigo en tiempo real del mismo modo que probamos una aplicacin Windows. En un entorno de desarrollo SharePoint 2007 estas son las herramientas bsicas con las que contamos: Visual Studio 2005/2008 Visual Studio 2005 Extensions for Windows SharePoint Services Visual Studio 2005 extensions for .NET Framework 3.0 (Windows Workflow Foundation) A parte de estas cada uno de nosotros es libre de usar aquellos complementos y herramientas que le faciliten su labor diaria.

namespace Raona { class CompartiMOSSTimerJob : SPJobDefinition { //Constructor por defecto public CompartiMOSSTimerJob() : base() { } public CompartiMOSSTimerJob(string jobName, SPWebApplication webApplication, String description) : base(jobName, webApplication, null, SPJobLockType.ContentDatabase) { this.Title = description; } //Ejecucin public override void Execute(Guid contentDbId) { //Abrimos el sitio SPWebApplication webApplication = this.Parent as SPWebApplication; SPContentDatabase contentDb = webApplication.ContentDatabases[contentDbId]; SPWeb web = contentDb.Sites[0].RootWeb; //Abrir la lista e insertar un elemento SPList list = web.Lists["CompartiMOSS"]; SPListItem item = list.Items.Add(); //Asignar valores al elemento item["Title"] = "Insercin: " + DateTime.Now.ToShortDateString() + " " + DateTime.Now.ToShortTimeString(); //Salvar estado item.Update(); //Liberar recursos web.Dispose(); } } }

Manos a la obra
El primer paso consiste en estructurar el proyecto. En nuestro caso este estar compuesto por una sola librera con el cdigo de nuestro trabajo temporizado. Por otro lado existir el proyecto que generar la solucin WSP. Proyecto TimerJob con FeatureReceiver El objetivo de la solucin es crear una nueva tarea en nuestro portal que inserte un elemento en una lista cada cierto tiempo. Para especificar el nombre del servidor y otras configuraciones del proyecto es recomendable usar la clase que permite almacenar el estado de los objetos de forma permanente. En este caso no la usaremos y hardcodearemos el valor de esas variables.

} 6. Una vez tenemos el trabajo temporizado implementado debemos instalarlo a travs del modelo de objetos. Para ello usaremos la clase SPFeatureReceiver que permite la ejecucin de cdigo al operar con una feature de SharePoint 2007. As creamos una nueva clase TimerJobInstaller con el siguiente cdigo: //Desactivacin de la feature public override void FeatureDeactivating(SPFeatureReceiverProperties properties) { //Abrimos el sitio SPSite site = properties.Feature.Parent as SPSite; SPWeb web = site.OpenWeb(); //Borramos el job foreach (SPJobDefinition job in site.WebApplication.JobDefinitions) { if (job.Name == NombreTimerJob) job.Delete(); } //Borramos la lista web.Lists["CompartiMOSS"].Delete(); //Liberar recursos web.Dispose(); site.Dispose(); }}}

using System; using System.Collections.Generic; using System.Text; using Microsoft.SharePoint; using Microsoft.SharePoint.Administration; namespace Raona { class TimerJobInstaller : SPFeatureReceiver { const string NombreTimerJob = "CompartiMOSS Timer Job"; public override void FeatureInstalled(SPFeatureReceiverProperties properties) { } public override void FeatureUninstalling(SPFeatureReceiverProperties properties) { } //Activacin de la feature public override void FeatureActivated(SPFeatureReceiverProperties properties) { //Abrimos el sitio SPSite site = properties.Feature.Parent as SPSite; SPWeb web = site.OpenWeb(); //Crear la lista web.Lists.Add("CompartiMOSS", "Lista de ejemplo", SPListTemplateType.GenericList); //Solo admitimos un trabajo temporizado. Por lo tanto borramos si haba alguno previamente. foreach (SPJobDefinition job in site.WebApplication.JobDefinitions) { if (job.Name == NombreTimerJob) job.Delete(); } // Instalacin del job CompartiMOSSTimerJob NewJob = new CompartiMOSSTimerJob(NombreTimerJob, site.WebApplication, "Ejecucin de Prueba"); //Recurrencia NewJob.Schedule = SPSchedule.FromString("every 1 minutes"); NewJob.Update(); //Liberar recursos web.Dispose(); site.Dispose();

Proyecto para deploy Llegados a este punto debemos empaquetar la solucin en un fichero WSP para desplegarlo en nuestro conjunto de servidores. Un paquete solucin SharePoint no es ms que un fichero CAB renombrado a WSP, por lo tanto necesitaremos tener instalada la utilidad en nuestro entorno de desarrollo (la generacin de WSP ya est incluida en las extensiones para Visual Studio 2005). Lo que a continuacin mostramos es el proceso para integrar la generacin del fichero WSP dentro de Visual Studio 2005. 1. Creamos un nuevo proyecto (Class Library) y borramos la clase Class1.cs. 2. Creamos los siguientes ficheros dentro de la solucin: 2.1. WSPPackage.ddf: Especifica qu ficheros se incluyen en el paquete y su estructura de directorios:.

Option Explicit .Set DiskDirectoryTemplate=CDROM .Set CompressionType=MSZIP .Set UniqueFiles=Off .Set Cabinet=On ;************************************************** manifest.xml ..\Raona\bin\Debug\Raona.dll .Set DestinationDir=CompartiMOSSTimerJob feature.xml ;***End 2.2. WSPPackage.target: Genera el paquete a partir del WSPPackage.ddf <?xml version="1.0" encoding="utf-8" ?> <Project DefaultTargets="WSPPackage" xmlns="http://schemas.microsoft.com/developer/msbuild/ 2003"> <PropertyGroup> <MakeCabPath>"C:\cabsdk\bin\MAKECAB.EXE"</MakeC abPath> </PropertyGroup>

CompartiMOSS 55

<Target Name="WSPPackage"> <Exec Command="$(MakeCabPath) /F WSPPackage.ddf /D CabinetNameTemplate=$(MSBuildProjectName).wsp /D DiskDirector y1=$(OutputPath)SpPackage\"/> </Target> </Project> 2.3. feature.xml: Describe la feature <?xml version="1.0" encoding="utf-8" ?> <Feature xmlns="http://schemas.microsoft.com/sharepoint/" Id="740C47EA-FBCC-42b0-BE14-9D24E618515C" Title="Ejemplo CompartiMOSS de trabajo temporizado" Description="Instala el job en la granja de servidores" Scope="Site" Hidden="FALSE" Version="1.0.0.0" ReceiverAssembly="Raona, Version=1.0.0.0, Culture=neutral, PublicKeyToken=5788b16638363c0b" ReceiverClass="Raona.TimerJobInstaller"> </Feature> 2.4. manifest.xml: Indica donde desplegar cada fichero de la solucin <?xml version="1.0" encoding="utf-8" ?> <Solution xmlns="http://schemas.microsoft.com/sharepoint/" DeploymentServerType="WebFrontEnd" ResetWebServer="TRUE" SolutionId="527B0575-8117-429f-B654AC432E8C32A8"> <Assemblies> <Assembly DeploymentTarget="GlobalAssemblyCache" Location="Raona.dll"/> </Assemblies> <FeatureManifests> < F e a t u r e M a n i f e s t Location="CompartiMOSSTimerJob\feature.xml"/> </FeatureManifests> </Solution>

3. El ltimo paso es modificar el proyecto para que al compilarlo genere el WSP de forma automtica. Para ello debemos modificar el fichero de proyecto con la opcin "Unload Project":

4. Al editar el proyecto debemos modificar los siguientes atributos sombreados para que al compilar generemos el fichero WSP. <Project DefaultTargets="WSPPackage" xmlns="http://schemas.microsoft.com/developer/msbuild /2003" ToolsVersion="3.5"> ... <Import Project="WSPPackage.targets" /> ... </Project>

5. Con el fichero modificado y salvado cargamos de nuevo el proyecto de forma normal y ya estamos listos para compilar. En primer lugar debemos compilar el proyecto con las clases y luego, si todo ha ido correctamente compilar el proyecto que genera el WSP. 6. Si todo ha ido correctamente, encontraremos una carpeta con el fichero CompartiMOSSTimerJob.WSP. Si copiamos el fichero y le ponemos la extensin CAB el contenido es el siguiente:

CompartiMOSS 57

Despliegue de la solucin Llegados a este punto, acaba el trabajo de nuestro desarrollador y entramos en el escenario perfecto para cualquier administrador de SharePoint. El administrador, ha recibido un fichero WSP y debe desplegarlo en su granja. La ventaja del WSP es que su despliegue se hace a travs del comando stsadm y por lo tanto representa un procedimiento estndar. As lo nico que debemos hacer para instalar nuestro trabajo temporizado es instalar la solucin y activar la feature siguiendo estos pasos: 6.1. Instalar el WSP con el comando: stsadm -o addsolution -filename CompartiMOSSTimerJobWSP.wsp

En caso de que algo fuera mal podemos tirar para atrs la solucin desactivando la feature y luego desinstalando la solucin con un retract y uninstall del comando stsadm.

6.2. Una vez instalada podemos ir a la consola de administracin central y desplegar la solucin desde el administrador de soluciones:

6.3. Por ltimo nos queda activar la feature y ver cmo se van almacenando los tems en la lista que hemos creado:

Cambios Si se modifica el proyecto deberemos tener en cuenta que los cambios en el temporizador no tendrn efecto hasta haber reiniciado el servicio de timer (owstimer.exe). Conclusin Hemos visto cmo generar y desplegar un paquete WSP en el que incluir un componente desarrollado por nosotros para cubrir cierta funcionalidad que SharePoint 2007 no ofrece. Dejando aparte el desarrollo de trabajos temporizados, me gustara destacar el uso de ficheros WSP como artefactos del desarrollo en SharePoint. Las soluciones SharePoint son el mtodo perfecto para desplegar desarrollos entre entornos y evitar los procesos de despliegue que implican complejos procesos automatizados o copias manuales de ficheros (sobre todo si se ha usado SharePoint Designer). As, mi recomendacin es usar WSP en proyectos de envergadura para automatizar el despliegue, reducir los errores y facilitar la tarea de los administradores. Referencias En el siguiente enlace encontraris ms informacin acerca de la creacin de Timer Jobs en WSS 3.0: http://msdn.microsoft.com/es-es/library/cc406686(en-us).aspx

CompartiMOSS 60

lex Pelez Membrado Mail: Alex.Pelaez@raona.com Blog: http://sharepointxperience.blogspot.com

También podría gustarte