Agendamento De Tarefas Na WSO2 Enterprise Service Bus →

| Comments

Em alguns casos vemos a necessidade de agendar algumas tarefas para a execução de algum script ou rotina, no projeto que estou trabalhando atualmente surgiu a necessidade de monitorar um WS a cada 5 segundos. Pensei em criar uma tarefa no crontab, mas com isso seria complicado eu ter um controle mais detalhado sobre a execução da mesma, então me lembrei que na WSO2 Enterprise Service Bus existe uma funcionalidade que provê exatamente essa funcionalidade.

Nesse caso, especificamente, eu teria que controlar através de log as informações de execução, criei um log no meu programa e pude utilizar os gráficos e relatórios da própria ferramenta.

Vamos exemplificar na prática esse uso

As configurações abaixo foram feitas utilizando a versão 4.5.0 da WSO2 ESB.

Criando a aplicação a ser executada

Utilizando o jar synapse-core.1.1.jar digitacomo dependência da aplicação, a seguir temos uma classe que exemplifica como ficarão nossos métodos, o método execute_ será invocado de tempo em tempo na execução da tarefa, podemos programar o que quisermos ali, tanto a execução de um processo, uma atualização de base, uma chamada de um webservices e etc.

Iremos gerar o arquivo .jar dessa aplicação e o colocaremos dentro de [ESB - Home]/repository/components/lib

Criando o agendamento

Primeiramente vamos selecionar a opção “Scheduled Tasks”, na sequência “Add Task”.

Iremos visualizar a tela onde cadastraremos nosso agendamento:

Nessa tela devemos preencher as opções obrigatórias, na opção “Task Implementation” iremos colocar o endereço da classe que iremos chamar, a mesma do arquivo .jar que colocamos no diretório da ESB anteriormente.

E após apontar o endereço da classe clicaremos em “Load Task Properties”, caso ocorra algum erro do endereçamento, será nos avisado pela aplicação.

Podemos adicionar mais propriedades para o nosso agendamento (de acordo com a classe implementada), após isso iremos configurar a “trigger” do agendamento, podemos utilizar o padrão crontab ou um padrão mais simples, nesse exemplo iremos cadastrar a opção de agendamento mais simples.

Na opção “Count” iremos dizer ao agendamento quantas vezes essa tarefa será executada, caso essa tarefa rode sempre podemos colocar o valor “-1”.

Na opção “Interval” iremos colocar o período de cada execução dessa tarefa, o padrão do valor está em segundos. Então, após isso podemos clicar em “Schedule” e finalizarmos o agendamento.

É sempre interessante acompanharmos o log da aplicação para termos certeza que o agendamento funcionou perfeitamente.

WSO2Con 2013 →

| Comments

WSO2Con Auditório

O pessoal que acompanha o @WSO2Brasil está sabendo que fomos convidados para a WSO2Con em Londres, que aconteceu do dia 12 ao dia 14 de fevereiro.

O local estava muito bem decorado e com tudo perfeitamente bem preparado! Foi engraçado que tínhamos “link” direto com o pessoal em Colombo (Sri Lanka) e podíamos ficar assistindo-os pelo telão.

WSO2Con Pessoal em Colombo

Foram três dias de muito conteúdo e informação da mais alta qualidade, sendo eles divididos em:

  • Primeiro dia: dedicado totalmente a tutorias que cobriram da teoria a prática; e
  • Segundo e terceiro dia: foram a convenção propriamente dita.

Foi uma pena eu não conseguir assistir a todas as palestras ao vivo, mas pela qualidade das palestras que consegui assistir, somado aos comentários do pessoal no twitter, pude perceber que todas as palestras foram de alta qualidade. Agora basta esperar sair os vídeos para que possamos assistir a todas as palestras.

No decorrer dos próximos dias irei publicar o material sobre as palestras que assisti. Mas vou adiantando aqui mesmo algumas novidades pra vocês irem acompanhando até eu poder detalhar com calma.

WSO2 API Manager

Todo o suporte para publicação de aplicações: controle de versão, controle de fluxo do desenvolvimento, banco de dados, publicação nos diversos ambientes entre outras coisas num único lugar!

O alpha está disponível! Caso alguém teste com mais calma, compartilhem aí as informações, ainda não pude ver com muita calma, mas adianto que no demo não deu nenhum problema (o que é um milagre em palestras) e os meus testes totalmente express nos intervalos das palestras, tudo funcionou perfeitamente!

WSO2 API Manager

WSO2 Doc Star: Melhorias na documentação

WSO2 Doc Star

É um ponto que todos sofremos e temos tentado ajudar, mas agora a coisa vai!

Raspberry PI…

Cluster de Raspberry PI

Todos os participantes ganharam um Raspberry PI, inclusive nós!

O pessoal montou todo cluster com raspberry para rodar a aplicação mobile… E teve palestras detalhando isso, então aguardem…

Mas caso você seja muito curioso, tem aqui dois posts em inglês com detalhamento Building a Raspberry Pi Cluster Part 1 e Part 2.

WSO2Con Organização

Meus parabéns ao pessoal organizador da WSO2Con e até depois! Desculpem-me pela qualidade das fotos, mas na correria fui apenas com o celular. ):

Treinamento: Celepar

| Comments

Aplicamos um pequeno treinamento/apresentação nos dias 07 e 08/11 na Celepar, Companhia de Informática do Paraná, os temas abordados foram os usos das ferramentas WSO2 Data Service, WSO2 Application Server e WSO2 Enterprise Service Bus.

Falamos sobre como funciona o tal do ”SOA”, passamos num geral sobre as funcionabilidades das ferramentas e, por fim, simulamos um pequeno case utilizando as ferramentas citadas anteriormente.

Estiveram presentes membros de diversas equipes da empresa: infra-estrutura, desenvolvedores, responsáveis por novas tecnologias e algumas outras áreas mais específicas. Elas serão usadas como “cobaias” para a implementação dos primeiros cases da empresa.

Um muito obrigado a todos os envolvidos.

WSO2: SOA Workshop Em São Paulo

| Comments

Junior, Chintana, Amani, Nuwan e Leonardo

No último fim de semana estivemos participando do Open PaaS Workshop: Understanding the Stratos Cloud Platform em São Paulo.

O workshop foi uma ótima oportunidade para conhecermos outras pessoas que utilizam a plataforma. E, também, saber que um pessoal do WSO2 veio ao Brasil realizar um quickstart em duas empresas, uma de Uberlândia e outra de São Paulo. Esses dois cases, são os primeiros cases privados que ficamos sabendo, publicamente. Estamos atrás de maiores detalhes sobre os projetos para escrevermos sobre eles.

Isso mostra que o WSO2 está em crescimento no Brasil. E o que só ajuda a confirmar esse crescimento, é a participação da concorrência no workshop e também outras empresas interessadas em utilizar o WSO2.

O workshop foi aberto pelo Diogenes Justo (Banco Indusval) que deu uma introdução, falou um pouco do projeto, as opções estudadas e como chegou até o WSO2. Foi mais um bate-papo com a galera, passando uma visão muito interessante sobre o projeto deles. Conversamos com ele para que nos passasse mais detalhes sobre o projeto e a experiência de trabalhar com a plataforma, logo teremos boas novidades e mais conteúdo para vocês, vindo de outra fonte!

Também tivemos o Chintana Wilamuna e o Nuwan Bandara falando sobre a plataforma em nuvem do WSO2 (Stratos Live) e tirando várias dúvidas do pessoal! Todos estavam bastante curiosos e questionadores. As dúvidas foram bastante diversificadas, não apenas sobre cloud. O que gerou uma conversa legal e uma ótima troca de experiências.

Fechando as palestras por parte do pessoal do WSO2, veio a Amani Soysa, que falou e mostrou um pouco do poderio do WSO2 Data Services Server. O que é uma “sacanagem”, uma das ferramentas mais úteis e práticas. Não sou o cara mais imparcial pra falar da palestra da Amani, pois sou um amante declarado dessa do WSO2 DSS, então passo a bola.

E, para fechar o evento, falei um pouco sobre nossa implantação aqui no ICI. Tracei o perfil da equipe que participou do projeto, das opções e escolhas que fizemos, um pouco das vantagens e, também, dos problemas enfrentados em uma implantação sem suporte algum, em uma realidade menos ‘enterprise’. E, claro, falei um pouco da comunidade WSO2 Brasil para que a galera se anime a estudar, ajudar e contribuir.

A minha parte da palestra foi gravada, assim que eu conseguir a gravação, compartilharei por aqui. Por enquanto segue a minha apresentação, abaixo:

Resumindo, o evento foi muito bom! E para fechar com chave de ouro, recebemos um convite para acompanhar o quickstart do pessoal do WSO2 (pequenos workshops e instalação de alguns produtos) no Banco Indusval de São Paulo. Um dos motivos da demora para escrevermos sobre.

WSO2 Data Services Server E Suas Atualizações

| Comments

Se tem uma tarefa que toma muito tempo nosso, são os testes quando sai versão nova de algum produto do WSO2.

Estamos trabalhando na migração do WSO2 Data Services Server 2.5.1 para a 2.6.0 e isso gera uma árdua tarefa de testar todos os serviços que temos rodando, que rodam com diferentes banco de dados (MySQL, PostgreSQL, SQL Server, Oracle).

Na maioria das vezes não encontramos problema algum ou apenas uma pequena mudança de atributo ou tag na definição dos .dbs. Mas as vezes encontramos problemas que fogem da simples configuração do data service, e como aconteceu agora conosco: um bug.

Para tentar minimizar esse trabalho gerei um projeto que tem a ideia de automatizar ao máximo esse tipo de trabalho! E, para com isso, irmos além dos testes unitários que são realizados pelo pessoal do desenvolvimento do WSO2, testar as interfaces em real funcionamento, nos mais variados bancos de dados.

E assim nasceu o pequeno projeto wso2-ds-tests. Que é um apanhando de data services, sql’s e projeto do SOAPUI. Para maiores informações basta acessar o projeto no Github!

Deem uma olhadela por lá e qualquer contribuição é muito bem vinda, basta fazer um fork e mandar um pull request.

Novidades WSO2 Data Services Server (2.6.x)

| Comments

WSO2 - Data Services Server 2.6.0 - Home

Tenho acompanhado os builds diários que o pessoal do WSO2 tem feito e logo percebi várias novidades na interface, alteração essa que acontecerá em todos or produtos da série Carbon 3.2.*.

Mas, hoje eu tratarei apenas das novidades que teremos no Data Services Server, que são muitas e algumas bem importantes e há muito esperadas!

UDT (User Defined Type) Support

Não encontrei maiores detalhes na documentação ou no próprio WSO2 Data Services Server, talvez não tenha saído ainda nessa release.

Complex Results

WSO2 Data Services Server 2.6.0 - Complex Elements - List WSO2 Data Services Server 2.6.0 - Complex Elements - Insert nested

Agora fica possível criar elementos complexos, facilitando algumas coisas em que era necessário utilizar um transformation (XSLT) ou sub-queries, ganhando - e muito - em performance.

Auto Generated Keys Support

WSO2 Data Services Server 2.6.0 - Generate keys WSO2 Data Services Server 2.6.0 - Generate keys: Invoke

Muito útil para recuperar a primary key de um registro inserido no banco, tirando a necessidade de fazer stored procedures ou outro método de consumo apenas para recuperar a chave inserida.

Distributed Transactions

WSO2 Data Services Server 2.6.0 - Distribute Transactions

Uma maneira de realizar transações distribuídas (na maioria das vezes em databases separados), será usado JTA para controlar as transações e também é necessário que usará XA. Com isso ganhamos em não mais precisarmos controlar isso manualmente com um serviço no WSO2 Application Server.

Improved Boxcarring Support

Apenas melhorias no suporte que já existia desde a versão 2.5.0, não encontrei nenhuma alteração visual ou no processo de desenvolvimento.

Improved Batch Request Support

Apenas melhorias no suporte que já existia desde a versão 2.5.0, não encontrei nenhuma alteração visual ou no processo de desenvolvimento.

Scheduled Tasks

WSO2 Data Services Server 2.6.0 - Scheduled Tasks WSO2 Data Services Server 2.6.0 - Scheduled Tasks: Insert

Agora, ao invés de fazermos shell scripts que ficam na crontab do servidor para agendar alguns consumos, podemos fazer isso diretamente no WSO2 Data Services Server.

Registry Integration for Excel, CSV, XSLT

Não encontrei maiores detalhes na documentação ou no próprio WSO2 Data Services Server, talvez não tenha saído ainda nessa release.

Web Scraping Support

WSO2 Data Services Server 2.6.0 - Web Scraping: Data Source WSO2 Data Services Server 2.6.0 - Web Scraping: Query

Poderemos consumir dados diretamente de sites, fazendo parser em conteúdo de páginas, por exemplo.

Multiple SQL Dialect Support

WSO2 Data Services Server 2.6.0 - Multiple Dialects SQL: Options WSO2 Data Services Server 2.6.0 - Multiple Dialects SQL: Add

Apesar de ter encontrado referências na wizard de criação/alteração de serviços, não encontrei nada na documentação ou entendi como funcionará, vamos aguardar outros releases.

Database to Data Service

WSO2 Data Services Server 2.6.0 - Database to Data Service Generation WSO2 Data Services Server 2.6.0 - Database to Data Service Generation: Choise Type WSO2 Data Services Server 2.6.0 - Database to Data Service Generation: Select Tables WSO2 Data Services Server 2.6.0 - Database to Data Service Generation: Try-it

Nessa versão é possível gerar automaticamente os métodos para um database e tabela específico, mas apenas para Carbon Data Sources. Apesar de não ter gostado no padrão gerado, pode ser bom para gerar o CRUD básico e ser alterado posteriormente.

Data Service Query Improvements

Imagino que tenha sido apenas melhorias nas rotinas internas de montagem e processamento de queries. Porque as opções avançadas de query já existiam na versão 2.5.*.

Service Group/Hierarchy Support

WSO2 Data Services Server 2.6.0 - Service Group: OptionWSO2 Data Services Server 2.6.0 - Service Group: List

Apenas um agrupamento de serviços, imagino que venha como padrão em todo aplicativo da suíte Carbon, pois em alguns outros aplicativos já existia essa opção.

Database Explorer

WSO2 Data Services Server 2.6.0 - Database Console: Login WSO2 Data Services Server 2.6.0 - Database Console: Simple Query

Uma novidade muito interessante e prática, eles colocaram dentro do WSO2 Data Services Server uma maneira de explorarmos as bases de dados. E a interface lembra bastante o SQuirreL SQL, ficou muito prático.

Data as a Service Features - DSS Stratos Service

Existem algumas novidades também sobre os produtos como serviço na nuvem, que chamam de Stratos, mas não encontrei documentação nesse build.

E algumas outras pequenas alterações que foram percebidas, como:

  • Generate response: baseado na query é gerada a resposta do serviço;
  • Force stored procedure: força a executar a query como uma stored procedure;
  • Entre outras inúmeras pequenas alterações que vão sendo notadas no uso dia-a-dia.

SOA Summer School 2011

| Comments

Movimentando, novamente, nossas férias de inverno (verão para os estadunidenses) tem o SOA Summer School, versão 2011. Várias palestras (online) ministradas pelo pessoal do WSO2, uma vez por semana, falando sobre vários assuntos (lista de palestras abaixo).

Disponibilizei um calendário no fuso horário GMT -3 (America/Sao_Paulo) para que não esqueçamos do evento.

Fiquem ligados e não se esqueçam de realizar a inscrição no site do SOA Summer School 2011!

Segurança De Informações Através De Filtragem De Dados No WSO2 Data Services

| Comments

Em alguns casos, podemos nos deparar com a necessidade de confidencializar alguns dados no retorno de Data Services, exibindo-os apenas para determinados grupos de usuários, tanto por questão de segurança (quando algum grupo específico não pode ter acesso a algumas informações),  quanto por não ter a necessidade de utilizar esse retorno, para que assim não precisemos criar dois serviços com a mesma finalidade. O WSO2 Data Services Server oferece a possibilidade de filtrar esses dados no retorno de uma query, através do WS-Security (tem como foco principal o uso de XML Signature e XML Encryption). Nesse caso irei exemplificar a seguinte situação: um serviço que retorna dados referente aos funcionários, sendo consumido por dois departamentos: o RH (que necessita dos dados referente aos pagamentos dos honorários) e o setor de segurança (que utiliza apenas os dados cadastrais para acesso dos funcionários as dependências da empresa).

Iremos utilizar nesse exemplo o WSO2 Data Services Server em sua versão 2.5.1 (nesse caso considerando um conhecimento básico da suíte WSO2, caso contrário consulte os posts relacionados ao WSO2):

Supondo que possuímos o banco de dados, com uma tabela simples chamada de TB_FUNCIONARIOS, com os campos: ID, NOME E SALARIO.

Etapa 1 - Criando o usuário

Logado ao WSO2 Data Services Server vá em “Home > Configure > User Management > Users”, para que possamos criar novos usuários, nesse caso criaremos os usuários “Maria” que faz parte do departamento de RH da empresa e “Joao” que faz parte da segurança do prédio. Click em “Add User” para preenchermos os dados do usuário que será cadastrado.

add user wso2

Após inserir os dados do usuário, clicar em “finish”, repetir o procedimento pro cadastro do outro usuário. Podemos listar os usuários criados como mostra a imagem.

list user wso2

Etapa 2 - Criando grupos de usuários

Com nossos usuários criados, vamos gerar um grupo para vincular ao perfil do usuário. Vá em “Home > Configure > Users and Roles > Roles”, serão listados os grupos existentes no WSO2, clique em “Add New Role” que abrirá a tela para cadastrarmos os grupos.

Crie um grupo com o nome “RecursosHumanos”, em seguida clique em “next”, aparecerá a tela com os flags de permissões e previlégios para os membros do grupo. Nesse caso vamos selecionar a opção “All permissions”, para que sejam marcadas todas as opções. Enquanto estamos criando o grupo, já podemos vincular os usuários que farão parte do mesmo, faça uma busca listando todos os usuários e selecione o usuário “Maria” criado anteriormente, como na imagem abaixo e finalize.

select user wso2

Agora usando o mesmo processo vamos criar o grupo “Seguranca”. Observe que quando selecionamos algum usuário criado e vinculado ao grupo, o mesmo possui um ou vários grupos selecionados.

roles of users wso2

Etapa 3 - Filtrando dados da consulta

Com os usuários e grupos devidamente criados vamos finalmente ao que interessa, filtrar os dados de acordo com o perfil de cada grupo. Considerando que já exista um serviço “empresa”, vamos criar o método “pesquisarFuncionario” para demonstrar como filtrar os dados de retorno do método. Nesse caso, o método nos retornará os campos “ID” e “NOME” para o grupo Segurança, e “ID”, “NOME” e “SALARIO” para o grupo RecursosHumanos.

Iremos em “Home > Manage > Services > List > Service Dashboard > Service Details > Data Sources > Queries”,  para inserirmos nosso novo método. Preenchemos com o SQL, o campo de entrada, e na hora em que formos preencher o retorno será onde a “mágica” acontecerá.

edit query wso2

No item “Add new output Mapping” abriremos a tela para cadastrar um novo campo de retorno, preenchemos o tipo do campo, o nome de saída e o nome do campo no SQL. Abaixo dessas opções temos o item “Allowed User Roles”, aonde aparecerão os grupos que criamos anteriormente, para os campos “ID E NOME” selecionaremos ambos os grupos, no caso do campo “SALARIO” selecionaremos apenas o grupo RecursosHumanos, com o método criado mostraremos como consumir esse método filtrando os dados.

add edit output mapping wso2

Etapa 4 - Testando a filtragem de dados

Agora vamos abrir a opção ” Home > Manage > Services > List > Service Dashboard > Security for the service > Activate Security > Service Dashboard > Security for the service”, selecionamos a opção “yes” no combo e setamos o flag “UsernameToken”, assim estaremos habilitando segurança por grupo e usuário do cliente.

security for the service wso2

Simulando a execução do serviço, no próprio WSO2 Data Services Server, podemos perceber que aparecem as opções “username” e “password”. O retorno será filtrado de acordo com o usuário que for preenchido nesses campos. Executando a consulta, notaremos que o campo “SALARIO” só aparece no retorno se utilizarmos o usuário “Maria”.

full return service wso2

parcial return service wso2

Espero ter colaborado, sugestões e criticas são sempre bem vindas, focando o objetivo de transformar a comunidade WSO2 Brasil cada vez mais forte, até o próximo post.

Post baseado no artigo ”content filtering data services user roles” de Anjana Fernando - Software Engineer WSO2.

Pode ser visto um exemplo de consumo um servico seguro utilizando php.

Lançamento Do WSO2 Complex Event Processing Server 1.0.0 (Alpha)

| Comments

Foi lançado ontem na lista de desenvolvedores do WSO2 (carbon-dev@wso2.org) o WSO2 Complex Event Processing Server, em sua versão 1.0.0 (alpha), faz com que tenhamos processamento de eventos complexos em nosso ambiente SOA.

Alguns dos recursos que podemos encontrar no WSO2 CEP:

  • Plugable back end rutime support - WSO2 CEP supports following back end run time engines.
  • Support Multiple Broker Types - WSO2 CEP supports WS-Event and JMS-Qpid broker types;
  • GUI Support -  WSO2 CEP supports create,edit,delete operations on Buckets, Inputs and Queries;
  • Use Registry resources - WSO2 CEP supports using resources stored in registry (Queries) to create buckets;
  • Persistence   - WSO2 CEP supports persisting created buckets in the registry;
  • I18n Support for CEP - WSO2 CEP supports internationalization.

O povo do WSO2 nos convida para baixar o WSO2 CEP, instalar, testar e reportar bugs (utilizando o Jira do WSO2) - caso encontremos!