Saltar a contenido

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:

Fila de tareas en formato de tarjeta

  • En formato de lista, donde cada línea representa una sola tarea:

Fila de tareas en formato de lista

También es posible utilizar los filtros Estado, Repositorio, Automatización, Runner, ID de tarea, Fecha de inicio y Fecha de finalización para ver tareas específicas.

Filtros de tarea

La fila de tareas también tiene una columna "Última actualización" donde puede ver cuánto tiempo ha estado una tarea en la fila, procesándose o finalizándose. Esta funcionalidad proporciona una visión más clara del tiempo dedicado a cada paso.

Advertencia sobre Runners sin conexión

Si hay tareas en fila asociadas con Runners que están fuera de línea, se mostrará una advertencia para que pueda revisar sus Runners asignados.

Esta alerta incluye un enlace directo a la pestaña Runners de la plataforma, donde puedes gestionar los Runners de tu espacio de trabajo.

Personalizando la vista de tareas

También puede personalizar la tabla de vista de tareas según sus preferencias.

Task Queue Custom View

Cuando selecciona un tipo de filtro u ordenación de columnas, esta configuración se guardará como predeterminada. Usando el botón Personalizar vista de lista de tareas puede encontrar más detalles.

Task Queue Custom View

Información de la tarea

Status

Al crear una nueva tarea, inicialmente tendrá el estado de En espera, es decir, esperará hasta que haya un Runner disponible para ejecutarla.

Podemos comprender mejor los estados que puede asumir una tarea durante su ciclo de vida de la siguiente manera:

Status de tarea

En espera: La tarea está esperando ser procesada, momento en el cual estará disponible para ser ejecutada por el Runner que ha sido vinculado al proceso de automatización.

En ejecución: Runner sacó la tarea para su ejecución y se encuentra en la fase de procesamiento.

Finalizada: El procesamiento de la tarea se completó con éxito.

Fallida: El procesamiento del tarea finalizó con error.

Parcialmente completada: El procesamiento de la tarea se ha completado parcialmente. Por ejemplo, piense en un proceso en el que algunos elementos se procesaron correctamente y otros no.

Cancelada: La ejecución de la tarea se canceló antes de que se retirara para su ejecución.

Tip

Los estados de finalización de las tareas se pueden informar directamente a través del código de automatización, según las reglas comerciales de su proceso.

Información general de ejecución

Puede acceder a información específica sobre una tarea haciendo clic directamente en el nombre de la automatización, dentro de la tarjeta de tarea.

Tarjeta de 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:

Información de la lista de tareas

Serás redirigido a una página con información detallada de la tarea utilizando cualquiera de las opciones anteriores.

Información general

Donde:

  • Estado: Contiene información sobre el estado de la tarea.
  • Ítems procesados: Número de elementos procesados ​​correctamente por la tarea.
  • Ítems fallidos: Número de elementos fallidos procesados ​​por la tarea.
  • 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.

Mensaje de finalización

Parámetros de la tarea

También puedes visualizar los parámetros utilizados en la tarea.

Parámetros

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:

Información general de la fila de tareas, tarea y tiempo de ejecución

Información de la fila de tareas

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 Acciones. Este botón permite:

  • Eliminar: Eliminar una tarea que está en la fila de ejecución.
  • Solicitar detener tarea: Solicitar la interrupción de la tarea. Obtén más información sobre esta funcionalidad aquí.
  • Forzar detener tarea: Terminar la tarea forzando la finalización de la ejecución.
  • Reiniciar: Reiniciar una tarea marcada como prueba.
  • Cancelar: Cancela la ejecución de una tarea creada previamente en la cola.
  • Duplicar: Pone en cola una tarea cancelada o ejecutada previamente con las mismas asignaciones.

Atención

  • Las tareas en ejecución solo tienen las acciones Solicitar detener tarea y Forzar detener tarea.
  • Las tareas en la fila solo tienen las acciones Eliminar e Cancelar.
  • Solo las tareas definidas como prueba pueden reproducir la acción Reiniciar.
  • Las tareas finalizadas o canceladas solo tienen la acción Duplicar.

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:

pip install botcity-maestro-sdk

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>
npm i @botcity/botcity-maestro-sdk
npm i @botcity/botcity-maestro-sdk

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

public void action(BotExecution botExecution) {

    try {
        // Instantiating the Maestro SDK
        BotMaestroSDK maestro = new BotMaestroSDK();
        maestro.login(botExecution);
    ...
// 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
)
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
);
// Finishing the task successfully
await maestro.finishtTask(
    executionTask.id,
    "Task finished with Success.",
    "SUCCESS"
)
// Finishing the task successfully
await maestro.finishtTask(
    executionTask.id,
    "Task finished with Success.",
    "SUCCESS"
)

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.