16 de noviembre de 2008

Autentificación con DNIe en IIS7

Esta guía permite configurar un servidor IIS7 para que solicite certificados de autenticación del DNIe (DNI electrónico). Buena parte de lo que aquí cuento forma parte de un piloto desarrollado por Paco del Campo.

Algunas cosas que rodean al DNIe parecen seguir el principio de security through obscurity. Lástima que el portal del DNI Electrónico no tenga información sobre los dos perfiles fundamentales en la difusión de los servicios con autenticación digital, los programadores y los técnicos de sistemas.

Posibles usos de los certificados

Un sitio web puede utilizar certificados del DNIe para identificar de forma completamente segura a un usuario de un servicio electrónico.

Si los usuarios que acceden son totalmente desconocidos para nuestra organización (no tenemos cuenta de usuario o forma de identificación equivalente), el certificado nos permite conocer la identidad del solicitante, su nombre y su NIF. Con estos datos, podemos asociarlos a un posible registro existente en nuestra base de datos o crear un nuevo registro.

Si por contra, el usuario del DNIe tiene una cuenta de usuario en nuestro directorio, podemos decidir asociar la clave pública de este certificado con esa cuenta de usuario. De esta forma, tendremos un método de autenticación de alta seguridad, que podría reemplazar al tradicional usuario/contraseña.

Pasos a seguir

El proceso consta de las siguientes fases:

  • Registrar en el servidor los certificados de la CA raíz y de la CA subordinada del DNIe
  • Instruir a IIS7 para que solicite certificados de cliente,
  • Definir el tipo de equivalencia entre certificados y cuentas de usuario
  • Decidir qué política se va a seguir con la validación de certificados revocados

Antes de empezar, es fundamental asegurarse de que el cliente en el que está el lector de DNIe funciona correctamente, validándolo con alguno de los servicios de dnielectronico.es.

Registro de CAs

El servidor IIS debe tener registradas las CA raíz y subordinadas que permitan validar los certificados que queremos emplear, en nuestro, la CA Raíz y la CA subordinada 001.

Se descargan en el servidor y se da doble clic para instalarlas. Dentro del asistente para importarlas, es importante elegir la opción de selección manual del almacén de certificados, y la opción 'mostrar almacenes físicos'. De esta forma, siendo administradores de la máquina, podemos registrar los certificados en el almacén de sistema, de forma que otros servicios puedan verlos. Si no somos administradores, o UAC está activo, los certificados se registrarán para este usuario.

En de la CA raíz se meterá en el de "Entidades de certificación raíz de confianza" y el de la subordinada en "Entidades de certificación intermedias".

image image

Configuración de IIS7

Tenemos que activar SSL en el servidor web deseado, para lo que se seguirán los pasos de generar o solicitar un certificado y activar el binding del servidor al puerto 443. Es importante comprobar en este punto que somos capaces de establecer una conexión segura al servidor.

El siguiente paso es indicar a IIS7 que queremos utilizar certificados de cliente en el proceso de establecimiento de la conexión SSL. Esto se realiza desde la configuración de SSL de IIS.

image

También debemos revisar la configuración de autenticación, para asegurarnos, con independencia del tratamiento de los certificados, que nuestro sitio tiene permisos correctos de acceso, que se controlarán limitando los permisos de las carpetas IIS correspondientes.

image 

Ahora tenemos que decidir cómo hacer la equivalencia entre certificados y cuentas de usuario de la máquina. Hay dos posibilidades:

  • Uno a uno (oneToOneMappings): el usuario del certificado tiene ya una cuenta en nuestro dominio, por lo hacemos que cada certificado equivalga a una cuenta del dominio o de la máquina. La asociación se hace con la clave pública del certificado.
  • Muchos a uno (manyToOneMappings): hacemos que todos los certificados que cumplan un determinado criterio se asocien a una cuenta del dominio o de la máquina, que es la que finalmente accederá a los contenidos. Este escenario es el más habitual cuando no conocemos a priori los certificados que vamos a manejar, en el que cualquier certificado válido puede ser usado para acceder a nuestro servicio.

La configuración de estas opciones no se puede realizar directamente desde la administración de IIS, sino editando los ficheros XML del directorio \Windows\System32\inetsrv\config, en concreto el fichero applicationHost.config.

Sin embargo, hay una herramienta tremendamente útil que nos ayudará, el Administration Pack para IIS (versión beta, para entornos x32, hay otra descarga para x64), que ofrece "Configuration Editor", una herramienta que se integra con la consola de administración y que permite editar cualquier parámetros de los ficheros .config generales o específicos de una web, explorar las posibles configuraciones (analiza el esquema de los ficheros), buscar... Una vez instalado, aparece en la parte de abajo de las herramientas de administración.

image

Vamos a realizar una configuración manyToOne, por lo que abriremos en Configuration Editor en el servidor deseado, y exploramos la clave system.webServer/security/authentication/iisClientCertificateMappingAuthentication.

En esta página se explica cómo hacer el mapeo oneToOne, similar a lo aquí expuesto, salvo por la necesidad de incorporar la clave pública del certificado que se desea asociar.

image

Activamos la opción manyToOneCertificateMappingsEnabled y entramos en la opción ManyToOneMappings, en la que definiremos cada una de las asociaciones.

image

Creamos una asociación, dándole un nombre descriptivo, e introduciendo los datos de una cuenta de usuario que será la que acceda a los contenidos para los usuarios que se validen con el certificado correspondiente. Es conveniente crear una cuenta sin ningún tipo de privilegio, y añadirla a la seguridad de acceso de la carpeta IIS que tenga los contenidos.

image

Ahora tenemos que crear una o varias reglas, que serán los patrones de certificados que aceptamos  para esta asociación. Podemos hacer reglas muy generales (todos los certificados de una autoridad) u otras más específicas. Para ello, elegimos qué campo/subcampo del certificado queremos usar y cuál debe ser su valor. Se pueden usar wildcards como *.

image

En nuestro caso, el certificateField es el Issuer, y dentro del mismo, elegimos el certificateSubField OU, que en el caso del DNIe es DNIE.

image

Aceptamos todos los cambios realizados.

Validación de certificados revocados

Por defecto IIS tratará de validar el estado de revocación de los certificados empleados, pero por defecto, no existe un servicio OCSP en el que validarlos.

El Ministerio de Industria tiene un servicio OCSP operativo en http://ocsp.ctpa.mityc.es. Para poder usarlo, debemos modificar las propiedades de la CA intermedia AC DNIE 001. Para modificarlo, abrimos una mmc de certificados sobre la cuenta de máquina y editamos las propiedades (con botón derecho sobre la CA) de AC DNIE 001, añadiendo un servicio OCSP adicional a la dirección anterior.

image

La otra posibilidad es desactivar la validación de las listas de revocación, en caso de que no tengamos acceso a la red o queramos que sea así. Tenemos que usar la herramienta netsh para modificar sus propiedades.

Arrancamos netsh y usamos el comando http para entrar en este contexto. Con el comando show sslcert veremos la relación completa de endpoints http definidos, alguno de los cuales tiene ssl activo. Podemos ver uno concreto con la opción ipport.

Es importante copiar toda la configuración que se muestre del que queremos cambiar, porque tendremos que borrarlo y crearlo de nuevo (se puede hacer show, delete y add, pero no set ¿?).

Vemos la configuración completa:

image

Lo borramos con:

delete sslcert ipport=192.168.0.103:443

Y lo creamos de nuevo, cambiando la opción verifyclientcertrevocation.

add sslcert ipport=192.168.0.103:443 certhash=16d044b6c802473cc3c59c204e8f92928b3dd011
    appid={4dc3e181-e14b-4a21-b022-59fc669b0914} certstorename=MY
    verifyclientcertrevocation=disable

Y comprobamos todo...

Creamos una página default.aspx en el servidor, con un código que nos permita recoger y mostrar los datos del certificado, para así asegurarnos que todo funciona.

<%@ Page Language="C#"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Untitled Page</title>
</head>


<body>
<h2>Información en el certificado</h2>
<p>
<%
HttpClientCertificate cs = Request.ClientCertificate;


Response.Write("ClientCertificate Settings:<br>");
Response.Write("Certificate = " + cs.Certificate + "<br>");
Response.Write("Cookie = " + cs.Cookie + "<br>");
Response.Write("Flags = " + cs.Flags + "<br>");
Response.Write("IsPresent = " + cs.IsPresent + "<br>");
Response.Write("Issuer = " + cs.Issuer + "<br>");
Response.Write("IsValid = " + cs.IsValid + "<br>");
Response.Write("KeySize = " + cs.KeySize + "<br>");
Response.Write("SecretKeySize = " + cs.SecretKeySize + "<br>");
Response.Write("SerialNumber = " + cs.SerialNumber + "<br>");
Response.Write("ServerIssuer = " + cs.ServerIssuer + "<br>");
Response.Write("ServerSubject = " + cs.ServerSubject + "<br>");
Response.Write("Subject = " + cs.Subject + "<br>");
Response.Write("ValidFrom = " + cs.ValidFrom + "<br>");
Response.Write("ValidUntil = " + cs.ValidUntil + "<br>");
Response.Write("What's this = " + cs.ToString() + "<br>");


%>        
</p>
</body>
</html>


Si algo falla, recibiremos mensajes de error en el cliente. Lo mejor es comprobar en los ficheros de log del servidor (\inetpub\logs\) para ver el código y subcódigo de error (ej. 403.16) y así analizar qué es lo que está fallando.



Y si todo va bien:



image

6 de noviembre de 2008

Deshabilitar alarmas repetitivas en HTC Diamond

Un problema bastante incómodo de la HTC Diamond es que los avisos del calendario suenan y suenan hasta que los descartamos. Es bastante divertido a las 12 de la noche, cuando tienes un evento de todo el día.

HTC ha tenido a bien deshabilitar la posibilidad de cambiar la repetición de los avisos, que se puede controlar en Configuración, Sonidos y Notificaciones, Notificaciones, Avisos.

La opción "Repetir" aparece activada, y en gris, por lo que no es posible tocarla.

Para cambiar este comportamiento, necesitamos un editor de registro para modificar una clave.

La susodicha clave está debajo de HKEY_CURRENT_USER\ControlPanel\Notifications. Aquí nos encontramos con una estructura de carpetas, una por cada tipo de aviso que tiene la pda. Hay que localizar la que corresponde a "Avisos" (mirando dentro, la clave default) y cambiar el parámetro Options, del valor que tenga a 1073741835 (en decimal) o 4000000B (en hexadecimal).

Cuando volvamos a la configuración, veremos que podemos habilitar o deshabilitar esta opción a voluntad.

23 de septiembre de 2008

Seguridad de la recuperación de contraseñas olvidadas

Cuando las barbas de Sarah Palin veas cortar, pon las tuyas a remojar...

Hace unos días saltaba la noticia de que una cuenta de correo que Sarah Palin (candidata a vicepresidenta de EEUU) tenía en Yahoo había sido hackeada. Los periodistas, amigos de titulares impactantes, hablaban del 'ataque del siglo'.

La realidad era bastante más sencilla. El intruso utilizó el sistema de recuperación de contraseñas olvidadas de Yahoo, que te obliga a responder a una serie de preguntas personales que rellenó en el momento de crear la cuenta. Si todas las preguntas son respondidas correctamente, te permite cambiar la contraseña. En el caso de Sarah, las preguntas eran relativas a su vida personal, y, cómo no, la Wikipedia tenía las respuestas.

Servicios como Yahoo, Google, Hotmail y otros ofrecen dos tipos de sistemas para restaurar una contraseña de acceso olvidad:

  • Preguntas sobre datos personales, o sobre una lista de preguntas fijas, o dándonos la posibilidad de poner nuestra propia pregunta/respuesta
  • Dirección de correo secundaria, a la que nos enviarán un mensaje con un enlace que nos permitirá cambiar la contraseña

Yo personalmente prefiero el segundo sistema, siempre que uses como respaldo una cuenta de correo segura, en la que tengas una contraseña diferente.

En ocasiones, no es posible desactivar el sistema de pregunta/respuesta, y el problema es que la respuesta a esta pregunta debería ser tan secreta o compleja como la propia contraseña a la que protege.

En este caso, mi recomendación sería poner una respuesta imposible de adivinar (un montón de caracteres tecleados 'a loco'). Con esta contraseña imposible, podemos hacer dos cosas, olvidarla completamente o guardarla en una aplicación como Password Safe, que nos permite guardar nuestros secretos de forma segura protegidos por una única contraseña.

 

image

19 de septiembre de 2008

Windows: cambio rápido de configuraciones de red

Una característica que siempre se olvida a los chicos de Microsoft es la posibilidad de gestionar perfiles de red, múltiples configuraciones de una tarjeta para adaptarse a la configuración de diferentes ubicaciones. Mac Os X tiene una interfaz muy sencilla y útil que alguien debería fisgar.

Windows Vista tiene una característica llamada Ubicaciones, pero sólo sirve para activar o desactivar una configuración más restrictiva del cortafuego, la única utilidad que le veo es para cuando nos conectamos en redes públicas, inseguras, eligiendo un perfil público quedamos asegurados.

Hay aplicaciones que nos permiten gestionar esto, pero las que funcionan son de pago.

Hay una forma gratuita y sencilla de cambiar rápidamente nuestras configuraciones, con un fichero .bat de los de toda la vida y la ayuda de netsh, un comando de Windows que permite gestionar las comunicaciones.

Tendremos que crear un fichero .bat para cada configuración que queramos. Antes de crearlo, debemos comprobar el nombre que tiene cada tarjeta de red, en el panel de control de XP o en el centro de redes de Vista. Típicamente, son "Conexión de área local" y "Conexión de red inalámbrica".

En el fichero .bat meteremos los siguientes comandos, ajustando el nombre a lo que se llame la tarjeta de red que queremos configurar.

Importante: cada comando netsh debe ir en una línea completa

Para una conexión con IP fija o estática:

netsh interface ip set address "Conexión de área local" static 192.168.0.22 255.255.255.0 192.168.0.1
netsh interface ip add dns "Conexión de área local" 80.21.33.1 index=1
netsh interface ip add dns "Conexión de área local" 80.21.33.2 index=2

En la primera línea se define la configuración de red, dirección IP, máscara de red y puerta de enlace. En las otras dos, se definen los servidores DNS, podemos tener uno o dos.

Y para una con IP dinámica o DHCP:

netsh interface ip set address "Conexión de área local" dhcp
netsh interface ip set dns "Conexión de área local" source=dhcp

De esta forma, hacemos que tanto la dirección IP como los servidores DNS se configuren dinámicamente.

Una vez guardado, basta ejecutar el .bat. Es necesario tener permisos de administrador para ejecutarlo, por lo que si estamos en Vista, debemos pulsar con el botón derecho del ratón sobre el icono y elegir la opción "Ejecutar como administrador".

image

15 de septiembre de 2008

Probando Live Mesh

Los servicios 'en la nube' son cada vez más habituales y útiles. Olvidarnos de las ataduras de usar un equipo concreto para acceder al correo, documentos o noticias es algo muy útil, y cobra especial importancia cuando se trabajan con varios equipos conectados, ordenador en el trabajo, en casa, portátil, teléfono móvil...

Hay varias consideraciones a tener en cuenta:

  • Seguridad: no todos los contenidos son igual de importantes, no son lo mismo las noticias RSS que nuestros documentos. Al ponerlos en la red, todos quedan 'a tiro de un password'. Hay que protegerlos con una buena contraseña y asegurarse de usar conexiones seguras en todos los accesos.
  • Capacidad: es necesario tener mucho almacenamiento para guardar nuestros documentos, servicios como DropBox y otros proporcionan una media de 2 GB de almacenamiento, pero puede no ser suficiente.
  • Accesibilidad: qué necesitamos para acceder a nuestros contenidos, un navegador, una aplicación concreta, qué velocidad de conexión, qué sistemas operativos???
  • Y nuestros equipos?: los datos son necesarios, pero a veces, el problema es usar una aplicación que sólo está disponible en un determinado equipo.

Este es un campo de mucha actividad e innovación, en el que salen servicios nuevos casi a diario. Yo pruebo bastantes, pero salvo las cosas que rodean a Google, por su integración, la verdad es que pruebo y olvido, y vuelvo a cargar con mi portátil y sus copias de seguridad.

Microsoft Live Mesh puede ser diferente. Veamos por qué.

image

  • Ofrece 5 GB de almacenamiento online
  • Se puede acceder
    • desde un navegador, funciona en todos los habituales
    • desde un cliente de escritorio, por ahora, para Windows, en breve para Mac y Windows Mobile
  • Permite sincronizar contenidos:
    • una carpeta del escritorio del Mesh con uno o varios dispositivos (tira de los 5 Gb de cuota)
    • una carpeta de un dispositivo con el escritorio del Mesh y con otros dispositivos (tira de los 5 Gb de cuota)
    • una carpeta de un dispositivo con otros dispositivos. Esto es muy interesante, ya que podemos replicar carpetas muy grandes entre equipos, sin las limitaciones de la cuota, una especie de P2P personal. Los ficheros se sincronizan cuando los dispositivos están todos conectados.
  • Ofrece acceso remoto al escritorio de los dispositivos conectados
  • Permite compartir carpetas con otros usuarios, sin más que indicar su email. Recibirán un correo indicando los pasos para registrarse en Mesh

En resumen, podemos:

  • podemos hacer copias de seguridad continuas de nuestros datos en la red, con 5 GB de capacidad
  • acceder a estas copias desde un navegador
  • replicarlas en cualquier otro ordenador
  • replicar carpetas entre ordenadores, sin almacenarlas en la red
  • compartir contenidos con otros usuarios
  • acceder al escritorio de nuestros equipos de forma remota

El uso es muy sencillo. Accedemos a http://www.mesh.com para registrarse. Se necesita una cuenta Live,y por ahora, durante el periodo de prueba, el acceso está limitado a algunos países, el más cercano, Reino Unido. Hace tiempo que no lo pruebo, pero con este post de Marcelino Madrigal conseguí crear una cuenta Live en UK.

Al entrar, sólo tenemos el Live Desktop, donde podemos crear carpetas y subir ficheros.

En la opción "Add device", podemos descargar el software para instalarlo en otro dispositivo. Esto permitirá que este equipo sincronice carpetas, y podamos acceder a el por control remoto. Antes de instalar el software en el ordenador, es necesario cambiar temporalmente la configuración regional a Estados Unidos (Panel de control, configuración regional). Después de instalarlo, se puede dejar la configuración previa.

image

Entrando en Live Desktop, accedemos a una vista de carpetas similar a la de Windows Vista, en la que podemos acceder a cualquier fichero sincronizado en el Mesh, o cambiar las opciones de sincronización.

image

Al seleccionar un dispositivo, tenemos la opción de conectarnos a su escritorio.

image

Cosas que me gustan:

  • Rápido, fácil de usar
  • Multidispositivo (esperemos)
  • Buen control remoto
  • Mucha capacidad
  • Posibilidad de sincronizar entre equipos, sin límites del almacenamiento online
  • Copias de seguridad INSTANTANEAS de ficheros, sin intervención del usuario!

Cosas a mejorar:

  • Se echa en falta alguna opción extra de autentificación, sólo se ofrece con una cuenta Live, pero sería interesante tener algo más seguro, con certificados
  • También sería interesante tener algún aviso por email de eventos importantes, como cuando se usa el acceso remoto o se produce algún fallo de autentificación
  • No sincroniza algunos tipos de ficheros, como los pst de Outlook, y no avisa de ello
  • No es posible acceder a ficheros concretos de un dispositivo, salvo sincronizando. Sería interesante poder explorar ficheros, sin necesidad de sincronizar todo
  • Programa de beta técnica no disponible en todos los países. Nosotros también queremos!

Podéis encontrar más información en el blog de Live Mesh: http://blogs.msdn.com/livemesh/

Lectores de noticias y ficheros OPML

Cada vez es más habitual acceder a nuestros blogs o páginas de interés a través de sus suscripciones RSS, que informan, a modo de bitácora de cambios, de los nuevos contenidos publicados en el sitio, de forma cronológica, y en muchos casos, clasificados por temáticas.

Hay dos tipos de lectores de suscripciones RSS (también llamados agregadores), los que se usan desde una página Web (Google Reader, Bloglines, Netvibes...) y los que usan una aplicación de escritorio, que debemos instalar y configurar (internet explorer, Outlook 2007, NewsGator, RSS Bandit...). Google tiene un extenso directorio de lectores, clasificados por tipo.

Las aplicaciones de escritorio se están viendo superadas cada vez más por las aplicaciones web, que ofrecen la posibilidad de leer nuestras noticias desde cualquier lugar con conexión, algo muy cómodo y que se adapta al nivel de seguridad bajo de los contenidos que leemos.

Mi elección es Google Reader, rápido y sencillo, y con una excelente integración para iPhone y Windows Mobile. Con Gears, podemos además convertirlo en un lector 'de escritorio' para trabajar desconectados, ya que puede sincronizar en el disco duro las noticias.

Casi todos ellos tienen algo en común: OPML. Se trata de un formato de fichero en el que guardar todas nuestras suscripciones, que almacena además las categorías o carpetas en las que las tengamos clasificadas.

Es conveniente guardar de cuando en cuando una exportación OPML de nuestras suscripciones, a través de los menús de configuración de nuestro lector, en la opción 'exportar OPML'.

Esto nos permite, aparte de hacer una copia de seguridad, poder probar cualquier otro lector de noticias con nuestros contenidos personalizados, importándolos a través del menú 'importar OPML' correspondiente.

7 de septiembre de 2008

Hackers y piratería: motivación y estrategia

Anoche hacía ganas de dormir viendo una interesante presentación, The Xbox 360 Security System and its Weaknesses, en la que dos hackers contaban paso a paso las diferentes técnicas que permitían hackear consolas de videojuegos, y cómo Microsoft había conseguido diseñar un excelente sistema de seguridad, roto al fin tras encontrar unos pequeños fallos.

La presentación toca técnicas de protección hardware y software, pero casi al final, plantean que la mejor protección debe venir de una buena estrategia.

Para ello, analizaban las motivaciones que los hackers tenían para atacar uno de estos sistemas, que se reducen generalmente a dos, instalar sistemas operativos diferentes (generalmente Linux) o permitir el homebrew, juegos o aplicaciones desarrollados por los usuarios fuera del control del fabricante.

En ambos casos, el efecto colateral de esos ataques es la piratería, ya que se consigue romper la protección que impide ejecutar cualquier disco no legal.

Sin embargo, Sony siguió una estrategia diferente con la PS3, dejar abierta la posibilidad de ejecutar Linux, aplicaciones de usuario... y a la vez, diseñar un buen sistema de seguridad para controlar la piratería.

El resultado: sin motivación para romper las protecciones, no se investiga, y no se consigue el efecto colateral de la piratería.

Una buena estrategia debe complementar siempre a una buena tecnología.

image

Estos son los dos 'fieras' que dan la charla, interesante curriculum:

  • Michael Steil has been involved with various embedded systems hacking projects, like the Xbox, the Xbox 360 and the GameCube. In 2006, he has spoken at Google about the flaws in the security system of the original Xbox.
  • Felix Domke is the principal author of the Xbox 360 hack and the Linux port. He has also significantly contributed to hacking the dbox2, the GameCube and the Wii, and porting Linux to the respective platforms.

4 de septiembre de 2008

Microsoft: tirando piedras a su propio tejado

No es nuevo, pero se me había pasado publicarlo. Recibo un correo muy simpático del equipo de XBOX, anunciando novedades en juegos, formato HTML a tope, muy bonito. Pero el correo tiene una leyenda en la primera línea que dice:

Lee este ejemplar online si no puedes ver las imágenes o si utilizas Outlook 2007

image

Creo que hay dos equipos de producto en Microsoft que no se llevan muy bien. La causa: Outlook 2007 decidió utilizar el motor de presentación de HTML de Word 2007 (el mismo que usa para componer páginas), en lugar de usar Internet Explorer como otras veces, imagino que por temas de seguridad.

El caso es que este motor es mucho más limitado que el otro, por lo que montones de efectos razonables en una página HTML actual no pueden ser vistos correctamente en un correo HTML con Outlook 2007, cuando Outlook 2003 los mostraba sin problemas. Esto afecta mucho a las empresas que desarrollan campañas de marketing por correos, que tienen que adaptar y limitar sus diseños a una presentación más pobre.

3 de septiembre de 2008

Picasa: detección de caras en fotografías

Google no para en su continuo goteo de nuevas aplicaciones o mejoras en las existentes. El mismo día que se puede descargar Chrome, anuncian cambios en Picasa Web, su 'clon' de Flickr.

Las características de Picasa no son demasiado sobresalientes, y en general, Flickr le mejora en todos los aspectos. La diferencia más interesante era la posibilidad de descargar Picasa, un programa de edición y catalogación de imágenes para Windows, completo y fácil de usar.

Pues bien, hoy presentan varias mejoras, algunos cambios en Picasa web y una 3.0 beta de la aplicación de escritorio.

Sin embargo, hay algo realmente nuevo y que resulta muy interesante. Picasa Web integra una nueva tecnología de reconocimiento de caras, que permite analizar todas nuestras fotografías, identificar las caras y ponerlas nombre, de forma que se puedan hacer búsquedas sobre ellas.

Para probarlo, hay que asegurarse de entrar con la url http://picasaweb.google.com y de tener la interfaz de usuario en inglés. Nos informará de este nuevo servicio y de la posibilidad de activarlo. Una vez hecho, un proceso analizará las fotos, identificando caras y similitudes. Se toma su tiempo (el 86% es eterno...), dependiendo del número de fotos que tengamos.

Y.... funciona!! comete errores, que podemos solucionar desmarcando fotografías y asignando a otras el mismo nombre, para que las agrupe.

Al tratarse de un servicio Web, creo que la utilidad es limitada, ya que es lento y obliga a subir todas nuestras fotos a Picasa, pero si se integra en una aplicación de escritorio, será muy útil.

image

24 de agosto de 2008

Vista: usar casillas para seleccionar elementos

Las "casillas" son un complemento al explorador de ficheros que facilita la selección de múltiples elementos cuando se trabaja en un TabletPC, sin teclado o ratón, sólo con el lápiz. Son unas cajas de selección al lado de cada fichero, mas una en la barra de títulos que permite seleccionar todos los elementos.

image

A mi me resulta muy útil en cualquier PC, y lo activo siempre, ya que es muy cómodo y visual y permite seleccionar múltiples elementos sólo con el ratón, sin necesidad de la tecla Control o Shift.

Se activa desde cualquier ventana del Explorer, en el menú Herramientas, Opciones, Ver. En la lista de "configuración avanzada", al final de todo, está la opción "Usar casillas para seleccionar elementos".

image

19 de agosto de 2008

Sync Toy 2.0

Microsoft ha quitado por fin la coletilla de beta a Sync Toy 2.0, una sencilla y potente herramienta de sincronización de carpetas, muy útil para hacer copias de seguridad a unidades USB o discos de red.

Se puede descargar desde aquí. Hay versiones de 32 y 64 bits, pero desgraciadamente no está traducida al castellano.

Las release notes nos avisan de algo importante: es preciso hacer una sincronización de todas las carpetas copiadas con versiones anteriores (1.0 o 2.0 beta) antes de actualizar a la nueva versión, para evitar posibles problemas de la sincronización.

Estas son las principales novedades:

  • asignación dinámica de letras de unidad, para cuando conectamos un dispositivo USB y aparece con una letra diferente
  • filtros y exclusiones de ficheros basados en atributos o nombres de ficheros o carpetas/subcarpetas
  • mejoras para cuando se ejecuta de forma desatendida, con una tarea programada
  • nuevas opciones de línea de comandos
  • sincronización de ficheros cifrados

image

15 de agosto de 2008

iPhone: cosas a mejorar

Después de un post de cosas buenas, es de recibo equilibrar un poco la balanza y recordar esas cosas no tan buenas del actual iPhone.

  • Fallos, fallos y más fallos: La versión 2.0 del software está plagada de fallos (la 2.0.1 mejora un poco). Aplicaciones que no arrancan, cierres de Safari, reinicios del iPhone...
  • Duración de la batería: incluso con un uso moderado, puedes tener problemas para llegar al final del día, y si le metes caña, ni te cuento. Esperemos que sea un tema de software, por que si no...
  • iTunes y sincronización: sincronizar es lento y problemático, y cuesta un poco hacer cosas tan razonables como sincronizar música de un ordenador y podcasts de otro, por ejemplo.
  • Trabajo con varias cuentas de correo: cuando tienes varias cuentas de correo definidas, es un poco pesado tener que ir varias pantallas atrás, varias adelante, para pasar el buzón de entrada de una cuenta al de otra
  • Aplicaciones en segundo plano: no es posible tener varias aplicaciones corriendo simultáneamente, y se convierte en un poco pesado en ocasiones. Veremos si los servicios de sincronización en segundo plano que saldrán en septiembre mejoran esto.
  • Descarga de imágenes en correo: no hay forma de evitar que Mail descargue las imágenes de los correos HTML, y con todo el spam que circula y los fallos de seguridad que la descarga de imágenes ha producido, iPhone incluido, debería de ser controlable.
  • Avisos de Safari y seguridad: aunque es una coña en un navegador móvil, debería decir algo cuando cambias de https a http o descargas parte de contenidos de sitios no seguros, o algún aviso sobre posibles phising. Hasta ahora, la comunidad hacker está aprovechando los numerosos fallos de seguridad para 'hacer el bien', jailbreak y similares, con más de 6 millones de iPhones, esto no seguirá así mucho tiempo!
  • Copiar y pegar: es necesario poder seleccionar texto para pasarlo a otra aplicación, un número de teléfono en un sms para hacer una llamada.
  • Borrar SMSs individuales: no se puede borrar un sms concreto, sólo una conversación completa (todos los sms recibidos y enviados a un contacto), lo cual es demasiado drástico
  • Podcasts: por qué no se pueden sincronizar por wifi???
  • Tonos de llamada: es ridículo tener que pagar por hacer tonos de tus canciones. Menos mal que hay alternativas.
  • Redes wifi empresariales: hay numerosos problemas para conectarse a redes WPA empresariales (no de clave compartida, como las domésticas).
  • Cobertura: mejorable, parece menos sensible que otros teléfonos y algunas llamadas con cobertura baja se cortan. También le duele el continuo cambio entre 3G y GPRS en algunas zonas de poca cobertura.
  • Sincronización de notas o tareas: la aplicación de notas es inútil si no puede sincronizarse, idealmente con las notas de Exchange
  • Cámara: no se puede grabar video, o hacer ningún tipo de manipulación. Su calidad es 'normalita'.
  • MMS: no es posible enviar o recibir MMS directamente, aunque para lo que sirven y lo que cuestan, igual no es mala cosa que desaparezcan

Nada que no pueda arreglar una buena actualización de software!

12 de agosto de 2008

iPhone: cosas que lo hacen diferente

Vale, es verdad que hay demasiado globo hinchado alrededor del iPhone, no es más que otro cacharro caro con el que hacer cosas, que generalmente se pueden hacer con otros dispositivos más baratos o menos sobrevalorados. Yo soy el primer adicto a todas las maquinitas nuevas que aparecen, sean las que sean.

Sin embargo, los chicos de Apple lo han hecho bien, aparte de toda la maquinaria de publicidad, los fan-boys, los medios de comunicación rendidos a Apple… hay mucho de innovación, de nuevas ideas y propuestas, de facilitar el acceso a las cosas más habituales.

Es verdad que también hay muchos “noes”, cosas que ridículamente no están disponibles, pero creo que las cosas buenas eclipsan a estas otras. Después de probar muchos dispositivos, Windows Mobile, Blackberry, Symbian, Palm… estas son algunas de las cosas que hacen del iPhone algo realmente diferente y bueno.

  • Actualizaciones: Apple proporciona actualizaciones para el dispositivo, independientemente del operador. Estoy harto de tener un Windows Mobile bloqueado por el operador que no se puede beneficiar de las actualizaciones que Microsoft pasa a los fabricantes. Para tener un Windows Mobile al día, tienes que ser un piratilla, desprotegiendo y actualizando el teléfono de sitios como xda-developers o htcmania. Nokia ha solucionado esto en sus symbian, y parece que Microsoft quiere hacer algo al respecto.
  • Experiencia de usuario: Apple, para bien o para mal (creo que para bien) lo controla todo. Los operadores sólo pueden meter un par de urls en favoritos, nada más. Operadores como Vodafone son capaces de personalizar hasta el absurdo un dispositivo tan bonito como la HTC Diamond, cambiando el diseño negro de las pantallas con otro de fondo blanco y letras rojas, que se conecta a su inútil Vodafone Live en cuanto te descuidas!!!
  • Pantalla multitáctil: su sensibilidad e ‘inteligencia’ son increíbles. Siempre responde a lo que quieres hacer.
  • Una tecla para poner el modo silencioso: es ridículo tener que encender la pda, entrar en dos opciones de menú y pulsar en no se qué zona para poner el modo silencioso. un botón y listo.
  • Diseño apto para ‘dedo’: de nada me sirve tener un dispositivo ‘touch’ si tengo que afilar el dedo para pulsar en partes de la pantalla pensadas para el uso de un lápiz. Toda la gama Touch de HTC adolece de este problema. Aparte de que la tecnología Touch es más básica que la de Apple, sólo están optimizadas para ese uso las primeras pantallas de la interfaz, el resto del sistema no. Aquí, con el dedo gordo llegas a cualquier sitio!
  • Teclado: aparte de lo fácil o difícil que sea teclear (depende mucho del tamaño de dedos), el teclado está muy optimizado para el uso más habitual, uno para cuando tienes que meter un email, otro para urls y otro general en el que tienes por un lado todas las letras y por otro números y símbolos. En dos clicks tienes acceso a todo. Cuando entras en la zona de símbolos, el teclado se mantiene allí (no vuelve a letras como algunos HTC Touch). Dos veces espaciador es “punto y seguido”. Poner una coma es lo único lento (está en teclado de símbolos), pero al pulsar un espacio tras ella, vuelve automáticamente a teclado de letras.
  • Corrector ortográfico: me gusta la forma en que corrige los errores de teclado, mejor que listas de palabras de las que elegir. Corrige sobre la marcha los acentos y pequeños errores de teclado, de una o dos letras cambiadas.
  • Navegador: ningún navegador de móvil, salvo el último Opera 9.5 (que es lento y tendente al fallo) se aproxima a lo que Safari permite, poder ver e interactuar casi con cualquier página web. De hecho, las únicas páginas que se ven regular son las pensadas para otros dispositivos móviles.
  • Menos funciones, más útiles: aunque reconozco que me siento cómodo entre miles de opciones de menú que a lo mejor nunca uso, creo que la aproximación razonable en un dispositivo móvil es facilitar las cosas más habituales en el uso diario, y eliminar directamente aquellas que no tengan un patrón de uso alto. Esto aplica a la mayor parte de funciones de configuración. En cada pantalla, puedes hacer tres o cuatro cosas, útiles, y de forma rápida.
  • AppStore: aunque convertirá a Apple en un monopolio y sus políticas de publicación de aplicaciones no son demasiado transparentes, es la mejor experiencia de acceso e instalación de aplicaciones móbiles que existe, si es que existe alguna otra.
  • Google for iPhone: cualquier cosa que haga google para el iPhone es de 10. Reader es una pasada.
  • Wifi: rápido, conecta a la primera, en menos de 1 segundo estás conectado. Cuesta mucho conseguir conexiones fiables y duraderas en otros dispositivos móviles.
  • Juegos: lástima que se coman la batería tan deprisa, pero los juegos, tanto por ideas como por uso de la interfaz, acelerómetro y multitouch son increíbles. Enigmo es una preciosidad.
  • Trabajo + Ocio: un mix perfecto, lástima que la batería no dure más.
  • Visores de Office: ¿cómo es posible que los visores (no editores) de documentos Office de Apple sean mejores que los de Microsoft?
  • Correo Exchange HTML: con Windows Mobile, si quieres sincronizar correo HTML, tu organización tiene que tener Exchange 2007. Sin embargo, el iPhone es capaz de sincronizar correo en formato HTML contra un Exchange 2003. ¿por qué?
  • Remote: esta pequeña aplicación de la AppStore permite controlar iTunes desde la wifi, una chulada. El audio se oye en el ordenador que tiene el iTunes, pero se podría gestionar también un appleTV y combinar con un router con capacidad de audio.

 

Seguro que se puede hacer una lista mucho más larga de cosas mejorables o directamente eliminables, pero la verdad, desde mi punto de vista, pesarían mucho menos que todo esto.

Creo que queda claro que me gusta ;-)

8 de agosto de 2008

Error de DNS y su actualización

En los últimos dos meses, se ha puesto a prueba la capacidad de organización de fabricantes de software y proveedores de servicios internet. Dan Kaminsky descubrió por casualidad un fallo en DNS (el sistema global que permite resolver las direcciones de equipos en internet), que permitía suplantar identidades de sitios. Lo comunicó a fabricantes, y estos, de forma más o menos rápida, desarrollaron soluciones que fueron distribuidas y aplicadas. Al final, las cosas se complicaron un poco porque se filtraron antes de tiempo los detalles del error, pero en general, las cosas se hicieron bien.

El siguiente video, creado por Clarified Networks, nos muestra la evolución durante el mes de julio, de los equipos afectados (rojo) y actualizados (verde).

Interesante para ver el efecto de la viralidad de la noticia y la distribución real de internet.

 

7 de agosto de 2008

audiko: tonos para el iPhone

Apple aplica a los tonos de llamada del iPhone una idea genial: coge cualquier canción de iTunes y la conviertes en un tono…

…pero antes, compra la canción en itunes y paga un extra por convertirla en tono. Es decir, paga dos veces por lo mismo. Se pueden crear tonos con las herramientas de Apple (garageband…) y con otras utilidades, pero digamos que no hay un camino directo, sobre todo en Windows.

image

Audiko es un camino mucho más fácil. Aparte de tener una extensísima colección de tonos de llamada, categorizados y ordenados, puedes subir cualquier fichero mp3, o pasarle una url a un tono o video de youtube, que será descargado y convertido. Luego, eliges el fragmento de ese sonido que quieras, y audiko te lo convierte a un tono de llamada que puedes descargar y sincronizar con iTunes.

Además permite crear tonos en mp3 o arm para otros tipos de móviles.

image

27 de julio de 2008

Ejemplo de workflow con SharePoint Designer

SharePoint Designer (SPD) es una versión evolucionada de FrontPage, que a sus nuevas capacidades de diseño de sitios web, añade funcionalidades específicas de SharePoint, la herramienta de colaboración para grupos de trabajo de Microsoft.

Normalmente, los entornos de colaboración Web requieren de conocimientos de programación para desarrollar pequeñas utilidades (avisar a varios usuarios para que revisen un documento, aprobar un documento…) que si bien no son imprescindibles, simplifican el trabajo y ayudan a tener procedimientos conocidos y usados por todos.

Es decir, que no se implantan nunca, porque la relación aparente coste/beneficio suele ser pequeña y “total, con el correo electrónico y un par de añadidos, te lo haces…”.

SPD es una herramienta que permite que usuarios no programadores puedan crear flujos de trabajo muy sofisticados.

Esto no pretende ser un curso de SPD o workflows, sino un ejemplo de una cosilla que he hecho (queda un poco rara fuera del entorno en que se plantea, pero en cualquier caso, aquí queda). Es muy recomendable empezar con uno básico, que funcione de principio a fin, y luego empezarr a enredar con las diferentes acciones.

Introduzcamos unos términos:

  • Paso: cada una de las secuencias que compone un workflow, puede haber varias, y podemos elegir que se ejecuten en serie (una detrás de otra) o en paralelo (todas a la vez, por ejemplo, si queremos esperar a que varias personas aprueben un documento, y tenemos que comprobar si hay quorum cada vez que alguen lo aprueba.
  • Condición: Cada paso, parte de una condición opcional, que pregunta si el paso se realiza o no, en función de una pregunta
  • Acciones: las tareas que se ejecutarán si la condición de un paso es cierta, pueden ser varias encadenadas
  • Variables de inicio: unas variables que el workflow pedirá al iniciarse. Pueden ser texto, fecha/hora, número o enumeraciones
  • Variables: otras que definimos en el procesamiento del workflow para nuestras necesidades

Objetivo

Queremos automatizar mínimamente la gestión de citas de un servicio. En una lista de SharePoint, tenemos las solicitudes de cita, que básicamente tienen nombre y email de contacto, además de unos campos de estado y control. A esta lista, asociaremos el workflow

Además, tenemos además un calendario en el que se apuntan las citas

  • Cada cita tiene una referencia que apunta a su solicitud (un campo Lookup de SharePoint)
  • Cada solicitud mantiene una referencia a la última cita propuesta

image

Nuestro workflow hará lo siguiente:

  • Pedirá la fecha/hora de la cita y la duración
  • Hará unas comprobaciones
  • Apuntará la cita en el calendario
  • Enviará un email personalizado con los datos de la cita
  • De la misma forma, podemos hacer otros para modificar o cancelar una cita

Evidentemente, esto no es una aplicación de gestión de calendario, pero nos puede quitar bastante trabajo rutinario. Veamos los pasos más importantes.

Inicio

Pedimos dos variables, la fecha/hora de la cita y su duración. La duración se pide como un campo enumerado, con opciones.

image

image

Comprobaciones iniciales

Unas comprobaciones básicas para ver si la fecha de cita es anterior a “Hoy”, en este caso:

  • Usamos la acción “Definir campo en el elemento actual” para rellenar en el campo Avisos (un campo de texto asociado a la solicitud) con el texto “Fecha cita incorrecta”
  • Detenemos el workflow y cambiamos su estado de terminación a “Fecha cita incorrecta”

image

Definiciones de variables

  • Usamos la acción “agregar hora a fecha” para calcular la fecha fin de la cita sumando la duración a la hora de inicio
  • Incrementamos en 1 el contador de citas del solicitante
  • Usamos la acción “generar cadena dinámica” para generar el título de la entrada en el calendario (solicitante+número de cita) y un campo nombreunicocalendario (solicitante+fechacreaciónsolicitud+numero de cita) que usaremos para vincular solicitudes y citas

image

Comprobar si la hora está libre

Este es uno de los puntos débiles de SPD, no podemos comprobar si un rango de tiempo en el calendario tiene citas. Lo único que haremos es ver si una cita empieza a la misma hora que la nuestra.

image

Usamos la condición “Comparar cualquier origen de datos” para buscar un elemento en la lista “calendario” cuya hora de inicio sea igual a la variable “Fecha Cita”. Si es igual, paramos el workflow con un error.

image

Crear entrada de calendario

Como todo ha ido bien, creamos la entrada en el calendario, definiendo todos los campos del calendario con datos que sacamos de la solicitud de cita. Como elemento importante, guardamos en una variable nueva el resultado de crear esta entrada de calendario. Esta variable contendrá el Id del item de calendario creado, que usaremos más adelante.

image

image

Actualizar estado de la solicitud

Ahora registramos en la solicitud que todo ha ido bien. Parar ello, cambiamos varios campos de la solicitud (estado, fecha de cita y número de cita (un contador que se incrementa en cada paso). Además, aprovechamos el campo Id del elemento de calendario creado para asignárselo al campo CitaRelacionada, que almacena un campo búsqueda sobre la lista de calendario.

image

Enviar email

Esto no tiene ningún misterio, SPD tiene una actividad que permite enviar emails personalizado. Sin embargo, esta actividad tiene una limitación, que no es posible cambiar el ‘Remitente’ del correo. Para solventar este problema, hemos usado una acción personalizada disponible en Codeplex, SPD custom workflow activities.

image

Eliminar una cita

Este workflow es muy similar al anterior. Usando la capacidad de búsqueda sobre el calendario, con el campo de referencia única que hemos creado, localizamos una entrada de calendario que tenga la referencia de la última cita. Si existe, la eliminamos, buscamos además la cita anterior, y asignamos el campo de cita relacionada al Id de esta entrada. Actualizamos el contador de citas en la solicitud y notidicamos los cambios por email.

Y esto es todo… espero que a alguien le sirva como idea para aprovechar estas capacidades y automatizar tareas rutinarias en la colaboración con documentos y elementos de Sharepoint.

26 de julio de 2008

Gmail siempre seguro (https)

Via Genbeta, me entero de una interesante novedad en Gmail. Hasta ahora, el acceso a gmail sólo encriptaba (https) el intercambio de contraseña, pero el resto del diálogo (toda la lectura del correo) iba en claro por la red, sin cifrar. Esto se podía cambiar forzando a mano el acceso a gmail con https://mail.google.com.

Sin embargo, ahora es posible usar siempre el acceso seguro al correo, algo totalmente recomendable.

Para ello, en la configuración de Gmail, en la ficha “General”, al final de la página, aparecerá una nueva opción que permite realizar el cambio.

image

6 de julio de 2008

Agua y verde

En Cantabria suele llover, y eso nos permite tener verdes de todos los colores:

IMG_0595 
IMG_1170

Por suerte, de cuando en cuando, las nubes se van, y tenemos cielos preciosos…

IMG_1180

Eso si, mejor aprovéchalos mientras duran (que puede ser poco)!

Weave: Firefox en la ‘nube’

Mozilla Labs acaba de publicar la versión 0.2 de su servicio Weave. La propuesta es interesante, almacenar en un servicio de red todos los datos del navegador (favoritos, cookies, tabs abiertas…) y permitir su sincronización remota desde varios ordenadores. Firefox multiplataforma only, claro.

image

Como se podía esperar de una versión 0.2, no funciona demasiado bien, he conseguido hacer una sincronización completa desde dos equipos, pero en general el servicio es todavía demasiado lento y da problemas. Mi recomendación es usarlo sólo para sincronizar los favoritos (bookmarks), que funciona razonablemente bien.

Se puede descargar desde aquí (recuerda hacer una copia de seguridad de todo tu perfil). Necesitaremos registrarnos (el asistente nos ayudará) y conseguir un usuario/contraseña en los servicios de Mozilla. Además, todos nuestros datos allí se almacenan cifrados, por lo que necesitaremos proporcionar una contraseña de cifrado adicional.

Estos este procedimiento se repetirá en cualquier ordenador que quieras vincular. Yo lo he probado entre dos Windows y un Mac y funciona.

image

Creo que es un servicio interesante, aunque un poco verde todavía. Puestos a pedir, sería bueno poder consultar online este perfil cuando estamos en un ordenador no habitual, en el que configurar Weave es inviable porque dejaría demasiados datos personales.

5 de julio de 2008

Workflows en SharePoint Designer

Creo que escribo mis posts empezando por el tejado… primero una nota de cómo conseguí replicar workflows, ahora cuento qué son los workflows y lo siguiente debería ser contar algo de SharePoint… A menudo uso el blog como recordatorio de cosas que aprendo, por lo que queda todo muy desorganizado. Bueno, seguro que en el remoto caso de que esto interese a alguien, Google será capaz de ponerlo en orden!

SharePoint es una herramienta de trabajo en grupo (y muchas otras cosas) que permite compartir listas. Una lista es un calendario, tareas, notas, documentos, o cualquier cosa que nos inventemos, sin más que añadir columnas a una lista, al estilo de una hoja de cálculo Excel. Las listas se pueden relacionar, de forma que se puede añadir una propiedad ‘cliente’ en nuestra lista de ofertas emitidas, en la que, aparte del estado en que está la oferta (remitido, rechazado, aceptado) podemos añadir el cliente al que se envió desde la lista de clientes.

Las listas pueden tener asociados Workflows, flujos de trabajo que ejecutan secuencias de pasos. Típicamente se usan en escenarios de revisión de información. Quiero aprobar una hoja de gastos, que tiene que ser revisada y aprobada por tres personas, una detrás de otra, cada una puede aprobar o rechazar, incluyendo comentarios, en un determinado tiempo. Si este tiempo pasa, avisa a no se quién, si alguien cambia la hoja de gastos, cancela la aprobación…

Hay varios tipos de workflows:

  • Los proporcionados por la herramienta, típicamente, aprobaciones sencillas de documentos
  • Los programados en Visual Studio, basados en Workflow Foundation
  • Los diseñados en SharePoint Designer, que ofrece una herramienta visual, sencilla pero a la vez potente, para diseñar flujos

Veamos lo que caracteríza a un workflow

  • Se asocia a una lista de sharepoint (y sólo a una, para clonarlo, ver post anterior)
  • Se puede elegir arrancarlo manualmente, o automáticamente, cuando se crea o modifica un elemento
  • Tiene unas variables de inicio, son una serie de campos que se nos pedirán al arrancarlo
  • Además, se pueden definir variables, para ir haciendo ‘cuentas’ en nuestro workflow. El resultado de una búsqueda, una operación matemática o una con fechas pueden ser guardadas en una variable. Las hay numéricas, texto, fecha o elección.

image

Un workflow en si está formado por pasos. Cada paso tiene:

  • Condiciones: una o varias preguntas que indican si se ejecutarán las acciones
  • Acciones: una serie de operaciones, de entre una extensa lista

image

Los pasos normalmente se ejecutan ‘en serie’, se va pasando de uno a otro, comprobando las condiciones, y ejecutando las acciones en caso de que se cumplan. También se pueden ejecutar partes ‘en paralelo’, es decir, varios pasos se ejecutan simultánemente, por ejemplo, para esperar a varias personas en una aprobación de documento por ‘quorum’ (si más de la mitad de los revisores dan el visto bueno, adelante).

Las condiciones disponibles aparecen abajo, sirven para comprobar campos, fechas de modificación, valores de variables…

image

Las acciones predeerminadas (y otras instaladas de SPD Custom Workflow Activities) están en la siguente imagen. Permiten enviar correos electrónicos, crear, borrar o modificar elementos, esperar durante un tiempo, esperar a que un elemento cambie, pedir información a otro usuario (se le asignará una tarea en la que tiene que rellenar información, que cuando se completa, reactiva el workflow), construir una cadena a partir de datos o variables…

image

En el siguiente artículo, intentaré usar todo esto para una aplicación “real”.

2 de julio de 2008

SPD: copiando workflows entre listas o sitios

SharePoint Designer permite crear potentes workflows de forma muy sencilla, utilizando un asistente visual. Con ellos, se automatizan tareas en un sitio de colaboración SharePoint, en cuanto pueda, publicaré un ejemplo.

Una de sus principales limitaciones es que el workflow creado queda asignado a la lista base para la que se crea, y esto no se puede cambiar posteriormente, lo que obliga a crear desde cero el workflow de nuevo.

Sin embargo, el propio SharePoint Designer nos puede ayudar a hacer más fácil esta tarea. Lógicamente, esto sólo tiene sentido si el workflow que queremos aprovechar es muy complejo, si no, puede que acabemos antes haciéndolo de nuevo.

Los workflows son ficheros agrupados en una carpeta (una por workflow), situados debajo de la carpeta Workflows del sitio que estamos modificando. Un fichero xoml con la definición del workflow, un .rules con las reglas de ejecución, un .xml con la configuración de asociación y un aspx con el formulario de arranque.

image

Dentro de estos ficheros, hay referencias a las listas a los que se asocia el workflow o que usa para crear datos en forma de GUIDs. Nos vendrá bien tener a mano el Stramit SharePoint Caml Viewer para conectarnos a los sitios y coger los GUIDs de las listas que nos interesen.

Copiar un workflow a un sitio nuevo

En este caso, el workflow se llamará igual en los sitios de origen y destino (si no, recurrir al caso de abajo). Estos serían los pasos a seguir:

  • Abrir dos SPD, uno en cada sitio
  • Arratrar la carpeta que contiene el workflow del sitio origen a la carpeta workflow del sitio de destino
  • Localizar con Stramit CAML Viewer los GUIDs de todas las listas a las que el workflow haga referencia, como poco, el de la lista al que está asignado y el de cualquier otra lista que use como consulta o referencia (por ejemplo, listas de tareas si estamos creándolas para comunicar con usuarios)
  • Seleccionar todos los ficheros del workflow, y usar la función Reemplazar para modificar todas las referencias de las listas afectadas. Asegurarse de que está activa la opción “Buscar en el código fuente”

image

  • Abrir y guardar de nuevo el workflow, comprobando antes si todas las referencias han sido actualizadas (de no ser así, los nombres de las listas aparecerían con su GUID)

Asignar el mismo workflow a otra lista

Este caso es un poco más lioso, ya que es necesario cambiar los nombres del workflow y de los ficheros. Esta es la forma que creo es más rápida:

  • En la nueva lista, crear un workflow vacio, sin pasos, con el nombre que queramos darle.
  • Reemplazar el contenido de los ficheros .aspx, .xoml y .rules con el contenido del fichero correspondiente del workflow original, teniendo cuidado de modificar las GUIDs de la lista destino a la que se asociará.
  • En el fichero .aspx, modificar el texto en el que se hace referencia al nombre del workflow, ya que aparecerá el nombre del original. Esta página se puede modificar en aspecto/contenido sin problemas, siempre que mantengamos los campos y el envío del formulario
  • El fichero .xml no se debería modificar (al menos, hasta donde yo he visto), salvo que el workflow tenga parámetros de inicio, en cuyo caso, es necesario reemplazar la sección <Initiation> </Initiation> con los datos del workflow origen
  • Abrir, comprobar y guardar el workflow para asegurarnos de que todo ha sido actualizado correctamente.

Espero que a alguien le sirva, a mi me ha ahorrado algo de tiempo al crear sitios con workflows a través de plantillas de sitio, que no incluyen los workflows.