Puedes recuperar el historial de una ejecución de flujo de trabajo especificada como una lista de entradas de pasos. Cada entrada de paso brinda información que puede ayudarte a analizar, la depuración o la optimización de un flujo de trabajo. Por ejemplo, puedes confirmar qué pasos se ejecutaron y determinar la duración y el éxito de un paso. Esto puede ser muy útil cuando se depura un archivo grande flujo de trabajo no lineal (uno con muchas ramas paralelas, por ejemplo).
Una entrada de paso representa un paso real en el código fuente (por ejemplo,
assign
o call
) o un bloque de instrucciones (por ejemplo, un bucle for
o un
try/retry/except
). Para obtener una lista completa de los tipos de pasos, consulta
StepType.
Cómo recuperar entradas de pasos
Puedes recuperar entradas de pasos enviando una solicitud a la API de REST de Workflow Executions o a través de la consola de Google Cloud:
consola de Google Cloud: en este documento, consulta Consulta las entradas de pasos en la consola.
Además de enumerar las entradas de los pasos y sus detalles, la consola proporciona una representación gráfica de los pasos de ejecución, lo que facilita para ver y analizar la ruta de la ejecución de un flujo de trabajo.
API de REST de ejecuciones de Workflows: en este documento, consulta Recupera una entrada de paso y Enumera las entradas de pasos.
Información para ingresar los pasos
La entrada de un paso incluye la siguiente información. Para conocer más detalles, en esta consulta el documento Ejemplos.
Nombre | Nombre completo del recurso de la entrada del paso, que es un ID único con el
siguiente formato, y donde STEPENTRY_ID es una
contador de aumento:
|
Horas de creación y actualización | Marcas de tiempo de la hora de creación de la entrada de paso y su actualización más reciente Si se completó una entrada de paso, updateTime indica el tiempo de finalización.
|
Nombres de rutinas y pasos | Nombres de la rutina y el paso al que pertenece la entrada del paso. Un nombre de rutina es el nombre del subflujo de trabajo definido en el código fuente de YAML o JSON. El nombre de la rutina de nivel superior es main .
|
Estado y tipo de progreso | Estado de la entrada del paso (por ejemplo, si la entrada es correcta o falló o si una entrada de paso está en curso y el tipo de progreso. Para obtener una lista completa de los estados y los tipos de progreso, consulta State y ProgressType. |
Información de navegación | Posición de la entrada del paso para que puedas comprender mejor la la jerarquía y el flujo del flujo de trabajo, por ejemplo, qué entradas de paso antes o después de la entrada del paso actual, o bien cuáles son elementos superiores o secundarios de la entrada del paso. Para obtener más información, consulta NavigationInfo. |
Metadatos | Datos relacionados con una entrada de paso iterativo que incluye un ID que indica el subproceso secundario (por ejemplo, qué STEP_PARALLEL_BRANCH_ENTRY en STEP_PARALLEL_BRANCH ) o la iteración de un bucle for (por ejemplo, qué STEP_FOR_ITERATION en STEP_FOR ). Para obtener más información, consulta StepEntryMetadata.
|
Excepciones | Es la carga útil relacionada con cualquier excepción y que proporciona una descripción de por qué falló una entrada de paso. |
Cómo ver entradas de pasos en la consola
Puedes ver las entradas de pasos de una ejecución de flujo de trabajo específica en la consola de Google Cloud.
En la consola de Google Cloud, ve a la página Workflows.
Haz clic en el nombre del flujo de trabajo para ir a la página Detalles del flujo de trabajo.
Para obtener detalles sobre una ejecución en particular, haz clic en su ID de ejecución.
En la pestaña Resumen, se proporciona información sobre la ejecución general, incluida cualquier excepción que haya provocado la falla de la ejecución. Para ver más información, consulta Mensajes de error de ejecución.
Para ver el historial de ejecución del flujo de trabajo como una lista de entradas de paso, haz clic en el Pasos.
Se enumeran todas las entradas de paso para la ejecución del flujo de trabajo.
Para filtrar las entradas de pasos, usa el campo Filtro que se encuentra en la parte superior de la tabla para seleccionar una propiedad y un valor, por ejemplo,
State: Failed
.Para mostrar vínculos a las entradas de pasos superior, secundarios, siguiente y anterior, haz clic en una entrada de paso específica.
Si haces clic en un vínculo, los demás se actualizarán automáticamente. Por ejemplo: El elemento superior se vinculará al elemento superior de la entrada del paso en la que hiciste clic.
El panel Visualization proporciona una representación gráfica del pasos del flujo de trabajo y te ayuda a comprender su ruta.
Ten en cuenta que la visualización puede diferir de las entradas de pasos. Por ejemplo, un El bloque
for
se representa como un solo componente en la visualización. Sin embargo, según el número de iteraciones, puede haber varias entradas de paso.En el panel, puedes hacer lo siguiente:
- Cómo acercar o alejar la visualización
- Contrae o expande las entradas de pasos superiores
- Hacer clic en la entrada de un paso y ver las entradas anteriores y siguientes
- Confirmar las entradas de pasos correctas y fallidas como lo indica una marca de verificación verde o un signo de exclamación rojo
- Para cerrar el panel Visualization, haz clic en el flecha de expansión; haz clic nuevamente para abrir el panel
Antes de recuperar una entrada de paso
Para obtener los permisos que necesitas para recuperar una entrada de paso,
pídele a tu administrador que te otorgue el rol de IAM
Administrador de flujos de trabajo (workflows.stepEntries.get
)
en tu proyecto.
Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.
También puedes obtener los permisos necesarios mediante roles personalizados o cualquier otro rol predefinido.
Recupera una entrada de paso
Para recuperar una entrada de paso para una ejecución de flujo de trabajo determinada, usa el método projects.locations.workflows.executions.stepEntries.get
.
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 de Google Cloud que aparece en la página Configuración de IAM y administración.LOCATION
: el región en la que se implementa el flujo de trabajo, por ejemplo,us-central1
WORKFLOW_ID
: Es el nombre definido por el usuario. para el flujo de trabajo, por ejemplo,myFirstWorkflow
.EXECUTION_ID
: Es el ID único de una ejecución de flujo de trabajo que se muestra después de que se ejecuta un flujo de trabajo.STEPENTRY_ID
: Es el ID único de una entrada de paso, por ejemplo,1
.
Para enviar tu solicitud, expande una de estas opciones:
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION/workflows/WORKFLOW_ID/executions/EXECUTION_ID/stepEntries/STEPENTRY_ID", "createTime": "2023-10-19T13:49:56.522717646Z", "updateTime": "2023-10-19T13:49:56.525439354Z", "routine": "main", "step": "checkSearchTermInInput", "stepType": "STEP_CONDITION", "state": "STATE_SUCCEEDED", "entryId": "2", "navigationInfo": { "children": [ "3" ], "parent": "1", "next": "3", "previous": "1" } }
Antes de enumerar las entradas de pasos
A fin de obtener los permisos que necesitas para enumerar las entradas de pasos,
solicita a tu administrador que te otorgue el
Administrador de flujos de trabajo (workflows.stepEntries.list
)
de IAM en tu proyecto.
Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.
También puedes obtener los permisos necesarios mediante roles personalizados o cualquier otro rol predefinido.
Enumera las entradas de pasos
Para enumerar las entradas de paso de la ejecución de un flujo de trabajo determinado, usa el
projects.locations.workflows.executions.stepEntries.list
. De forma predeterminada, los resultados se muestran en orden ascendente del createTime
de las entradas de paso.
Antes de usar cualquiera de los datos de solicitud a continuación, realiza los siguientes reemplazos:
PROJECT_NUMBER
: tu Google Cloud número de proyecto que figura en la lista de las cuentas de IAM y Administrador Configuración.LOCATION
: Es la región en la que se implementa el flujo de trabajo, por ejemplo,us-central1
.WORKFLOW_ID
: Es el nombre definido por el usuario. para el flujo de trabajo, por ejemplo,myFirstWorkflow
.EXECUTION_ID
: Es el ID único de un la ejecución del flujo de trabajo que se muestra después de que se ejecuta un flujo de trabajo.
Para enviar tu solicitud, expande una de estas opciones:
Deberías recibir una respuesta JSON similar a la que se muestra a continuación:
{ "stepEntries": [ { "name": "projects/PROJECT_NUMBER/locations/LOCATION/workflows/WORKFLOW_ID/executions/EXECUTION_ID/stepEntries/1", "createTime": "2023-10-19T13:49:56.522705770Z", "updateTime": "2023-10-19T13:49:56.525439429Z", "routine": "main", "step": "checkSearchTermInInput", "stepType": "STEP_SWITCH", "state": "STATE_SUCCEEDED", "entryId": "1", "navigationInfo": { "children": [ "2" ], "next": "2" } }, { "name": "projects/PROJECT_NUMBER/locations/LOCATION/workflows/WORKFLOW_ID/executions/EXECUTION_ID/stepEntries/2", "createTime": "2023-10-19T13:49:56.522717646Z", "updateTime": "2023-10-19T13:49:56.525439354Z", "routine": "main", "step": "checkSearchTermInInput", "stepType": "STEP_CONDITION", "state": "STATE_SUCCEEDED", "entryId": "2", "navigationInfo": { "children": [ "3" ], "parent": "1", "next": "3", "previous": "1" } }, { "name": "projects/PROJECT_NUMBER/locations/LOCATION/workflows/WORKFLOW_ID/executions/EXECUTION_ID/stepEntries/3", "createTime": "2023-10-19T13:49:56.525379814Z", "updateTime": "2023-10-19T13:49:56.525439285Z", "routine": "main", "step": "checkSearchTermInInput.condition1", "stepType": "STEP_ASSIGN", "state": "STATE_SUCCEEDED", "entryId": "3", "navigationInfo": { "parent": "2", "next": "4", "previous": "2" } }, { "name": "projects/PROJECT_NUMBER/locations/LOCATION/workflows/WORKFLOW_ID/executions/EXECUTION_ID/stepEntries/4", "createTime": "2023-10-19T13:49:56.525440360Z", "updateTime": "2023-10-19T13:49:56.716973793Z", "routine": "main", "step": "readWikipedia", "stepType": "STEP_CALL", "state": "STATE_SUCCEEDED", "entryId": "4", "navigationInfo": { "next": "5", "previous": "3" } }, { "name": "projects/PROJECT_NUMBER/locations/LOCATION/workflows/WORKFLOW_ID/executions/EXECUTION_ID/stepEntries/5", "createTime": "2023-10-19T13:49:56.717263008Z", "updateTime": "2023-10-19T13:49:56.717353199Z", "routine": "main", "step": "returnOutput", "stepType": "STEP_RETURN", "state": "STATE_SUCCEEDED", "entryId": "5", "navigationInfo": { "previous": "4" } } ], "totalSize": 5 }
Ejemplos
Flujo de trabajo con un bloque for
Flujo de trabajo
YAML
- assignStep: assign: - sum: 0 - forStep: for: range: [1, 2] value: v steps: - sumStep: assign: - sum: ${sum + v} - returnStep: return: ${sum}
JSON
[ { "assignStep": { "assign": [ { "sum": 0 } ] } }, { "forStep": { "for": { "range": [ 1, 2 ], "value": "v", "steps": [ { "sumStep": { "assign": [ { "sum": "${sum + v}" } ] } } ] } } }, { "returnStep": { "return": "${sum}" } } ]
Diagrama
Entradas de pasos
{ "stepEntries": [ { "name": "projects/200478149810/locations/us-central1/workflows/ck-for-block/executions/74785b43-5b9f-4adf-bde7-a9880d0e100a/stepEntries/1", "createTime": "2023-10-20T17:19:37.889232683Z", "updateTime": "2023-10-20T17:19:37.889275457Z", "routine": "main", "step": "assignStep", "stepType": "STEP_ASSIGN", "state": "STATE_SUCCEEDED", "entryId": "1", "navigationInfo": { "next": "2" } }, { "name": "projects/200478149810/locations/us-central1/workflows/ck-for-block/executions/74785b43-5b9f-4adf-bde7-a9880d0e100a/stepEntries/2", "createTime": "2023-10-20T17:19:37.889276124Z", "updateTime": "2023-10-20T17:19:37.889474759Z", "routine": "main", "step": "forStep", "stepType": "STEP_FOR", "state": "STATE_SUCCEEDED", "entryId": "2", "navigationInfo": { "children": [ "3", "5" ], "next": "3", "previous": "1" } }, { "name": "projects/200478149810/locations/us-central1/workflows/ck-for-block/executions/74785b43-5b9f-4adf-bde7-a9880d0e100a/stepEntries/3", "createTime": "2023-10-20T17:19:37.889313107Z", "updateTime": "2023-10-20T17:19:37.889382353Z", "routine": "main", "step": "forStep", "stepType": "STEP_FOR_ITERATION", "state": "STATE_SUCCEEDED", "entryId": "3", "navigationInfo": { "children": [ "4" ], "parent": "2", "next": "4", "previous": "2" }, "stepEntryMetadata": { "progressType": "PROGRESS_TYPE_FOR", "progressNumber": "1" } }, { "name": "projects/200478149810/locations/us-central1/workflows/ck-for-block/executions/74785b43-5b9f-4adf-bde7-a9880d0e100a/stepEntries/4", "createTime": "2023-10-20T17:19:37.889317653Z", "updateTime": "2023-10-20T17:19:37.889382265Z", "routine": "main", "step": "sumStep", "stepType": "STEP_ASSIGN", "state": "STATE_SUCCEEDED", "entryId": "4", "navigationInfo": { "parent": "3", "next": "5", "previous": "3" }, "stepEntryMetadata": { "progressType": "PROGRESS_TYPE_FOR", "progressNumber": "1" } }, { "name": "projects/200478149810/locations/us-central1/workflows/ck-for-block/executions/74785b43-5b9f-4adf-bde7-a9880d0e100a/stepEntries/5", "createTime": "2023-10-20T17:19:37.889383134Z", "updateTime": "2023-10-20T17:19:37.889474707Z", "routine": "main", "step": "forStep", "stepType": "STEP_FOR_ITERATION", "state": "STATE_SUCCEEDED", "entryId": "5", "navigationInfo": { "children": [ "6" ], "parent": "2", "next": "6", "previous": "4" }, "stepEntryMetadata": { "progressType": "PROGRESS_TYPE_FOR", "progressNumber": "2" } }, { "name": "projects/200478149810/locations/us-central1/workflows/ck-for-block/executions/74785b43-5b9f-4adf-bde7-a9880d0e100a/stepEntries/6", "createTime": "2023-10-20T17:19:37.889384893Z", "updateTime": "2023-10-20T17:19:37.889474649Z", "routine": "main", "step": "sumStep", "stepType": "STEP_ASSIGN", "state": "STATE_SUCCEEDED", "entryId": "6", "navigationInfo": { "parent": "5", "next": "7", "previous": "5" }, "stepEntryMetadata": { "progressType": "PROGRESS_TYPE_FOR", "progressNumber": "2" } }, { "name": "projects/200478149810/locations/us-central1/workflows/ck-for-block/executions/74785b43-5b9f-4adf-bde7-a9880d0e100a/stepEntries/7", "createTime": "2023-10-20T17:19:37.889475882Z", "updateTime": "2023-10-20T17:19:37.889483477Z", "routine": "main", "step": "returnStep", "stepType": "STEP_RETURN", "state": "STATE_SUCCEEDED", "entryId": "7", "navigationInfo": { "previous": "6" } } ], "totalSize": 7 }
Flujo de trabajo con una llamada a un subflujo de trabajo
Flujo de trabajo
YAML
main: steps: - callStep: call: square args: x: 10 result: t - retStep: return: ${t} square: params: [x] steps: - assignStep: assign: - y: ${x*x} - retStep: return: ${y}
JSON
{ "main": { "steps": [ { "callStep": { "call": "square", "args": { "x": 10 }, "result": "t" } }, { "retStep": { "return": "${t}" } } ] }, "square": { "params": [ "x" ], "steps": [ { "assignStep": { "assign": [ { "y": "${x*x}" } ] } }, { "retStep": { "return": "${y}" } } ] } }
Diagrama
Entradas de pasos
{ "stepEntries": [ { "name": "projects/200478149810/locations/us-central1/workflows/ck-for-block/executions/69da2159-1039-4f88-8d8a-12baf398f372/stepEntries/1", "createTime": "2023-10-21T15:25:55.406007695Z", "updateTime": "2023-10-21T15:25:55.412984492Z", "routine": "main", "step": "callStep", "stepType": "STEP_CALL", "state": "STATE_SUCCEEDED", "entryId": "1", "navigationInfo": { "children": [ "2", "3" ], "next": "2" } }, { "name": "projects/200478149810/locations/us-central1/workflows/ck-for-block/executions/69da2159-1039-4f88-8d8a-12baf398f372/stepEntries/2", "createTime": "2023-10-21T15:25:55.412921902Z", "updateTime": "2023-10-21T15:25:55.412967631Z", "routine": "square", "step": "assignStep", "stepType": "STEP_ASSIGN", "state": "STATE_SUCCEEDED", "entryId": "2", "navigationInfo": { "parent": "1", "next": "3", "previous": "1" } }, { "name": "projects/200478149810/locations/us-central1/workflows/ck-for-block/executions/69da2159-1039-4f88-8d8a-12baf398f372/stepEntries/3", "createTime": "2023-10-21T15:25:55.412968712Z", "updateTime": "2023-10-21T15:25:55.412978913Z", "routine": "square", "step": "retStep", "stepType": "STEP_RETURN", "state": "STATE_SUCCEEDED", "entryId": "3", "navigationInfo": { "parent": "1", "next": "4", "previous": "2" } }, { "name": "projects/200478149810/locations/us-central1/workflows/ck-for-block/executions/69da2159-1039-4f88-8d8a-12baf398f372/stepEntries/4", "createTime": "2023-10-21T15:25:55.412992302Z", "updateTime": "2023-10-21T15:25:55.412998396Z", "routine": "main", "step": "retStep", "stepType": "STEP_RETURN", "state": "STATE_SUCCEEDED", "entryId": "4", "navigationInfo": { "previous": "3" } } ], "totalSize": 4 }
Flujo de trabajo con una entrada de paso con errores
Flujo de trabajo
YAML
- tryStep: try: return: ${1 / 0} except: return: 0
JSON
[ { "tryStep": { "try": { "return": "${1 / 0}" }, "except": { "return": 0 } } } ]
Diagrama
Entradas de pasos
{ "stepEntries": [ { "name": "projects/200478149810/locations/us-central1/workflows/ck-for-block/executions/8ec49dae-ab0c-4b55-b1c4-b809244be913/stepEntries/1", "createTime": "2023-10-20T18:06:50.395938752Z", "updateTime": "2023-10-20T18:06:50.396525946Z", "routine": "main", "step": "tryStep", "stepType": "STEP_TRY_RETRY_EXCEPT", "state": "STATE_SUCCEEDED", "entryId": "1", "navigationInfo": { "children": [ "2", "4" ], "next": "2" } }, { "name": "projects/200478149810/locations/us-central1/workflows/ck-for-block/executions/8ec49dae-ab0c-4b55-b1c4-b809244be913/stepEntries/2", "createTime": "2023-10-20T18:06:50.395942598Z", "updateTime": "2023-10-20T18:06:50.396497992Z", "routine": "main", "step": "tryStep", "stepType": "STEP_TRY", "state": "STATE_FAILED", "entryId": "2", "navigationInfo": { "children": [ "3" ], "parent": "1", "next": "3", "previous": "1" } }, { "name": "projects/200478149810/locations/us-central1/workflows/ck-for-block/executions/8ec49dae-ab0c-4b55-b1c4-b809244be913/stepEntries/3", "createTime": "2023-10-20T18:06:50.395944871Z", "updateTime": "2023-10-20T18:06:50.396497499Z", "routine": "main", "step": "tryStep.try", "stepType": "STEP_RETURN", "state": "STATE_FAILED", "exception": { "payload": "{\"message\":\"ZeroDivisionError: division by zero\",\"tags\":[\"ZeroDivisionError\",\"ArithmeticError\"]}" }, "entryId": "3", "navigationInfo": { "parent": "2", "next": "4", "previous": "2" } }, { "name": "projects/200478149810/locations/us-central1/workflows/ck-for-block/executions/8ec49dae-ab0c-4b55-b1c4-b809244be913/stepEntries/4", "createTime": "2023-10-20T18:06:50.396506860Z", "updateTime": "2023-10-20T18:06:50.396525900Z", "routine": "main", "step": "tryStep", "stepType": "STEP_EXCEPT", "state": "STATE_SUCCEEDED", "entryId": "4", "navigationInfo": { "children": [ "5" ], "parent": "1", "next": "5", "previous": "3" } }, { "name": "projects/200478149810/locations/us-central1/workflows/ck-for-block/executions/8ec49dae-ab0c-4b55-b1c4-b809244be913/stepEntries/5", "createTime": "2023-10-20T18:06:50.396516994Z", "updateTime": "2023-10-20T18:06:50.396525818Z", "routine": "main", "step": "tryStep.except", "stepType": "STEP_RETURN", "state": "STATE_SUCCEEDED", "entryId": "5", "navigationInfo": { "parent": "4", "previous": "4" } } ], "totalSize": 5 }
¿Qué sigue?
- Descripción general de la depuración
- Supervisa flujos de trabajo
- Soluciona problemas
- Problemas conocidos de Workflows