Usando a TestState API para testar um estado em Step Functions - AWS Step Functions

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Usando a TestState API para testar um estado em Step Functions

A TestStateAPI aceita a definição de um único estado e a executa. É possível testar um estado sem criar uma máquina de estado nem atualizar uma existente.

Usando a TestState API, você pode testar o seguinte:

Para testar um estado, também é possível usar o console do Step Functions, a AWS Command Line Interface (AWS CLI) ou o SDK.

A API TestState assume um perfil do IAM que deve conter as permissões do IAM necessárias para os recursos acessados pelo estado. Para obter informações sobre as permissões necessárias a um estado, consulte IAMpermissões para usar a TestState API.

Considerações sobre o uso da API TestState

Usando a TestStateAPI, você pode testar somente um estado por vez. Os estados que você pode testar incluem os seguintes:

Ao usar a API TestState, tenha em mente as considerações a seguir.

Usando níveis de inspeção na TestState API

Para testar um estado usando a TestStateAPI, você fornece a definição desse estado. O teste então exibe uma saída. Para cada estado, é possível especificar a quantidade de detalhes que você deseja visualizar nos resultados do teste. Esses detalhes fornecem informações adicionais sobre o estado que você está testando. Por exemplo, se você usou algum filtro de processamento de dados de entrada e de saída, como InputPath ou ResultPath em um estado, poderá visualizar os resultados intermediários e finais do processamento de dados.

O Step Functions oferece os seguintes níveis para especificar os detalhes a serem visualizados:

Todos esses níveis também exibem os campos status e nextState. O status indica o status da execução do estado. Por exemplo, SUCCEEDED, FAILED, RETRIABLE e CAUGHT_ERROR. nextState indica o nome do próximo estado para o qual fazer a transição. Se você não definiu o próximo estado na definição, esse campo exibirá um valor vazio.

Para obter informações sobre como testar um estado usando esses níveis de inspeção no console do Step Functions e na AWS CLI, consulte Testar um estado (console) e Testar um estado usando a AWS CLI.

Nível de inspeção INFO

Se o teste for bem-sucedido, esse nível mostrará a saída do estado. Se o teste falhar, esse nível mostrará a saída do erro. Por padrão, o Step Functions define o Nível de inspeção como INFO se você não especificar um nível.

A imagem a seguir mostra um teste bem-sucedido para um estado Aprovado. O Nível de inspeção desse estado é definido como INFO e a saída do estado é exibida na guia Saída.

Captura de tela da saída em nível INFO de um teste aprovado.

A imagem a seguir mostra um teste que falhou em um estado de Tarefa quando o Nível de inspeção está definido como INFO. A guia Saída mostra a saída do erro que inclui o nome e uma explicação detalhada da causa desse erro.

Captura de tela da saída em nível INFO de um teste com falha.

Nível de inspeção DEBUG

Se o teste for bem-sucedido, esse nível mostrará a saída do estado e o resultado do processamento dos dados de entrada e de saída.

Se o teste falhar, esse nível mostrará a saída do erro. Esse nível mostra os resultados intermediários do processamento de dados até o ponto de falha. Por exemplo, digamos que você testou um estado de Tarefa que invoque uma função do Lambda. Imagine que você tenha aplicado os filtros InputPath, Parâmetros, Especificando a saída de estado usando ResultPath em Step Functions e Filtrando a saída do estado usando OutputPath ao estado de Tarefa. Digamos que a invocação tenha falhado. Nesse caso, o nível DEBUG mostra os resultados do processamento de dados com base na aplicação dos filtros na seguinte ordem:

  • input: entrada de estado bruto.

  • afterInputPath: entrada após o Step Functions aplicar o filtro InputPath.

  • afterParameters: a entrada efetiva após o Step Functions aplicar o filtro Parameters.

As informações de diagnóstico disponíveis nesse nível podem ajudar a solucionar problemas relacionados a uma integração de serviços ou ao fluxo de processamento de dados de entrada e de saída definido.

A imagem a seguir mostra um teste bem-sucedido para um estado Aprovado. O Nível de inspeção para esse estado é definido como DEBUG. A guia Processamento de entrada/saída na imagem a seguir mostra o resultado da aplicação de Parameters na entrada fornecida para esse estado.

Captura de tela da saída em nível DEBUG de um teste aprovado.

A imagem a seguir mostra um teste que falhou em um estado de Tarefa quando o Nível de inspeção está definido como DEBUG. A guia Processamento de entrada/saída na imagem a seguir mostra o resultado do processamento de dados de entrada e de saída para o estado até o ponto da falha.

Captura de tela da saída em nível DEBUG de um teste com falha.

Nível de inspeção TRACE

O Step Functions oferece o nível TRACE para testar uma tarefa HTTP. Esse nível retorna informações sobre a solicitação HTTP que Step Functions faz e a resposta que uma API HTTPS retorna. A resposta pode conter informações, como cabeçalhos e corpo da solicitação. Além disso, é possível visualizar a saída do estado e o resultado do processamento de dados de entrada e de saída nesse nível.

Se o teste falhar, esse nível mostrará a saída do erro.

Esse nível é aplicável somente para tarefas HTTP. O Step Functions vai gerar um erro se você usar esse nível para outros tipos de estado.

Ao definir o nível de inspeção como TRACE, você também pode visualizar os segredos incluídos na EventBridge conexão. Para fazer isso, você deve definir o revealSecrets parâmetro como true na TestStateAPI. Além disso, você deve garantir que o IAM usuário que chama a TestState API tenha permissão para a states:RevealSecrets ação. Para ver um exemplo de política do IAM que concede a permissão states:RevealSecrets, consulte IAMpermissões para usar a TestState API. Sem essa permissão, o Step Functions gera um erro de acesso negado.

Se você definir o parâmetro revealSecrets como false, o Step Functions omitirá todos os segredos nos dados de solicitação e resposta HTTP.

A imagem a seguir mostra um teste bem-sucedido para uma tarefa HTTP. O Nível de inspeção para esse estado é definido como TRACE. A guia Solicitação e resposta HTTP na imagem a seguir mostra o resultado da chamada da API HTTPS.

Captura de tela da saída em nível TRACE de um teste aprovado.

IAMpermissões para usar a TestState API

O usuário do IAM que chama a API TestState deve ter permissões para realizar as ações states:TestState e iam:PassRole. Além disso, se você definir o parâmetro revealSecrets como true, deverá garantir que o usuário do IAM tenha permissões para realizar a ação states:RevealSecrets. Sem essa permissão, o Step Functions gera um erro de acesso negado.

Também é necessário garantir que o perfil de execução contenha as permissões do IAM necessárias para os recursos que o estado está acessando. Para obter informações sobre as permissões necessárias a um estado, consulte Managing execution roles.

O exemplo de política do IAM a seguir define as permissões states:TestState, iam:PassRole e states:RevealSecrets.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "states:TestState", "states:RevealSecrets", "iam:PassRole" ], "Resource": "*" } ] }

Testar um estado (console)

É possível testar um estado no console e conferir a saída do estado ou o fluxo de processamento de dados de entrada e de saída. Para uma tarefa HTTP, é possível testar a solicitação e a resposta HTTP brutas.

Como testar um estado
  1. Abra o console do Step Functions.

  2. Selecione Criar uma máquina de estado para começar a criar uma máquina de estado ou escolha uma máquina de estado existente.

  3. No Modo de design do Workflow Studio, selecione um estado que deseja testar.

  4. Selecione Testar estado no painel Painel Inspetor do Workflow Studio.

  5. Na caixa de diálogo Testar estado, faça o seguinte:

    1. Em Perfil de execução, selecione um perfil de execução para testar o estado. Tenha as permissões do IAM necessárias para o estado que deseja testar.

    2. (Opcional) Forneça todas as entradas JSON de que o estado selecionado precise para o teste.

    3. Em Nível de inspeção, selecione uma das seguintes opções com base nos valores que você deseja visualizar:

      • INFO: mostrará a saída do estado na guia Saída se o teste for bem-sucedido. Se o teste falhar, INFO mostrará a saída do erro que inclui o nome e uma explicação detalhada da causa desse erro. Por padrão, o Step Functions definirá o Nível de inspeção como INFO se você não especificar um nível.

      • DEBUG: mostrará a saída do estado e o resultado do processamento dos dados de entrada e de saída se o teste for bem-sucedido. Se o teste falhar, DEBUG mostrará a saída do erro que inclui o nome e uma explicação detalhada da causa desse erro.

      • TRACE: mostra a solicitação e a resposta HTTP brutas e é útil para verificar cabeçalhos, parâmetros de consulta e outros detalhes específicos da API. Essa opção só está disponível para a tarefa HTTP.

        Também é possível selecionar Revelar segredos. Em combinação com TRACE, essa configuração permite que você veja os dados confidenciais que a conexão com o EventBridge insere, como chaves de API. A identidade do usuário do IAM que você usa para acessar o console deve ter permissão para realizar a ação states:RevealSecrets. Sem essa permissão, o Step Functions gera um erro de acesso negado ao iniciar o teste. Para ver um exemplo de política do IAM que concede essas permissões states:RevealSecrets, consulte IAMpermissões para usar a TestState API.

    4. Selecione Iniciar teste.

Testar um estado usando a AWS CLI

Você pode testar um estado compatível usando a TestStateAPI noAWS CLI. A API aceita a definição de um estado e a executa.

Para cada estado, é possível especificar a quantidade de detalhes que você deseja visualizar nos resultados do teste. Esses detalhes fornecem informações adicionais sobre a execução do estado, incluindo o resultado do processamento de dados de entrada e de saída e as informações de solicitação e resposta HTTP. Os exemplos a seguir mostram os diferentes níveis de inspeção que você pode especificar para a TestState API. Lembre-se de substituir o italicized texto pelas informações específicas do seu recurso.

Esta seção contém os seguintes exemplos que descrevem como usar os diferentes níveis de inspeção fornecidos pelo Step Functions na AWS CLI:

Exemplo 1: Usar o nível de inspeção INFO para testar um estado de escolha

Para testar um estado usando o INFO InspectionLevel no AWS CLI, execute o test-state comando conforme mostrado no exemplo a seguir.

aws stepfunctions test-state \ --definition '{"Type": "Choice", "Choices": [{"Variable": "$.number", "NumericEquals": 1, "Next": "Equals 1"}, {"Variable": "$.number", "NumericEquals": 2, "Next": "Equals 2"}], "Default": "No Match"}' \ --role-arn arn:aws:iam::account-id:role/myRole \ --input '{"number": 2}'

Este exemplo usa um estado de escolha para determinar o caminho de execução do estado com base na entrada numérica fornecida. Por padrão, o Step Functions definirá o inspectionLevel como INFO se você não definir um nível.

O Step Functions exibe a saída a seguir.

{ "output": "{\"number\": 2}", "nextState": "Equals 2", "status": "SUCCEEDED" }

Exemplo 2: Usar o Nível de inspeção DEBUG para depurar o processamento de dados de entrada e de saída em um estado Aprovado

Para testar um estado usando o DEBUG InspectionLevel no AWS CLI, execute o test-state comando conforme mostrado no exemplo a seguir.

aws stepfunctions test-state \ --definition '{"Type": "Pass", "InputPath": "$.payload", "Parameters": {"data": 1}, "ResultPath": "$.result", "OutputPath": "$.result.data", "Next": "Another State"}' \ --role-arn arn:aws:iam::account-id:role/myRole \ --input '{"payload": {"foo": "bar"}}' \ --inspection-level DEBUG

Este exemplo usa um estado Estado de passagem do fluxo de trabalho para mostrar como o Step Functions filtra e manipula os dados JSON de entrada usando os filtros de processamento de dados de entrada e de saída. Este exemplo usa estes filtros: InputPath, Parâmetros, Especificando a saída de estado usando ResultPath em Step Functions e Filtrando a saída do estado usando OutputPath.

O Step Functions exibe a saída a seguir.

{ "output": "1", "inspectionData": { "input": "{\"payload\": {\"foo\": \"bar\"}}", "afterInputPath": "{\"foo\":\"bar\"}", "afterParameters": "{\"data\":1}", "afterResultSelector": "{\"data\":1}", "afterResultPath": "{\"payload\":{\"foo\":\"bar\"},\"result\":{\"data\":1}}" }, "nextState": "Another State", "status": "SUCCEEDED" }

Exemplo 3: Usando TRACE InspectionLevel e RevealSecrets para inspecionar a solicitação HTTP enviada para uma API HTTPS

Para testar uma tarefa HTTP usando o TRACE InspectionLevel junto com o parâmetro revealSecrets no AWS CLI, execute o test-state comando conforme mostrado no exemplo a seguir.

aws stepfunctions test-state \ --definition '{"Type": "Task", "Resource": "arn:aws:states:::http:invoke", "Parameters": {"Method": "GET", "Authentication": {"ConnectionArn": "arn:aws:events:region:account-id:connection/MyConnection/0000000-0000-0000-0000-000000000000"}, "ApiEndpoint": "https://httpbin.org/get", "Headers": {"definitionHeader": "h1"}, "RequestBody": {"message": "Hello from Step Functions!"}, "QueryParameters": {"queryParam": "q1"}}, "End": true}' \ --role-arn arn:aws:iam::account-id:role/myRole \ --inspection-level TRACE \ --reveal-secrets

Este exemplo testa se a tarefa HTTP chama a API HTTPS especificada,https://httpbin.org/. Ele também mostra os dados de solicitação e resposta HTTP para a chamada de API.

{ "output": "{\"Headers\":{\"date\":[\"Tue, 21 Nov 2023 00:06:17 GMT\"],\"access-control-allow-origin\":[\"*\"],\"content-length\":[\"620\"],\"server\":[\"gunicorn/19.9.0\"],\"access-control-allow-credentials\":[\"true\"],\"content-type\":[\"application/json\"]},\"ResponseBody\":{\"args\":{\"QueryParam1\":\"QueryParamValue1\",\"queryParam\":\"q1\"},\"headers\":{\"Authorization\":\"Basic XXXXXXXX\",\"Content-Type\":\"application/json; charset=UTF-8\",\"Customheader1\":\"CustomHeaderValue1\",\"Definitionheader\":\"h1\",\"Host\":\"httpbin.org\",\"Range\":\"bytes=0-262144\",\"Transfer-Encoding\":\"chunked\",\"User-Agent\":\"Amazon|StepFunctions|HttpInvoke|region\",\"X-Amzn-Trace-Id\":\"Root=1-0000000-0000-0000-0000-000000000000\"},\"origin\":\"12.34.567.891\",\"url\":\"https://httpbin.org/get?queryParam=q1&QueryParam1=QueryParamValue1\"},\"StatusCode\":200,\"StatusText\":\"OK\"}", "inspectionData": { "input": "{}", "afterInputPath": "{}", "afterParameters": "{\"Method\":\"GET\",\"Authentication\":{\"ConnectionArn\":\"arn:aws:events:region:account-id:connection/foo/a59c10f0-a315-4c1f-be6a-559b9a0c6250\"},\"ApiEndpoint\":\"https://httpbin.org/get\",\"Headers\":{\"definitionHeader\":\"h1\"},\"RequestBody\":{\"message\":\"Hello from Step Functions!\"},\"QueryParameters\":{\"queryParam\":\"q1\"}}", "result": "{\"Headers\":{\"date\":[\"Tue, 21 Nov 2023 00:06:17 GMT\"],\"access-control-allow-origin\":[\"*\"],\"content-length\":[\"620\"],\"server\":[\"gunicorn/19.9.0\"],\"access-control-allow-credentials\":[\"true\"],\"content-type\":[\"application/json\"]},\"ResponseBody\":{\"args\":{\"QueryParam1\":\"QueryParamValue1\",\"queryParam\":\"q1\"},\"headers\":{\"Authorization\":\"Basic XXXXXXXX\",\"Content-Type\":\"application/json; charset=UTF-8\",\"Customheader1\":\"CustomHeaderValue1\",\"Definitionheader\":\"h1\",\"Host\":\"httpbin.org\",\"Range\":\"bytes=0-262144\",\"Transfer-Encoding\":\"chunked\",\"User-Agent\":\"Amazon|StepFunctions|HttpInvoke|region\",\"X-Amzn-Trace-Id\":\"Root=1-0000000-0000-0000-0000-000000000000\"},\"origin\":\"12.34.567.891\",\"url\":\"https://httpbin.org/get?queryParam=q1&QueryParam1=QueryParamValue1\"},\"StatusCode\":200,\"StatusText\":\"OK\"}", "afterResultSelector": "{\"Headers\":{\"date\":[\"Tue, 21 Nov 2023 00:06:17 GMT\"],\"access-control-allow-origin\":[\"*\"],\"content-length\":[\"620\"],\"server\":[\"gunicorn/19.9.0\"],\"access-control-allow-credentials\":[\"true\"],\"content-type\":[\"application/json\"]},\"ResponseBody\":{\"args\":{\"QueryParam1\":\"QueryParamValue1\",\"queryParam\":\"q1\"},\"headers\":{\"Authorization\":\"Basic XXXXXXXX\",\"Content-Type\":\"application/json; charset=UTF-8\",\"Customheader1\":\"CustomHeaderValue1\",\"Definitionheader\":\"h1\",\"Host\":\"httpbin.org\",\"Range\":\"bytes=0-262144\",\"Transfer-Encoding\":\"chunked\",\"User-Agent\":\"Amazon|StepFunctions|HttpInvoke|region\",\"X-Amzn-Trace-Id\":\"Root=1-0000000-0000-0000-0000-000000000000\"},\"origin\":\"12.34.567.891\",\"url\":\"https://httpbin.org/get?queryParam=q1&QueryParam1=QueryParamValue1\"},\"StatusCode\":200,\"StatusText\":\"OK\"}", "afterResultPath": "{\"Headers\":{\"date\":[\"Tue, 21 Nov 2023 00:06:17 GMT\"],\"access-control-allow-origin\":[\"*\"],\"content-length\":[\"620\"],\"server\":[\"gunicorn/19.9.0\"],\"access-control-allow-credentials\":[\"true\"],\"content-type\":[\"application/json\"]},\"ResponseBody\":{\"args\":{\"QueryParam1\":\"QueryParamValue1\",\"queryParam\":\"q1\"},\"headers\":{\"Authorization\":\"Basic XXXXXXXX\",\"Content-Type\":\"application/json; charset=UTF-8\",\"Customheader1\":\"CustomHeaderValue1\",\"Definitionheader\":\"h1\",\"Host\":\"httpbin.org\",\"Range\":\"bytes=0-262144\",\"Transfer-Encoding\":\"chunked\",\"User-Agent\":\"Amazon|StepFunctions|HttpInvoke|region\",\"X-Amzn-Trace-Id\":\"Root=1-0000000-0000-0000-0000-000000000000\"},\"origin\":\"12.34.567.891\",\"url\":\"https://httpbin.org/get?queryParam=q1&QueryParam1=QueryParamValue1\"},\"StatusCode\":200,\"StatusText\":\"OK\"}", "request": { "protocol": "https", "method": "GET", "url": "https://httpbin.org/get?queryParam=q1&QueryParam1=QueryParamValue1", "headers": "[definitionHeader: h1, Authorization: Basic XXXXXXXX, CustomHeader1: CustomHeaderValue1, User-Agent: Amazon|StepFunctions|HttpInvoke|region, Range: bytes=0-262144]", "body": "{\"message\":\"Hello from Step Functions!\",\"BodyKey1\":\"BodyValue1\"}" }, "response": { "protocol": "https", "statusCode": "200", "statusMessage": "OK", "headers": "[date: Tue, 21 Nov 2023 00:06:17 GMT, content-type: application/json, content-length: 620, server: gunicorn/19.9.0, access-control-allow-origin: *, access-control-allow-credentials: true]", "body": "{\n \"args\": {\n \"QueryParam1\": \"QueryParamValue1\", \n \"queryParam\": \"q1\"\n }, \n \"headers\": {\n \"Authorization\": \"Basic XXXXXXXX\", \n \"Content-Type\": \"application/json; charset=UTF-8\", \n \"Customheader1\": \"CustomHeaderValue1\", \n \"Definitionheader\": \"h1\", \n \"Host\": \"httpbin.org\", \n \"Range\": \"bytes=0-262144\", \n \"Transfer-Encoding\": \"chunked\", \n \"User-Agent\": \"Amazon|StepFunctions|HttpInvoke|region\", \n \"X-Amzn-Trace-Id\": \"Root=1-0000000-0000-0000-0000-000000000000\"\n }, \n \"origin\": \"12.34.567.891\", \n \"url\": \"https://httpbin.org/get?queryParam=q1&QueryParam1=QueryParamValue1\"\n}\n" } }, "status": "SUCCEEDED" }

Exemplo 4: Usando o utilitário jq para filtrar e imprimir a resposta que a TestState API retorna

A TestState API retorna dados JSON como sequências de caracteres de escape em sua resposta. O AWS CLI exemplo a seguir estende o Exemplo 3 e usa o jq utilitário para filtrar e imprimir a resposta HTTP que a TestState API retorna em um formato legível por humanos. Para obter informações jq e instruções de instalação, consulte jq on GitHub.

aws stepfunctions test-state \ --definition '{"Type": "Task", "Resource": "arn:aws:states:::http:invoke", "Parameters": {"Method": "GET", "Authentication": {"ConnectionArn": "arn:aws:events:region:account-id:connection/MyConnection/0000000-0000-0000-0000-000000000000"}, "ApiEndpoint": "https://httpbin.org/get", "Headers": {"definitionHeader": "h1"}, "RequestBody": {"message": "Hello from Step Functions!"}, "QueryParameters": {"queryParam": "q1"}}, "End": true}' \ --role-arn arn:aws:iam::account-id:role/myRole \ --inspection-level TRACE \ --reveal-secrets \ | jq '.inspectionData.response.body | fromjson'

O exemplo a seguir mostra a saída exibida em formato legível.

{ "args": { "QueryParam1": "QueryParamValue1", "queryParam": "q1" }, "headers": { "Authorization": "Basic XXXXXXXX", "Content-Type": "application/json; charset=UTF-8", "Customheader1": "CustomHeaderValue1", "Definitionheader": "h1", "Host": "httpbin.org", "Range": "bytes=0-262144", "Transfer-Encoding": "chunked", "User-Agent": "Amazon|StepFunctions|HttpInvoke|region", "X-Amzn-Trace-Id": "Root=1-0000000-0000-0000-0000-000000000000" }, "origin": "12.34.567.891", "url": "https://httpbin.org/get?queryParam=q1&QueryParam1=QueryParamValue1" }

Testar e depurar o fluxo de dados de entrada e de saída.

A API TestState é útil para testar e depurar os dados que fluem pelo fluxo de trabalho. Esta seção fornece alguns conceitos-chave e explica como usar o TestState para essa finalidade.

Principais conceitos

No Step Functions, o processo de filtrar e manipular dados JSON à medida que eles passam pelos estados na máquina de estado é chamado de processamento de entrada e de saída. Para obter informações sobre como isso funciona, consulte Processar entrada e saída no Step Functions.

Todos os tipos de estado no Amazon States Language (ASL) (Tarefa, Paralelo, Mapa, Aprovar, Aguardar, Escolha, Êxito e Falha) compartilham um conjunto de campos comuns para filtrar e manipular os dados JSON que passam por eles. Esses campos são: InputPath, Parâmetros, ResultSelector, Especificando a saída de estado usando ResultPath em Step Functions e Filtrando a saída do estado usando OutputPath. O suporte para cada campo varia de acordo com os estados. Em runtime, o Step Functions aplica cada campo em uma ordem específica. O diagrama a seguir mostra a ordem na qual esses campos são aplicados aos dados em um estado de Tarefa:

Ordem dos filtros: InputPath, Parâmetros ResultSelector ResultPath,, OutputPath e.

A lista a seguir descreve a ordem de aplicação dos campos de processamento de entrada e de saída mostrados no diagrama.

  1. A entrada de estado são os dados JSON transmitidos para o estado atual a partir de um estado anterior.

  2. O InputPath filtra uma parte da entrada de estado bruto.

  3. O Parâmetros configura o conjunto de valores a serem passados para a Tarefa.

  4. A tarefa executa o trabalho e exibe um resultado.

  5. O ResultSelector seleciona um conjunto de valores a ser excluído do resultado da tarefa.

  6. O Especificando a saída de estado usando ResultPath em Step Functions combina o resultado com a entrada de estado bruto ou substitui o resultado por ela.

  7. O Filtrando a saída do estado usando OutputPath filtra uma parte da saída para passar para o próximo estado.

  8. A entrada de estado são os dados JSON transmitidos do estado atual para o próximo estado.

Esses campos de processamento de entrada e de saída são opcionais. Se você não usar nenhum desses campos na definição do estado, a tarefa consumirá a entrada do estado bruto e exibirá o resultado da tarefa como a saída do estado.

Usando TestState para inspecionar o processamento de entrada e saída

Ao chamar a API TestState e definir o parâmetro inspectionLevel como DEBUG, a resposta da API incluirá um objeto chamado inspectionData. Esse objeto contém campos para ajudar a inspecionar como os dados foram filtrados ou manipulados no estado durante a execução. O exemplo a seguir mostra o objeto inspectionData para o estado de Tarefa.

"inspectionData": { "input": string, "afterInputPath": string, "afterParameters": string, "result": string, "afterResultSelector": string, "afterResultPath": string, "output": string }

Neste exemplo, cada campo que contém o prefixo after mostra os dados após a aplicação de um campo específico. Por exemplo, afterInputPath mostra o efeito da aplicação do campo InputPath para filtrar a entrada de estado bruto. O diagrama a seguir associa cada campo Definição de ASL ao campo correspondente no objeto inspectionData:

Diagrama mostrando o mapeamento dos campos ASL para inspectionData.

Para exemplos de uso da TestState API para depurar o processamento de entrada e saída, consulte o seguinte: