Skip to content

Toolboxes

O projeto MiddleHeaven é dividido em caixas de ferramentas (toolbox). Cada uma visa dar suporte a um conjunto de funcionalidades. Algunas são independentes, algumas são interdependentes. Algumas estão completas, e algumas não.

A seguir fica lista de todas as toolboxes do projeto até agora. Estas são toolboxes que já existem implementadas, ou que deverão existir até à primeira versão do projeto. A ideia é que esta página seja atualizada conforme as toolboxes são sendo completadas ou adicionadas às intenções do projeto.

A enumeração não segue nenhuma ordem em particular:

Quantidades e Medidas – suporte ao conceito de Quantidade ( algo que tem uma unidade) e medida. Este conceito é estendido de forma que quantidades monetárias , números, intervalos de tempo, data, periodos e medições sejam tratados da mesma forma. Este toolbox possibilita ainda a capacidade de calculo dimensional e aritmética de unidades. A Toolobx é dividida em outras mais especializadas como a Time Toolbox para trabalhar como relógios, cronometros, datas e tempo em geral e a Money Toolbox para trablhar com quantidades monerárias.  Estágio: em homologação

Boostrap – permite que a mesma aplicação funcione em ambientes diferentes. A mesma aplicação pode funciona dentro do Tomcat, por exemplo, ou embarcada em uma aplicação desktop. Estágio:pronto

Wiring – mecanismo de Injeção Automática de Dependência. O mecanismo determina quais os pontos de injeção da classe. Por agora a implementação padrão usa anotações do MiddleHeaven e do pacote javax.annotations, mas implementações poderão utilizar mecanismos com suporte em arquivo (XML por exemplo) e outras anotações. Estágio:pronto

ServiceRegistry – mecanismo de registro de Serviços. Serviços são referenciados pelos seus contratos ( interfaces) e diferentes implementações podem ser disponibilizadas pelos ambientes de execução ou pelas aplicações em si. Este mecanismo é fortemente relacionado ao de Wiring sendo que todos os serviços são passiveis de serem injetados em outras classes e o mecanismo de Wiring é em si mesmo um serviço. O uso de serviços é a base do MiddleHeaven para fornecer as “peças moveis” para cada ambiente e aplicação. Estágio: pronto

Criteria – permite a escrita fluente de critério de pesquisa baseado em objectos. Mais fluente que outras API do mesmo tipo e completamente independente do repositorio de dados. Estágio: em homologação

Datastorage – um mecanismo desacoplado do local real onde os dados são armazenados assim como das APIs necessárias paras os armazenar e recuperar de tal local. Esta toolbox conta com suporte direto ao padrão DomainStorage para facilitar a construção de aplicações com modelos de dominio orientados a objetos.  Estágio: em homologação

Managed File Repository – a ideia por detrás desta toolbox é prover um sistema homogeneo para acessar “arquivos” seja qual for a sua localização fisica. Este sistema virtual de arquivos permite que, por exemplo, arquivos que foram enviados por browsers sejam tratados com a mesma simplicidade que arquivos presentes em FTP, no disco local, anexados a um email ou dentro de um arquivo zip. Estágio: pronto

Dominio – suporte formal às estrutruas principais do dominio : Entidades, Repositorios e Serviços. Os serviços são suportados out-of-the-box pelo toolbox de ServiceRegistry. Entidades são qualquer classe que siga o padrão de acessores e modificadores padrão do java ( get/set). Repositorios são classes que determinam  como instancias das entidades são encontradas. Em particular repositorios podem usar o toolbox de DataStorage Estágio: em desenvolvimento

Chart – geração de gráficos – modelo simplificado para a geração de gráficos. Desacoplamento da geração dos dados da geração visual do gráfico. Por enquanto corre com o motor provido pelo projeto JFreeChart.  Estágio : a exercitar.

Relatorio – geração de relatórios – modelo simplificado para a geração de relatórios . Desacoplamento da geração dos dados da geração visual do relatório.  Por enquanto corre com o motor provido pelo projeto JasperReports. Estágio : a exercitar.

Autenticação e Autorização – modelo reaproveitável para usuario/ perfil / permissão como forma de complementar o modelo JAAS. Integração com JAAS.  Estágio: em desenvolvimento

Email – suporte à escrita e envido de email tanto texto simples como composto com anexos e HTML. Este toolbox visa também prover suporte à leitura de email de um conta e não só ao envio. Outra funcionalidade prevista é o envio de email usando um servidor SMTP centralizado. Estágio: em homologação

Logging – suporte a logging ao estilo log4j. Devido ao isolamento de dependencia a que o middleheaven se propõe não é possivel utilizar directamente qualquer biblioteca  de logging. Contudo, as diferentes existentes podem ser integradas por baixo dos panos. Estágio: em homologação

Global : Cultures – reintrepretação do modelo de Locale da plataforma Java de forma a poder criar modelos para os elementos culturais tais como linguagem, moedas, formações escritas de quantidades , calendários, etc… de forma centralizada por cultura. Este toolbox visa ainda a possibilidade da aplicação alterar os elementos culturais em runtime. Estágio: em homologação

Global : Addresses – suporte padrão a endereços fisicos de forma independente do pais. A ideia é que este tipo de modelo permite alavancar serviços orientados a endereços de forma simples. O primeiro, claro está, é a localização de endereço por CEP. Estágio: em desenvolvimento

Global : Atlas – suporte padrão a enumeração de paises, suas divisões e cidades como possibilidade de referenciação geográfica. Este toolbox é baseado nos padrões ISO para código de paises, divisões e cidades e visa ser a base de integração para mecanismos de geo-localização como GPS e Mapas. Estágio: em homologação.

Notificação – suporte a notificação local e remota. Notificação é na realidade um mecanismo de entrega de eventos (Notificações) de forma não associada a nenhum processo , mecanismo ou camada. Estágio: em homologação

Sequencias – um modelo único para definir e prover implementações de sequencias. Sequencias não só numéricas, como alfa-numéricas e até aleatórias. Estágio: homologado

Transações – mecanismo geral para encapcular e controlar transações. Deve permitir que serviços em geral possam se registrar como participantes da transação não apenas conexões de bancos de dados. Em ambientes se Servidor de Aplicação este mecanismo deve delegar ao TransactionManager embutido, em outros ambientes, outras estratégias serão propostas. Contudo, todos os ambientes terão segurança transacional. Um exemplo seriam sequencias transacionais que são incrementam quando a transação que usou o elemento corrente foi bem sucedida. Estágio: em desenvolvimento

Apresentação : Desktop – mecanismo para a criação de aplicações desktop – baseado em Swing, de forma simples e fácil. Um mecanismo agnostico relativamente ao suporte de apresentação é desenhado e configurado. O MiddleHeaven então constroi as telas e vincula os comandos do usuário segundo essa configuração. A mesma configuração pode gerar aplicações desktop ou web, depenendo do mecanismo de renderização escolhido. A ideia é integrar os dois ambientes, de forma que mudar de um para o outro se resume a alterar uma configuração. Estágio: em desenvolvimento

Apresentação : Action WebFlux – suporte a controle de fluxo para aplicações web baseada em actions. Este modelo de apresentação é diferente do modelo proposto pelo Apresentação : Desktop já que é baseado no uso de tencologias comuns como JSP. Este toolbox provê um framework MVC para web que embora a trelado às tencologias clássicas pode facilitar o desenvolvimento de aplicações web como alta demanda como sites. Estágio: em desenvolvimento

Apresentação : REST – mecanismo para prover integração remota com base no padrão REST para comunicação. Este tipo de apresentação pode ser usado para base para a criação de serviços web assim como para o suporte a AJAX.Estágio: a implementar

Work – mecanismo para a realização de processo em unidades.  O interesse real deste mecanismo é prover o processamento assincrono de tarefas e em particular o o processamento agendado. O processamento agendado do toolbox Work: Scheduled é baseado em relogios definidos pelo tooblox de Tempos e Datas . Isto permite que relogios acelerados, ou retrazados,possam ser utilizados para testes dos processos agendados. Estágio: em desenvolvimento

3 comentários
  1. Olá @Sérgio! Este seu projeto promete revolucionar o mundo dev. Talvez eu não seja qualificado para opinar mas em relação ao quesito Apresentação:Desktop, você poderia utilizar a idéia do framework pulpcore para prover uma aparência e comportamento para a camada view Java mais “atrativa” que swing.

  2. Job permalink

    Olá Sergio,
    Acompanho seu projeto a muito tempo -ainda tinha outro nome – gostaria de ajudar, se possível. Os módulos que poderia ajudar com maior enfase seria o domínio, relatórios e Desktop.

    • sergiotaborda permalink

      Muito bem. Realmente estou precisando de mais ajuda. Começe por baixar o codigo do Google Code (https://middleheaven.googlecode.com/svn) se familiarize com o codigo e comece vendo onde pode produzir codigo e dar sugestões. Em breve espero criar um mailing-list ou um forum para discutir mais abertamente pois o blog não é um lugar muito prático para isso. Por enquanto, se tiver algum comentário pode escrever por aqui.

Deixe uma Resposta

Preencha os seus detalhes abaixo ou clique num ícone para iniciar sessão:

Logótipo da WordPress.com

Está a comentar usando a sua conta WordPress.com Terminar Sessão / Alterar )

Imagem do Twitter

Está a comentar usando a sua conta Twitter Terminar Sessão / Alterar )

Facebook photo

Está a comentar usando a sua conta Facebook Terminar Sessão / Alterar )

Google+ photo

Está a comentar usando a sua conta Google+ Terminar Sessão / Alterar )

Connecting to %s

%d bloggers like this: