Era isso galera!! Compartilhe, comente, tire suas dúvidas, divulge!! Crie seu projeto usando o jcompany e conheça mais essa poderosa Suite Jcompany!
Compartilhe esta idéia! O melhor Blog de JCompany do Brasil! Utilize os comentários também para tirar dúvidas e compartilhar com seus amigos!
quinta-feira, 24 de março de 2011
Tutorias jcompany
Era isso galera!! Compartilhe, comente, tire suas dúvidas, divulge!! Crie seu projeto usando o jcompany e conheça mais essa poderosa Suite Jcompany!
Tutorias em vídeo jcompany
Fonte: www.youtube.com e www.powerlogic.com.br
sexta-feira, 18 de março de 2011
Saindo do Forno: jCompany Developer Suite - jCompany Suite 6.0
jCompany Developer Suite - jCompany Suite 6.0 - previsto para 15/03/2011 |
[Java EE 6] Suporte à especificação Java EE 6, de modo compatível com App Server Java EE 5 Suporte às novas APIs Java EE 6 como CDI 1.0, JAX-RS 1.1, JAX-WS 2.1, Bean Validation 1.0, JSF 2.0 (Facelets incluido) e JPA 2.0 - exceto o Servlet 3.0 para permitir que aplicações ainda rodem em Tomcat 6.x, jBoss AS 5.x ou outros App Servers Java EE 5. |
[WEB 2.0] Prover arquitetura MVP com uso de SOFEA/SOUI e HTML5 (alternativa ao MVC) Criação de alternativa arquitetural ao padrão Java EE de 'camada visão no servidor' (JSF,Facelets, JSTL, JSP, Servlet, etc.), baseado em padrões conhecidos como SOFEA, SOUI ou Client-Server 2.0. |
[SOA] Segurança B2B Definir e implementar padrão de segurança entre serviços (server-to-server ou B2B),. Ex: propagação de credenciais, etc.. |
[RIA - Extremme] Implementação da segurança e conforto visual integrados B2C Implementar seguranca em nivel de menu, componentes de leiaute (tab-folder, widget em geral) e campos (salario) |
[RIA - Extremme] Evoluções na utilização da paleta homologada Expansão dos Widgets padronizados e utilizados como padrão no jCompany |
[jCompany Profiles] Grupos tecnológicos homologados Tal como no Java EE 6, ao determinarmos clara e formalmente as combinações de tecnologia que utilizamos para testar e homologar o jCompany, concentramos nossos esforços para atender melhor em combinações mais comuns, tanto no suporte quanto no desenvolvimento |
jCompany Developer Suite - jCompany Suite 6.1 - previsto para 31/08/2011 |
Compatibilização com aplicações desenvolvidas na 5.5. Compatibilidade de aplicações JSF/JSP e JSF/Facelets desenvolvidas na 5.5.x ou anteriores, com novidades introduzidas na versão 6.x |
[SOA] Evolução nas soluções de SOA envolvendo padrões SCA, SDO, etc.. Aprimorar a extensão do ferramental SOA, introduzindo possivelmente mais componentes úteis à paleta de Web-Services, REST, RIA e BPM |
[Rules] Integração com jBoss Rules [Rules] Integração com jBoss Rules |
terça-feira, 15 de março de 2011
Tutorial criando relatórios com Jasper Reports para aplicações Jcompany
Tutorial Integrando Google Analitics com Jcompany
eBook - Tirando o Máximo do Java EE 5 com jCompany Developer Suite
quinta-feira, 10 de março de 2011
Framework Tiles no Jcompany
O jCompany traz uma classe ancestral comum, chamada PlcBaseTilesController que implementa a interface Controller do framework Tiles, e diversos descendentes que atuam como controladores mais específicos de determinados leiautes ou componentes visuais.
PlcTreeController e PlcTreeViewController: com lógicas genéricas para manipulação de treeview, em componentes que herdam leiaute de “def.componente.treeview.ancestral”.
PlcTabController e PlcTabAutomaticoController: com lógicas genéricas para componentes de tab-folder.
Uso Avançado do serviço de fonetização - Questão de prova!
Além dos casos onde o jCompany faz o tratamento automático é possível utilizar o serviço de fonetização registrado em qualquer lógica de negocio da camada de modelo através do localizador PlcModeloLocator.
PlcModeloLocator.getInstance().get(IPlcPhoneticService.class);
Para os casos onde se deseja utilizar o serviço de fonetização na camada controle, pode-se utilizar o método fonetiza da Facade.
IPlcFacade facade = PlcControleLocator.getInstance().getFacadePadrao();
valorAtributo = facade.fonetiza(valorAtributo.toString());
Named Query - Questão da prova de certificação!
As NamedQuery são serviços oferecidos pela camada de persistência para que a camada modelo possa recuperar objetos específicos, que satisfação um conjunto pré-determinado de critérios.
NamedQuery são annotations que devem ser declaradas na classe concreta (Entity/VO) e possuem como atributos necessário o nome e o código HQL com os critério da consulta.
No caso do relatório JASPER o nome da NameQuery deve ser “QuerySelRelEscalar” e o HQL deve ser Escalar.
Criando Itens de Menu no JCompany
Para criar uma entrada de menu, devemos editar o arquivo “app-tiles-menu1.xml” da aplicação.
Deve-se manter o nome da chave de internacionalização com padrão “def.menu.[aliasCasoUso].titulo”. O rótulo também deve ser criado no arquivo “ApplicationResources.properties”.
Repositório Maven - Questão de Prova!
O Apache Maven é a principal ferramenta de gerenciamento de configuração e também de automação dos processos de compilação, construção e liberação, utilizada pelo jCompany Configuration Management.
O Maven deve ser utilizado pela empresa para um controle refinado de versões, gerenciando bibliotecas de componentes específicos e reutilizáveis por cada aplicação. É também utilizado em maior extensão pelo jCompany QA Suite, que possui especializações em plugins Maven para a área de controle de qualidade. Veremos um pouco mais sobre Maven quando formos compreender a estrutura padrão dos pacotes (packages) que compõem as aplicações e rotinas de liberação – vamos, por enquanto, apenas entender a estrutura básica de seu repositório.
O repositório Maven contém todos os componentes homologados para utilização em projetos jCompany, em diferentes momentos: Componentes para uso em “tempo de compilação” apenas. Neste caso, os componentes não precisam ser montados no executável da aplicação (não compõem o executável da aplicação), mas apenas referenciados pelo Class Path dos projetos do Eclipse. Normalmente, é o caso das APIs Java EE (javaee-5.jar, mail.jar, servlet.jar, etc.) ou clientes JMS (jboss*.jar), que já existem ou devem ser montados diretamente no Application Server.
Hibernate Console - Questão de Prova!
Hibernate Console permite a configuração de uma fábrica Hibernate local, para testes e codificação assistida de HQL. Verifica também a sintaxe dos HQLs embutidos em códigos Java, dentre outros recursos.
Ajuda On-Line JCompany integrada no Eclipse
Pessoal, aprender a utilizar bem a Ajuda On-Line é como “aprender a pescar” conhecimentos. Uma das formas de configurar a Ajuda On-line para nos permitir uma busca textual restrita à metodologia e base de conhecimento do jCompany, e fazendo uma pesquisa-modelo:
É muito simples, e vai ajudar a tirar as dúvidas dentro do Eclipse!
1. Acionar o menu “Help -> Help Contents”
2. Na página principal do Help On-Line, clicar em “Search Scope”. No diálogo “New Search List”, digitar “Powerlogic” em “List name” e selecionar o tópico “Powerlogic jCompany” na lista.
Validações invariáveis Nativas do Hibernate
Anotação | Objetivo | Exemplo |
@NotNull | O campo deve ser informado. Obs: considera “” (String vazio) como informado! | @NotNull private String nome; |
@Length(min=, max=) | O valor do campo String deve ter comprimento no intervalo | @Length(min=3,max=30) private String nome; |
@Max(value=) | O valor do campo Numérico (ou String representando números) deve ser menor ou igual ao informado. | @Max(value=100) private Integer percent; |
@Min(value=) | O valor do campo Numérico (ou String representando números) deve ser maior ou igual ao informado. | @Min(value=0) private Integer percent; |
@Past | O valor do campo Data deve ser uma data no passado | @Past private Date dataNasc; |
@Future | O valor do campo Data deve ser uma data no futuro | @Future private Date dataPrevista; |
@Pattern(regex="regexp", flag=) | O valor do campo String deve seguir a expressão regular. | @Pattern(regex="^\\d{5}(-\\d{3})?$") private String cep; |
@Range(min=, max=) | O valor do campo Numérico (ou String representando números) deve estar no intervalo informado. | @Range(min=0,Max=100) private Integer percent; |
@Size(min=, max=) | O número de itens do campo Coleção deve estar no intervalo informado. | @Size(min=1,Max=5) private Set dependente; |
@AssertFalse | Verifica se o método anotado retorna false. Para regras de entrada procedimentais que devem dar falso | @AssertFalse public boolean validaLimiteProibido() { (...) } |
@AssertTrue | Verifica se o método anotado retorna true. Para regras de entrada procedimentais que devem dar verdadeiro. | @AssertTrue public boolean validaLimitePermitido() { (...) } |
@Valid | Propaga a validação para Detalhes ou Componentes | @Valid private Set dependente; |
@Email | Se o email segue formato válido | @Email private String email; |
Questão da prova de certificação
Anotação | Objetivo | Exemplo |
@PlcObrigatorio | O campo deve ser informado. Obs: Melhora o NotNull do Hibernate porque considera “” (String vazio) ou espaços como não informado, no caso de campo String! | @PlcObrigatorio private String nome; |
@PlcCnpj | Valida o campo String com um CNPJ válido (*) | @PlcCnpj private String cnpj; |
@PlcCpf | Valida o campo String com um CPF válido (*) | @PlcCpf private String cpf; |
@PlcMascara( regex="regexp") | Igual ao Pattern, porém revisa a mensagem padrão, que no primeiro caso exibe a expressão regular para usuários finais, e permite um exemplo mais simples para este fim. | @PlcMascara(regex= "^\\d{5}(-\\d{3})?$", messageExemploFormatado= "99999-999") private String cep; |
@PlcTamanhoExato(tam=) | Mais apropriada que o Range ou Min/Max, quando o tamanho do campo deve ser exatamente de um valor determinado, por dar mensagem mais apropriada. | @PlcTamanhoExato(tam=2) private String uf; |
@PlcDominioCondicional | Permite validação entre campos, com diversas opções de operadores Declarada em nível da classe. (**) | @PlcDominioCondicional( valorPropA="numeroMinimo", operador=Operador.MENOR_OU_IGUAL, valorPropB="numeroMaximo", message="{rh.msg.min.maior}") public class FaixaValor { (…) } |
@PlcObrigatorioCondicional | Permite validação de obrigatoriedade com dependência entre campos. Declarada em nível da classe. (**) | @PlcObrigatorioCondicional( se=Se.INFORMOU_QUALQUER, propA="rua", entao=Entao.INFORMAR_QUALQUER_EM, propB="numero") public class Funcionario { (…) } |
@PlcMultiplicidade | Permite a validação de número mínimo e máximo de detalhes e sub-detalhes. O uso do Size da Hibernate é inviável, porque considera linhas em branco e não contabiliza linhas marcadas para exclusão (***) | @PlcMultiplicidade(min=1,max=3, message="{jcompany.aplicacao.mestredetalhe. multiplicidade.HistoricoProfissionalVO}") private Set |
sexta-feira, 4 de março de 2011
Inversão de Controle no jCompany - Após Autenticação (Lógicas de Profiling)
O jCompany traz a classe abstrata PlcBaseUsuarioPerfilService, que deve ser especializada para tratamentos de perfil de usuário, ‘após a autenticação’.
A classe PlcRequestProcessor (Struts) ou PlcPhaseListener (JSF), testam se a sessão está recém autenticada (usuário fez login mas seu perfil ainda não está na sessão) e, em caso positivo, chama uma implementação concreta da classe PlcBaseUsuarioPerfilService, que deve encapsular lógicas de “user profiling”, ou seja, de registro de perfil de usuários na sessão HTTP.
Nota: Uma sessão HTTP é iniciada antes que o usuário seja autenticado, e pode inclusive existir e se encerrar sem que haja autenticação (sessão para usuários anônimos). O evento “aoInicializarSessao”, portanto, não é adequado para a implementação de lógicas de perfil de usuários. Estas lógicas devem ser feitas uma única vez após o login, tipicamente para recuperação e registro, em registrar dados em caching de sessão, contendo informações do usuário recém autenticado.
Após a autenticação, o jCompany:
- Faz um registro de auditoria do tipo “autenticação do usuário X” usando JMS
- Faz um registro de estatística “num. de logins do usuário X” usando JMS
- Logging
- Altera o timeout para usuários autenticados, se declarado no web.xml
- Cria um VO que contém informações do login (por default, contendo somente o login em si), que será enviado em todas as requisições para a camada modelo via DP Context Object)
- Chama método/evento abstrato “registraPerfilEspecifico”
Caracteristicas da Suite JCompany
Automação indireta (Ferramentas): Quando não é possível “robotizar”, a provisão de ferramentas apropriadas pode maximizar o trabalho humano. Em software, como em qualquer processo industrial, ferramentas de apoio para geração de artefatos, construção e liberação de executáveis, edições, etc.., automatizam tarefas intermediárias, acelerando a codificação manual de programas. É a área de atuação do jCompany IDE.
Orientação: Quando o trabalho é meramente intelectual, e mesmo o uso de ferramentas arrojadas não proveja ganhos significativos, a orientação na forma de repasse de experiências e padrões históricos de solução (best-practices) é a forma de se maximizar resultados. Em software, como em qualquer processo industrial, a definição de “padrões de solução” para problemas freqüentes, documentação extensiva e roteiros “passo a passo” ativos e inteligentes, podem orientar os profissionais decisivamente, na codificação manual de programas. É a área de atuação do jCompany Patterns e Methods.
Conferência (Controle de Qualidade): A “dupla checagem” da qualidade dos produtos intermediários de um processo evita desperdício e inclusive a liberação de resultados indesejáveis ao mercado. Em software, a codificação de Testes de Unidade funciona como uma área de controle de qualidade que permeia o processo, garantindo continuamente que a codificação manual de segmentos de programas esteja em conformidade. É a área de atuação do jCompany Test for Developer.
Infra-Estrutura (Manutenção e Preservação): Um ambiente de produção que envolva tecnologia nos vários âmbitos citados, necessitará de uma contínua monitoria para garantir a “lubrificação”, “fluidez” e “estabilidade” da bancada tecnológica utilizada. Em software, como em qualquer ambiente de produção industrial, para evitar quedas de
rendimento, a infra-estrutura de suporte tecnológico ao processo precisa se manter estável e integra, ao longo do tempo. É a área de atuação do jCompany Configuration Management.