Ir para o conteúdo

Lab 6: Manipular estados da tarefa atual

A execução através do Orquestrador BotCity Maestro você terá, entre outros benefícios, os seguintes:

  • Disparo de tarefas pelo time de operação.
  • Acompanhamento de execução.
  • Execução paralela de tarefas através de múltiplos Runners.
  • Gestão de tarefas.
  • Acompanhamento de logs, alertas e erros.
  • Gerenciamento de arquivos de resultados.
  • Gerenciamento de credenciais.

Você pode conferir todas as funcionalidades do Orquestrador BotCity Maestro em nossa documentação. Além disso, elas também estão disponíveis via API.

BotCity Maestro SDK

A BotCity também oferece SDKs específicos para linguagens como Python, Java, Javascript e Typescript.

Nesta etapa você verá os tratamentos no código para incluir as funcionalidades do Orquestrador BotCity Maestro SDK.

Integração com BotCity Maestro

Todos os projetos criados com o template da BotCity possuem uma instância do BotCity Maestro SDK que pode ser acessada utilizando a referência maestro.

Outro ponto importante a ser ressaltado é que quando executamos a automação via BotCity Runner, a instância do BotCity Maestro será autenticada automaticamente através dos parâmetros passados pelo Runner.

import os

from botcity.maestro import *
from botcity.web import Browser, By, WebBot
from webdriver_manager.chrome import ChromeDriverManager

BotMaestroSDK.RAISE_NOT_CONNECTED = False


def main():
    # Instancia do Orquestrador
    maestro = BotMaestroSDK.from_sys_args()
    execution = maestro.get_execution()
...

Atenção

Quando o código é executado localmente, a instância do BotCity Maestro não estará autenticada, podendo ocorrer erros ao tentar utilizar as funcionalidades.

Você pode facilmente tratar isso silenciando os erros com:

# Desativa erros se não estivermos conectados ao Maestro
BotMaestroSDK.RAISE_NOT_CONNECTED = False

Para simplificar nosso código, vamos assumir que todas execuções serão feitas via Orquestrador BotCity Maestro e Runner

Gestão de tarefas

Na etapa anterior, a tarefa finalizou com acusando erro pois não indicamos o estado dela na lógica do código.

Para finalizar uma tarefa informando o estado, utilize o método finish_task() do BotCity Maestro SDK.

Altere o código para que, ao final do processo, o Orquestrador BotCity Maestro seja notificado do sucesso de nossa tarefa.

Crie duas variáveis, uma para definir o status da tarefa e outra com uma mensagem que deseja informar quando executar sem nenhum problema, ao final do bloco try do código:

finish_status = AutomationTaskFinishStatus.SUCCESS
finish_message = "Tarefa finalizada com sucesso"

Substitua o print("Fim da execução"), dentro do bloco finally pelo método finish_task(), da seguinte forma:

finally:
    # Aguarda 3 segundos e fecha o navegador
    bot.wait(3000)
    bot.stop_browser()

    # print("Fim da execução")

    # Finaliza tarefa com o BotMaestro
    maestro.finish_task(
        task_id=execution.task_id,
        status=finish_status,
        message=finish_message
    )

Note que o parâmetro task_id é recebido pelo objeto execution.

Dica

Você pode finalizar a tarefa com os seguintes estados:

  • SUCCESS: Sucesso, tudo ocorreu conforme o esperado.
  • FAILED: Falha, algum erro ocorreu e o robô não conseguiu executar a tarefa.
  • PARTIALLY_COMPLETED: Sucesso parcial, parte da tarefa foi executada com sucesso. Como um exemplo, pense em um robô que processa entradas em uma planilha porém apenas uma parte dos dados é processado com sucesso.

Atualize seu robô e crie ou reinicie uma tarefa para testar.

Após a execução, os detalhes da tarefa exibirão os dados informados na finalização da tarefa.

Finish Task