Utilizando o Array Type do WSO2 Data Services Server 2.5.x
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)
Novidades nos lançamentos (nov/2009) da plataforma WSO2
Como avisei aqui e no twitter semana passada, o pessoal do WSO2 lançou algumas atualizações nos projetos da plataforma WSO2 Carbon. Mas somente agora, com o lançamento oficial, é que podemos descobrir o que foi atualizado.
Segue um resumão (baseado nas notas de lançamento) com o que foi atualizado em cada um dos projetos.
WSO2 Web Services Application Server (v3.1.2)
- Correções em vários softwares que fazem parte dele: Apache Axis2, Apache Rampart, Apache Sandesha2, WSO2 Carbon e alguns outros projetos;
- Correção da limpeza de memória após reiniciar o servidor.
Versão original (inglês): aqui.
WSO2 Enterprise Service Bus (v2.1.2)
- Diversas melhorias e correções desde a versão 2.1.0 lançada em julho de 2009.
Versão original (inglês): aqui.
WSO2 Governance Registry (v3.0.2)
- Melhoria no suporte a transação;
- Suporte ao WebSphere, WebLogic e JBoss;
- Baseado na suíte WSO2 Carbon;
- Suporte a clusterização;
- Correção de vários bugs.
Versão original (inglês): aqui.
WSO2 Business Process Server (v1.1.0)
- Nova camada de integração WSO2 Carbon para o Apache ODE;
- Utilizando Apache ODE 2.0-beta (baseado no trunk) como engine BPEL;
- Suporte experimental para clusterização;
- Suporte para consumo de serviços seguros (usando WS-Security);
- Utilizando OpenJPA para camada de acesso a dados ODE;
- Recuperação de atividades utilizando o management console;
- Atualização online (hot update) do pacote BPEL facilitam o versionamento;
- Suporte a manipulação de dados utilizando E4X nos processos BPEL.
Aqui deixo um adendo, baseado em alguns testes superficiais que fiz, posso dizer que não é indicado colocar essa versão em produção. Como disseram nas notas de lançamento, muita coisa está incompleta ainda e achei alguns probleminhas. Mas é interessante tentarmos colocar os processos BPEL e realizar testes para reportarmos os problemas e ajudarmos na correção dos mesmos para a versão 1.1.1 (que espero que chegue logo).
Isso é até compreensível, já que se trata de uma nova versão e não apenas correções de bugs como as outras. (:
Versão original com cada item comentado (inglês): aqui.
WSO2 Identity Server (v2.0.2)
- Correções em vários softwares que fazem parte dele: Apache Axis2, Apache Rampart, Apache Sandesha2, WSO2 Carbon e alguns outros projetos.
Versão original (inglês): aqui.
WSO2 Mashup Server (v2.0.1)
- Interface visual para gerenciar as tarefas agendadas;
- Baseado no WSO2 Carbon SOA Framework que irá facilitar habilitação de funções a um clique, como o gerenciamento de Data Services nas futuras versões do Mashup Server.
Versão original (inglês): aqui.
WSO2 e a quinta-feira agitada: muitos lançamentos
Uma passeadinha básica no site do WSO2 para ver o movimento do fórum e quase caio para trás quando vejo a quantidade de produtos que eles atualizaram de ontem pra hoje.
Não sei se estou sendo apressado, mas o lançamento nem está na página inicial ainda, apenas nas páginas dos projetos... Mas vamos divulgando não é? Então os projetos atualizados são:
- WSO2 Web Services Application Server v3.1.2;
- WSO2 Business Process Server v1.1.0 (finalmente!);
- WSO2 Enterprise Service Bus v2.1.2;
- WSO2 Governance Registry v3.0.2;
- WSO2 Identity Server v2.0.2;
- WSO2 Mashup Server v2.0.1.
Mas ainda sinto falta das atualizações do WSO2 Data Services, que está largado na 2.0 e com alguns bugzinhos chatos que até já arrumamos e mandamos o patch, mas ainda assim...
E pensar que passei dois dias testando as alterações das últimas versões e hoje tem novas. Não consegui nem documentar as antigas... Só me resta testar novamente e homologar as novas versões.







