Tarefas¶
Conforme abordado até agora, as tarefas são instâncias de uma Automação
e um dos conceitos mais importantes da plataforma BotCity Maestro.
Aqui, abordaremos como criar, interromper, terminar e recuperar tarefas.
Criando uma tarefa¶
Podemos criar uma nova tarefa através do BotCity Maestro SDK usando o seguinte código:
Aviso sobre timezone
Os fusos horários dos servidores do Orquestrador BotCity Maestro estão em UTC.
Portanto, lembre-se de considerar a diferença entre os fusos horários caso utilizar o parâmetro min_execution_date
na criação da tarefa.
Interrompendo uma tarefa¶
Para tarefas de longa execução, como o processamento em lote de itens, pode ser sensato permitir que os usuários solicitem sua interrupção.
Aqui está como solicitar uma interrupção para uma determinada tarefa:
Importante
Por favor, note que não é uma garantia de que a tarefa será interrompida.
É responsabilidade do desenvolvedor do código do robô verificar o sinalizador de solicitação de interrupção e agir de acordo com ele para interromper a tarefa.
Verificando a solicitação de interrupção¶
É responsabilidade do desenvolvedor do código do robô verificar o sinalizador de solicitação de interrupção e agir de acordo com ele para interromper a tarefa.
Aqui está como você pode fazer isso:
Finalizando uma tarefa e reportando dados¶
Depois que as tarefas são criadas, elas são enfileiradas no BotCity Maestro e coletadas para execução pelo BotCity Runner.
As tarefas coletadas para execução avançam para o estado Running
.
É responsabilidade do desenvolvedor da automação informar ao BotCity Maestro através do SDK sobre o status final adequado de uma tarefa.
Isso permite um melhor controle e também adiciona detalhes sobre a conclusão da tarefa que pode ser inspecionada posteriormente pelos usuários através do portal BotCity Maestro.
Uma tarefa pode ser concluída com um dos seguintes status:
SUCCESS
: A tarefa foi concluída com sucesso.FAILED
: A tarefa não foi concluída.PARTIALLY_COMPLETED
: A tarefa concluiu parte das etapas esperadas.
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.
Esse recurso será muito útil nos casos onde precisamos monitorar a quantidade de itens processados com sucesso ou falha pela tarefa.
Dica
Basicamente, um item pode ser qualquer entidade referente ao seu processo de automação.
Dessa forma, você pode utilizar a lógica que for necessária para o processo e definir como cada item será consumido, processado e contabilizado no código.
Ao final, basta reportar esses dados através do método finish_task
do Maestro SDK.
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.
Recuperando uma tarefa¶
Você pode buscar as informações de uma tarefa utilizando o ID ou através da referência da execução atual.
Utilizando o ID de uma tarefa específica¶
Obtendo a referência da execução atual¶
Como vimos anteriormente, o Maestro SDK possui um método especial para obtermos a referência da tarefa atual que está sendo executada pelo Runner.
Dessa forma, podemos acessar as informações da execução de uma forma mais prática.
Info
O objeto BotExecution
por padrão já vem configurado no template de projeto Java da BotCity.
Acessando os parâmetros de uma tarefa¶
Uma das informações que podemos acessar de uma tarefa são os parâmetros de entrada que ela recebe.
Os parâmetros de uma tarefa são tratados como um dicionário, para acessarmos um valor podemos passar como chave o label que foi usado na criação do parâmetro no BotCity Maestro.
Veja mais detalhes sobre como parametrizar uma automação no Maestro através da seção Automações.
Info
O objeto BotExecution
por padrão já vem configurado no template de projeto Java da BotCity.
public void action(BotExecution botExecution) {
try {
// Instanciando o Maestro SDK
// O objeto BotExecution contém as informações que são passadas pelo Runner
BotMaestroSDK maestro = new BotMaestroSDK();
maestro.login(botExecution);
// Obtendo parâmetro através do label
Object parametro = botExecution.getParams().get("<PARAMETER_LABEL>");
...
// Obtendo parâmetros passados pelo Runner
const args = process.argv.slice(2)
const [server, taskid, token] = args
// Instanciando o Maestro SDK
const maestro = new BotMaestroSdk()
maestro.login("https://developers.botcity.dev", "<LOGIN>", "<CHAVE>")
// Buscando os detalhes da tarefa atual sendo executada
const executionTask = await maestro.getTask(taskid)
// Obtendo parâmetros passados pelo Runner
const args = process.argv.slice(2)
const [server, taskid, token] = args
// Instanciando o Maestro SDK
const maestro: BotMaestroSdk = new BotMaestroSdk()
maestro.login("https://developers.botcity.dev", "<LOGIN>", "<CHAVE>")
// Buscando os detalhes da tarefa atual sendo executada
const executionTask: Task = await maestro.getTask(taskid)