miércoles, 12 de diciembre de 2012

Workflow en Project Server 2010 ¿Cómo crear información de maestro detalle en una PDP?

Anteriormente vimos como crear una PDP para flujos de trabajo de Project Server 2010. Las PDPs nos permiten capturar información que se almacenan en campos personalizados de Project Server. Sin embargo, un requerimiento muy común es que se necesiten cargar datos repetitivos asociados a un proyecto, como por ejemplo:

  • Productos afectados
  • Lista de stakeholders
  • Documentos
  • Etc…

A continuación les presento una solución basada en un excelente artículo de Andrew Lavinsky, el cual les recomiendo que lean, más un complemento de Naveen Kumar.

El enfoque de la solución es sencillo:

  1. Se crear una lista en SharePoint que almacene la información de detalle.
  2. Se modifica la pantalla de alta de esa lista con InfoPath para ocultar el campo de relación con el maestro: Project UID
  3. Se agregan tres elementos web en la PDP
    1. Un filtro por URL
    2. La pantalla de alta en InfoPath
    3. La pantalla con la información de detalle de la lista
  4. Mediante conexiones, el filtro por URL provee el dato de ID del proyecto a los otros dos elementos web
  5. Se agrega algo de código en jQuery para solucionar un pequeño comportamiento  no deseado

El resultado es una pantalla como la que vemos aquí:

imageimage

 

La lista a crear en SharePoint

Es una lista de tipo “custom” con la única salvedad de contener un campo para el ID del proyecto de tipo texto de una línea:

image

 

La modificación de la pantalla de alta de la lista

Simplemente hacemos clic en el botón “customize form”, recuerden que en SharePoint 2010, podemos modificar estas pantallas con InfoPath:

image

Luego, eliminamos la fila que contiene el campo ProjectUID, lo que hará que no esté visible:

image

Y agregamos un botón debajo, al que le modificaremos las propiedades para que sea de tipo “Submit”:

image

Luego, publicamos nuestro formulario:

image

image

 

Agregando los elementos web a la PDP…

1) Primero agregamos un elemento web para filtro de URL:

image

Con esta configuración:

image

2) Luego agregamos el elemento web de nuestra lista de SharePoint

Este es un elemento estándar, el punto importante es que quede conectado al elemento web de filtro por URL

3) Finalmente agregamos un elemento web de Infopath

Elegimos nuestro formulario y verificamos que la propiedad “Submit behavior” quede configurada en: “Close the form”

image

Este elemento hay que conectarlo al de filtro por URL para que el dato ProjectUID de la URL sirva para completar en forma automática el de nuestro formulario alta. Aquí es donde efectivamente estaremos estableciendo el vínculo!

 

Un último detalle

En el paso anterior usamos la opción “Close the form” en lugar de “Open a new form” que hubiese sido la opción lógica. La razón es que la opción “Open a new form” no funciona luego del primer submit, los filtros dejan de aplicarse. Por lo cual nuestra segunda alta quedará con un Project UID nulo!!!

Es por ello que usamos “Close the form”, que tiene un problema bastante feo. Luego de dar un alta, desaparece la pantalla de alta con un cartel que dice que el formulario se ha cerrado. El usuario sólo puede volver a hacer aparecer esta pantalla si refresca la página.

Como este comportamiento es bastante anti natural, la solución poco convencional es:

  • Agregar una CEWP
  • Que busque el mensaje que dice que el formulario se ha cerrado
  • Y que si lo encuentra, recargue la página.

Sí, es feo y lo peor es que genera un doble postback, pero es una alternativa interesante. El código de la CEWP es:

<script src="/PWA/Internal/jquery-1.4.2.min.js" type="text/javascript"></script>

<script type="text/javascript">

$(document).ready(function() {

     if( $('#DialogFinalMessage').children().length>0 ) {
       window.location.href = window.location.href;
       }

   });

</script>

 

Conclusión

Esta es una forma sencilla de implementar maestro detalle en las PDPs de Project Server 2010 usando herramientas conocidas. Y lo más importante es que nos brinda un potencial enorme al poder incorporar información muchos más rica en nuestros flujos de trabajo.

Espero les resulte útil!

0 comentarios:

Publicar un comentario en la entrada