Programación y ejecución de flujos de trabajo periódicos con el desencadenador de periodicidad de Azure Logic Apps

Se aplica a: Azure Logic Apps (consumo + estándar)

Para iniciar y ejecutar el flujo de trabajo conforme a una programación, puede usar el desencadenador de periodicidad genérico como primer paso. Puede establecer una fecha, hora y zona horaria para iniciar el flujo de trabajo y una periodicidad para la repetición de ese flujo de trabajo. La siguiente lista muestra algunos patrones compatibles con este desencadenador junto con periodicidades más avanzadas y programaciones complejas:

  • Ejecutar en una fecha y hora específicas, y después repetir cada n segundos, minutos, horas, días, semanas o meses.

  • Ejecutar inmediatamente y repetir cada n segundos, minutos, horas, días, semanas o meses.

  • Ejecutar de inmediato y repetir cada día a una o varias horas concretas, como 8:00 y 17:00.

  • Ejecutar de inmediato y repetir cada semana en días concretos, como el sábado y el domingo.

  • Ejecutar de inmediato y repetir cada semana en días y a horas concretos, como de lunes a viernes a las 8:00 y a las 17:00.

Nota:

Para iniciar y ejecutar el flujo de trabajo solo una vez en el futuro, use la plantilla de flujo de trabajo con el nombre Scheduler: Run Once Jobs. Esta plantilla usa el desencadenador de solicitud y la acción HTTP en lugar del desencadenador de periodicidad, que no admite este patrón de periodicidad. Para más información, vea Ejecución de solo una vez.

El desencadenador de periodicidad no está asociado a ningún servicio específico, por lo que se puede usar prácticamente con cualquier flujo de trabajo, como flujos de trabajo de aplicación lógica de consumo y flujos de trabajo con estado de aplicación lógica estándar. Este desencadenador no está disponible actualmente para flujos de trabajo sin estado de aplicación lógica estándar.

El desencadenador de periodicidad forma parte del conector de programación integrado y se ejecuta de forma nativa en el runtime de Azure Logic Apps. Para obtener más información sobre los desencadenadores y las acciones de programación integrados, consulte Programar y ejecutar tareas y flujos de trabajo automatizados y periódicos con Azure Logic Apps.

Requisitos previos

  • Una cuenta y una suscripción de Azure. Si aún no tiene una, regístrese para obtener una cuenta de Azure gratuita.

  • Un recurso de aplicación lógica estándar o de consumo con un flujo de trabajo en blanco.

    Nota:

    Si ha creado un flujo de trabajo de aplicación lógica estándar, asegúrese de crear un flujo de trabajo con estado. El desencadenador de periodicidad no está disponible actualmente para flujos de trabajo sin estado.

Adición del desencadenador Periodicidad

En función de si el flujo de trabajo es Consumo o Estándar, siga los pasos correspondientes:

  1. En Azure Portal, abra el recurso de la aplicación lógica y el flujo de trabajo en blanco.

  2. Siga estos pasos generales para agregar el desencadenador integrado Schedule denominado Recurrence.

  3. Defina el intervalo y la frecuencia de periodicidad. En este ejemplo, establezca estas propiedades para ejecutar el flujo de trabajo todas las semanas, por ejemplo:

    Screenshot for Consumption workflow designer with Recurrence trigger interval and frequency.

    Propiedad Nombre JSON Obligatorio Tipo Descripción
    Intervalo interval Entero Entero positivo que describe la frecuencia con la que se ejecuta el flujo de trabajo. Estos son los intervalos mínimo y máximo:

    - Mes: 1-16 meses
    - Semana: 1-71 semanas
    - Día: 1-500 días
    - Hora: 1-12.000 horas
    - Minuto: 1-72 000 minutos
    - Second: 1-9 999 999 segundos

    Por ejemplo, si el intervalo es 6 y la frecuencia es "month", la periodicidad es cada 6 meses.
    Frecuencia frequency String La unidad de tiempo para la periodicidad: segundo, minuto, hora, día, semana o mes

    Importante: Si selecciona la frecuencia día, semana o mes , y especifica una fecha y hora de inicio futuras, asegúrese de configurar la periodicidad con antelación. De lo contrario, el flujo de trabajo podría omitir la primera periodicidad.

    - Día: Configure la periodicidad diaria con al menos 24 horas de antelación.

    - Semana: Configure la periodicidad semanal con al menos 7 días de antelación.

    - Mes: configure la periodicidad mensual con al menos un mes de antelación.
  4. Revise las consideraciones siguientes al usar el desencadenador periodicidad :

    • Si no especifica una fecha y hora de inicio específicas, la primera periodicidad se ejecuta inmediatamente al guardar el flujo de trabajo o implementar el recurso de aplicación lógica, a pesar de la configuración de periodicidad del desencadenador. Para evitar este comportamiento, proporcione una fecha y hora de inicio para cuando quiera que se ejecute la primera periodicidad.

    • Si no especifica ninguna otra opción de programación avanzada, como horas específicas para ejecutar futuras periodicidades, esas periodicidades se basan en la última hora de ejecución. Como resultado, las horas de inicio de estas periodicidades pueden cambiar debido a factores como la latencia durante las llamadas de almacenamiento.

    • Para asegurarse de que el flujo de trabajo no pierda una periodicidad, especialmente cuando la frecuencia está en días o más, pruebe las siguientes opciones:

      • Proporcione una fecha y hora de inicio para la periodicidad y las horas específicas para ejecutar las repeticiones posteriores. Puede usar las propiedades A estas horas y En estos minutos, que solo están disponibles en las frecuencias Día y Semana.

      • En los flujos de trabajo de aplicación lógica de consumo, use el desencadenador de ventana deslizante en lugar del desencadenador de periodicidad.

    • Si implementa un flujo de trabajo de consumo deshabilitado que tiene un desencadenador de periodicidad mediante una plantilla de ARM, el desencadenador se activa al instante al habilitar el flujo de trabajo a menos que establezca el parámetro De hora de inicio antes de la implementación.

  5. Para definir opciones de programación avanzadas, abra la lista Agregar nuevo parámetro. Las opciones que seleccione aparecerán en el desencadenador después de la selección.

    Propiedad Nombre JSON Obligatorio Tipo Descripción
    Zona horaria timeZone No String Solo se aplica cuando se especifica una hora de inicio porque este desencadenador no acepta diferencia horaria con UTC. Seleccione la zona horaria que desea aplicar.
    Hora de inicio startTime No String Proporcione una fecha y hora de inicio, que tiene un máximo de 49 años en el futuro y debe seguir la especificación de fecha y hora ISO 8601 en formato de fecha y hora UTC, pero sin un desplazamiento UTC:

    AAAA-MM-DDThh:mm:ss si selecciona una zona horaria

    -O-

    AAAA-MM-DDThh:mm:ssZ si no selecciona una zona horaria

    Por ejemplo, si desea la fecha del 18 de septiembre de 2020 a las 14:00, especifique entonces "2020-09-18T14:00:00" y especifique una zona horaria como "Hora estándar del Pacífico". O bien, especifique "2020-09-18T14:00:00Z" sin una zona horaria.

    Importante: Si no selecciona una zona horaria, debe agregar la letra "Z" al final sin espacios. Esta "Z" se refiere al equivalente de hora náutica. Si selecciona un valor de zona horaria, no es necesario agregar una "Z" al final del valor de Hora de inicio. Si lo hace, Logic Apps omite el valor de zona horaria porque "Z" implica un formato de hora UTC.

    Para las programaciones simples, la hora de inicio es la primera aparición, mientras que para programaciones complejas, el desencadenador no se activa antes de la hora de inicio. ¿De qué formas puedo usar la fecha y hora de inicio?
    En estos días weekDays No Cadena o matriz de cadenas Si selecciona "Week", puede seleccionar uno o varios días en los que desea ejecutar el flujo de trabajo: Monday, Tuesday, Wednesday, Thursday, Friday, Saturday y Sunday
    A estas horas hours No Entero o matriz de enteros Si selecciona "Day" o "Week", puede especificar uno o varios enteros de 0 a 23 como las horas del día en las que desea ejecutar el flujo de trabajo. Por ejemplo, si especifica "10", "12" y "14", obtendrá 10 a.m., 12 p. m. y 2 p. m. durante las horas del día.

    Nota: De forma predeterminada, los minutos del día se calculan en función de cuándo se inicia la periodicidad. Para establecer minutos específicos del día (por ejemplo, las 10:00, las 12:00 y las 14:00), especifique esos valores mediante la propiedad denominada En estos minutos.
    En estos minutos minutes No Entero o matriz de enteros Si selecciona "Day" o "Week", puede seleccionar uno o varios enteros de 0 a 59 como los minutos de la hora en los que desea ejecutar el flujo de trabajo.

    Por ejemplo, puede especificar "30" como la marca de minuto y, utilizando el ejemplo anterior para las horas del día, obtendrá 10:30 a. m., 12:30 p. m. y las 2:30 p. m.

    Nota: A veces, la marca de tiempo de la ejecución desencadenada puede variar hasta 1 minuto a partir de la hora programada. Si tiene que pasar la marca de tiempo exactamente como está programada a las acciones posteriores, puede usar expresiones de plantilla para cambiar la marca de tiempo en consecuencia. Para obtener más información, vea Funciones de fecha y hora para expresiones.

    Screenshot for Consumption workflow designer and Recurrence trigger with advanced scheduling options.

    Por ejemplo, supongamos que hoy es viernes, 4 de septiembre de 2020. El siguiente desencadenador de periodicidad no se inicia antes de la fecha y hora de inicio especificadas, que es el viernes, 18 de septiembre de 2020, a las 8:00, hora del Pacífico. Sin embargo, la programación de periodicidad está establecida para las 10:30 a. m., las 12:30 p. m. y las 2:30 p. m., solo los lunes. La primera vez que el desencadenador se inicia y crea una instancia de flujo de trabajo es el lunes a las 10:30. Para más información sobre cómo funcionan las horas de inicio, vea estos ejemplos de hora de inicio.

    Las futuras ejecuciones se realizan a las 12:30 p. m. y a las 2:30 p. m. ese mismo día. Cada periodicidad crea su propia instancia de flujo de trabajo. Después de eso, toda la programación se repite el próximo lunes. ¿Qué otros ejemplos se hay?

    Screenshot showing Consumption workflow and Recurrence trigger with advanced scheduling example.

    Nota:

    El desencadenador muestra una vista previa de la periodicidad especificada solo cuando selecciona Día o Semana como frecuencia.

  6. Ahora siga compilando el flujo de trabajo con otras acciones.

Definición de flujo de trabajo: periodicidad

Puede ver cómo aparece la definición del desencadenador de periodicidad con las opciones elegidas si revisa la definición JSON subyacente del flujo de trabajo en las aplicaciones lógicas de consumo y las aplicaciones lógicas estándar (solo con estado).

En función de si la aplicación lógica es de consumo o estándar, elija una de las siguientes opciones:

  • Consumo: en la barra de herramientas del diseñador, seleccione vista Código. Para volver al diseñador, en la barra de herramientas del editor de la vista de código, seleccione Diseñador.

  • Estándar: en el menú del flujo de trabajo, seleccione vista Código. Para volver al diseñador, en el menú del flujo de trabajo, seleccione Diseñador.

En el ejemplo siguiente se muestra cómo puede aparecer una definición de desencadenador de periodicidad en la definición JSON subyacente del flujo de trabajo:

"triggers": {
   "Recurrence": {
      "type": "Recurrence",
      "recurrence": {
         "frequency": "Week",
         "interval": 1,
         "schedule": {
            "hours": [
               10,
               12,
               14
            ],
            "minutes": [
               30
            ],
            "weekDays": [
               "Monday"
            ]
         },
         "startTime": "2020-09-07T14:00:00Z",
         "timeZone": "Pacific Standard Time"
      }
   }
}

Nota:

En la definición del desencadenador Periodicidad, la propiedad evaluatedRecurrence aparece junto con la propiedad recurrence cuando aparece cualquier expresión o referencia de parámetro en los criterios de periodicidad. Esta propiedad evaluatedRecurrence representa los valores evaluados de la referencia de expresión o parámetro. Si los criterios de periodicidad no especifican ninguna expresión o referencia a parámetros, las propiedades evaluatedRecurrence y recurrence son las mismas.

En el ejemplo siguiente se muestra cómo actualizar la definición del desencadenador para que el desencadenador se ejecute solo una vez el último día de cada mes:

"triggers": {
    "Recurrence": {
        "recurrence": {
            "frequency": "Month",
            "interval": 1,
            "schedule": {
                "monthDays": [-1]
            }
        },
        "type": "Recurrence"
    }
}

Desencadenamiento de desplazamientos y desfases en la periodicidad (horario de verano)

Al programar trabajos, Azure Logic Apps pone en cola el mensaje que será procesado y especifica cuándo estará disponible. Esto se determina en función de la hora UTC de la ejecución del último trabajo y la hora UTC programada para la ejecución del siguiente. Si especifica una hora de inicio con una periodicidad personalizada, asegúrese de seleccionar la zona horaria correspondiente para que el flujo de trabajo de la aplicación lógica se ejecute a la hora especificada. De este modo, la hora UTC de la aplicación lógica también se cambia para contrarrestar el cambio horario estacional. Los desencadenadores periódicos respetarán la programación que establezca. Esto incluye cualquier zona horaria que especifique.

Tenga en cuenta que, si no selecciona una zona horaria, los eventos de horario de verano (DST) podrían alterar la hora a la que se ejecutan los desencadenadores. Es decir, la hora de inicio se retrasará una hora cuando se use el horario de verano y se adelantará una hora cuando este deje de usarse. Sin embargo, algunas ventanas de tiempo pueden causar problemas cuando se cambia la hora. Para obtener más información y ejemplos, consulte Periodicidad de horario de verano y hora estándar.

Pasos siguientes