quarta-feira, 1 de agosto de 2018

JARCH Framwork MVC

Introdução

Neste Post vou comentar sobre o que é o JARCH Framework MVC. Esse framework foi desenvolvido para diminuir a curva de aprendizado no desenvolvimento de aplicações corporativas utilizando a plataforma JAVAEE.

Resumo

De forma bem resumida o JARCH traz alta produtividade para um desenvolvimento JAVAEE rápido e fácil, utilizando com base suas especificações. Composto por diversos frameworks, componentes e bibliotecas para aplicações corporativas! Possui nativamente internacionalização I18N, auditoria de dados, dados sigilosos e multi-tenant. Diversas bibliotecas para geração de testes de sistema, geração de relatórios, consulta JPQL e muito mais. Encapsulamos o BPMN, utilizando o Camunda como motor e o Modeler para o design. Temos uma ferramenta GCA para geração dos artefatos. Possui também diversos APT's (Annotations Processors) que auxiliam na geração de artefatos e garante a padronização na compilação. Para a camada de visão temos diversos componentes personalizados (Composites Components).

A geração dos artefatos no JARCH é através de APT (Annotation Processor Tools), onde basicamente se configura as anotações dentro do package-info.java e no momento da compilação os artefatos são gerados. Essas anotações podem ser criadas em qualquer IDE ou editor, mas existe uma ferramenta chamada CGA (Generate Code Annotation) que facilita a geração dessas anotações. Abaixo segue um exemplo do uso dessas anotações.


1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
@JArchLogicMasterSubDetail(nameSubPackage = "marca",
  master = @JArchMaster(name = "Marca", tableName = "tb_marca",
    fields = {
      @JArchField(fieldName = "codigo", fieldTable = "cd_marca", description = "Código",
                  type = FieldType.CODIGO, required = true, showDataTable = true, showSearch = true),
      @JArchField(fieldName = "nome", fieldTable = "nm_marca", description = "Nome", 
                  type = FieldType.NOME, required = true, showDataTable = true, showSearch = true, 
                  columnSearch = 2, rowDataXhtml = 2)
    }),
  details = {
    @JArchDetailSubDetail(name = "Modelo", tableName = "tb_marca_modelo",
      fields = {
              @JArchField(fieldName = "codigo", fieldTable = "cd_modelo", description = "Código", 
                          type = FieldType.CODIGO, required = true, showDataTable = true, showSearch = true),
              @JArchField(fieldName = "nome", fieldTable = "nm_modelo", description = "Nome", 
                          type = FieldType.NOME, required = true, showDataTable = true, showSearch = true, 
                          columnSearch = 2, rowDataXhtml = 2)
      },
      subDetails = {
              @JArchSubDetail(name = "SubModelo", tableName = "tb_marca_modelo_submodelo",
                  fields = {
                    @JArchField(fieldName = "codigo", fieldTable = "cd_submodelo", description = "Código", 
                                type = FieldType.CODIGO, required = true, showDataTable = true, 
                                showSearch = true),
                    @JArchField(fieldName = "nome", fieldTable = "nm_submodelo", description = "Nome", 
                                type = FieldType.NOME, required = true, showDataTable = true, 
                                showSearch = true, columnSearch = 2, rowDataXhtml = 2)
                  }
              )
      }
    )
  }
)

package br.com.arch.arquitetura.crud;

import com.arch.annotation.JArchDetail;
import com.arch.annotation.JArchDetailSubDetail;
import com.arch.annotation.JArchField;
import com.arch.annotation.JArchLogicCrud;
import com.arch.annotation.JArchLogicMasterDetail;
import com.arch.annotation.JArchLogicMasterSubDetail;
import com.arch.annotation.JArchMaster;
import com.arch.annotation.JArchSubDetail;
import com.arch.type.FieldType;

Essa definição anterior cria um CRUD mestre, detalhe com subdetalhe. Ao compilar o código todos os artefatos são gerados sendo eles:
- Entidades
- Fachada
Manager
- Observer
Actions
Páginas JSF
O framework já possuí nativamente controle de tenant por coluna, auditoria, multilinguas, controle de dados sigilosos, e muito mais. Possuí tambem diversas bibliotecas como por exemplo para consultas de JPA, geração de relatórios, entre outras...
A geração das anotações pode ser facilitada através de uma interface visual (GCA - Generate Code ARCH), essa ferramenta é desktop e foi desenvolvida utilizando JavaFX.
GCA

Conclusão

Para mais informações acesse JARCH Framework MVC.

Até mais...

Download package-info.java

6 comentários:

Versão 23.3.0-Final

      Introdução Nesse post vou mostrar as principais novidades da versão 23.3.0, algumas correções e pequenas alterações. Alterações Além d...