Open the menu

    Modulos

    Módulos são partes de uma aplicação instaláveis, ou até mesmo de uma aplicação completa, que podem conter:

    • Serviços
    • Temas
    • Contextos de negócio
    • Eventos de monitoramento
    • Componentes
    • Classes Java
    • Entidades Hibernate
    • RESTful Web Services (JAX-RS)
    • Bibliotecas internas
    • Workflow

    Serviços

    Um módulo pode possuir serviços que serão disponibilizados pelo portal enquanto o módulo estiver disponível. Os serviços podem estar localizados em qualquer local do módulo.

    Temas

    Um módulo pode possuir temas que serão disponibilizados pelo portal enquanto o módulo estiver disponível. Os temas podem estar localizados em qualquer local do módulo.

    Contextos de negócio

    Um módulo pode possuir contextos de negócio que serão disponibilizados pelo portal enquanto o módulo estiver disponível. Os contextos de negócio podem estar localizados em qualquer local do módulo.

    Eventos de monitoramento

    Um módulo pode possuir eventos de monitoramento que serão utilizados pelo portal enquanto o módulo estiver disponível. Os eventos de monitoramento podem estar localizados em qualquer local do módulo com exceção da raiz.

    Classes Java

    Quando uma classe Java é disponibilizada ela fica disponível através do class loaderdo portal. Não é recomendado uma classe Java disponibilizada em um módulo utilizar-se de uma classe Java disponibilizada em outro módulo. Caso o faça, a classe que referencia a outra só poderia fazê-lo utilizando reflection, o que tornaria impraticável essa situação.

    Entidades Hibernate

    As entidades Hibernate presentes no módulo sendo instalado serão, por padrão, automaticamente registradas e estarão prontas para uso na EntityManagerFactory padrão, uma vez que o módulo tenha sido instalado. Caso haja a necessidade de alterar em qual EntityManagerFactory a entidade será disponibilizada ou caso a entidade não possa ser disponibilizada automaticamente, basta anotar a classe com a anotação lumis.portal.dao.jpa.PortalEntity.

    RESTful Web Services (JAX-RS)

    Classes Java presentes no módulo contendo anotações @Path ou @Provider do JAX-RS serão processadas e incluídas no motor de execução REST da aplicação do portal. Abaixo há um exemplo de uma classe que disponibiliza operações RESTful, tal que quando acessado "<URL base do portal>/hello/text" retorna um texto, e quando acessado "<URL base do portal>/hello/bean" retorna um objeto convertido para XML ou JSON conforme a preferência indicada pelo cabeçalho da requisição. Para maiores informações sobre como implementar um RESTful Web Service utilizando JAX-RS, consulte a documentação de JAX-RS.

    Afim de facilitar o desenvolvimento, nas chamadas REST, que são normalmente dinâmicas, o LumisXP por padrão inclui o cabeçalho de resposta "Cache-Control" com valor private, no-cache, no-store, no-transform. Isto pode ser alterado usando a anotação lumis.portal.rest.util.CacheControl ou explicitando outro valor para esse cabeçalho na resposta.

    Para possíveis soluções de problemas, veja essa página.

    Disponibilidade dos recursos de um módulo

    Os recursos de um módulo são mantidos enquanto o mesmo existe no portal. O portal efetuará as alterações dos recursos adequadamente quando há alterações (incluções, atualizações e excluções) de módulos.

    Definição do módulo

    O módulo deve conter um arquivo de definição que contém informações gerais sobre o módulo, como por exemplo seu identificador. Veja mais sobre o identificador em Definição de Módulo.

    Bibliotecas internas

    Cada módulo do LumisXP pode conter, opcionalmente, arquivos .jar de bibliotecas necessárias para o correto funcionamento do mesmo.
    Esses arquivos devem estar localizados dentro do módulo, na pasta META-INF/lib.

    Por exemplo, caso se deseje utilizar a biblioteca Apache Commons Math em um módulo, basta adicionar seu arquivo .jar na pasta META-INF/lib do módulo, como na figura a seguir.

    Exemplo de biblioteca interna
    Exemplo de biblioteca interna

    Workflow

    Um módulo pode possuir workflows que serão disponibilizados pelo portal enquanto o módulo estiver disponível. Os workflows podem estar localizados em qualquer local do módulo.

    Classloaders de módulos

    Para entender como os módulos constituem classloaders, veja a página Classloader do portal.