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