Professional Documents
Culture Documents
Portal Liferay
Construindo aplicaes dinmicas
com apenas alguns cliques.
Neste artigo apresentaremos algumas caractersticas e funcionalidades dessa poderosa plataforma para criao de portais. Logo
depois, abordaremos algumas ferramentas que podem nos auxiliar
no desenvolvimento das nossas aplicaes, assim como as estratgias de desenvolvimento do Liferay. A partir da, vamos entender o
que so as Dynamic Data Lists e Dynamic Data Mapping e aprenderemos a utiliz-las para criarmos uma aplicao dinmica com
operaes CRUD de forma bem simples, com apenas alguns cliques.
E, finalmente, criaremos uma lista personalizada para a exibio
dos dados da nossa aplicao.
/ 40
benefcio da padronizao foi simplificar o desenvolvimento de portlets alm de possibilitar que desenvolvedores possam criar seus prprios componentes
que rodem em qualquer servidor de portal J2EE.
Devido a algumas lacunas que ficaram da JSR168 e da evoluo do JDK com a introduo de Generics e Annotations, por exemplo, foi aprovada em
2008 a JSR-286. Por essa nova especificao, os portlets so vistos como aplicaes integradas ao portal
e no uma coleo de pequenas janelas independentes. Algumas novidades dessa nova especificao foram o suporte a eventos, permitindo que os portlets
se comuniquem, alm da capacidade de compartilhar ou no parmetros de requisies. Vale lembrar
que essa nova especificao teve como objetivo manter a compatibilidade com a primeira JSR. Portlets
possuem muitas semelhanas com Servlets, se voc
j tem experincia no desenvolvimento de Servlets,
no encontrar muitas dificuldades com Portlets.
O Liferay e seus portlets so aderentes a essas
especificaes. Eles tambm podem disponibilizar
seus servios remotamente atravs de web services
especificados por outra especificao, a WSRP (Web
Services for Remote Portlets).
O Portal Liferay
Portais geralmente so definidos como uma plataforma para desenvolvimento de websites e aplicaes web. Os portais mais modernos, adicionaram
muitas caractersticas ao seu core, fazendo-os uma
das melhores opes para o desenvolvimento de
aplicaes web. O Liferay um deles. Alguns usos
comuns para um portal incluem: apresentao de
pginas com contedo especfico dependendo das
permisses do usurio logado (CMS), integrao de
aplicaes legadas e criao de ambientes colaborativos que permitam o compartilhamento de contedo entre usurios.
O Liferay lder no mercado mundial de portais
open-source Java, sendo um dos portais mais utilizados em corporaes. Mais do que um portal, o Liferay uma plataforma para criao de aplicaes
web. Por padro, na sua instalao, j esto disponveis diversos componentes e aplicaes integrados
ao sistema de gerenciamento de usurios e de permisso, como frum, wiki, gerenciador de arquivos,
blogs, redes sociais, integrao com redes sociais j
existentes, entre outros.
O Liferay suporta os principais servidores de
aplicao, bancos de dados e sistemas operacionais,
sendo possvel utilizar a infraestrutura existente,
sem gastos adicionais. Alm disso, foi desenvolvido sobre uma arquitetura que permite uma enor-
Estratgias de desenvolvimento
Figura 1. Gerenciamento de Contedo do Liferay.
Configurando
/ 42
Start!
Para iniciar o portal basta executar o script startup.bat (Windows) ou startup.sh (Linux / Mac / Unix)
localizado na pasta bin dentro do diretrio do Tomcat. necessrio, tambm, verificar se o usurio possui permisso para executar o arquivo.
Quando o portal completar sua inicializao, o
browser dever abrir automaticamente sua pgina
inicial. Caso isso no acontea, abra seu browser e
navegue at o endereo http://localhost:8080.
Agora que o Liferay est iniciado podemos fazer
o login como administrador. Por padro o login do
administrador test@liferay.com e a senha test.
Como administrador, temos acesso aos demais modos dos portlets e edio do seu contedo, alm da
possibilidade de configurao do layout da pgina.
Em nosso caso, usaremos o portlet Dynamic Data
List localizado no menu do administrador no Painel
de Controle para desenvolvermos nossa aplicao.
do form builder (ferramenta integrada ao DDL) o usurio poder construir formulrios com os campos desejados. Tambm possvel estruturar o fluxo de um
formulrio para que ele seja preenchido em etapas,
podendo dividi-lo em vrias pginas. Essa propriedade pode ser bem til quando os formulrios so muito
extensos.
Na prtica, estes formulrios so definidos em
objetos dinmicos altamente flexveis numa estrutura semelhante a tabelas de bancos de dados. Depois
de definida a estrutura da entidade dinmica, ela
convertida em um schema ou Data Definition Mapping
(DDM). O DDM, na verdade, nada mais do que um
XML contendo o mapeamento entre os campos do
formulrio e a definio dos dados no banco de dados
de acordo com os data types previamente definidos.
Alm disso, com o DDL tambm possvel exibir
os dados persistidos em forma de tabelas HTML, planilhas ou de forma totalmente personalizada.
Apesar de o plugin do Kaleo (Kaleo Web) ser
grtis e de cdigo-aberto (disponvel no repositrio
de plugins do Liferay), os plugins necessrios para a
integrao entre o workflow engine do Kaleo (Kaleo
Designer e Kaleo Forms) e o DDL de acesso restrito
aos clientes Enterprise da Liferay. Vale lembrar que
tanto o DDL e o DDM quanto o Kaleo Designer e o Kaleo Forms necessitam do Kaleo Web para seu perfeito
funcionamento.
Para o nosso exemplo, como no criaremos nenhuma estrutura de workflow, precisaremos apenas
do plugin Kaleo Web.
Por isso, devido a integrao entre o DDL e o Kaleo possvel:
Eliminar a necessidade de desenvolvimento de
cdigo para aplicaes que precisam de operaes CRUD.
Construir um workflow por meio de um editor
grfico (Kaleo Design).
Habilitar aes em cada estgio do workflow,
como notificaes por e-mail ou o envio de
mensagens SMS.
Templates
Um Data Definition Mapping, por ser bastante flexvel, pode ser exibido de vrias formas. Essa customizao pode ser realizada com o intuito de se exibir
apenas alguns campos de um schema ou at mesmo
para separar o seu preenchimento em diferentes pginas, como etapas de um workflow. Essas customizaes so feitas atravs dos templates. Os templates,
como o prprio nome j diz, so os modelos de dados
a serem exibidos para o usurio. Em outras palavras,
voc utiliza o DDM para desenvolver a estrutura e os
metadados de sua aplicao e utiliza os templates
para limitar o escopo ou definir como os campos sero visualizados.
43 \
Primeiro exemplo
mos alterar, por exemplo, o texto do label do campo, seu tamanho ou at mesmo se o campo ser de
preenchimento obrigatrio ou no. Uma boa prtica
sempre alterarmos a propriedade Name para um valor mais amigvel. Veremos posteriormente que isso
ser muito til para quando formos desenvolver nossos templates. No meu exemplo coloquei os campos
de Nome (Text), e-mail (Text), Estado (Select), CPF
(Text), Data de Nascimento (Date) e Sexo (Radio).
interessante colocarmos um campo para o CPF, pois
esse campo funcionar como identificao do participante, alm disso ele deve ser obrigatrio.
Depois da estrutura salva, basta apenas adicion-la lista e salv-la.
Agora, vamos adicionar uma nova lista (instncia de um Data Definition Mapping).
Nesse passo, depois de darmos o nome de Cadastro
nossa lista e uma descrio, voc ter que adicionar
um novo schema (Data Definition) ou selecionar um
j existente.
Por padro, o Liferay j traz quatro schemas prontos para uso: To Do, Issues, Meeting Minutes e Contacts, que tambm podem ser modificados.
Vamos criar, portanto, o nosso prprio schema
clicando em Add. No form builder, podemos encontrar
alguns campos de dados que podero ser arrastados
at o centro para construir a estrutura do schema.
Aps colocarmos os campos da nossa definio
poderemos customizar suas propriedades clicando na
aba Settings do lado esquerdo do form builder. Pode/ 44
Existe tambm na janela de configurao a opo Spreadsheet View. Essa opo, quando habilitada,
permite a visualizao dos dados num formato de
planilha.
E como inserimos novos dados? Pois bem, na janela de configurao existe uma opo chamada Editable. Quando essa opo est habilitada, inserido
um boto no portlet que permite a visualizao do
formulrio de cadastro. Assim, depois que realizamos
o cadastro de um usurio, vemos na pgina principal
do nosso portlet uma listagem com os registros adicionados.
Para o nosso exemplo, adicionamos a nossa lista pelo portlet do Painel de Controle e os registros
pelo portlet da pgina. Porm, perfeitamente possvel realizar qualquer uma das operaes por ambos
os portlets, essa caracterstica oferece mais flexibilidade e agilidade para o usurio. Alm disso, tambm
possvel instanciar o Dynamic Portlet Display em
qualquer pgina, quantas vezes forem necessrias.
Detail Template
definidos no cdigo Java sem precisarmos fazer qualquer tipo de configurao ou deploy da aplicao. Geralmente o Velocity usado por web designers, pois
assim se torna possvel trabalhar em paralelo com os
programadores, separando totalmente suas responsabilidades de acordo com o padro MVC (Model-View-Controller). Mais detalhes podem ser encontrados no prprio site do projeto: http://velocity.
apache.org/.
Para o nosso exemplo, vamos criar outro DDM.
Dessa vez, com uma estrutura mais simples, apenas
com dois campos: CPF e URL (lembrando de alterar a
propriedade Name de cada campo). Nessa nova lista
iremos incluir as fotos dos participantes cadastrados. A ideia podermos interligar nossas duas listas
por uma nica listagem, relacionando-as atravs do
CPF do participante. Vale lembrar que no form builder existe o campo do tipo File Upload, onde poderamos enviar a foto junto com os outros dados do
participante, porm para fins de exemplo no iremos
utiliz-lo.
Vamos adicionar, ento, mais duas instncias
do portlet Dynamic Data List Display nossa pgina:
uma reservada para o cadastro das fotos e outra para
exibir nossa listagem personalizada.
Perceba tambm que, antes de o campo ser removido, a opo para adicionar outra instncia do mesmo campo est desabilitada. Porm, quando o campo
removido essa opo reabilitada. Isso acontece
por no ser permitido adicionar mais de uma instncia do mesmo campo ao formulrio.
Depois de salvo, o Detail Template automaticamente aplicado e, tanto o formulrio de cadastro
quanto a listagem de registros ocultaram o campo
removido. Assim, o campo ocultado ser salvo com o
valor padro.
E, caso esse template no seja mais necessrio,
basta selecionar outro template (o Default, por exemplo) nas configuraes do portlet.
Porm, mesmo que no seja necessrio ocultar
nenhum campo da sua estrutura, o Detail Template Figura 13. Pgina com trs instncias do DDL.
tambm seria til para adicionar textos (como na fiDepois de alguns registros adicionados de fotos e
gura 12), separadores ou fieldsets ao seu formulrio.
ao de participantes, vamos ao nosso List Template. No
portlet onde ele ser adicionado, podemos escolher
List Template
qualquer lista nas configuraes (mais adiante verePor padro, o Dynamic Data List usa um compo- mos o porqu) e depois clicamos em Add List Templanente do Liferay chamado de Search Container para a te. Na pgina que se abre, temos a opo para seleexibio dos dados persistidos. A grande maioria dos cionarmos o Language Type, usaremos o VM (formato
portlets do portal tambm utiliza esse componente dos arquivos Velocity).
para listagem de seus dados.
Existe tambm a opo de usar o Launch Editor,
E se quisssemos mudar a forma como nossos porm altamente recomendado usarmos um editor
dados persistidos so apresentados? Tambm usar- de texto de sua preferncia para codificar o template
amos templates! Mas para a listagem de dados usare- e, depois, fazer o upload do seu script .vm. O script
mos List Templates.
est na Listagem 2.
Agora, porm, teremos que usar nossas habilidades de programao. Os List Templates so desenvol- Listagem 2. Velocity para o Detail Template.
vidos com o auxlio de linguagens de templates. As #set ($ddlRecordService = $serviceLocator.
linguagens de templates suportadas pelo Liferay so findService(com.liferay.portlet.dynamicdatalists.service.
o Freemarker Template Language (FTL) e o Velocity DDLRecordLocalService))
Template Language (VTL), para o nosso exemplo usa- #set ($userRecords = $ddlRecordService.
getRecords(11907))
remos o Velocity.
Velocity um projeto open-source desenvolvido #set ($photoRecords = $ddlRecordService.
pela Apache. Com ele podemos referenciar mtodos getRecords(11923))
/ 46
/referncias
> Pgina do Liferay liferay.com