Ejecuta un flujo de trabajo

Ejecuta la definición actual del flujo de trabajo asociada con el flujo de trabajo.

Puedes pasar argumentos del entorno de ejecución en una solicitud de ejecución de flujo de trabajo y acceder a esos argumentos con una variable de flujo de trabajo. Para obtener más información, consulta Cómo pasar argumentos del entorno de ejecución en una solicitud de ejecución.

Una vez que se completa la ejecución de un flujo de trabajo, se conservan su historial y sus resultados durante un tiempo limitado. Para obtener más información, consulta Cuotas y límites.

Antes de comenzar

Es posible que las restricciones de seguridad que define tu organización no te permitan completar los siguientes pasos. Para obtener información sobre la solución de problemas, consulta Desarrolla aplicaciones en un entorno Google Cloud restringido.

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  5. Make sure that billing is enabled for your Google Cloud project.

  6. Si un flujo de trabajo accede a otros recursos de Google Cloud , asegúrate de que esté asociado a una cuenta de servicio que tenga los permisos correctos para hacerlo. Para saber qué cuenta de servicio está asociada a un flujo de trabajo existente, consulta Cómo verificar la cuenta de servicio asociada a un flujo de trabajo.

    Ten en cuenta que, para crear un recurso y conectar una cuenta de servicio, necesitas permisos para crear ese recurso y para actuar en nombre de la cuenta de servicio que conectarás al recurso. Para obtener más información, consulta Permisos de cuentas de servicio.

  7. Implementa un flujo de trabajo con la consola deGoogle Cloud o la CLI de Google Cloud.
  8. Ejecuta un flujo de trabajo

    Puedes ejecutar un flujo de trabajo de las siguientes maneras:

    • En la consola de Google Cloud
    • Con Google Cloud CLI en tu terminal o Cloud Shell
    • Enviar una solicitud directa a la API de Workflows

    También puedes ejecutar un flujo de trabajo con las bibliotecas cliente de Cloud. Para obtener más información, consulta Cómo ejecutar un flujo de trabajo con las bibliotecas cliente de Cloud.

    Console

    1. Para ejecutar un flujo de trabajo, en la consola de Google Cloud , ve a la página Workflows:

      Ir a Workflows

    2. En la página Workflows, selecciona un flujo de trabajo para ir a su página de detalles.

    3. En la página Detalles del flujo de trabajo, haz clic en Ejecutar.

    4. En el panel Entrada de la página Ejecutar flujo de trabajo, puedes ingresar argumentos de tiempo de ejecución opcionales para pasar a tu flujo de trabajo antes de la ejecución. Los argumentos deben estar en formato JSON; por ejemplo, {"animal":"cat"}. Si tu flujo de trabajo no usa argumentos de tiempo de ejecución, deja este campo en blanco.

    5. De manera opcional, especifica el nivel de registro de llamadas que deseas aplicar a la ejecución del flujo de trabajo. En la lista Nivel de registro de llamadas, selecciona una de las siguientes opciones:

      • No especificado: No se especifica ningún nivel de registro. Esta es la opción predeterminada. Un nivel de registro de ejecución tiene prioridad sobre cualquier nivel de registro de flujo de trabajo, a menos que no se especifique el nivel de registro de ejecución (predeterminado). En ese caso, se aplica el nivel de registro del flujo de trabajo.
      • Solo errores: Registra todas las excepciones detectadas, o cuando se detiene una llamada debido a una excepción.
      • Todas las llamadas: Registra todas las llamadas a subflujos de trabajo o funciones de biblioteca y sus resultados.
      • Sin registros: Sin registro de llamadas.

    6. De manera opcional, especifica el nivel de historial de ejecución que deseas aplicar a la ejecución del flujo de trabajo. En la lista Historial de ejecución, selecciona una de las siguientes opciones:

      • Heredar del flujo de trabajo: Aplica el parámetro de configuración del historial de ejecución del flujo de trabajo. Esta es la opción predeterminada.
      • Basic: Habilita el historial de ejecución básico.
      • Detallado: Habilita el historial de ejecución detallado, incluidos los valores de las variables dentro del alcance y la cantidad esperada de iteraciones.

    7. Haz clic en Ejecutar.

    8. En la página Detalles de ejecución, puedes ver los resultados de la ejecución, incluidos los resultados, el ID y el estado de la ejecución, y el paso actual o final de la ejecución del flujo de trabajo. Para obtener más información, consulta Cómo acceder a los resultados de la ejecución del flujo de trabajo.

    gcloud

    1. Abre una terminal.

    2. Busca el nombre del flujo de trabajo que deseas ejecutar. Si no conoces el nombre del flujo de trabajo, puedes ingresar el siguiente comando para enumerar todos tus flujos de trabajo:

      gcloud workflows list
    3. Puedes ejecutar el flujo de trabajo con el comando gcloud workflows run o el comando gcloud workflows execute:

      • Ejecuta el flujo de trabajo y espera a que se complete la ejecución:

        gcloud workflows run WORKFLOW_NAME \
            --call-log-level=CALL_LOGGING_LEVEL \
            --execution-history-level="EXECUTION_HISTORY_LEVEL" \
            --data=DATA
      • Ejecuta el flujo de trabajo sin esperar a que finalice el intento de ejecución:

        gcloud workflows execute WORKFLOW_NAME \
            --call-log-level=CALL_LOGGING_LEVEL \
            --execution-history-level="EXECUTION_HISTORY_LEVEL" \
            --data=DATA

        Reemplaza lo siguiente:

        • WORKFLOW_NAME: El nombre del flujo de trabajo.
        • CALL_LOGGING_LEVEL (opcional): Nivel del registro de llamadas que se aplicará durante la ejecución. Puede ser una de las siguientes opciones:

          • none: No se especifica ningún nivel de registro. Esta es la opción predeterminada. Un nivel de registro de ejecución tiene prioridad sobre cualquier nivel de registro de flujo de trabajo, a menos que no se especifique el nivel de registro de ejecución (predeterminado). En ese caso, se aplica el nivel de registro del flujo de trabajo.
          • log-errors-only: Registra todas las excepciones detectadas; o cuando se detiene una llamada debido a una excepción.
          • log-all-calls: Registra todas las llamadas a subflujos de trabajo o funciones de biblioteca y sus resultados.
          • log-none: Sin registro de llamadas.
        • EXECUTION_HISTORY_LEVEL (opcional): Nivel del historial de ejecución que se aplicará durante la ejecución. Puede ser una de las siguientes opciones:

          • none: No se especifica ningún nivel de historial de ejecución. Esta es la opción predeterminada. Si no se especifica un nivel de historial de ejecución para una ejecución, se determina según el nivel aplicado al flujo de trabajo. Si los niveles son diferentes, el parámetro de configuración aplicado a nivel de la ejecución anula el parámetro de configuración aplicado a nivel del flujo de trabajo para esta ejecución.
          • execution-history-basic: Habilita el historial de ejecución básico.
          • execution-history-detailed: Habilita el historial de ejecución detallado, incluidos los valores de las variables dentro del alcance y la cantidad esperada de iteraciones.
        • DATA (opcional): Son los argumentos de tiempo de ejecución para tu flujo de trabajo en formato JSON.

    4. Si ejecutaste gcloud workflows execute, se muestra el ID único del intento de ejecución del flujo de trabajo y el resultado es similar al siguiente:

       To view the workflow status, you can use following command:
       gcloud workflows executions describe b113b589-8eff-4968-b830-8d35696f0b33 --workflow workflow-2 --location us-central1

      Para ver el estado de la ejecución, ingresa el comando que se mostró en el paso anterior.

    Si el intento de ejecución se realiza de forma correcta, el resultado es similar al siguiente, con un state que indica el éxito del flujo de trabajo y un status que especifica el paso final del flujo de trabajo de la ejecución.

    argument: '{"searchTerm":"Friday"}'
    endTime: '2022-06-22T12:17:53.086073678Z'
    name: projects/1051295516635/locations/us-central1/workflows/myFirstWorkflow/executions/c4dffd1f-13db-46a0-8a4a-ee39c144cb96
    result: '["Friday","Friday the 13th (franchise)","Friday Night Lights (TV series)","Friday
        the 13th (1980 film)","Friday the 13th","Friday the 13th (2009 film)","Friday the
        13th Part III","Friday the 13th Part 2","Friday (Rebecca Black song)","Friday Night
        Lights (film)"]'
    startTime: '2022-06-22T12:17:52.799387653Z'
    state: SUCCEEDED
    status:
        currentSteps:
        - routine: main
            step: returnOutput
    workflowRevisionId: 000001-ac2

    API de REST

    Para crear una ejecución nueva con la revisión más reciente de un flujo de trabajo determinado, usa el método projects.locations.workflows.executions.create.

    Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:

    • PROJECT_NUMBER: Es el número de tu proyecto Google Cloudque aparece en la página Configuración de IAM y administración.
    • LOCATION: la región en la que se implementa el flujo de trabajo, por ejemplo, us-central1.
    • WORKFLOW_NAME: Es el nombre definido por el usuario para el flujo de trabajo, por ejemplo, myFirstWorkflow.
    • PARAMETER: es opcional. Si el flujo de trabajo que ejecutas puede recibir argumentos de tiempo de ejecución que le pasas como parte de una solicitud de ejecución, puedes agregar al cuerpo de la solicitud una cadena con formato JSON cuyo valor sea uno o más pares parámetro-valor escapados, por ejemplo, "{\"searchTerm\":\"asia\"}".
    • VALUE: es opcional. Es el valor de un par clave-valor que tu flujo de trabajo puede recibir como un argumento de tiempo de ejecución.
    • CALL_LOGGING_LEVEL: es opcional. Es el nivel de registro de llamadas que se aplicará durante la ejecución. De forma predeterminada, no se especifica ningún nivel de registro y, en su lugar, se aplica el nivel de registro del flujo de trabajo. Para obtener más información, consulta Envía registros a Logging. Una de las siguientes opciones:
      • CALL_LOG_LEVEL_UNSPECIFIED: No se especifica ningún nivel de registro y, en su lugar, se aplica el nivel de registro del flujo de trabajo. Esta es la opción predeterminada. De lo contrario, se aplica el nivel de registro de ejecución y tiene prioridad sobre el nivel de registro de flujo de trabajo.
      • LOG_ERRORS_ONLY: Registra todas las excepciones detectadas; o cuando se detiene una llamada debido a una excepción.
      • LOG_ALL_CALLS: Registra todas las llamadas a subflujos de trabajo o funciones de biblioteca y sus resultados.
      • LOG_NONE: Sin registro de llamadas.
    • BACKLOG_EXECUTION: Opcional. Si se establece en true, la ejecución no se acumula cuando se agota la cuota de simultaneidad. Para obtener más información, consulta Administra el registro de tareas pendientes de ejecución.
    • EXECUTION_HISTORY_LEVEL: Opcional. Es el nivel del historial de ejecución que se aplicará durante la ejecución. Para obtener más información, consulta Cómo ver el historial de los pasos de ejecución. Una de las siguientes opciones:
      • EXECUTION_HISTORY_LEVEL_UNSPECIFIED: No se especifica ningún nivel de historial de ejecución. Esta es la opción predeterminada. Si no se especifica un nivel de historial de ejecución para una ejecución, se determina según el nivel aplicado al flujo de trabajo. Si los niveles son diferentes, el parámetro de configuración aplicado a nivel de la ejecución anula el parámetro de configuración aplicado a nivel del flujo de trabajo para esta ejecución.
      • EXECUTION_HISTORY_BASIC: Habilita el historial de ejecución básico.
      • EXECUTION_HISTORY_ADVANCED: Habilita el historial de ejecución detallado, incluidos los valores de las variables dentro del alcance y la cantidad esperada de iteraciones.

    Cuerpo JSON de la solicitud:

    {
      "argument": "{\"PARAMETER\":\"VALUE\"}",
      "callLogLevel": "CALL_LOGGING_LEVEL",
      "disableConcurrencyQuotaOverflowBuffering": "BACKLOG_EXECUTION",
      "executionHistoryLevel": "EXECUTION_HISTORY_LEVEL"
    }
    

    Para enviar tu solicitud, expande una de estas opciones:

    Si el proceso se realiza correctamente, el cuerpo de la respuesta contiene una instancia recién creada de Execution:

    {
      "name": "projects/PROJECT_NUMBER/locations/LOCATION/workflows/WORKFLOW_NAME/executions/EXECUTION_ID",
      "startTime": "2023-11-07T14:35:27.215337069Z",
      "state": "ACTIVE",
      "argument": "{\"PARAMETER\":\"VALUE\"}",
      "workflowRevisionId": "000001-2df",
      "callLogLevel": "CALL_LOGGING_LEVEL",
      "executionHistoryLevel": "EXECUTION_HISTORY_LEVEL",
      "status": {}
    }
    

    Cómo verificar el estado de las ejecuciones

    Existen varios comandos que te ayudan a verificar el estado de la ejecución de un flujo de trabajo.

    • Para recuperar una lista de los intentos de ejecución de un flujo de trabajo y sus IDs, ingresa el siguiente comando:

      gcloud workflows executions list WORKFLOW_NAME

      Reemplaza WORKFLOW_NAME por el nombre del flujo de trabajo.

      El comando devuelve un valor de NAME similar al siguiente:

      projects/PROJECT_NUMBER/locations/REGION/workflows/WORKFLOW_NAME/executions/EXECUTION_ID

      Copia el ID de ejecución para usarlo en el siguiente comando.

    • Para verificar el estado de un intento de ejecución y esperar a que finalice, ingresa el siguiente comando:

      gcloud workflows executions wait EXECUTION_ID

      Reemplaza EXECUTION_ID por el ID del intento de ejecución.

      El comando espera a que finalice el intento de ejecución y, luego, devuelve los resultados.

    • Para esperar hasta que se complete la última ejecución y, luego, devolver el resultado de la ejecución completada, ingresa el siguiente comando:

      gcloud workflows executions wait-last

      Si ya intentaste ejecutar el comando en la misma sesión de gcloud, el comando espera a que finalice el intento anterior y, luego, muestra los resultados de la ejecución completada. Si no existe ningún intento anterior, gcloud devuelve el siguiente error:

      ERROR: (gcloud.workflows.executions.wait-last) [NOT FOUND] There are no cached executions available.
      
    • Para obtener el estado de la última ejecución, ingresa el siguiente comando:

      gcloud workflows executions describe-last

      Si hiciste un intento de ejecución anterior en la misma sesión de gcloud, el comando devolverá los resultados de la última ejecución, incluso si se está ejecutando. Si no existe ningún intento anterior, gcloud devuelve el siguiente error:

      ERROR: (gcloud.beta.workflows.executions.describe-last) [NOT FOUND] There are no cached executions available.
      

    Filtrar ejecuciones

    Puedes aplicar filtros a la lista de ejecuciones de flujos de trabajo que devuelve el método workflows.executions.list.

    Puedes aplicar filtros en los siguientes campos:

    • createTime
    • disableOverflowBuffering
    • duration
    • endTime
    • executionId
    • label
    • startTime
    • state
    • stepName
    • workflowRevisionId

    Por ejemplo, para filtrar según una etiqueta (labels."fruit":"apple"), puedes realizar una solicitud a la API similar a la siguiente:

    GET https://workflowexecutions.googleapis.com/v1/projects/MY_PROJECT/locations/MY_LOCATION/workflows/MY_WORKFLOW/executions?view=full&filter=labels.%22fruit%22%3A%22apple%22"
    

    Aquí:

    • view=full especifica una vista que define qué campos se deben completar en las ejecuciones devueltas; en este caso, todos los datos.
    • labels.%22fruit%22%3A%22apple%22es la sintaxis del filtro codificada como URL.

    Para obtener más información, consulta AIP-160 Filtering.

    Administra el registro de tareas pendientes de ejecución

    Puedes usar el registro de ejecución pendiente para evitar reintentos del cliente, quitar demoras en la ejecución y maximizar el rendimiento. Las ejecuciones pendientes se ejecutan automáticamente en cuanto el cupo de simultaneidad de ejecución está disponible.

    Hay una cantidad máxima de ejecuciones de flujos de trabajo activos que se pueden ejecutar de forma simultánea. Una vez que se agota esta cuota, y si se inhabilita el registro de ejecuciones pendientes o si se alcanza la cuota de ejecuciones pendientes, las ejecuciones nuevas fallan con un código de estado HTTP 429 Too many requests. Con el registro de tareas pendientes de ejecución habilitado, las nuevas ejecuciones se realizan correctamente y se crean en un estado QUEUED. En cuanto la cuota de simultaneidad de ejecución esté disponible, las ejecuciones se realizarán automáticamente y entrarán en un estado ACTIVE.

    De forma predeterminada, el registro de solicitudes pendientes de ejecución está habilitado para todas las solicitudes (incluidas las que se activan con Cloud Tasks), con las siguientes excepciones:

    • Cuando creas una ejecución con un conector executions.run o executions.create en un flujo de trabajo, el registro de ejecuciones pendientes está inhabilitado de forma predeterminada. Puedes configurarlo estableciendo de forma explícita el campo disableConcurrencyQuotaOverflowBuffering de la ejecución en false.
    • En el caso de las ejecuciones activadas por Pub/Sub, se inhabilita el registro de ejecuciones pendientes y no se puede configurar.

    Ten en cuenta lo siguiente:

    • Las ejecuciones en cola se inician en orden de llegada (FIFO) de la mejor manera posible.
    • Un campo de marca de tiempo createTime indica cuándo se crea una ejecución. La marca de tiempo startTime indica cuándo se extrae automáticamente una ejecución de la cola de tareas pendientes y comienza a ejecutarse. Para las ejecuciones que no están pendientes, ambos valores de marca de tiempo son idénticos.
    • El límite de ejecuciones pendientes se puede observar con la métrica de cuota workflowexecutions.googleapis.com/executionbacklogentries. Para obtener más información, consulta Visualiza y administra las cuotas.

    Inhabilita el registro de ejecución pendiente

    Puedes inhabilitar el registro de tareas pendientes de ejecución configurando una marca cuando usas Google Cloud CLI. Por ejemplo:

    gcloud workflows execute WORKFLOW_NAME
        --disable-concurrency-quota-overflow-buffering

    También puedes inhabilitar el registro de tareas pendientes de ejecución configurando el campo disableConcurrencyQuotaOverflowBuffering como true en el cuerpo de la solicitud JSON cuando envíes una solicitud de ejecución a la API de REST de Workflows. Por ejemplo:

    {
      "argument": {"arg1":"value1"},
      "callLogLevel": "LOG_NONE",
      "disableConcurrencyQuotaOverflowBuffering": true
    }

    Para obtener más información, consulta Ejecuta un flujo de trabajo.

    ¿Qué sigue?