TMACUL

LINGUAGEM SPEL (Consultando objetos)  09/10/2015

Blog Post created by TMACUL Champion on Jan 1, 2016

Existem várias formas de consultar atributos de objetos via SPEL. De acordo com a necessidade e cenário devemos optar por um ou outro método. Alguns métodos são mais confiáveis e até mesmo mais performáticos que outros. A melhor forma de comparar é testá-los intensamente com grandes consultas à base.

Abaixo um código de exemplo que demonstra o funcionamento de cada um desses métodos:

 

// Definindo o persistent_id do objeto que será consultado

// Tentaremos consultar atributos do contato no objeto cnt

// fornecendo apenas apenas a chave persistent_id do contato.

string zs_persid, zs_name;

zs_persid = 'cnt:ED4D469F18BC4943B940AB934D020C6D';

 

// 'expand'

// Consulta apenas UM atributo sem tratamento de erro e sem instanciar o objeto

zs_name = expand(format("&{%s = cnt.persistent_id->last_name}", zs_persid));

 

// 'send_wait (val_by_key)'

// Consulta UM ou VÁRIOS atributos sem instanciar o objeto

send_wait(0, top_object(), "call_attr", "cnt", "val_by_key", "persistent_id", zs_persid, 3, "first_name", "middle_name", "last_name");

if (msg_error()) {

logf(ERROR, "ERRO ao consultar atributo do objeto '%s': '%s'", zs_persid, msg[0]);

return;

}

zs_name = format("%s %s %s", msg[1], msg[2], msg[3]);

 

// 'send_wait (dob_by_persid)'

// INSTANCIANDO um objeto para futura consulta com outros metodos

send_wait(0, top_object(), "call_attr", "cnt", "dob_by_persid", 0, zs_persid);

if (msg_error()) {

logf(ERROR, "ERRO ao instanciar o objeto '%s': %s", zs_persid, msg[0]);

return;

}

object zo_cnt;

zo_cnt = msg[0];

 

// Consulta DIRETA ao atributo do objeto instanciado sem tratamento de erro

zs_name = zo_cnt.last_name;

 

// 'send_wait (get_val)'

// Consulta apenas UM atributo do objeto instanciado

send_wait(0, zo_cnt, "call_attr", "last_name", "get_val");

if (msg_error()) {

logf(ERROR, "ERRO ao consultar atributo no objeto '%s': %s", zs_persid, msg[0]);

return;

}

zs_name = msg[0];

 

// 'send_wait (get_attr_vals)'

// Consulta UM ou VÁRIOS atributos do objeto instanciado

send_wait(0, zo_cnt, "get_attr_vals", 3, "first_name", "middle_name", "last_name");

if (msg_error()) {

logf(ERROR, "ERRO ao consultar atributos no objeto '%s': %s", zs_persid, msg[0]);

return;

}

zs_name = format("%s %s %s", msg[3], msg[6], msg[9]);

 

// EXIBINDO o nome do usuario

logf(SIGNIFICANT, "Nome do usuario: '%s'", zs_name);

 

Até a próxima.

 

 

Publicado Originalmente: 09 de outubro de 2015 às 11:24

Em: CA SDM Brasil - facebook

Por: daniel-bighelini

Outcomes