Fila de Tarefas¶
A fila de tarefas mostra tarefas em execução, prontas para serem executadas e finalizadas.
Visualização da fila de tarefas¶
Você pode visualizar a fila de tarefas de duas formas:
- Em formato de cartões, onde cada cartão representa uma única tarefa:
- Em formato de lista, onde cada linha representa uma única tarefa:
Podendo identificar o status de cada tarefa conforme a seguir:
Tambem é possivel utilizar os filtros State, Automação, Runner, ID da Tarefa, Data de início e Data de término para visualizar tarefas específicas.
Informações da tarefa¶
Você consegue acompanhar as informações de uma tarefa de duas formas através do cartão de tarefas:
- Clicando diretamente no nome da tarefa, dentro do cartão de tarefa.
- Clicando no ícone com três pontos no canto superior do cartão de tarefa, e selecionando a opção Informações.
E pela lista de tarefas, é possivel acessar as informações detalhadas clicando no ID da tarefa:
Ao utilizar qualquer uma das opções acima, você será redirecionado para uma página com informações detalhadas da tarefa. Podendo verificar:
Informações gerais da execução¶
Onde:
- State: Carrega a informação do estado da tarefa.
- Ciclo de Vida: O tempo de vida da tarefa, desde o momento que entrou na fila até a sua finalização.
- Tempo na Fila: O tempo que permaneceu na fila de execução.
- Execução: O tempo de execução da tarefa, após sair da fila de execução.
- Runner: O Runner responsável pela execução da tarefa.
Mensagem de finalização da tarefa¶
Você pode visualizar a mensagem de finalização da tarefa. Caso ocorra algum erro durante a preparação do ambiente ou a execução do código, essa informação será exibida na mensagem de finalização.
Você também pode personalizar e definir uma mensagem de finalização customizada. Veja mais detalhes sobre como finalizar uma tarefa no Maestro nos próximos passos.
Parâmetros da tarefa¶
Você também consegue visualizar os parâmetros utlizados na tarefa.
Você encontrará os parâmetros de execução definidos pelo usuário ao criar uma nova tarefa.
Dica
A definição do conjunto de parâmetros é feita pelos desenvolvedores ao criar um processo de automação.
Saiba mais sobre como criar uma tarefa com ou sem parâmetros usando:
- Novo recurso de tarefas do BotCity Maestro através da interface do orquestrador.
- Comando para criar tarefas do BotCity CLI via linha de comando.
- BotCity Maestro SDK via código.
- BotCity Maestro API através da API.
Informações gerais da fila de tarefas, da tarefa e runtime¶
Onde:
-
Fila de controle: Possui informaçãoes de controle da fila de tarefas como prioridade da tarefa, data mínima de execução e informações se a tarefa foi interrompida ou terminada pela UI do Maestro.
-
Sumário da tarefa: Possui informações da tarefa, como ID, label, usuário que inicou a tarefa e se é uma tarefa de teste ou não.
-
Runtime: Possui informação da execução, como o Runner que executou a tarefa, e data e hora que a tarefa foi criada, iniciada e finalizada.
Ações da tarefa¶
Na tela de informações da tarefa, voce vai encontar o botão , esse botão permite:
- Excluir: Exclui uma tarefa que esta na fila de execução.
- Interromper: Solicitar a interrupção da tarefa. Saiba mais sobre essa funcionalidade aqui.
- Terminar: Finaliza a tarefa forçando o término da execução.
- Reiniciar: Reinicia uma tarefa.
Atenção
- Tarefas em execução só possuem acões de
Interromper
eTerminar
. - Tarefas na fila só possuem ações de
Excluir
eInterromper
. - Apenas tarefas definidas como teste podem reproduzir a ação
Reiniciar
. - Tarefas finalizadas não possuem nenhuma ação disponível.
Como finalizar uma tarefa usando o Maestro SDK¶
Por padrão, ao rodar uma tarefa pela primeira vez sem utilizar nenhum tipo de integração com o Maestro, a tarefa será finalizada com o status de Falha.
Isso ocorre pois devemos definir no código as instruções para finalizar a tarefa e reportar o status de finalização desejado para o Maestro.
Você pode facilmente finalizar tarefas no Maestro usando o Maestro SDK no código da sua automação.
Instalação do SDK¶
Caso você ainda não tenha a dependência instalada, basta seguir essas instruções:
Importante
Além de instalar, lembre-se de incluir a dependência no arquivo requirements.txt
do bot.
<repositories>
<repository>
<id>nexus-botcity-public</id>
<url>https://devtools.botcity.dev:8081/repository/botcity-public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<dependencies>
<!-- Your other dependencies -->
<dependency>
<groupId>dev.botcity</groupId>
<artifactId>maestro-sdk</artifactId>
<version>2.0.3</version>
</dependency>
</dependencies>
Importando o SDK¶
Após a instalação, basta importar a dependência e instanciar o Maestro SDK:
# Importando a dependência do Maestro SDK
from botcity.maestro import *
# Desabilitando erros caso não exista conexão com o Maestro
BotMaestroSDK.RAISE_NOT_CONNECTED = False
# Instanciando o Maestro SDK
maestro = BotMaestroSDK.from_sys_args()
# Buscando os detalhes da tarefa atual sendo executada
execution = maestro.get_execution()
// Importando a dependência do Maestro SDK
const { BotMaestroSdk } = require('@botcity/botcity-maestro-sdk')
// Obtendo parâmetros passados pelo Runner
const args = process.argv.slice(2)
const [server, taskid, token] = args
// Login com as informações da página Amb. Desenvolvedor
const maestro = new BotMaestroSdk()
maestro.login("YOUR_SERVER_HERE", "YOUR_USER_HERE", "YOUR_KEY_HERE")
// Buscando os detalhes da tarefa atual sendo executada
const executionTask = await maestro.getTask(taskid)
// Importando a dependência do Maestro SDK
import { BotMaestroSdk } from '@botcity/botcity-maestro-sdk'
// Obtendo parâmetros passados pelo Runner
const args = process.argv.slice(2)
const [server, taskid, token] = args
// Login com as informações da página Amb. Desenvolvedor
const maestro: BotMaestroSdk = new BotMaestroSdk()
maestro.login("YOUR_SERVER_HERE", "YOUR_USER_HERE", "YOUR_KEY_HERE")
// Buscando os detalhes da tarefa atual sendo executada
const executionTask: Task = await maestro.getTask(taskid)
Finalizando uma tarefa e reportando dados¶
Além de reportar o status de finalização de uma tarefa, também podemos reportar dados adicionais referentes aos itens que foram processados durante a execução.
maestro.finish_task(
task_id=execution.task_id,
status=AutomationTaskFinishStatus.SUCCESS,
message="Task Finished with Success.",
total_items=100, # Número total de itens processados
processed_items=90, # Número de itens processados com sucesso
failed_items=10 # Número de itens processados com falha
)
Info
Esse recurso de reportar dados também faz parte do BotCity Insights, que é um módulo dedicado a parte de reportar e exibir dados referentes à sua iniciativa de RPA.
A etapa de reportar os dados no código da automação é essencial para que as informações de alto nível sejam geradas.
Veja mais detalhes sobre esse módulo acessando a documentação do BotCity Insights.
Código completo¶
from botcity.core import DesktopBot
from botcity.maestro import *
# Desabilitando erros caso não exista conexão com o Maestro
BotMaestroSDK.RAISE_NOT_CONNECTED = False
def main():
maestro = BotMaestroSDK.from_sys_args()
execution = maestro.get_execution()
bot = DesktopBot()
# Implemente aqui a sua lógica...
...
# Finalizando tarefa com sucesso
maestro.finish_task(
task_id=execution.task_id,
status=AutomationTaskFinishStatus.SUCCESS,
message="Task Finished with Success.",
total_items=100, # Número total de itens processados
processed_items=90, # Número de itens processados com sucesso
failed_items=10 # Número de itens processados com falha
)
def not_found(label):
print(f"Element not found: {label}")
if __name__ == '__main__':
main()
import dev.botcity.framework.bot.DesktopBot;
import dev.botcity.maestro_sdk.BotExecutor;
import dev.botcity.maestro_sdk.BotMaestroSDK;
import dev.botcity.maestro_sdk.model.AutomationTask.FinishStatus;
import dev.botcity.maestro_sdk.runner.BotExecution;
import dev.botcity.maestro_sdk.runner.RunnableAgent;
public class FirstBot extends DesktopBot implements RunnableAgent
{
public FirstBot() {
try {
setResourceClassLoader(this.getClass().getClassLoader());
} catch(Exception e) {
e.printStackTrace();
}
}
@Override
public void action(BotExecution botExecution) {
try {
BotMaestroSDK maestro = new BotMaestroSDK();
maestro.login(botExecution);
// Implemente aqui a sua lógica...
// Finalizando tarefa com sucesso
maestro.finishTask(
botExecution.getTaskId(),
"Task Finished with Success.",
FinishStatus.SUCCESS,
100, // Número total de itens processados
90, // Número de itens processados com sucesso
10 // Número de itens processados com falha
);
} catch(Exception e) {
e.printStackTrace();
}
}
private void notFound(String label) {
System.out.println("Element not found: "+label);
}
public static void main(String[] args) {
BotExecutor.run(new FirstBot(), args);
}
}
const main = async () => {
const { BotMaestroSdk } = require('@botcity/botcity-maestro-sdk')
const args = process.argv.slice(2)
const [server, taskid, token] = args
const maestro = new BotMaestroSdk()
maestro.login("YOUR_SERVER_HERE", "YOUR_USER_HERE", "YOUR_KEY_HERE")
const executionTask = await maestro.getTask(taskid)
// Finalizando tarefa com sucesso
await maestro.finishtTask(
executionTask.id,
"Task finished with Success.",
"SUCCESS"
)
}
main()
const main = async () => {
import { BotMaestroSdk } from '@botcity/botcity-maestro-sdk'
const args = process.argv.slice(2)
const [server, taskid, token] = args
const maestro: BotMaestroSdk = new BotMaestroSdk()
maestro.login("YOUR_SERVER_HERE", "YOUR_USER_HERE", "YOUR_KEY_HERE")
const executionTask: Task = await maestro.getTask(taskid)
// Finalizando tarefa com sucesso
await maestro.finishtTask(
executionTask.id,
"Task finished with Success.",
"SUCCESS"
)
}
main()
Dica
Consulte as outras operações que podemos fazer com tarefas utilizando o BotCity Maestro SDK e BotCity Maestro API.