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.