Para realizar filtros em Fontes de dados provenientes de Web Services, é necessário que o serviço suporte essa funcionalidade de forma nativa. No entanto, mesmo que o Web Service não ofereça filtros de forma nativa, é possível implementá-los de maneira manual, usando blocos de programação. A seguir, apresentamos um exemplo prático, utilizando a API do IBGE (Instituto Brasileiro de Geografia e Estatística), onde selecionamos dinamicamente o município correspondente a cada estado em uma caixa de seleção.

Exemplo de uso de filtros

Neste exemplo, utilizaremos duas Fontes de dados do tipo Web Services para representar estados e municípios, com a implementação de quatro funções voltadas para o gerenciamento dessas informações. Com o objetivo de otimizar a performance, foi adotado um sistema de cache nas funções, garantindo respostas mais rápidas ao armazenar os resultados de consultas anteriores.

Para ambos os blocos, Estados e Municípios, criamos as funções "ObterComCache", responsáveis por buscar e armazenar os dados em cache, acelerando futuras requisições, e a função "Listar", utilizada para exibir as listas de estados ou municípios, possibilitando a aplicação de filtros sobre os dados armazenados.

A seguir, explicaremos como configurar as funções relacionadas aos Estados e Municípios, bem como as respectivas Fontes de dados.

Configuração dos Blocos de programação

Função para armazenar os dados dos Estados em cache

Primeiramente, verifica se a lista de estados já está armazenada na sessão com a chave "LISTA_ESTADOS". Se a lista for encontrada, ela é imediatamente retornada. Caso contrário, a função realiza uma requisição GET para a API do IBGE e converte a resposta JSON em uma lista. Para cada item dessa lista, é criado um mapa contendo o "id" e o "nome" do estado, que então é armazenado no cache. A lista final de estados é, por fim, salva na sessão com a chave "LISTA_ESTADOS" e retornada para uso posterior.


Figura 1 -  Função ObterComCache para os Estados

Função para listar os Estados

A função Listar (figura 1.1) tem como objetivo listar os estados brasileiros, aplicando um filtro pelo nome, se fornecido. Ela recebe um parâmetro chamado filtro, que é utilizado para filtrar os estados com base em seu nome. Primeiramente, a função chama ObterComCache para obter a lista de estados, que pode estar armazenada em cache. Em seguida, uma nova lista vazia, chamada lista, é criada. A função então itera sobre os estados obtidos (armazenados na variável cache) e, se o filtro estiver vazio ou se o nome do estado começar com o texto do filtro (ignorando maiúsculas e minúsculas), o estado é adicionado à lista. Por fim, a função retorna a lista filtrada ou, caso o filtro não tenha sido informado, retorna a lista completa de estados.


Figura 1.1 -  Função para listar os Estados

Função para armazenar os dados dos Municípios em cache

A função ObterComCache (figura 1.2) tem como objetivo buscar a lista de municípios de um estado, utilizando o cache para melhorar a performance. O parâmetro "idEstado" especifica o estado cujos municípios serão buscados. Inicialmente, a função define a chave do cache como "LISTA_MUNICIPIOS" e, caso o "idEstado" seja fornecido, ajusta essa chave para incluir o identificador do estado.

Em seguida, a URL da API do IBGE é configurada, e, se houver um "idEstado", a URL é modificada para buscar os municípios do estado específico. A função verifica se a lista de municípios já está armazenada no cache da sessão, acessada pela chave configurada. Se os dados não estiverem no cache, a função faz uma requisição GET à API do IBGE, obtém os dados em formato JSON e os converte em uma lista. Depois, itera sobre os dados, criando um mapa para cada município com os campos "id" e "nome", e os armazena na lista de cache. Finalmente, a lista de municípios é armazenada na sessão e retornada.


Figura 2 - Função  ObterComCache para os Municípios

Função para listar os Municípios

A função Listar (figura 2.1) tem como objetivo listar os municípios de um determinado estado, aplicando um filtro opcional pelo nome. O parâmetro filtro é utilizado para filtrar os municípios com base no nome, enquanto o "idEstado" especifica o estado cujos municípios serão listados. A função começa chamando ObterComCache para obter a lista de municípios, que pode já estar armazenada em cache ou ser baixada da API do IBGE.

Em seguida, uma lista vazia é criada, e a função itera sobre os municípios armazenados na variável "cache". Se o filtro estiver vazio ou se o nome do município começar com o texto do filtro (ignorando maiúsculas e minúsculas), o município é adicionado à lista. No final, a função retorna a lista filtrada ou, caso o filtro não tenha sido informado, a lista completa de municípios é exibida.


Figura 2.1 -  Função par listar os Municípios

Configuração das Fontes de dados

Agora vamos configurar as Fontes de dados para Estados e Municípios. Primeiro, acesse o menu do sistema (destaque 1 na figura 3) e, em seguida, selecione a opção "Fonte de dados" (2). Clique em "Bloco de Programação" (3) e, por fim, escolha a opção "Nova fonte de dados" (4).


Figura 3 -  Criando a Fonte de dados


O processo de criação das Fontes de dados para Estados e Municípios é semelhante, com a única diferença sendo o uso do parâmetro "idEstado" (destaque 1 da figura 3.2) na fonte de dados dos Municípios. Para configurar, altere o identificador (destaque 1 da figura 3.1) para "estados" ou "municipios", conforme o caso. O nome da consulta (2) também deve corresponder ao nome do identificador escolhido.

Em seguida, selecione o tipo da fonte de dados como "Bloco de Programação" (3) e selecione a função "Listar" (4) tanto para Estados quanto para Municípios. O parâmetro "filtro" (5) deve ser configurado como "simpleFilter", que é aplicado para filtrar os dados e retornar apenas os itens que correspondem aos critérios definidos. No caso dos Municípios, isso garantirá que sejam exibidos apenas os municípios correspondentes a cada Estado.


Figura 3.1 -  Aba Filtro da Fonte de dados "Estados"


Figura 3.2 -  Aba Filtro da Fonte de dados "Municipios"


Na aba Campos (destaque 1 da figura 3.3), insira os valores "nome" e "id" (2), e clique no botão "Adicionar" (3).


Figura 3.3 - Aba Campos da Fonte de dados "Estados"

Configuração da view

Para concluir nosso exemplo, inserimos dois componentes Caixa de seleção dinâmica na view "home", responsáveis por exibir os dados dos estados e seus respectivos municípios. No campo "Campo Texto" (destaque 1 da figura 4), inserimos o valor "nome", que será exibido como o rótulo visível para o usuário. No campo "Campo Chave" (destaque 2), inserimos o valor "id", que representará o identificador único de cada item selecionado.


Figura 4 -  Configurando os componentes Caixa de seleção dinâmica


Na Fonte de dados "Municipio" (destaque 1 da figura 4.1), acesse a propriedade Filtros e Parâmetros (2) e insira o valor "Estados.active.id" (3) no parâmetro "idEstado", isso fará com que os municípios sejam exibidos para o estado atual presente na caixa de seleção "Estados". Por fim, finalize a configuração (4).


Figura 4.1 - Configurando a propriedade Filtros e Parâmetros da caixa de seleção dos Municípios


Ao executar o projeto, selecionamos a opção "Bahia" na caixa de seleção correspondente aos Estados. Na caixa de seleção destinada aos Municípios, aplicamos um filtro para exibir apenas as opções que começam com o prefixo "sa", conforme ilustrado na figura 4.2.


Figura 4.2 - Listagem dos municípios referentes ao estado da Bahia

Nesta página

  • Sem rótulos