Página principal

De Wiki do Leitão
Revisão de 20h08min de 24 de agosto de 2023 por Rodrigogml (discussão | contribs) (→‎Notas)
Ir para: navegação, pesquisa

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 não é um módulo, mas a base para todos os outros. Este pacote deve conter o máximo de classes de base do RFW mas o pacote em si não pode conter nenhuma outra dependência com bibliotecas externas.

A ideia é promover neste pacote, o básico para que todos os pacotes módulos do Frame Work funcionem na mesma língua sem inchar as dependências da aplicação que não utiliza todos os módulos do FrameWork.


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

  • Todos as definições de casas decimais mínimas devem ser definidas como 0. Embora o layout do XML indique muitas vezes a obrigatoriedade de 2 casas (valores monetários por exemplo), é recomendado que zeros não significativos não sejam enviados. Já encontrei registros de notas fiscais com a tag a abaixo na nota aprovada de layout 4.00:
<IPITrib>
   <CST>99</CST>
   <vBC>0</vBC>
   <pIPI>0</pIPI>
   <vIPI>0</vIPI>
</IPITrib>


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.






RFW - Módulo Base

O RFW é o módulo principal do Rodrigo's FrameWork. Neste módulo está incluso a estrutura do Framework e outras utilizadas que não gerem dependências externas extensas.


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.

  • Processamento e Validação de Dados
    • RFWValidator Ainda está dentro do BIS10, por fazer acessos no banco de dados, precisa da criação de interface!

Outros Guias e Tutoriais de Referência

  • [Axis2 WebService Client] - Como utilizar o Axis2 para criar os objetos para consumo do WebService.

Notas

  1. Não tem nenhuma dependência direta, mas será necessário importar bibliotecas de conexão com o seu banco de dados, etc.