Página principal
RFW - Rodrigo's Framework
O objetivo deste projeto é criar um framework simplificado de produção de aplicações pequenas e médias que utilizem a arquitetura J2EE. Note que simplificado quer dizer seguindo um padrão já fechado e específico. Criando alguns padrões de desenvolvimento e classes utilitárias conseguimos produzir aplicações de forma mais rápida em 90% das situações.
RFW - Kernel
O Kernel é a base para todos os outros módulos e deve conter as principais classes do RFW, sem depender de bibliotecas externas. O objetivo é fornecer o essencial para que todos os módulos do Framework funcionem de forma integrada, sem sobrecarregar a aplicação com dependências.
Design e Estrutura do FrameWork | Funcionalidades |
---|---|
Tópicos relacionados à estrutura e design patters do FrameWork. |
Classe de funcionalidades e Serviços que o FrameWork oferece. |
|
|
RFWUtils
Conjunto de classes utilitárias do framework. Todas as classes tem seu prefixo em RU para facilitar encontra-las pelo auto complete.
Classe | Funcionalidades |
---|---|
RUFile | Métodos de manipulação de arquivos. Desde os métodos mais triviais do File do java até operações mais elaboradas. |
RUGenerator | Métodos de geração de todo tipo de dados. Strings para teste, UUIDs, números, padrões, etc. |
RURecursiveClone | Métodos utilizados na clonagem recursiva de objetos, principalmente o RFWVO, para uma cópia completamente independente de dois objetos. |
RUReflex | Métodos para manipulação de objetos a partir de reflexão. Definição de valores em atributos, obtenção de informações de objetos, métodos, importações e vários métodos auxiliares para trabalhar com a estrutura de objetos do RFW. |
RUString | Métodos de manipulação de String, truncates, repetições, formatações, limpeza de espaços, tabs, caracteres inválidos, acentos, etc. |
RFW - ORM
O RFW ORM é o módulo de ORM (Object-Relational Mapping) do FrameWork. Ele é responsável por gerenciar a persistência dos objetos baseados no RFWVO de forma integrada com as demais definições do sistema.
As vantagens do RFW ORM sobre o Hibernate ou o EclipseLink são:
- Menor uso de memória - sendo um código mais conciso e focado na necessidade, tem bem menos linhas de código que outras ferramentas.
- Permite hot-deploy do código - como não utiliza inserção de bytecode no deploy permite que o código seja alterado de forma live.
- Independente do JPA - Por ser independente da plataforma JPA (Java Persistence API) o RFW ORM pode ser utilizado tanto dentro de um projeto J2EE quanto de uma aplicação menor.
- Sem dependência de bibliotecas externas - Por não utilizar nenhuma biblioteca externa, o módulo não carrega uma infinidade de dependências que pesam no sistema e carregam a JVM. [1]
Em compensação, as desvantagens do nosso ORM são:
- Suporte ao MySQL e ao Derby - embora o framework trabalhe com a ideia de dialetos, atualmente ele só tem suporte ao MySQL e ao Derby. Novos bancos de dados precisam de alguma implementação desses dialetos.
- Não altera a estrutura do banco de dados - Diferentemente dos "concorrentes" o RFW ORM não foi concebido para criar ou atualizar o banco de dados automaticamente, embora sua estrutura aceitasse o acréscimo dessa funcionalidade, atualmente não há suporte.
- Menos maleável - Por ser baseado no RFWVO, o RFW ORM exige que todo objeto tenha seu próprio ID único. Ou seja, todo objeto deve ser identificado por um ID. Isso quer não é possível criar uma PK com base em múltiplas colunas. Aqui será obrigatório uma coluna extra para id (e que obrigatoriamente se chamará id), e as outras colunas serão tratadas com uma constraint de uniquekey.
- É possível criar tabelas sem o id apenas em casos de N:N, desde que essa tabela não tenha um objeto RFWVO representando-a. Caso o relacionamento N:N tenha mais dados, será obrigatório ter uma coluna ID, mesmo que as duas colunas FK sejam suficientes para identificar o objeto.
Design e Estrutura do FrameWork | Funcionalidades |
---|---|
Tópicos relacionados à estrutura e design patters do FrameWork. |
Classe de funcionalidades e Serviços que o FrameWork oferece. |
|
|
RFW - Sefaz
O módulo RFW.SEFAZ tem um objetivo de deixar transparente a conexão com os serviços da SEFAZ / NFe.
Têm dependência apenas com o Axis2 para conexão do WebService.
Design e Estrutura do FrameWork | Funcionalidades |
---|---|
Tópicos relacionados à estrutura e design patters do FrameWork. |
Classe de funcionalidades e Serviços que o FrameWork oferece. |
|
Utilização
Para utilizar o módulo basta instanciar a classe SEFAZ, passando as configurações já no construtor. Para os serviços da NFe será necessário o certificado do cliente e o certificados públicos da SEFAZ (para validar a segurança da conexão).
Com a instância do SEFAZ criada, basta chamar os métodos equivalentes do webservice.
RFW - Terminal
O **RFW.Terminal** é uma biblioteca completa para controle de terminais, oferecendo ferramentas para manipulação total do ambiente de linha de comando. O projeto abrange formatação de texto, controle do cursor, manipulação de cores e estilos, além de funcionalidades avançadas para input, output e navegação. Seu objetivo é simplificar o desenvolvimento de interfaces de terminal, fornecendo uma API flexível para exibição de informações e interação com o usuário, tudo de forma eficiente e extensível.
Clases Principais | Funcionalidades |
---|---|
Tópicos relacionados à estrutura e funcionamento básico do módulo. |
Classe com funcionalidades extras. |
|
RFW - Vaadin
O RFW Vaadin é o módulo utilizado para facilitar a criação de uma interface WEB para as aplicações criadas sobre o FrameWork.
Este módulo é criado em cima do Vaadin, e trás todas as suas ferramentas deixando o desenvolvedor criar o que desejar. No entanto, trás diversas classes e ferramentas que se integram com o nosso framework para agilizar e facilitar o desenvolvimento de aplicações.
Design e Estrutura do FrameWork | Funcionalidades |
---|---|
Tópicos relacionados à estrutura e design patters do FrameWork. |
Classe de funcionalidades e Serviços que o FrameWork oferece. |
|
|
Módulos de Distribuição
RFW.Distro
Este módulo tem apenas a função de concentrar a compilação de todos os módulos do RFW. Seu arquivo pom.xml relaciona todos os módulos para a correta compilação e testes de todos os módulos do RFW. Não deve conter nenhum código ou pastas com arquivos adicionais.
Módulos em Extinção
RFW - Módulo Base
Este módulo RFW.Base está sendo extinto, e suas funcionalidades sendo migradas para outros módulos do RFW. Foi criado no início do desenvolvimento do RFW, mas depois de algumas mudanças de estrutura ele precisa ser completamente reorganizado, e para isso está sendo lentamento migrado para os demais módulos.
Design e Estrutura do FrameWork | Funcionalidades |
---|---|
Tópicos relacionados à estrutura e design patters do FrameWork. |
Classe de funcionalidades e Serviços que o FrameWork oferece. |
|
Pendências do Projeto
- RFW.SEFAZ
- SEFAZEnums - Terminar de criar as enumerations que são utilizadas no XML, incluindo os códigos para conversão entre Enum e XML. Colocando os métodos necessários nos objetos XSDs para facilitar as conversões das informações pelas aplicações que opterem pela utilização das Enumerations. Também finalizar os bundles dessas Enums.
Notas
- ↑ Não tem nenhuma dependência direta, mas será necessário importar bibliotecas de conexão com o seu banco de dados, etc.