Ir para o conteúdo

Datapool

A funcionalidade do Datapool pode ser utilizada como uma forma de gerenciar uma fila de itens que precisam ser processados em lote.

Nessa seção você verá mais detalhes sobre como interagir com esse recurso do BotCity Maestro através do código da sua automação.

Dica

Veja mais detalhes sobre como criar um Datapool e adicionar novos itens através da interface do Maestro acessando este link.

Consumindo os itens de um Datapool

O primeiro passo é obtermos a referência do Datapool através do seu identificador único (label).

Após obtermos a referência do Datapool, podemos utilizar um laço de repetição para verificar enquanto houverem itens para serem processados.

# Consumindo o próximo item disponível e reportando o estado de finalização ao final
datapool = maestro.get_datapool(label="Items-To-Process")

while datapool.has_next():
    # Busca o próximo item do Datapool
    item = datapool.next(task_id=execution.task_id)
    if item is None:
        # O item poderia ser 'None', caso outro processo o consumisse antes
        break

    # Processando item...

    # Finalizando como 'CONCLUÍDO' após o processamento
    item.report_done()

Aviso

Lembre-se de sempre incluir no código o reporte referente ao estado de finalização do item que foi processado.

Isso é extremamente importante para que os estados dos itens sejam atualizados dentro do Datapool no Maestro.

Manipulando um item do Datapool

Além de reportar o estado de finalização de um item, podemos realizar outras operações no código.

É possível obtermos algumas informações do item, além de dados específicos com base no Schema que foi criado.

# Busca o próximo item do Datapool
item = datapool.next(task_id=execution.task_id)

# Obtendo o valor de algum campo específico do item
item_data = item["data-label"]

# Finalizando como 'CONCLUÍDO' após o processamento
item.report_done()

# Finalizando o processamento do item como 'ERRO'
item.report_error()

Operações com o Datapool

Através do Maestro SDK também podemos realizar algumas outras operações com o Datapool, além de verificar e consumir os itens a serem processados.

# Obtendo a referência do Datapool
datapool = maestro.get_datapool("ProductsData")

# Verificando se o Datapool está ativo
print(datapool.is_active())

# Verificando se o Datapool está vazio
print(datapool.is_empty())

# Marcando o Datapool como ativo
datapool.activate()

# Marcando o Datapool como inativo
datapool.deactivate()

Adicionando novos itens

Podemos adicionar novos itens ao Datapool utilizando o Maestro SDK.

Dica

Esse método pode ser útil caso você queira utilizar um script Python para popular o Datapool com os itens que serão processados.

# Instanciando um novo item do Datapool com base no Schema que foi definido
new_item = DataPoolEntry(
    values={
        "product_name": "Smartphone",
        "product_category": "Electronic",
        "product_value": "2000"
    }
)

# Obtendo a referência do Datapool
datapool = maestro.get_datapool("ProductsData")

# Adicionando um novo item
datapool.create_entry(new_item)