TMACUL

LINGUAGEM SPEL (domset's) 13/10/2015

Blog Post created by TMACUL Champion on Jan 1, 2016

As vezes é necessário consultar uma lista de registros de um objeto e para isso, é importante conhecer o funcionamento dos domset's. Um domset define como uma lista de valores deve ser criada. Portanto, a utilização correta de um domset influencia diretamente no resultado e na performance da função "sync_fetch", por exemplo. Além de várias outras funções similares de listagem ("select", "select_count", "fetch", etc).

 

Basicamente existem 02 tipos de Domsets: MLIST (Master) e RLIST (Restrito), e dentro desses, outros dois subtipos: STATIC e DYNAMIC.

E além disso podem existir outros domsets específicos de uma factory que foram criados para uma necessidade específica da aplicação (Ex.: scoreboard no objeto cr).

 

Para consultar todos os domset's disponíveis em um objeto, utilize o comando

bop_sinfo -l nomeDoObjeto

 

Por via de regra, domset's restritos (RLIST) possuem cláusula "where" embutida em seu funcionamento. E por conta disso geram um subconjunto de registros de um domset MLIST. Vou destacar dois domset's da factory "imp":

 

MLIST_STATIC

List Cols: delete_flag

Sort Cols: sym, enum

 

RLIST_STATIC

Where : delete_flag = 0

List Cols: delete_flag

Sort Cols: sym, enum

 

A diferença desses domsets é que o RLIST só incluirá registros "ativos" na lista. Além disso, MLIST's geralmente são mais rápidos pois a SDM mantém ponteiros de colunas de objeto na memória RAM do servidor ao invés de utilizar um índice de banco. Isso é bom e mau ao mesmo tempo mas não vou me alongar por aqui.

 

Mas qual a diferença entre domset STATIC e DYNAMIC?

Objetos de lista utilizando domsets estáticos quando criados NÃO sofrerão mudança de conteúdo mesmo quando durante o processo, algum registro for incluído, alterado ou excluído. Se ele fosse dinâmico, isso aconteceria e o resultado da busca se modificaria.

 

E pra finalizar, uma dica interessante:

Muitos implementadores costumam criar um arquivo .MOD de determinado objeto declarando um STANDARD_LIST como no exemplo abaixo:

 

MODIFY FACTORY in {

STANDARD_LISTS {

SORT_BY "open_date DESC,priority DESC";

};

};

 

Isso faz com que a SDM "substitua" todos os domsets MLIST e RLIST preexistentes no objetos e os resultados, por vezes, afetam diretamente a performance do produto. Ao invés disso, prefira customizar o formulário "list_***.htmpl" alterando a PDM_MACRO "lsend" ou manipulando a variável de servidor $sort. É muito mais prático além de permitir diferentes configurações de ordenação de registro de acordo com a função (role) do usuário.

 

Até a próxima.

 

 

Publicado Originalmente: 13 de outubro de 2015 às 16:06

Em: CA SDM Brasil - facebook

Por: daniel-bighelini

Outcomes