Porque lo fácil es difícil

Programar Manejadores de Eventos para SharePoint 2007 es fácil: un par de renglones de código, el ensamblado en el GAC, algo de registración y listo…


Pero lo fácil es difícil. Esta semana he estado luchando a brazo partido con algo que debería ser sencillo. Los requisitos: un usuario necesita subir archivos desde su Windows Explorer a un sitio determinado de WSS usando la Vista de Explorador de una Lista, y el sistema tiene que cambiar el nombre del archivo agregándole un código único al final; cuando oyes lo que te piden haces cuentas de cuánto tiempo va a costarte: Una hora para tomar café y pensar como lo vas a hacer, media hora preparando e iniciando maquinas virtuales, creando un proyecto de Visual Studio, y pensando como lo vas a hacer, 10 minutos programando los 10 renglones de código necesarios, 10 segundos compilando e instalando, una hora para tomar café y pensar cómo vas decirle al cliente que algo así cuesta ocho horas de trabajo… en total: ocho horas de trabajo.


Pero como lo fácil es difícil, los problemas empiezan inmediatamente al tratar de instalar todo en un sistema de prueba (por supuesto todo ha sido probado en tu sistema de desarrollo y funciona como un sueño).


1 – Todo el código (los 10 renglones) los metes en un try/catch para atrapar los errores que, por supuesto, nunca van a ocurrir. Sorpresa: en el servidor recibes un mensaje que el usuario no tiene derechos para escribir en el EventLog… después de horas de andar buscando porqué, encuentras que Windows R2 tiene pólizas muy estrictas, solamente algunos usuarios pueden escribir en el. Un Manejador de Eventos ejecuta en el contexto del usuario que ejecuta el Grupo de Trabajo de IIS, que, por supuesto, no tiene derechos suficientes.


2 – Ningún problema, piensas: como no me dejan subirle los derechos a esa cuenta, simplemente tiro los mensajes a un archivo de texto. Sorpresa: la cuenta tampoco tiene derechos para escribir en ningún lado.


3 – Un Impersonador para poder escribir en algún lado. Los Impersonadores de SharePoint 2003 no funcionan con SharePoint 2007, y los Impersonadores incluidos con SharePoint 2007 no funcionan con Manejadores de Eventos, fantástico. Otro par de horas creando un Impersonador que funcione con SharePoint 2007 Y con Manejadores de Eventos…


4 – Todo funciona bien ahora… hmmmm… no, nada funciona. O mejor dicho, funciona en el sistema de desarrollo, pero no en el de producción. Te sale un vago error («The file «http://bla-bla/file.xxx» is checked out or locked for editing by SERVIDORgustavo») que, como todos los errores de SharePoint, no dice nada: El usuario es un administrador y tiene todos los derechos para hacer lo que quiera, y el archivo lo ha subido el mismo, así que no puede estar bloqueado por sí mismo (Gustavo no puede bloquear archivos de Gustavo). Esto lo puedo solucionar fácilmente, piensas (por eso de que nunca aprendes que lo fácil en SharePoint es difícil): antes de hacer los cambios, simplemente haces un CheckIn. None… te sale otro error «El archivo ha sido modificado por Gustavo», y no sucede nada.


5 – Muchas gracias, eso ya lo sabía, yo estoy modificando mis propios archivos, pero cuénteme porque no lo cambia en lugar de estar hablando idioteces… Dos días he dado el asunto por perdido, hasta que hoy, por eso de lo de cabezadura, le he medido otras cuatro horas pensando que podía pasar: hmmmm de nuevo…, el primer error me dice que está bloqueado… SharePoint tiene dos bloqueos de archivos, uno de larga duración (cuando el usuario hace un CheckOut del documento) y otro de corta duración (en el momento que aprietas «Guardar», SharePoint bloquea el archivo por unos cuantos segundos para evitar que dos usuarios guarden cosas al mismo tiempo). El primero no es, pues el documento apenas se está subiendo, y ya intente hacer un CheckIn sin resultado, así que tiene que ser el segundo. Qué pasa si le pones un delay? BINGO, funciona. Con un retraso de 5 segundos no pasa nada, con 8 tampoco, con 10 segundos funciona!


Después de todo, algo que debería haber costado máximo una hora de trabajo ha costado más o menos dos días, por eso de que lo fácil es difícil…


Gustavo – http://www.gavd.net/servers/
Escriba un Comentario que me haga reir…

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *