Mudanças entre as edições de "Página principal"

De Wiki do Leitão
Ir para: navegação, pesquisa
 
(47 revisões intermediárias pelo mesmo usuário não estão sendo mostradas)
Linha 7: Linha 7:
== RFW - Kernel ==
== 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.
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.
 
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.




Linha 21: Linha 19:
|-
|-
| style="vertical-align:top; width:50%"|
| style="vertical-align:top; width:50%"|
* [[Ambiente de Desenvolvimento]]
** Arquivo [[rfwdev.properties]]
* Classe estática [[RFW]]
* Classe estática [[RFW]]
* [[Exceções & Tratamento]]
* [[Exceções & Tratamento]]
Linha 40: Linha 42:


* Interfaces
* Interfaces
** [[RFWDataProviderInterface]]
** [[RFWDBProvider]]




Linha 46: Linha 48:
* [[RFWLogger]]
* [[RFWLogger]]
* [[RFWBundle]]
* [[RFWBundle]]
* [[MeasureRuler]] - Precisa ser revisto, terminado e documentado
* [[MeasureRuler]] - Precisa ser revisto, terminado e documentado.
* [[EventDispatcher]]
* [[EventDispatcher]]
* [[Location]]
* [[Location]] - Dados de endereços.
* [[FileVO]] - Persistência de arquivos.


|}
|}
Linha 61: Linha 64:
!scope="col"| Classe
!scope="col"| Classe
!scope="col"| Funcionalidades
!scope="col"| Funcionalidades
|-
| style="vertical-align:top;text-align:center;width:200px"|<b>PreProcess</b>
| style="vertical-align:top"|Esta classe faz parte de validação de estrutura e validação de dados, mas acaba sendo uma classe utilitária já que seus métodos são úteis em toda parte do sistema para validar e processar qualquer valor de variável.
|-
| style="vertical-align:top;text-align:center;width:200px"|<b>RUTypes</b>
| style="vertical-align:top"|Essa classe agrupa todos os métodos de conversão de tipos.
|-
|-
| style="vertical-align:top;text-align:center;width:200px"|<b>RUFile</b>
| style="vertical-align:top;text-align:center;width:200px"|<b>RUFile</b>
Linha 114: Linha 123:
** [[MeasureUnitDAOConverter]]
** [[MeasureUnitDAOConverter]]


|}
== RFW - Sefaz ==
O módulo RFW.SEFAZ tem um objetivo de deixar transparente a conexão com os serviços da SEFAZ, como emissão de NFCe e NFe, e outros serviços disponíveis.
Têm dependência apenas com o Axis2 para conexão do WebService.
{| class="wikitable" style="width:100%;"
!scope="col"| Design, Documentação e Outras Informações
!scope="col"| Funcionalidades
|-
| <p align="justify" style="margin:10px;"><b>Tópicos relacionados à estrutura e design patters do FrameWork.</b></p>
| <p align="justify" style="margin:10px;"><b>Classe de funcionalidades e Serviços que o FrameWork oferece.</b></p>
|-
| style="vertical-align:top; width:50%"|
* Informações e Definições
** [[Requisitos RFW.SEFAZ]]
** [[Legislação e Informações Oficiais SEFAZ]]
* Outros Documentos
** [[Criando Stubs do Axis2 para WS da SEFAZ]]
** [[XSD To Java Object (JAXB Plugin)]]
** [[TrustManager para SEFAZ]]
* Log
** [[Problemas Conhecidos do RFW.SEFAZ]]
| style="vertical-align:top; width:50%"|
* Classes Principais
** [[SEFAZDefinitions]]
** [[SEFAZ]]
* Classes Utilitárias
** [[SEFAZUtils]]
** [[SEFAZXMLValidator]]
|}
=== 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 - SPED ==
O **RFW.SPED** é uma biblioteca completa para o gerencimento dos arquivos do SPED. Facilita a montagem da estrutura do arquivo e sua manipulação de validação e cálculo dos campos automáticos.
{| class="wikitable" style="width:100%;"
!scope="col"| Clases Principais
!scope="col"| Funcionalidades
|-
| <p align="justify" style="margin:10px;"><b>Tópicos relacionados à estrutura de classes e funcionamento básico do módulo.</b></p>
| <p align="justify" style="margin:10px;"><b>Documentação e Requisitos</b></p>
|-
| style="vertical-align:top; width:50%"|
* [[Estrutura de Classes]] - Explica as classes e como montar os arquivos do SPED.
| style="vertical-align:top; width:50%"|
* Documentação sobre o SPED contemplado pela biblioteca e obserções:
** [[SPED Fiscal]]
** [[SPED Contribuições]]
|}
== 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.
{| class="wikitable" style="width:100%;"
!scope="col"| Clases Principais
!scope="col"| Funcionalidades
|-
| <p align="justify" style="margin:10px;"><b>Tópicos relacionados à estrutura e funcionamento básico do módulo.</b></p>
| <p align="justify" style="margin:10px;"><b>Classe com funcionalidades extras.</b></p>
|-
| style="vertical-align:top; width:50%"|
* Classes Principais
** [[Terminal]]
** [[CommandParser]]
| style="vertical-align:top; width:50%"|
* [[Figlet]] e [[Figlet Fonts]]
|}
== RFW - Finance==
O '''RFW.Finance''' é uma biblioteca para auxiliar com sistemas financeiros. Seuobjetivo é fornecer métodos e funcionalidades para faciliar funções como:
* Gerenciar arquivos como 'CNAB', 'SisPAG' (Itaú) e outros modelos de troca de arquivo financeiros;
* Parser de arquivos OFX;
* Integração com sistemas de TEF (NTK/PayGO, SisTEF, etc.);
* Leitura, criação e validação de boletos e outras Guias;
* Criação e manipulação de código / QRCode de PIX;
{| class="wikitable" style="width:100%;"
!scope="col"| Funcionalidades
!scope="col"| Clases Principais
|-
| <p align="justify" style="margin:10px;"><b>Documentação e outros tópicos relacionados.</b></p>
| <p align="justify" style="margin:10px;"><b>Classe e funcionalidades do sistema.</b></p>
|-
| style="vertical-align:top; width:50%"|
* Manuais
** [https://cmsarquivos.febraban.org.br/Arquivos/documentos/PDF/Layout%20padrao%20CNAB240%20V%2010%2009%20-%2014_10_21.pdf Manual CNAB v10.09]
| style="vertical-align:top; width:50%"|
* Escrita
** [[CNAB240]] - Criação de arquivo CNAB240
* Leitura
** [[CNAB240Parser]] - Parser para o arquivo CNAB240
|}
|}


Linha 134: Linha 271:
* Estrutura da UI
* Estrutura da UI
** [[RFWUI]]
** [[RFWUI]]
** RFWFrame (ainda não extraído da aplicação)
** [[RFWWindow]]
** [[RFWWindow]]
**: ''[[RFWBrowserResizeListener]]''
**: ''[[RFWBrowserResizeListener]]''
Linha 144: Linha 282:
** [[UIDataProvider]]
** [[UIDataProvider]]
** [[UIGridDataProvider]]
** [[UIGridDataProvider]]
** [[UITreeDataProvider]]




Linha 158: Linha 297:
** [[RFWButtonToggle]]
** [[RFWButtonToggle]]
** [[RFWComboBoxCity]]
** [[RFWComboBoxCity]]
** [[RFWComboBoxMeasureUnit]]
** [[RFWDateRangeComponent]]
** [[RFWDateRangeComponent]]
** [[RFWTagsSelector]]
** [[RFWTagsSelector]]
* Grid
** [[UIGridRowHighlight]]
* Windows
** [[RFWPickerWindow]]
**: ''[[RFWCEPPickerWindow]]''
|}
== RFW - Notifier ==
O RFW Notifier é o módulo responsável pela criação e integração de sistemas de notificações para aplicações desenvolvidas sobre o FrameWork.
Este módulo visa oferecer uma interface simples e unificada para envio de mensagens, documentos, alertas e informações para usuários e desenvolvedores através de diferentes meios de comunicação, como Telegram, Slack, E-mail, SMS, WhatsApp, entre outros.
Inicialmente, o projeto disponibiliza integração com o Telegram, mas será expandido com novos canais de comunicação no futuro.
{| class="wikitable" style="width:100%;"
!scope="col"| Design e Estrutura do FrameWork
!scope="col"| Funcionalidades
|-
| <p align="justify" style="margin:10px;"><b>Tópicos relacionados à estrutura e organização do módulo RFW Notifier.</b></p>
| <p align="justify" style="margin:10px;"><b>Classes de funcionalidades e Serviços de Notificações disponíveis.</b></p>
|-
| style="vertical-align:top; width:50%"|
| style="vertical-align:top; width:50%"|
* Notificações Implementadas
** [[TelegramNotifier]]
* Integrações Futuras
** SlackNotifier (futuro)
** EmailNotifier (futuro)
** SMSNotifier (futuro)
** WhatsAppNotifier (futuro)


|}
|}
= 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 ==
== 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.
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.




Linha 183: Linha 372:


|}
|}
= 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 =
= Notas =
<references />
<references />

Edição atual tal como às 14h47min de 27 de abril de 2025

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
PreProcess Esta classe faz parte de validação de estrutura e validação de dados, mas acaba sendo uma classe utilitária já que seus métodos são úteis em toda parte do sistema para validar e processar qualquer valor de variável.
RUTypes Essa classe agrupa todos os métodos de conversão de tipos.
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, como emissão de NFCe e NFe, e outros serviços disponíveis.

Têm dependência apenas com o Axis2 para conexão do WebService.


Design, Documentação e Outras Informações 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 - SPED

O **RFW.SPED** é uma biblioteca completa para o gerencimento dos arquivos do SPED. Facilita a montagem da estrutura do arquivo e sua manipulação de validação e cálculo dos campos automáticos.

Clases Principais Funcionalidades

Tópicos relacionados à estrutura de classes e funcionamento básico do módulo.

Documentação e Requisitos


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 - Finance

O RFW.Finance é uma biblioteca para auxiliar com sistemas financeiros. Seuobjetivo é fornecer métodos e funcionalidades para faciliar funções como:

  • Gerenciar arquivos como 'CNAB', 'SisPAG' (Itaú) e outros modelos de troca de arquivo financeiros;
  • Parser de arquivos OFX;
  • Integração com sistemas de TEF (NTK/PayGO, SisTEF, etc.);
  • Leitura, criação e validação de boletos e outras Guias;
  • Criação e manipulação de código / QRCode de PIX;


Funcionalidades Clases Principais

Documentação e outros tópicos relacionados.

Classe e funcionalidades do sistema.

  • Escrita
    • CNAB240 - Criação de arquivo CNAB240


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 - Notifier

O RFW Notifier é o módulo responsável pela criação e integração de sistemas de notificações para aplicações desenvolvidas sobre o FrameWork.

Este módulo visa oferecer uma interface simples e unificada para envio de mensagens, documentos, alertas e informações para usuários e desenvolvedores através de diferentes meios de comunicação, como Telegram, Slack, E-mail, SMS, WhatsApp, entre outros.

Inicialmente, o projeto disponibiliza integração com o Telegram, mas será expandido com novos canais de comunicação no futuro.

Design e Estrutura do FrameWork Funcionalidades

Tópicos relacionados à estrutura e organização do módulo RFW Notifier.

Classes de funcionalidades e Serviços de Notificações disponíveis.


  • Integrações Futuras
    • SlackNotifier (futuro)
    • EmailNotifier (futuro)
    • SMSNotifier (futuro)
    • WhatsAppNotifier (futuro)

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.

  • 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!

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

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