Ir para o conteúdo

Estou começando agora

Se você está começando agora com BotCity ou quer ter uma ideia geral de como os itens processados podem ser reportados no código do processo, basta seguir o guia abaixo:

Utilizando o Maestro SDK para reportar dados

Você pode facilmente reportar as informações sobre os itens que foram processados utilizando 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 robô.

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

public void action(BotExecution botExecution) {

    try {
        // Instanciando o Maestro SDK
        BotMaestroSDK maestro = new BotMaestroSDK();
        maestro.login(botExecution);
    ...

Reportando os dados do processo

Ao final da execução, é possível reportar na finalização da tarefa as informações sobre os itens que foram processados.

maestro.finish_task(
    task_id=execution.task_id,
    status=AutomationTaskFinishStatus.SUCCESS,
    message="Task Finished OK.",
    total_items=100, # Número total de itens processados
    processed_items=90 # Número de itens processados com sucesso
)
maestro.finishTask(
    botExecution.getTaskId(),
    "Task Finished OK.",
    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
);

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()

    # Implemente aqui a sua lógica...
    bot = DesktopBot()

    # Os itens podem ser qualquer entidade referente ao seu processo de automação
    itens = []
    itens_processados = 0
    itens_falhados = 0

    # Você pode utilizar a lógica que for necessária para consumir, processar e contabilizar os itens
    for item in itens:
        try:
            # Processando o item...

            # Contabilizando como um item processado com sucesso
            itens_processados+=1

        except Exception:
            # Contabilizando como um item processado com falha
            itens_falhados+=1

    # Ao final, basta reportar na finalização da tarefa os dados dos itens processados
    maestro.finish_task(
        task_id=execution.task_id,
        status=AutomationTaskFinishStatus.SUCCESS,
        message="Task Finished OK.",
        total_items=len(itens), # Número total de itens processados
        processed_items=itens_processados, # Número de itens processados com sucesso
        failed_items=itens_falhados # Número de itens processados com falha
    )

def not_found(label):
    print(f"Element not found: {label}")

if __name__ == '__main__':
    main()
import java.util.List;
import java.util.ArrayList;
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);

            // Os itens podem ser qualquer entidade referente ao seu processo de automação
            List<Object> itens = new ArrayList<Object>();
            int itensProcessados = 0;
            int itensFalhados = 0;

            // Você pode utilizar a lógica que for necessária para consumir, processar e contabilizar os itens
            for(Object item : itens){
                try{
                    // Processando o item...

                    // Contabilizando como um item processado com sucesso
                    itensProcessados+=1;
                }
                catch(Exception e){
                    // Contabilizando como um item processado com falha
                    itensFalhados+=1;
                }
            }

            // Ao final, basta reportar na finalização da tarefa os dados dos itens processados
            maestro.finishTask(
                botExecution.getTaskId(),
                "Task Finished OK.",
                FinishStatus.SUCCESS,
                itens.size(), // Número total de itens processados
                itensProcessados, // Número de itens processados com sucesso
                itensFalhados // 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);
    }
}

Dica

Não é obrigatório utilizar uma estrutura de código específica no seu processo de automação.

Você tem total liberdade para definir a lógica que será utilizada e também a forma com que os itens serão contabilizados.

Ao final, basta reportar esses dados simplesmente utilizando o método finish_task do Maestro SDK.