Administrar Elementos¶
El Datapool nos permite gestionar eficientemente el procesamiento de elementos en lote.
En las siguientes secciones, encontrarás más detalles sobre cómo funcionan los Datapools y cómo utilizar estos recursos junto con tus procesos de automatización.
Añadiendo nuevos elementos al Datapool¶
Podemos añadir nuevos elementos al Datapool de varias maneras diferentes.
Añadiendo cada elemento manualmente¶
Al hacer clic en + Añadir entrada
podemos añadir un nuevo elemento al Datapool.
Podemos completar la prioridad de este elemento específico y también los valores que este elemento recibe. Los elementos con prioridades más altas serán procesados primero.
Información
Además de completar los valores que fueron definidos al crear el Esquema, también podemos añadir campos adicionales para un elemento a través del botón + Entrada
.
Añadiendo elementos a través de un archivo CSV¶
Además de añadir elementos manualmente, también podemos incluir varios elementos a la vez a través de un archivo .csv
.
Al seleccionar la opción Importar CSV
, podemos descargar un archivo de ejemplo y completarlo con la información de los elementos que serán añadidos al Datapool.
Una vez hecho esto, simplemente sube el archivo y haz clic en Agregar
para que los elementos se carguen automáticamente.
Consejo
También puedes agregar nuevos elementos al Datapool vía código, a través del BotCity Maestro SDK o utilizando la BotCity Maestro API.
Manipulando elementos del Datapool¶
Una vez que los elementos han sido añadidos al Datapool, es posible realizar varias operaciones.
La operación básica consiste en consumir elementos de la cola, realizar procesamiento vía código y reportar el estado final.
Consejo
Explora el para obtener ejemplos de código que facilitan las manipulaciones del Datapool.
Accede y aprende cómo añadir, consumir y manipular elementos del Datapool vía código.
Consumiendo elementos de la cola¶
Después de agregar elementos al Datapool, permanecerán pendientes en la cola esperando procesamiento.
Consumiendo elementos de la cola en código de automatización
Importante
El consumo de elementos pendientes se realizará utilizando el BotCity Maestro SDK, a través de tu código de automatización.
Ve más detalles sobre cómo consumir elementos del Datapool en la sección Integraciones con SDK.
# Consuming the next available item and reporting the finishing state at the end
datapool = maestro.get_datapool(label="Items-To-Process")
while datapool.has_next():
# Fetch the next Datapool item
item = datapool.next(task_id=execution.task_id)
if item is None:
# Item could be None if another process consumed it before
break
try:
# Processing item...
# Example of how to get the value of a specific field
value1 = item["<FIELD_LABEL_1>"]
value2 = item["<FIELD_LABEL_2>"]
# Finishing as 'DONE' after processing
item.report_done(finish_message="Successfully processed!")
except Exception:
# Finishing item processing as 'ERROR'
item.report_error(error_type=ErrorType.SYSTEM, finish_message="Processing failed.")
// Consuming the next available item and reporting the finishing state at the end
Datapool datapool = await maestro.GetDatapoolAsync("Items-To-Process");
while (await dataPool.HasNextAsync()) {
// Fetch the next Datapool item
DatapoolEntry item = await datapool.NextAsync(execution.TaskId);
if (item == null) {
// Item could be 'null' if another process consumed it before
break;
}
try {
// Processing item...
// Example of how to get the value of a specific field
string value1 = await item.GetValueAsync("<FIELD_LABEL_1>");
string value2 = await item.GetValueAsync("<FIELD_LABEL_2>");
// Finishing as 'DONE' after processing
await item.ReportDoneAsync();
} catch (Exception ex) {
// Finishing item processing as 'ERROR'
await item.ReportErrorAsync();
}
}
A continuación verás más detalles sobre la gestión de elementos y cómo funcionan los estados de procesamiento.
Visualizando información¶
Para cada elemento agregado al Datapool, podemos ver la siguiente información:
- Entrada: El identificador único del elemento o una combinación de campos que fueron marcados en el
Esquema
para ser mostrados (ve la sección que explica la creación del Esquema). - Prioridad: La prioridad definida para el elemento, los elementos con prioridades más altas serán procesados primero.
- Estado: El estado actual del elemento en el Datapool.
- Mensaje de finalización: El mensaje de finalización opcional reportado vía código al final del procesamiento.
- Tipo de error: El tipo de error reportado vía código al final del procesamiento, si el elemento fue procesado con falla.
- SYSTEM: Indica que el error de procesamiento fue causado por un error del sistema. Este será el tipo por defecto si no se especifica en el reporte.
- BUSINESS: Indica que el error de procesamiento fue causado por una falla de negocio, es decir, el elemento finalizó con error debido a alguna regla de negocio específica.
- Auto-reintento: Representa el índice del intento de procesamiento, en caso de elementos que fueron reprocesados.
- Tiempo de procesamiento: El tiempo gastado procesando el elemento.
- Ciclo de vida: El tiempo tomado desde la creación del elemento en el Datapool hasta la finalización del procesamiento.
Al expandir los detalles de un elemento haciendo clic en ▼
, podemos ver la siguiente información adicional:
- Elemento: El identificador único del elemento.
- Prioridad: La prioridad definida para el elemento.
- ID de Tarea: El identificador de la tarea responsable de acceder y consumir ese elemento del Datapool.
- Fecha de creación: La fecha cuando el elemento fue agregado al Datapool.
- Fecha de procesamiento: La fecha cuando el elemento fue tomado para procesamiento.
- Estado: El estado actual del elemento en el Datapool.
- Tiempo de procesamiento: El tiempo gastado procesando el elemento.
- Runner: El Runner responsable de ejecutar la tarea que consumió el elemento.
- Auto-reintento: Representa el índice del intento de procesamiento, en caso de elementos que fueron reprocesados.
- Mensaje de finalización: El mensaje de finalización opcional reportado vía código al final del procesamiento.
- Datos específicos del elemento: Los conjuntos de clave/valor que componen el elemento del Datapool.
Editando datos de elementos pendientes¶
Para elementos que están en estado PENDIENTE
, podemos editar los valores completados y agregar nuevos campos.
Al expandir los detalles de un elemento y hacer clic en Editar
, es posible ajustar valores previamente definidos.
Al hacer clic en + Entrada
, puedes incluir tantos campos adicionales como sean necesarios para ese elemento específico.
Ciclo de vida y estados de procesamiento¶
Como vimos anteriormente, al agregar un nuevo elemento al Datapool, inicialmente tendrá el estado PENDIENTE
.
Podemos entender los estados que un elemento puede asumir durante su ciclo de vida de la siguiente manera:
PENDIENTE: El elemento está esperando procesamiento, en este punto estará disponible para ser accedido y consumido.
PROCESANDO: El elemento fue tomado para ejecución y está en la fase de procesamiento.
COMPLETADO: El procesamiento del elemento fue completado exitosamente.
ERROR: El procesamiento del elemento fue completado con error.
CANCELADO: El elemento fue cancelado y no será tomado para procesamiento.
TIMEOUT: El procesamiento del elemento está en una fase de timeout (esto puede ocurrir cuando el estado de finalización del elemento no es reportado vía código).
Entendiendo el estado TIMEOUT¶
El estado TIMEOUT
se basa en el tiempo que fue definido en la propiedad Tiempo de procesamiento al crear el Datapool.
Si el procesamiento de un elemento excede el tiempo máximo definido, ya sea por falta de reporte indicando el estado del elemento o algún cuelgue de ejecución que impida que se haga el reporte, el Datapool automáticamente indicará que ese elemento ha entrado en un estado TIMEOUT
.
Esto no necesariamente significa un error, ya que un elemento aún puede ir del estado TIMEOUT
al estado COMPLETADO
o ERROR
.
Sin embargo, si el proceso no se recupera (en caso de eventuales cuelgues) y el reporte del estado del elemento no se hace, el Datapool automáticamente considerará el estado de ese elemento como ERROR
después de un período de 24 horas.
Reportando el estado de un elemento¶
El paso de reportar el estado de finalización de un elemento es crucial para que los estados y contadores del Datapool se actualicen correctamente.
Para esto, es necesario que el estado de finalización de cada elemento (COMPLETADO
o ERROR
) sea reportado vía código dentro de la lógica del proceso.
Reportando el estado de un elemento en código de automatización
Importante
En la sección Integraciones con SDK encontrarás más información sobre cómo se puede reportar el estado de un elemento.
# Fetch the next Datapool item
item = datapool.next(task_id=execution.task_id)
# Finishing as 'DONE' after processing
item.report_done(finish_message="Successfully processed!")
# Finishing item processing indicating a system error
item.report_error(error_type=ErrorType.SYSTEM, finish_message="System unavailable.")
# Finishing item processing indicating a business error
item.report_error(error_type=ErrorType.BUSINESS, finish_message="Invalid data.")
Si el estado de procesamiento del elemento no es reportado por alguna razón, y el tiempo de procesamiento excede el valor que fue definido en la propiedad Tiempo de procesamiento, esto hará que el Datapool automáticamente asigne un estado TIMEOUT
a ese elemento.
Datapool <> BotCity Insights
El reporte de elementos en el Datapool NO tiene impacto directo en las métricas calculadas por BotCity Insights.
Para tener métricas actualizadas, es estrictamente necesario:
- Asegurar que los datos financieros de automatización estén configurados apropiadamente en la sección Entrada de Datos dentro de Insights.
- Asegurar que el reporte de elementos procesados se haga correctamente al finalizar la tarea al final de la ejecución.
Ve más detalles en la sección BotCity Insights.
Operaciones con elementos del Datapool¶
Además de ver información, podemos realizar algunas operaciones accediendo al menú de acciones de cada elemento:
- Reiniciar: Inserta una copia del elemento actual en el Datapool para que pueda ser procesado nuevamente.
- Cancelar: Cancela un elemento que aún no ha sido tomado para procesamiento (
PENDIENTE
). En este caso, el elemento será ignorado durante el consumo de la cola. - Eliminar: Remueve el elemento de la cola y del historial del Datapool. No es posible eliminar elementos que están en estado
PROCESANDO
oTIMEOUT
.
Consejo
A través de la funcionalidad Acciones en masa
también es posible cancelar o eliminar múltiples elementos, si necesitas realizar estas operaciones para un gran volumen de entradas.
Filtrando elementos en la cola¶
El Datapool tiene una funcionalidad de filtro que nos permite buscar elementos de la cola filtrando por fecha o estado actual.
Adicionalmente, también es posible buscar un elemento específico usando valores de entrada como filtros.
Importante
Para que un campo pueda ser usado en la búsqueda, es necesario que la opción Mostrar valor esté marcada en la configuración del campo dentro del Esquema.
Exportando datos de elementos¶
En el panel principal del Datapool podemos exportar fácilmente elementos de la cola.
A través del botón Exportar
podemos elegir el formato más apropiado y así obtener fácilmente datos sobre el historial de procesamiento de elementos.