Puedes recuperar el historial de la ejecución de un flujo de trabajo específico como una lista de pasos entradas. 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 ejecutó y puede 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 al flujo de trabajo API de REST de ejecuciones 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:
Por ejemplo:
|
Horas de creación y actualización | Marcas de tiempo de la hora de creación de la entrada del paso y su más reciente
actualización. Si se completó una entrada de paso, updateTime indica
el tiempo de finalización.
|
Nombres de pasos y rutina | Nombres de la rutina y el paso al que pertenece la entrada del paso. R
el nombre de la rutina es el nombre del subflujo de trabajo definido en el archivo fuente YAML o JSON
código. 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 un una lista completa de estados y tipos de progreso, consulta Estado 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 iterativa de un paso, incluido un ID que
indica el subproceso secundario (por ejemplo, que
STEP_PARALLEL_BRANCH_ENTRY in
STEP_PARALLEL_BRANCH ) o la iteración de un for
bucle (por ejemplo, que STEP_FOR_ITERATION en
STEP_FOR ). Para obtener más información, consulta
StepEntryMetadata.
|
Excepciones | carga útil relacionada con cualquier excepción y que proporciona una descripción de por qué falló una entrada de paso. |
Visualiza las entradas de pasos en la consola
Puedes ver las entradas de los pasos de la ejecución de un flujo de trabajo específico 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 llevado a 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 los pasos, usa el campo Filter en la parte superior de la para seleccionar una propiedad y un valor, por ejemplo,
State: Failed
.Para mostrar vínculos de cualquier superior, secundario, Siguiente y Anterior entradas de pasos, haz clic en una entrada de paso específica.
Si haces clic en un vínculo, los demás vínculos 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 del paso. 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:
- Acerca o aleja la visualización
- Contraer o expandir 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
A fin de obtener los permisos necesarios para recuperar una entrada de paso, haz lo siguiente:
solicita a tu administrador que te otorgue el
Administrador de flujos de trabajo (workflows.stepEntries.get
)
de IAM en tu proyecto.
Para obtener más información sobre cómo otorgar roles, consulta Cómo administrar el acceso.
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 la ejecución de un flujo de trabajo determinado, usa el
projects.locations.workflows.executions.stepEntries.get
.
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
: 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 un la ejecución del flujo de trabajo que se muestra después de que se ejecuta un flujo de trabajo.STEPENTRY_ID
: Es el ID único de un entrada del 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 Cómo administrar el acceso.
También puedes obtener los permisos necesarios mediante roles personalizados o cualquier otro rol predefinido.
Enumerar 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 de createTime
.
de las entradas de los pasos.
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
: 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 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 al 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