Ir para o conteúdo

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

Tambem é possivel utilizar os filtros de State, Repositório, Automação, Runner, ID da Tarefa, Data de início e Data de término para visualizar tarefas específicas.

Filtros da tarefa

A fila de tarefas também possui a coluna Última Atualização, onde você pode ver há quanto tempo uma tarefa está na fila, sendo processada ou concluída. Essa funcionalidade proporciona uma visão mais clara do tempo gasto em cada etapa.

Aviso sobre Runners offline

Se houverem tarefas na fila associadas a Runners que estão offline, um aviso será exibido para você revisar seus Runners alocados.

Este alerta inclui um link direto para a aba Runners da plataforma, onde você poderá gerenciar os Runners do seu workspace.

Customizando a visualização das tarefas

Você também pode customizar a tabela de visualização das tarefas de acordo com as suas preferências.

Task Queue Custom View

Quando você seleciona um tipo de filtro ou classificação de coluna, essa configuração será salva como padrão. Através do botão Personalize a visualização da lista de tarefas você consegue encontrar mais detalhes.

Task Queue Custom View

Informações da tarefa

Status

Ao criar uma nova tarefa, ela inicialmente ficará com o status de Aguardando, ou seja, ela irá aguardar até que um Runner esteja disponível para executá-la.

Podemos entender melhor os status que uma tarefa pode assumir durante o seu ciclo de vida da seguinte maneira:

Estado da fila de tarefas

Aguardando: A tarefa está aguardando o processamento, nesse ponto ela estará disponível para ser executada pelo Runner que foi vinculado ao processo de automação.

Executando: A tarefa foi puxada para execução pelo Runner e está na fase de processamento.

Finalizado: O processamento da tarefa foi finalizado com sucesso.

Falhou: O processamento da tarefa foi finalizado com falha.

Parcialmente finalizado: O processamento da tarefa foi finalizado de forma parcial. Por exemplo, pense em um processo onde alguns itens foram processados com sucesso e outros não foram processados corretamente.

Cancelado: A execução da tarefa foi cancelada antes que ela fosse puxada para execução.

Dica

Os status de finalização das tarefas podem ser reportados diretamente através do código da automação, baseado nas regras de negócio do seu processo.

Informações gerais da execução

Você consegue acessar informações específicas de uma tarefa clicando diretamente no nome da automação, dentro do cartão da tarefa.

Cartão info

Pela visualização no formato de lista, é 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.

Informacoes gerais

Onde:

  • State: Carrega a informação do estado da tarefa.
  • Itens processados: Quantidade de itens processados com sucesso pela tarefa.
  • Itens com falha: Quantidade de itens processados com falha pela tarefa.
  • Execução: O tempo gasto na 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 na 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 de entrada 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 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 está na fila de execução.
  • Solicitar parada: Solicita a interrupção de uma tarefa em execução. Saiba mais sobre essa funcionalidade aqui.
  • Forçar a parada: Finaliza a tarefa forçando o término da execução.
  • Reiniciar: Reinicia uma tarefa.
  • Cancelar: Cancela a execução de uma tarefa criada anteriormente na fila.
  • Duplicar: Enfileira novamente com as mesmas atribuições uma tarefa cancelada ou que já foi executada anteriormente.

Atenção

  • Tarefas em execução só possuem acões de Solicitar parada e Forçar a parada.
  • Tarefas na fila só possuem ações de Excluir e Cancelar.
  • Apenas tarefas definidas como teste podem reproduzir a ação Reiniciar.
  • Tarefas finalizadas ou canceladas possuem somente a ação de Duplicar.

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.