Compartir a través de


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:

Las opciones de programación avanzadas, como En estas horas y En estos días, están disponibles y solo funcionan con desencadenadores de sondeo integrados, como los desencadenadores Periodicidad y Ventana deslizante, que se ejecutan directamente con el entorno de ejecución de Azure Logic Apps. En el caso de los conectores administrados por Microsoft, hospedados y ejecutados en Azure, los desencadenadores de sondeo calculan la siguiente periodicidad usando solo los valores intervalo y frecuencia , no las opciones de programación avanzadas.

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

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 de Programación denominado Periodicidad.

  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:

    Captura de pantalla del diseñador de flujos de trabajo de consumo con el intervalo y la frecuencia del desencadenador Periodicidad.

    Propiedad Nombre JSON Obligatorio Type 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:

    - Month: 1-16 meses
    - Week: 1-71 semanas
    - Day: 1-500 días
    - Hour: 1-12 000 horas
    - Minute: 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 Cadena La unidad de tiempo para la periodicidad: segundo, minuto, hora, día, semana o mes

    Importante: si usa la frecuencia Día, Semana o Mes y especifica una fecha y hora de inicio futuras, asegúrese de configurar la periodicidad de antemano. 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 un fecha y hora de inicio específicos, 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 repeticiones, esas repeticiones se basan en la hora de la última 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 repetición, especialmente si la frecuencia se especifica en días o unidades superiores, 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 Type Descripción
    Zona horaria timeZone No Cadena 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. Para obtener más información, vea Zona horaria predeterminada.
    Hora de inicio startTime No Cadena Proporciona 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 una diferencia horaria con UTC:

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

    O bien

    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 se 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. para 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 con respecto a 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.

    Captura de pantalla del diseñador de flujos de trabajo de consumo y del desencadenador Periodicidad con opciones avanzadas de programación.

    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?

    Captura de pantalla que muestra el flujo de trabajo de consumo y el desencadenador Periodicidad con un ejemplo de programación avanzada.

    Nota:

    El desencadenador muestra una vista previa de la periodicidad especificada solo si selecciona la frecuencia Day o Week.

  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"
    }
}

Ejecución de solo una vez

Para ejecutar el flujo de trabajo solo al mismo tiempo en el futuro, puede aplicar la plantilla Programador: Ejecutar una vez los trabajos, que solo está disponible para flujos de trabajo de aplicación lógica de consumo. 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.

  1. En Azure Portal, cree una aplicación lógica consumo.

  2. En el diseñador, abra el flujo de trabajo en blanco. En la barra de herramientas del diseñador, seleccione Habilitar diseñador heredado.

  3. En la barra de herramientas del diseñador, seleccione Plantillas.

  4. En la página que se abre, desplácese más allá del vídeo hasta la sección Plantillas.

  5. En la lista Categoría, seleccione Programación y, a continuación, seleccione la plantilla siguiente:

    Captura de pantalla que muestra la plantilla seleccionada denominada Scheduler Run once jobs (Programador: Ejecutar una vez los trabajos).

  6. En la barra de herramientas del diseñador, seleccione Diseñador disponible con carácter general.

  7. Siga estos pasos generales para agregar la acción Programar denominada Retrasar hasta y proporcionar el tiempo para el momento en que se inicia la ejecución de la siguiente acción.

O bien, puede iniciar el flujo de trabajo con el desencadenador de Solicitud denominado Cuando se recibe una solicitud HTTP y pasar la hora de inicio como parámetro para el desencadenador.

Ejecutar una vez el último día del mes

Para esta tarea, debe editar el desencadenador de periodicidad en la definición JSON subyacente del flujo de trabajo mediante la vista de código, no el diseñador, mediante el ejemplo siguiente:

"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