Uma das novidades do WSO2 Data Services Server 2.5.x, já listada anteriormente, é que agora poderemos trabalhar com Array Types. Essa opção não existia anteriormente e as únicas maneiras que tínhamos para contornar, digamos que não eram muito legais. Por exemplo: invocar várias vezes o método ou concatenar as várias entradas em um campo string e posteriormente (em uma procedure ou algo do gênero) realizar o parser.
Ambas tem seus problemas, muitas requisições invocando várias vezes ou dificuldade de implementação (dependendo do banco de dados) para o caso de realizar o parser na procedure; mas, de uma forma ou outra, resolviam o problema. Só que com a implementação de Array Type resolvemos esse problema de maneira simples, eficiente e elegante!
Colocando a mão na massa
Digamos que temos um serviço onde nosso cliente quer listar vários produtos, nosso cliente tem todos os códigos dos produtos e quer o restante dos dados. Antigamente passaríamos para ele um método productById que recebe um id, algo como abaixo:
Mas agora tudo foi facilitado, vamos a “mágica”! Para alteração do método que aceite a entrada de um Array Type, serão necessários apenas dois passos.
Passo 1: editando a query
Teremos que trocar a query que antigamente aceitava apenas um parâmetro como entrada “id = :id” e colocaremos uma que aceita “N” parâmetros “id in (:id)”. Então na tela de edição da query do WSO2 Data Services Server, basta trocarmos, como fiz abaixo:
Passo 2: editando o tipo da entrada
E o segundo passo, editando os Input Mappings, basta trocarmos o tipo scalar para array, novamente, como fiz abaixo:
O resultado
E agora vamos a parte legal: o resultado!
Conclusão
Essa implementação facilitou muito e melhorou a qualidade de nossos serviços. Ainda não foi lançada a versão final, apenas algumas releases candidates, que podem ser acompanhadas pelo repositório de builders do WSO2 Carbon 3.0.0.
Deixo aqui o download dos arquivos utilizados para implementar o Array Type nesse exemplo, contém os arquivos abaixo:
- Data Service antes da implementação do Array Type
- Data Service depois da implementação do Array Type
- Script de criação do banco de dados utilizado (MySQL)







