4
Jul

Oracle AIA

Como poucos já sabem e muitos não, estou participando parcialmente de um novo projeto desde o início da semana passada. Nesse projeto, além SOA estamos trabalhando com um 'novo' produto da Oracle, o AIA (Application Integration Architecture).

O AIA é a materialização de uma arquitetura comercializado na forma de um produto. A idéia é muito interessante. Nesse projeto estamos utilizando o Foundation Pack que é, como o nome diz, a fundação do produto. Esse módulo, se é que podemos chamar assim, vem com uma série de objetos que representam entidades de negócio, o que é chamado de EBO (Enterprise Business Object) dentro do AIA, o que chamávamos de Modelo Canônico antigamente. A parte boa é que o modelo do AIA já vem com uma série de objetos modelados e materializados em XSDs, seguindo padrões de mercado. Além disso, temos o conceito de serviços de negócio para os quais o AIA também já apresenta uma série deles modelados, o que é chamado de EBS (Enterprise Business Service) pelo framework. Detalhe: esses componentes são extensíveis.

O AIA apresenta uma série de conceitos e definições arquiteturais muito interessantes, como por exemplo os conectores, chamados de ABCS (Application Business Connector Service). Enfim, o Foundation Pack do AIA é quase que uma arquitetura de prateleira.

Além dos Foundation Packs, o AIA possui também uma série de processos de integração já construídos, chamados de PIPs (Pré Integrated Process), que já integram um ou mais produtos e implementam processos de negócio como Order To Cash, por exemplo, entre vários outros.

Bom, é isso. O AIA é um produto relativamente novo que traz uma ótima idéia. Recomendo uma maior avaliação do produto clicando aqui pois existem ainda vários outros pontos que não coloquei aqui.

Daniel


free b2evolution skin
26
May

Meu primeiro post: javax.time

Esse é meu primeiro post no blog, que estou inaugurando hoje, 27/05/2009. Espero poder compartilhar o que venho fazendo de interessante e ter tempo suficiente para escrever.

Vou falar aqui sobre o artigo que publiquei na JavaMagazine, edição 69, que deve estar chegando na casa dos assinantes e deve estar nas bancas em breve. O artigo aborda a nova API para representar datas e horas na plataforma Java. Essa nova API está sendo concebida através da JSR 310 e você pode participar do desenvolvimento acessando http://jsr-310.dev.java.net.

Tive o prazer de ter ao meu lado, como co-autor, um dos spec-leads da JSR 310, Michael Nascimento Santos. Clique aqui para acessar seu blog.

O artigo aborda tanto a arquitetura da nova API quanto seu propósito, além de ilustrar a maioria das classes e interfaces disponíveis.

Um dos principais pontos fortes da API é que ela possui como um de seus principais propósitos corrigir uma série de problemas presentes hoje nas classes java.util.Date e java.util.Calendar. Um exemplo disso é o fato da nova API possuir em todas as suas classes a capacidade de suportar múltiplas threads concorrentemente, o que não é suportado pelas opções atuais.

Além disso, a nova API poupa você, desenvolvedor, de uma série de tarefas repetitivas, trabalhosas e propensas a erros na codificação envolvendo datas, horas, períodos e durações. A seguir vemos um trecho onde verificamos se determinado ano é bissexto ou não:

LocalDate hoje = Clock.systemDefaultZone().today();
Year ano = hoje.toYear();
boolean bissexto = ano.isLeap();

Para verificar se um ano é bissexto utilizando java.util.Date você precisaria fazer uma série da cálculos manualmente, pois ao contrário do que se pensa, não basta verificar se o ano é divisível por 4. Já utilizando java.util.GregorianCalendar, temos o método isLeapYear. Estranhamente esse método requer que o ano seja informado como parâmetro ao invés de obter o ano da instância de GregorianCalendar na qual o método executa. Mesmo assim ele não é marcado como static. Ou seja, é bem estranho e pouco intuitivo.

Para calcular a idade de uma pessoa, é outro pesadelo. Aqui vemos como fazer isso utilizando Calendar. Abaixo vemos como é muito mais intuitivo fazer isso utilizando a nova API, onde além da idade em anos, é obtida a diferença completa: P29Y-6M3D.

(assuma que estamos utilizando static imports)

Period nascimento = yearsMonthsDays(1980, 11, 25);
Period hoje = yearsMonthsDays(2009, 5, 28);

System.out.println(hoje.minus(nascimento));

No futuro, poderemos fazer isso de forma ainda mais simples, utilizando a classe Years, algo como Years.between(data1, data2).

Além disso tudo a API cobre uma série de outros pontos interessantes como, por exemplo, as questões de horário de verão. Para conferir isso, recomendo você comprar a revista!


free b2evolution skin