Saltar a contenido

Datapool

La funcionalidad de Datapool se puede utilizar como una forma de gestionar el procesamiento por lotes.

En esta sección, verás más detalles sobre cómo interactuar con esta característica de BotCity Maestro a través de tu código de automatización.

Tip

Consulta más detalles sobre cómo crear un Datapool y agregar nuevos elementos a través de la interfaz de Maestro accediendo a este enlace.

Consumir elementos de un Datapool

El primer paso es obtener la referencia del Datapool a través de su identificador único (etiqueta).

Después de obtener la referencia del Datapool, podemos usar un bucle repetitivo para verificar mientras haya elementos que se deban procesar.

# 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

    # Processing item...

    # Finishing as 'DONE' after processing
    item.report_done()

Warning

Recuerda siempre incluir en el código el informe sobre el estado de finalización del elemento que se procesó.

Esto es extremadamente importante para que los estados de los elementos se actualicen dentro del Datapool en Maestro.

Manipulación de un elemento de Datapool

Además de informar el estado de finalización de un elemento, podemos realizar otras operaciones en el código.

Es posible obtener información sobre el elemento, así como datos específicos basados en el Esquema que se creó.

# Fetch the next Datapool item
item = datapool.next(task_id=execution.task_id)

# Getting the value of some specific field of the item
item_data = item["data-label"]

# Finishing as 'DONE' after processing
item.report_done()

# Finishing item processing as 'ERROR'
item.report_error()

Operaciones de Datapool

A través del SDK de Maestro, podemos realizar otras operaciones con el Datapool además de verificar y consumir los elementos que se deben procesar.

# Getting the Datapool reference
datapool = maestro.get_datapool("ProductsData")

# Checking if the Datapool is active
print(datapool.is_active())

# Checking if the Datapool is empty
print(datapool.is_empty())

# Marking the Datapool as active
datapool.activate()

# Marking the Datapool as inactive
datapool.deactivate()

Agregar nuevos elementos

Podemos agregar nuevos elementos al Datapool utilizando el SDK de Maestro.

Tip

Este método puede ser útil si deseas utilizar un script de Python para poblar el Datapool con los elementos que se procesarán.

# Instantiating a new Datapool item based on the Schema that has been defined
new_item = DataPoolEntry(
    values={
        "product_name": "Smartphone",
        "product_category": "Electronic",
        "product_value": "2000"
    }
)

# Getting the Datapool reference
datapool = maestro.get_datapool("ProductsData")

# Adding a new item
datapool.create_entry(new_item)