Ir para o conteúdo

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:

Fila de Tarefas Cartões

  • Em formato de lista, onde cada linha representa uma única tarefa:

Fila de Tarefas Lista

Podendo identificar o status de cada tarefa conforme a seguir:

Estado da fila de tarefas

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.

Filtros da tarefa

Informações da tarefa

Você consegue acompanhar as informações de uma tarefa de duas formas através do cartão de tarefas:

  1. Clicando diretamente no nome da tarefa, dentro do cartão de tarefa.
  2. Clicando no ícone com três pontos no canto superior do cartão de tarefa, e selecionando a opção Informações.

Cartão info

E pela lista de tarefas, é possivel acessar as informações detalhadas clicando no ID da tarefa:

Lista Tarefa info

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

Informacoes gerais

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.

Mensagem de finalização

Parâmetros da tarefa

Você também consegue visualizar os parâmetros utlizados na tarefa.

Parameters

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:

Informações gerais da fila de tarefas, da tarefa e runtime

Task Queue Info

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 Ações, 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 e Terminar.
  • Tarefas na fila só possuem ações de Excluir e Interromper.
  • 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:

pip install botcity-maestro-sdk

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>
npm i @botcity/botcity-maestro-sdk
npm i @botcity/botcity-maestro-sdk

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
import dev.botcity.maestro_sdk.*;
...

public void action(BotExecution botExecution) {

    try {
        // Instanciando o Maestro SDK
        BotMaestroSDK maestro = new BotMaestroSDK();
        maestro.login(botExecution);
    ...
// 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
)
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
);
// Finalizando tarefa com sucesso
await maestro.finishtTask(
    executionTask.id,
    "Task finished with Success.",
    "SUCCESS"
)
// Finalizando tarefa com sucesso
await maestro.finishtTask(
    executionTask.id,
    "Task finished with Success.",
    "SUCCESS"
)

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.