Ciclos en flujos de SharePoint


En mi post anterior, sobre como crear un Web Part de cumpleaños, comenté que también le había incluido un flujo que se encargaba de enviar un correo de felicitación y actualizar los datos de la lista. Ahora procederé a contarles como funciona ese proceso.

Como saben, SharePoint Designer no provee de ciclos para la confección de flujos, así que si deseamos realizar un ciclo, tenemos que recurrir a un truquito.

Imagen 1En la imagen 1podemos ver el proceso diagramado. En las propiedades de inicio del flujo debemos marcar la opción para que se inicie el flujo cada ve que se modifica un elemento, el cuadro verde de la figura representa todas las acciones que deseamos ejecutar en nuestro flujo, y el cuadro azul es el más importante, alguna acción de nuestro flujo debe ser el modificar el elemento de la lista, por ejemplo un campo que sirva como bandera o indicador, esta acción es la va a causar que se vuelva a iniciar el flujo y se genere un ciclo.

 

 

 

Al final estamos simulando un ciclo (o bucle) ejecutando muchas instancias del flujo, una después de otra, como lo ilustra la imagen 2:

image

A continuación les contaré como hice un flujo que se conecta a mi lista de cumpleaños para enviar un correo de felicitación y después actualizar la fecha de cumpleaños.

Email de recordatorio

1. Se abre el sitio con SharePoint Designer 2007 (porque en este caso estoy trabajando con SharePoint Server 2007) y se crea un nuevo flujo de trabajo.

image

2. Le damos un nombre al flujo, y dentro de las opciones de inicio, seleccionamos el iniciar el flujo automáticamente cuando se crea un nuevo item y cuando se modifica un item.

image

3. El flujo se compone de un único paso que tiene dos ramas, la primera para cuando es el día del cumpleaños y debe enviar un correo, y la segunda es para pausar y esperar hasta que sea el día del cumpleaños. Procederé a explicar cada una de las ramas.

image

4. Cuando inicia el flujo (ya sea porque se crea o se modifica el ítem) se verifica si la fecha de cumpleaños es igual al día de hoy, si es así, se ejecutan los siguientes pasos:

image

  • Se envía el correo de felicitación de cumpleaños.
  • Se suma 1 año a la fecha de cumpleaños. Para cambiar la fecha de cumpleaños y felicitarlo nuevamente el próximo año.
  • Se actualiza el item en SharePoint, para iniciar la siguiente instancia del flujo, la cual va a enviar el correo de felicitación el siguiente año. Se actualiza la fecha de cumpleaños y también un campo “bandera” llamado envío, que tiene un valor de si o no.

image

  • Con esto concluye la ejecución de esta instancia del flujo.

5. Si cuando se inicio el flujo, la fecha de compleaños no es igual al día de hoy (una precondición es que nunca sea menor), es porque aún no ha llegado el día del cumpleaños.

image

  • Se pausa esta instancia del flujo hasta que sea el día de cumpleaños.
  • Cuando se termina la pausa, se realiza un cambio en el item, en esta caso actualizamos el campo envío, a un valor de no. Esta acción inicia una nueva instancia del flujo, que va a ingresar por la primera rama, descrita anteriormente.
  • Se termina la ejecución de esta instancia del flujo.

Lo que llamo un campo bandera es un campo que puse únicamente para poder generar cambios en el flujo y disparar nuevas instancias, lo que forma el ciclo, pero como pudieron leer no lo utilizo para realizar ninguna comparación.

De acuerdo a sus requerimientos, podría ser que no ocupen este tipo de campos, si no que el flujo que están diseñando sea el que genere las actualizaciones como parte de sus acciones normales.

Anuncios

22 comentarios (+¿añadir los tuyos?)

  1. Trackback: Web Part de Cumpleaños « Vielka R.
  2. laureano rubio aguilar
    Feb 22, 2012 @ 18:11:55

    hola disculpa como creo un flujo de trabajo en sharepoint 2010 que envie un correo electronico antes de que una fecha se cumpla

    Responder

    • Vielka R.
      Mar 01, 2012 @ 09:54:21

      Hola, puedes probar creando otro campo de fecha, digamos FechaAlerta, que sea un campo calculado que le reste algunos días a la fecha que se debe cumplir, y envias el recordatorio cuando esta se cumpla esta FechaAlerta.

      Responder

      • laureano
        Abr 12, 2012 @ 10:25:53

        lo q pasa q soy nuevo en esto me pudieras dar mas o menos una guia de como hacerlo por favor te lo agradeceria mucho,

  3. Arturo Ch. M.
    Abr 11, 2012 @ 15:54:52

    Hola

    Estoy Realizando, un flujo de trabajo el cual tiene que enviar un correo electrónico cada día mientras el valor de un campo llamado “Status” se el de “Pendiente”, Cuando Este Cambie su valor a Resuelto deje de enviar Correo

    espero haberme dado a entender.

    ya trate de acomodarlo a como lo tienes pero no realiza los cambios, Simplemente Finaliza el Flujo, podrías Por favor indicarme como iría, solo me interesa la secuencia de las acciones a realizar.

    Gracias de Antemano

    Responder

    • Vielka R.
      Abr 11, 2012 @ 19:33:17

      Yo lo haría de esta forma:

      En la lista agrego un campo para llevar el contador de envío de correos y una bandera de envio de correos, solo para provocar un cambio.

      flujo 1: inicia cuando hay un nuevo item o un cambio

      Si estado = Pendiente
      enviar correo electrónico
      pausa por 1 día
      actualizar CorreoEnviado = Si

      Finaliza flujo 1

      —————
      flujo 2: inicia cuando hay un cambio

      Si estado = Pendiente Y CorreoEnviado = Si
      VariableContadorCorreos = ContadorCorreos + 1
      actualizar ContadorCorreos = VariableContadorCorreos
      Finaliza flujo 2

      Responder

      • Arturo Ch. M.
        Abr 12, 2012 @ 15:51:02

        Gracias por la AYUDA, ME encuentro checando tu propuesta y gracias nuevamente 🙂

  4. george
    Jun 12, 2012 @ 12:45:01

    hola una pregunta con que accion y como agrego 1 año a la fecha de cumple para que se pueda enviar la notificacioon el año que viene ?. gracias por conpartir esta info

    Responder

  5. Nes
    Sep 06, 2013 @ 10:21:02

    Hola, buen día,

    Muy interesante tu solución!!!
    A mi no me ha funcionado 😦

    Saludos,

    Nes

    Responder

  6. Anónimo
    Oct 23, 2013 @ 12:02:58

    Hola, me podrías explicar como adiciono el campo bandera “envio”, tengo sharepoint 2010.

    Responder

  7. peln
    Nov 26, 2013 @ 09:03:53

    Hola buen día!

    He implementado la solución y me funciona solo si ingrese o actualice el item el mismo día que la persona cumple año, pero si el cumple no ha pasado al llegar el día me finaliza el flujo pero no aplica las acciones, sera posible me puedas facilitar una ayuda con respecto a esto?

    Responder

    • Vielka R.
      Nov 26, 2013 @ 15:40:15

      Hola, bajo que condiciones inicias el flujo? y revisa las pausas y las actualizaciones. El comando registrar en lista de historial te puede dar pistas para ver el valor de las variables o el camino que sigue el flujo.

      Responder

  8. armando
    Feb 13, 2014 @ 00:17:59

    Hola una pregunta este bucle podria servir para mandar n correos?

    Responder

  9. Juan Carlos
    May 26, 2014 @ 16:59:37

    Hola, soy nuevo en este “mundo” Sharepoint y quisiera saber como puedo hacer para actualizar varios elementos de una lista con un Flujo de Trabajo utilizando ciclos.
    Tengo una lista de Empresas que se relaciona con una lista de Cotizaciones (en relación de 1 a muchos) y al modificar valores de un elemento de Empresa necesito actualizar “n” elementos en la Lista Cotizaciones.

    Responder

    • Vielka R.
      May 27, 2014 @ 10:29:48

      Hola Juan Carlos, si tienes SharePoint 2013 se te facilita la tarea porque puedes usar los flujos de SharePoint.

      Responder

      • Juan Carlos
        May 27, 2014 @ 13:15:52

        No, lamentablemente no tengo la versión 2013 pues trabajo con SharePoint 2010. He encontrado soluciones que presentan en otros foros en las que se utiliza la programación en Visual Studio y sinceramente me haría la vida muy feliz desarrollar nuevamente en Visual Studio pues es lo que se hacer en esta vida 🙂 … sin embargo, no tengo la mas remota idea de como integrar mi Visual Studio con el SharePoint. Serías tan amable de ayudarme en este tema? o talves me podrías recomendar algún foro o sitio?
        Agradecido de antemano.

  10. Paco
    Jun 11, 2014 @ 05:20:24

    Buenas, excelente tutto.
    Una pregunta. Estoy realizando un flujo similar al suyo, lo tengo que se inicie el flujo automáticamente cuando se crea un nuevo item y cuando se modifica un item, pero me gustaria que siempres estuviese activado y que cada dia comprobase el campo fecha y si es igual al de hoy envie un correo.

    Responder

  11. Anónimo
    Sep 22, 2014 @ 13:10:33

    Excelente información..

    tengo un problema tengo designer 2013 y sharepoint 2013 pero no me permite
    crear flujos de trabajo solo para la plataforma de SP2010 y me sale el siguiente error:

    La opcion de la plataforma de flujo de trabajo SP 2013 no esta disponible
    porque el servicio de flujo de trabajo no esta configurado en el servidor.

    No se que debo hacer espero y me puedas ayudar..

    Responder

  12. Cesil Roa
    Jul 13, 2016 @ 06:49:07

    Hola, Podria Ayudarme?
    Como puedo crear un Flujo para un Calendario para evitar introducir eventos en fechas pasadas, oh en su defecto, visualizar una alerta para no agregarlo.

    Responder

  13. Vielka R.
    Jul 13, 2016 @ 06:53:26

    Hola Cesil, eso no se puede hacer con flujos de SharePoint. Debes introducir código JavaScrit en el formulario para validar esa fecha.

    Responder

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: