Hace unos días me encontré con un requerimiento que solicitaba asignar tareas a distintos usuarios a partir de la carga de un nuevo documento en una biblioteca de documentos de SharePoint. Básicamente el requerimiento de negocios decía que cada vez que un administrador subiese un documento a la biblioteca X, debía asignarse a cada usuario de un grupo Y una tarea de lectura.
En lo que primero que pensé es que debía hacerlo con un workflow, pero cuál de las acciones se ajustaría? Así que me puse a googlear un poco y descubrí discusiones como esta http://sharepoint.stackexchange.com/questions/11265/assign-tasks-to-multiple-people-with-multiple-completions y esta http://sharepoint.stackexchange.com/questions/11265/assign-tasks-to-multiple-people-with-multiple-completions las cuales me orientaron un poco en mi solución.
Lo que decidí hacer entonces es lo siguiente:
1) Crear una lista personalizada llamada Lectores (la cual me va a servir para poder luego decirle al workflow a quién tiene que asignarle tareas de lectura), que contiene los siguientes campos: titulo (Una linea de texto) y personas (Persona o grupo, teniendo en cuenta ademas permitir sólo la selección de personas y que el campo a mostrar deberá ser cuenta). Luego cargue un registro con el valor Todos como título y en personas cargue a cada uno de mis lectores (los cuales son usurios de AD), ese registro por ser el primero tomó el valor de ID 1.
2) Crear una lista de tareas llamada Lecturas Pendientes (Donde se almacenarán las tareas asignadas a cada usuario del grupo Y).
3) Luego con SharePoint Designer edité la biblioteca de documentos X agregando un workflow llamado Crear Tareas de Lectura que se ejecutará automáticamente cuando se suba un documento a la biblioteca de documentos.
Edité el workflow incluyendo una acción de tareas llamada Iniciar proceso de tareas personalizado, relacionado a su vez con la lista de tareas Lecturas Pendientes.
La idea es relacionar el elemento actual, es decir el documento a subir en la Biblioteca de Documentos X, la lista de tareas Lecturas Pendientes y la lista de Lectores. Así que seleccionamos a los participantes del proceso de tareas, en el contexto del workflow, teniendo en cuenta de que la acción se realice para todos los participantes a la vez en paralelo, seleccionando la opción Todos a la vez (paralelo).
Como verán aquí seleccionamos como origen de datos a los Lectores (nuestra lista de usuarios) y de la misma el campo personas que contiene a nuestros usuarios y los devolvemos como usuarios de Windows (Nombres de inicio de sesión, delimitados por punto y comas). Pero el detalle es que lo que necesitamos es buscar en este conjunto de registros que nos devuelve para lo cual utilizo el ID del registro de lista que para mi caso era el 1 ya que sólo contenía un registro donde alojé a todos los usuarios, separados por punto y coma. Esto posteriormente me va a permitir cambiar agregando o quitando personas a mi grupo según se requiera, con sólo editar el registro de lista.
Al final la selección debería ser la como la siguiente:
Y eso es todo ahora cada vez que carguemos un documento en la biblioteca X, se generará una tarea para cada usuario del campo Personas de la lista Lectores, en la lista de tares Lecturas Pendientes.
Nota: Hay varias cosas que hice como personalizar las vistas para la lista de lecturas pendientes, y demás detalles que obvie en este post, pero no son relevantes.
Espero les sea de utilidad como siempre.