Ir para o conteúdo

Lab 2.4: Manipulando estados da tarefa atual

Até o momento, focamos na construção de nossa automação e execução através do Orquestrador BotCity Maestro.

A execução através do Orquestrador BotCity Maestro nos dá, 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 do nosso tutorial vamos focar na utilização do BotCity Maestro SDK.

Integração com Orquestrador 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 nossa automação via BotCity Runner, a instância do BotCity Maestro será autenticada automaticamente através dos parâmetros passados pelo Runner.

...

def main():
    # Runner passes the server url, the id of the task being executed,
    # the access token and the parameters that this task receives (when applicable).
    maestro = BotMaestroSDK.from_sys_args()
    ## Fetch the BotExecution with details from the task, including parameters
    execution = maestro.get_execution()

    print(f"Task ID is: {execution.task_id}")
    print(f"Task Parameters are: {execution.parameters}")

    bot = WebBot()

    # Configure whether or not to run on headless mode
    bot.headless = False

    # Uncomment to change the default Browser to Firefox
    bot.browser = Browser.FIREFOX

    # Uncomment to set the WebDriver path
    bot.driver_path = f"resources\geckodriver.exe"
    ...

Atenção

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

Podemos facilmente tratar isso silenciando os erros com:

# Disable errors if we are not connected to Maestro
BotMaestroSDK.RAISE_NOT_CONNECTED = False

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

Gestão de tarefas

Na etapa anterior vimos que somos responsáveis por indicar o estado em que a tarefa será finalizada em nossa lógica, caso não seja indicado o estado, a tarefa finalizará acusando erro.

Para finalizar uma tarefa podemos utilizar o método finish_task() do BotCity Maestro SDK.

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

Para isso adicione o seguinte bloco de código ao final do método main() em seu robô:

maestro.finish_task(
    task_id=execution.task_id,
    status=AutomationTaskFinishStatus.SUCCESS,
    message="Tarefa BotYoutube finalizada com sucesso",
    total_items=1, # Número total de itens processados
    processed_items=1, # Número de itens processados com sucesso
    failed_items=0 # Número de itens processados com falha
)

Note que pegamos o parâmetro task_id através do 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