terça-feira, 16 de junho de 2020

Contas Pagar/Receber - Parte I - Criação do Projeto MAVEN

Introdução

Vou desenvolver uma aplicação de Contas a Pagar e Receber, utilizando alguns recursos do JARCH e BPMN. Essa aplicação terá 4 CRUD's: Banco, Centro Custo, Categoria e Pessoa, além dos lançamentos de Conta a Pagar e Conta a Receber. Será implementado também um relatório para cada tipo de conta, bem como um dashboard. Pra finalizar faremos uma integração com BPM de acordo com o valor da conta, simulando uma autorização a nível de Supervisor, Gerente e Diretoria. 
Nesse primeiro post vou gerar a estrutura do projeto utilizando archetype JARCH com MAVEN.

Criação do Projeto MAVEN

Agora vou criar a estrutura do projeto via MAVEN, o JARCH já possuí um archetype para geração de um projeto JAVAEE. Então vou criar um projeto no formato MAVEN utilizando a linha de comando:

mvn -B archetype:generate \
     -DarchetypeGroupId=br.com.jarch \
     -DarchetypeArtifactId=javaee-archetype \
     -DarchetypeVersion=20.5.4 \
     -DgroupId=br.com.jarch \
     -DartifactId=contas \
     -Dversion=1.0.0 \
     -DsiglaSistema=GCPR \
     -DdescricaoSistema="Gerenciamento de Contas a Pagar e Receber"

Esse comando irá gerar um projeto contas com 4 módulos:
contas-client: Esse módulo trata dos fontes core da aplicação sendo o centralizador os demais módulos depende desse módulo.
contas-web: Esse módulo trata da camada visual da aplicação (WEB), contendo as Action's, páginas, images, etc...
contas-ws: Esse módulo trata da camada de serviços da aplicação (API) caso exista.
contas-job: Esse módulo trata da camada de processamentos da aplicação.

CONTAS-CLIENT
Esse módulo já foi criado com a seguinte estrutura:
package-info.java: Onde será implementado as anotações para a geração do código.
bundle_pt_BR.properties: Arquivo do padrão I18N.
beans.xml: Ativação do CDI para o módulo.
ValidationMessages_pt_BR.properties: Arquivo para armazenamento de mensagens para utilização do BeanValidation.


CONTAS-JOB
Esse módulo já foi criado com a seguinte estrutura:
ProcessJob.java: Uma estrutura para processamento de todos os Tenant's.
persistence.xml: Configuração da aplicação em relação a JPA, datasource, schema e auditoria.
beans.xml: Ativação do CDI para o módulo.
jboss-web.xml: Configuração do contexto no servidor de aplicação (Wildfly)
web.xml: Configuração da aplicação WEB.


CONTAS-WEB
Esse módulo já foi criado com a seguinte estrutura:
BaseDelegate.java: Uma estrutura base para processamento de Delegates (BPM).
SampleDelegate.java: Uma exemplo de implementação de um Delegate (BPM).
ApplicationListener.java: Configuração do listener de contexto de aplicação.
SessionListener.java: Configuração do listener de contexto de aplicação.
persistence.xml: Configuração da aplicação em relação a JPA, datasource, schema e auditoria.
processes.xml: Configuração do gerenciamento do BPM.
bemVindo.xhtml: Uma página inicial de bem vindo.
images: Imagens de exemplo do login e menu.
css: Configuração de estilização personalizada.
js: Configuração de javascript personalizado.
beans.xml: Ativação do CDI para o módulo.
faces-config.xml: Configuração do JSF na aplicação.
jboss-web.xml: Configuração do contexto no servidor de aplicação (Wildfly)
web.xml: Configuração da aplicação WEB.


CONTAS-WS
Esse módulo já foi criado com a seguinte estrutura:
BaseRest.java: Uma estrutura base para serviçoes via REST.
ContainerRequestFilterProvider.java: Uma configuração para interceptação de requisão para API de serviço REST.
ContainerResponseFilterProvider.java:  Uma configuração para interceptação de resposta para API de serviço REST.
SampleRest.java: Um exemplo de implementação de serviço REST.
ServiceApplication.java: A configuração do PATH raiz dos serviços REST.
SampleSoap.java: Um exemplo de implementação de serviço SOAP.
persistence.xml: Configuração da aplicação em relação a JPA, datasource, schema e auditoria.
beans.xml: Ativação do CDI para o módulo.
jboss-web.xml: Configuração do contexto no servidor de aplicação (Wildfly)
web.xml: Configuração da aplicação WEB.


Executando 
Vou  agora configurar o datasource no servidor do módulo web e publicar no servidor Wildfly. 

Após a publicação nota-se que presença da tela de login e posteriomente pode-se ver o menu:

Conclusão

Assim finalizo esse primeiro post sobre a criação de um projeto de contas a pagar e receber. A estrutura apresentada nesse post contém diversas implementações prontas otimizando nosso tempo. No próximo post vou criar o primeiro CRUD. 

Segue o link da video aula sobre esse post: https://youtu.be/-ay7de7MdRc

Até mais.

terça-feira, 2 de junho de 2020

Versão 20.5.0.Final

Introdução

Nesse post vou mostrar as principais novidades da versão 20.5.0, algumas correções e pequenas alterações.
Implementações

Segue abaixo as implementações dessa versão:

- Adicionado alguns componentes VUE, ainda em fase de testes

Alterações

Além das implementações descritas acima foram feitas algumas alterações:

- Desabilitado ações no EntityProcessor para somente ser gerado pelo package-info.java
- Adicionado o cast da classe YearMonth para extração do excel via tela de lista
- Alterado o CommunicationListAction para bloquear a ação de arquivar quando o registro já estiver arquivado
- Removido a classe CdiUtils, utilizar CDI.current() em seu lugar

Correções

Além das alterações descritas acima esta versão contempla algumas correções:
- Correção na validação do parametro token quando chamada via API REST
- Correção no change do CrudManager para não ocorrer erro de NullPointerException na exclusão do detalhe, o erro ocorria porque a validação dos campos (loadCrud da entidade antes da alteração) estava após o método que removia as referencias do detalhe removeRelationship
- Correção no BaseManager na busca dos dados da lista para adicionar o ID no construtor quando o ID não fizer parte da lista (porque será adicionado todas as colunas da lista)

Conclusão

Essa versão contempla algumas melhorias e correções. É recomendável a atualização para essa nova versão.

Até mais,

domingo, 10 de maio de 2020

Versão 20.4.0.Final

Introdução

Nesse post vou mostrar as principais novidades da versão 20.4.0, algumas correções e pequenas alterações.
Implementações

Segue abaixo as implementações dessa versão:

- Adicionado segurança na camada de serviço, utilizando o JWT, para isso basta implementar a classe BaseContainerRequestFilterProvider e adicionar a anotação @Provider

Alterações

Além das implementações descritas acima foram feitas algumas alterações:

- Alterado o Communcation (API de mensagens internas) para contemplar mais informações como data/hora leitura, se pode apagar a mensagem, data de inclusao, e o campo de outras informações
- Alteração no e:calendar para contemplar os seguintes atributos: requiredMessage, converterMessage e validatorMessage

Correções

Além das alterações descritas acima esta versão contempla algumas correções:
- Correção no searchAllFilterPaginator para retornar o atributo maxResults com a quantidade de linhas da página, estava retornando a quantidade de registros, o que ocasionava erro de calculo de páginas pelo DataTable
- Ajuste no retorno do método searchCodeLookup para não ocasionar NullPointerException
- Correção no filtro de pesquisa para atualizar a classse CSS do divListDatatable na tela de lista
- Correção no FieldSearch não tentar executar o construtor de um tipo ENUM
- Correção na verificação das condições do ENUM de CondititionType para ignorar o case-sensitive
- Ajuste no ReflectionUtils para retornar o tipo de data correto, estava retornado o java.sql.Timestamp no lugar do (Date, LocalDate ou LocalDateTime)

Conclusão

Essa versão contempla algumas melhorias e correções. É recomendável a atualização para essa nova versão.

Até mais,

sábado, 4 de abril de 2020

Versão 20.3.0-Final

Introdução

Nesse post vou mostrar as principais novidades da versão 20.3.0, algumas correções e pequenas alterações.

Implementações

Segue abaixo as implementações dessa versão:

- Incluido o método labelReport na classe BaseListAction para nomear o relatório da listagem
- Incluído o atributo update no componente e:panelSelected

Alterações

Além das implementações descritas acima foram feitas algumas alterações:

- Alterado o componente e:panelSelected para receber um converter
- Alterado o componente e:panelSelected para acumular os itens selecionados
- Alterado o componente e:panelSelected para remover o atributo exceto
- Removido os módulos jarch-annotation, jarch-bpm, jarch-cep, jarch-docx, jarch-exception, jarch-jdbc, jarch-jpa, jarch-jsf, jarch-migration, jarch-model, jarch-report, jarch-test e jarch-util e criado o jarch-core para remover as referências cruzadas
- Alterado alguns parâmetros de SingularAttribute para Attribute para englobar todos os tipos (SingularAttribute, PluralAttribute)
- Ajuste na nome do arquivo PDF gerado pela tela de lista
- Alteração na migração para ocultar a entidade de CommunicationEntity
- Refatoração para utilizar a lingua inglesa em alguns métodos
- Refatorado o atributo lista do IPaginator para a lingua inglesa list
Correções

Além das alterações descritas acima esta versão contempla algumas correções:
- Ajustes na geração do relatório através da tela de lista
- Correção no e:commandLinkPrint que estava ocorrendo erro de JavaScript no momento de fechar o dialog de "Processamento Concluído com Sucesso"
- Correção no autoincremento @JArchAutoIncrement para não permitir duplicidade quando existir o processamento de mais um INSERT ao mesmo tempo
- Ajuste no lookup para saber tratar o tipo do código quando numérico mesmo quando mapeado como CODE
Conclusão

Essa versão contempla algumas melhorias e correções. É recomendável a atualização para essa nova versão.

Até mais,

quarta-feira, 11 de março de 2020

Versão 20.2.0-Final

Introdução

Nesse post vou mostrar as principais novidades da versão 20.2.0, algumas correções e pequenas alterações.

Implementações

Segue abaixo as implementações dessa versão:

- Inclusão de template e da orientação na impressão do relatório na tela de lista
- Adicionado métodos no BpmUtils removeVariableProcessInstance(), removeVariable() e getVariables()
- Criação do jarch-vue com o primeiro componente <jarch-login>
- Adicionado configuração de I18N no jarch-vue

Alterações

Além das implementações descritas acima foram feitas algumas alterações:

- Ajuste na apresentação das tarefas no listTask, para ocupar menos espaços em tela
- Adicionado no JsfUtils o método getParameterRequest para receber o valor default
- Adicionado atributo totalize no @JArchColumnDataTable para que seja possível desabilitar a sumarização no relatório de lista
- Alterado o componente e:download para ter opção de passar o onclick e oncomplete
- Adicionado método setUserSystem() no UserInformation para setar o usuário quando for processamento automático (JOB, EJB, Servlet, etc..)
- Adicionado sobrecarga do método contains no WhereJpaql para aceitar o SingularAttributte
- Removido os métodos persist(), merge() e remove() do Manager para não induzir a chamada desses métodos que não estão usando os eventos do JARCH
- Ajuste na gravação do CRUD para listar quais detalhes ou subdetalhes não foram salvos e permanecer com os dados do detalhe ou subdetalhe visível
Correções

Além das alterações descritas acima esta versão contempla algumas correções:
- Correção no popup do relatório para que não duplique o dialog
- Correção no evento de verificação da exclusão de registro que estava criticando o relacionamento sendo que a entidade estava sendo apagado junto na mesma transação
- Correção no componente dialogSelect para filtrar quando estiver dentro de um hform

Conclusão

Essa versão contempla algumas melhorias e correções. É recomendável a atualização para essa nova versão.

Até mais,

terça-feira, 11 de fevereiro de 2020

Versão 20.1.0-Final

Introdução

Nesse post vou mostrar as principais novidades da versão 20.1.0, algumas correções e pequenas alterações.

Implementações

Segue abaixo as implementações dessa versão:

- Adicionado opção de colocar versão da aplicação no rodapé da aplicação através do bundle label.version
- Adicionado opção de oncomplete no e:commandLinkDownload

Alterações

Além das implementações descritas acima foram feitas algumas alterações:

- Alteração nos metodos somenteNumero, somenteLetraOuNumero, primeiraPalavra, ultimaPalavra se o parâmetro passado for NULL retornar NULL

Correções

Além das alterações descritas acima esta versão contempla algumas correções:
- Correção no filtro do Search para pesquisa pelo e:lookup
- Correção na API de parâmetros para tratar corretamente parâmetro por tenant
- Correção no e:lookup para saber retornar a entidade quando for definido um retorno do bean List no Search
- Correçãoo para que o código não seja incluido no filtro do lookup depois da pesquisa
- Correção na geração do excel para campos nulos

Conclusão

Essa versão contempla algumas melhorias e correções. É recomendável a atualização para essa nova versão.

Até mais,

terça-feira, 7 de janeiro de 2020

Versão 19.12.0-Final

Introdução

Nesse post vou mostrar as principais novidades da versão 19.12.0, algumas correções e pequenas alterações.

Implementações

Segue abaixo as implementações dessa versão:

- Implementacao de método para compactacao de varios arquivos dentro de um ZIP
- Adicionado atributo wordWrap no e:lookup e no e:divListDatatable para não quebrar a string dentro do datatable
-  Alteração no tamanho do dialog de e:lookup para mostrar como default o rodapé (aumento de 5px)

Alterações

Além das implementações descritas acima foram feitas algumas alterações:

- Removido o WARNING de MultiTenant não configurado

Correções

Além das alterações descritas acima esta versão contempla algumas correções:
- Ajuste na exportação do excel para sair com a data formatada no e:divListDataTable

Conclusão

Essa versão contempla algumas melhorias e correções. É recomendável a atualização para essa nova versão.

Até mais,

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