O Oracle Application Development Framework conhecido como ADF, é um framework de aplicação que se baseia na plataforma Java, padrões Enterprise Edition (Java EE) e tecnologias open-source.

O Oracle ADF fornece um ambiente que abrange o ciclo de desenvolvimento completo desde a concepção à implantação, contendo alguns recursos interessantes como: drag and drop (arrastar e soltar), criação de ligação de dados (bindings), design de interface visual (UI – User Interface), e outros recursos de desenvolvimento.

Arquitetura ADF

Os aplicativos que fazem compilação usando a tecnologia Fusion Web alcançam uma clara separação da lógica de negócios, navegação de página, e interface de usuário, aderindo a uma arquitetura de modelo, visão e controlador o conhecido MVC.

  • Model layer - representa os valores de dados relacionados com a página atual;
  • View layer - contém as páginas da interface do usuário usado para exibir ou modificar os dados;
  • Controller layer - entrada do usuário que determina processos da página de navegação;
  • Business service layer - manipula acesso a dados e encapsula a lógica de negócios;
Arquitetura MVC

Figura 1: Arquitetura MVC

A camada ADF Model faz a ligação de qualquer usuário de interface para qualquer serviço de negócio, sem a necessidade de escrever código.

Abaixo veja a arquitetura e alguns recursos que formam o Fusion Web:

Arquitetura ADF

Figura 2: Arquitetura ADF

O ADF Faces também suporta o uso do Swing, JSP, JSF, tecnologias padrão de exibição e suporta o uso Microsoft Excel como uma camada de visão para a sua aplicação.

ADF Faces rich client

Oferece uma rica biblioteca de componentes Ajax habilitada na interface do usuário para aplicações web construídas com Java Server Faces (JSF).

ADF Controller

Integra JSF com o modelo ADF, estendendo o controlador JSF padrão que fornece funcionalidades adicionais, tais como operações reutilizáveis, mas também entre outras atividades, para as chamadas do método da ocorrência ou fluxos de outra tarefa.

Estrutura da View Controller

Figura 3: Estrutura da View Controller

ADF Business Components


Quanto à construção de aplicações orientadas a serviços Java EE, permite programar o núcleo da lógica do negócio como um ou mais serviços de negócios. Estes serviços são conhecidos como back-end, que fornecem aos clientes uma forma de consultar, inserir, atualizar e excluir dados de negócios, conforme necessário, enquanto aplicação das regras de negócio é apropriada.

Os ADF Business Components são objetos pré-construídos de aplicativos que aceleram o trabalho de entrega e manutenção de alto desempenho. Um ponto forte é a possível implementação de padrões de projeto Java EE e melhores práticas.

Diagrama estrutura Business Components

Figura 4: Diagrama estrutura Business Components

Entity object

Um entity object representa uma linha (row) em uma tabela de banco de dados e simplifica a manipulação de dados (DML), podendo encapsular a lógica de negócios, garantindo que as regras de negócio sejam consistentemente aplicadas.

View object

Um view object representa uma consulta SQL e simplifica o trabalho com seus resultados. Utiliza a linguagem SQL para se juntar, filtrar, classificar e agregar dados na forma exigida pela tarefa do usuário final que está sendo representada na interface do usuário.

Application module


Um Application Module(módulo de aplicação) é o componente transacional que os clientes da interface (UI) do usuário usam para trabalhar com dados do aplicativo, sendo definido um modelo de dados atualizável com nível superior a procedures e functions (chamado de métodos de serviço) relacionado a uma unidade lógica de trabalho relacionado a uma tarefa de usuário final.

ADF Model Layer

O modelo ADF abstrai a implementação de serviços de negócios de acordo com a JSR-227 (mais informações http://jcp.org/en/jsr/detail?id=227) e fornece uma interface de programação única para diferentes tipos de serviços. Os controles de dados fornecem para esta interface, padrões de metadados para descrever o serviço de operações e coletas de dados, incluindo informações sobre as propriedades, métodos, e tipos envolvidos.

Na IDE do JDeveloper, a funcionalidade e atributos expostos por um serviço de negócio são indicados por ícones no painel de controle de dados. Pode usar um sistema de arrastar e soltar (Drag and Drop) em uma página para criar componentes de interface do usuário (Components UI).

O JDeveloper cria automaticamente as ligações (bindings) das páginas e os componentes de interface para os serviços. Em tempo de execução, o ADF Model Layer (Camada de modelo) faz a leitura das informações que descrevem os controles e ligações de dados apropriadas de arquivos XML, implementndo a conexão bidirecional entre sua interface com o usuário e seu serviço de negócio.

ADF Controller

Na camada de controle, a manipulação de fluxo de página das aplicações web é uma preocupação, para isso o ADF Controller oferece uma navegação melhorada e gerenciamento de estado do modelo em cima do JSF.

O JDeveloper permite criar fluxos de tarefas, que passa o controle de aplicativos entre diferentes tipos de atividades, tais como páginas, métodos em beans gerenciados, declarações de caso, ou chamadas para fluxos outra tarefa.

Estes fluxos de tarefas podem ser reutilizados, também pode ser aninhado dentro das páginas. As tarefas de fluxos aninhados em páginas tornam-se regiões que contêm seu próprio conjunto de páginas navegáveis, permitindo aos usuários ver um número de páginas diferentes e funcionalidades sem sair da página principal.

Tecnologias dentro do ADF

Oracle ADF fornece out-of-the-box que são implementações de dados de controle para a maioria das tecnologias de serviços comuns de negócios.

Junto com suporte há módulos da aplicação do ADF, que também fornece suporte para as tecnologias de serviços seguintes:

  • Enterprise JavaBeans (EJB) session beans and JPA entities;
  • JavaBeans;
  • Web services;
  • XML;
  • CSV files;

ADF Faces Rich Client

São um conjunto de componentes JSF padrão que incluem uma funcionalidade incorporada do AJAX.

O AJAX é uma combinação assíncrona de JavaScript, HTML dinâmico (DHTML), XML e XmlHttpRequest (comunicação entre canais). Esta combinação permite que as solicitações possam ser feitas para o servidor sem o processamento da página. Enquanto o AJAX permite ricas aplicações para o cliente, em como usar o padrão de tecnologias da internet, JSF fornece lado do servidor de controle, o que reduz a dependência em uma abundância de JavaScript freqüentemente encontrados em aplicações típicas de AJAX.

Para alcançar essas capacidades de front-end, o ADF Faces components usa um kit de renderização que lida com exibição do componente e também fornece os objetos JavaScript necessários para as ricas funcionalidades. Este suporte chamado built-in permite construir aplicações ricas sem a necessidade de código JavaScript, ou que necessitem de amplo conhecimento do indivíduo
tecnologias na frente ou back-end.

O ADF Faces oferece mais de 150 rich components, incluindo tabelas (data tables), menus em árvore (tree menus), páginas de diálogos (page dialogs), acordeões (accordions), divisórias (dividers), e tabelas (tables) entre outros.

Oferece também componentes de visualização de dados, que são em Flash e PNG, onde habilita componentes capazes de renderizar gráficos dinâmicos, gráficos, indicadores e outros elementos que possam proporcionar uma visão em tempo real de dados subjacentes.

Para ter uma dimensão maior do que está sendo apresentado, entre nesse link e veja como é a interface e manipulação dos itens do ADF: http://jdevadf.oracle.com/adf-richclient-demo/faces/index.jspx

Cada componente também suporta personalização tendo uma internacionalização e acessibilidade.

No ADF Faces pode ser usado em um aplicativo que usa a biblioteca Facelets. Facelets é um JSF XML centrado em tecnologia de definição de exibição que oferece uma alternativa ao uso do Motor JSP.

O ADF Faces suporta as seguintes tecnologias de visualização:

  • Apache MyFaces Trinidad: Esta é a doação de código open source da Oracle para Apache Software Foundation. Componentes ADF Faces são baseadas nesses componentes Trinidad.
  • Java Swing e ADF Swing: ADF Swing é o ambiente de desenvolvimento para construção de aplicações Java Swing que utilizam a camada de modelo ADF.
  • ADF Mobile: Este é um quadro baseado em padrões para a construção de aplicações móveis, construídas sobre o modelo de componente do JSF.
  • Microsoft Excel: Cria planilhas que são vinculados a dados usando a mesma diretiva de ligação como as tecnologias de outra visão.

Conclusão

O Oracle ADF enfatiza a utilização do paradigma de programação declarativa ao longo o processo de desenvolvimento para permitir que usuários se concentrem na lógica de criação de aplicativos sem ter que entrar em detalhes da programação.

Com o uso da IDE do JDeveloper e o Oracle ADF, o desenvolvedor se beneficia de um ambiente de alta produtividade que gerencia automaticamente os metadados para acesso à dados, validação, controle de página, navegação, interface, design e ligação de dados (bindings).

Em um alto nível, o processo de desenvolvimento de uma aplicação Fusion Web geralmente envolve a seguinte maneira:

  • Criação de casos de uso - Utiliza o modelador UML, podendo criar casos de uso para o seu aplicação.
  • Design da aplicação, controle e navegação - Usados diagramas para visualmente determinar o fluxo de controle de aplicativos e de navegação. JDeveloper cria o XML subjacente.
  • Identifica os recursos compartilhados - Pode usar uma biblioteca de recursos que permite a visualização e a utilizar as bibliotecas importadas simplesmente arrastando e soltando-os na aplicação.
  • Criação de componentes de negócio de acesso aos dados - A partir de tabelas de banco de dados, são criados objetos de entidade usando assistentes ou diálogos. A partir desses objetos de entidade, são criados objetos de visualização utilizados pelas páginas em seu aplicativo. Podendo ao desenvolvedor implementar regras de validação e outros tipos de lógica de negócios usando editores.
  • Implementação de interface do usuário com JSF - A Data Controls painel no Jdeveloper contém uma representação dos objetos de exibição em seu aplicativo. Para criar um usuário interface, basta arrastar um objeto em uma página e selecionar a interface do usuário componente que deseja exibir os dados subjacentes. Para os componentes da interface do usuário que não fazem a ligação de dados, é usado a paleta de componentes para arrastar e soltar componentes. JDeveloper cria todo o código da página para o usuário.
Visão do DataControls

Figura 5: Visão do DataControls

Espero que tenham gostado e até a próxima!