Fila de Tareas¶
La fila de tareas muestra las tareas en ejecución, listas para ser ejecutadas y finalizadas.
Visualización de la fila de tareas¶
Puedes ver la fila de tareas de dos formas:
- En formato de tarjeta, donde cada tarjeta representa una sola tarea:
- En formato de lista, donde cada línea representa una sola tarea:
Puedes identificar el estado de cada tarea de la siguiente manera:
También es posible utilizar los filtros Estado, Automatización, Runner, ID de tarea, Fecha de inicio y Fecha de finalización para ver tareas específicas.
Información de la tarea¶
Puedes seguir la información de una tarea de dos formas:
- Haciendo clic directamente en el nombre de la tarea dentro de la tarjeta de la tarea.
- Haciendo clic en el icono con tres puntos en la esquina superior de la tarjeta de la tarea y seleccionando la opción Información.
Y a través de la lista de tareas, es posible acceder a la información detallada haciendo clic en el ID de la tarea:
Serás redirigido a una página con información detallada de la tarea utilizando cualquiera de las opciones anteriores. Podrás ver:
Información general de ejecución¶
Donde:
- Estado: Contiene información sobre el estado de la tarea.
- Ciclo de vida: El ciclo de vida de la tarea, desde que entra en la fila hasta que se completa.
- Tiempo en fila: El tiempo que permaneció en la fila de ejecución.
- Ejecución: El tiempo de ejecución de la tarea, después de salir de la fila de ejecución.
- Runner: El Runner responsable de ejecutar la tarea.
Mensaje de finalización de la tarea¶
Puedes ver el mensaje de finalización de la tarea. Si ocurre un error durante la preparación del ambiente o la ejecución del código, esta información se mostrará en el mensaje de finalización.
También puedes establecer un mensaje de finalización personalizado. Obtén más detalles sobre cómo finalizar una tarea en Maestro en los siguientes pasos.
Parámetros de la tarea¶
También puedes visualizar los parámetros utilizados en la tarea.
Encontrarás los parámetros de ejecución definidos por el usuario al crear una nueva tarea.
Tip
La definición de los parámetros se realiza por los desarrolladores al crear un proceso de automatización.
Obtén más información sobre cómo crear una tarea con o sin parámetros utilizando:
- La función Nueva tarea de BotCity Maestro a través de la interfaz del orquestador.
- El comando task create de BotCity CLI a través de la línea de comandos.
- El SDK de BotCity Maestro a través de código.
- La API de BotCity Maestro a través de la API.
Información general de la fila de tareas, tarea y tiempo de ejecución¶
Donde:
- Control de la fila: Contiene información de control de la fila de tareas, como la prioridad de la tarea, la fecha mínima de ejecución y la información si la tarea ha sido interrumpida o terminada por la interfaz de Maestro.
- Resumen de la tarea: Contiene información de la tarea, como el ID, la etiqueta, el usuario que inició la tarea y si es una tarea de prueba.
- Tiempo de ejecución: Contiene información de ejecución, como el Runner que realizó la tarea y la fecha y hora en que se creó, inició y finalizó la tarea.
Acciones de la tarea¶
En la pantalla de información de la tarea, encontrarás el botón . Este botón permite:
- Eliminar: Eliminar una tarea que está en la fila de ejecución.
- Interrumpir: Solicitar la interrupción de la tarea. Obtén más información sobre esta funcionalidad aquí.
- Terminar: Terminar la tarea forzando la finalización de la ejecución.
- Reiniciar: Reiniciar una tarea marcada como prueba.
Note
- Las tareas en ejecución solo tienen las acciones
Interrumpir
yTerminar
. - Las tareas en la fila solo tienen las acciones
Eliminar
eInterrumpir
. - Solo las tareas definidas como prueba pueden reproducir la acción
Reiniciar
. - Las tareas finalizadas no tienen ninguna acción disponible.
Cómo finalizar una tarea usando el SDK de Maestro¶
Por defecto, al ejecutar una tarea por primera vez sin utilizar ninguna integración con Maestro, la tarea finalizará con el estado de Fallida.
Esto ocurre porque debemos definir las instrucciones para finalizar la tarea en el código y reportar el estado final deseado a Maestro.
Utilizando el SDK de Maestro en tu código de automatización, puedes finalizar fácilmente las tareas en Maestro.
Instalación¶
Si aún no tienes instalada la dependencia, simplemente sigue estas instrucciones:
Important
Además de la instalación, recuerda incluir la dependencia en el archivo requirements.txt
del 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>
Importar el SDK¶
Después de la instalación, importa la dependencia e instancia el SDK de Maestro:
# Import for integration with BotCity Maestro SDK
from botcity.maestro import *
# Disable errors if we are not connected to Maestro
BotMaestroSDK.RAISE_NOT_CONNECTED = False
# Instantiating the Maestro SDK
maestro = BotMaestroSDK.from_sys_args()
# Fetching the details of the current task being executed
execution = maestro.get_execution()
// Import for integration with BotCity Maestro SDK
const { BotMaestroSdk } = require('@botcity/botcity-maestro-sdk')
// Getting parameters passed by Runner
const args = process.argv.slice(2)
const [server, taskid, token] = args
// Login with information from the Dev. Environment page
const maestro = new BotMaestroSdk()
maestro.login("YOUR_SERVER_HERE", "YOUR_USER_HERE", "YOUR_KEY_HERE")
// Fetching the details of the current task being executed
const executionTask = await maestro.getTask(taskid)
// Import for integration with BotCity Maestro SDK
import { BotMaestroSdk } from '@botcity/botcity-maestro-sdk'
// Getting parameters passed by Runner
const args = process.argv.slice(2)
const [server, taskid, token] = args
// Login with information from the Dev. Environment page
const maestro: BotMaestroSdk = new BotMaestroSdk()
maestro.login("YOUR_SERVER_HERE", "YOUR_USER_HERE", "YOUR_KEY_HERE")
// Fetching the details of the current task being executed
const executionTask: Task = await maestro.getTask(taskid)
Finalizar una tarea reportando datos adicionales¶
Además de reportar el estado de finalización de una tarea, también podemos reportar datos adicionales relacionados con los elementos que se procesaron durante la ejecución.
maestro.finish_task(
task_id=execution.task_id,
status=AutomationTaskFinishStatus.SUCCESS,
message="Task Finished with Success.",
total_items=100, # Total number of items processed
processed_items=90, # Number of items processed successfully
failed_items=10 # Number of items processed with failure
)
Info
Este recurso de reportar datos también hace parte de BotCity Insights, que es un módulo dedicado a reportar y mostrar datos relacionados con tu iniciativa de RPA.
La etapa de reportar datos en el código de la automatización es esencial para que se generen las informaciones de alto nivel.
Consulta más detalles sobre este módulo accediendo a la documentación de BotCity Insights.
Código completo¶
from botcity.core import DesktopBot
from botcity.maestro import *
# Disable errors if we are not connected to Maestro
BotMaestroSDK.RAISE_NOT_CONNECTED = False
def main():
maestro = BotMaestroSDK.from_sys_args()
execution = maestro.get_execution()
bot = DesktopBot()
# Implement here your logic...
...
# Finishing the task successfully
maestro.finish_task(
task_id=execution.task_id,
status=AutomationTaskFinishStatus.SUCCESS,
message="Task Finished with Success.",
total_items=100, # Total number of items processed
processed_items=90, # Number of items processed successfully
failed_items=10 # Number of items processed with failure
)
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);
// Implement here your logic...
// Finishing the task successfully
maestro.finishTask(
botExecution.getTaskId(),
"Task Finished with Success.",
FinishStatus.SUCCESS,
100, // Total number of items processed
90, // Number of items processed successfully
10 // Number of items processed with failure
);
} 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)
// Finishing the task successfully
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)
// Finishing the task successfully
await maestro.finishtTask(
executionTask.id,
"Task finished with Success.",
"SUCCESS"
)
}
main()
Tip
Observa las otras operaciones que podemos realizar con las tareas utilizando el SDK de BotCity Maestro y la API de BotCity Maestro.