Você está na página 1de 8

liferay_

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.

om o grande crescimento de informaes e aplicaes na web, se faz necessrio a existncia de


um canal nico de acesso a dados de forma estruturada independentemente de tecnologia ou localizao. Assim funciona um portal.
Muitos portais oferecem e-mails, fruns, notcias, informaes e entretenimento como servio.
Alm disso, os portais geralmente apresentam uma
estrutura visual padronizada formada por um conjunto de componentes disponibilizados visualmente
como pequenas aplicaes. Na tecnologia Java essas
aplicaes so chamadas de portlets, em outras plataformas podem ser chamados de widgets, mashups,
plugins etc. Portlets so aplicaes baseadas em
componentes web que podem ser facilmente manipulados e exibidos em um portal, gerando contedo
dinmico.
Devido a grande quantidade de organizaes que
implantaram portais para hospedar suas aplicaes,
foram elaboradas especificaes com o intuito de padronizar o desenvolvimento dos portlets e buscar a
interoperabilidade entre os portais e portlets. Ento,
foi lanada em 2003 a primeira especificao: a Java
Specification Requests 168 (JSR-168). O principal

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

Antnio Jnior | antonio.junior@liferay.com


Graduando em Cincia da Computao pela Universidade Federal de Pernambuco e trabalha como engenheiro de suporte na
Liferay Brasil.

Sendo assim, toda a facilidade de uso associada


aos recursos disponveis por trs dos portlets fazem
com que estes sejam um grande aliado do usurio
para auxiliar no desenvolvimento das mais variadas
aplicaes.

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-

Figura 2. Exemplos de aplicaes do Liferay. Adicionando com


Drag and Drop.

me flexibilidade de instalao de novos plugins


e tem suporte a mais de 30 idiomas. Alm disso, o
Liferay d suporte a vrias linguagens de programao como PHP, Ruby, Python, Grails, entre outras.
Alm dos portlets, existem trs tipos de plugins que
podem ser desenvolvidos:
Temas responsveis pela aparncia das pginas e portlets.
Layouts indicam onde os portlets podem ser
posicionados numa pgina.
Hooks permitem a modificao do comportamento do portal.
Plugins ext A forma mais complexa de se
desenvolver um plugin, usada para customizaes avanadas. Deve ser usado apenas em
casos especiais em que nenhum dos outros
plugins possam substitu-lo, como, por exemplo, customizaes de Struts Actions internas
do portal.
O kit de desenvolvimento (SDK) do Liferay facilita muito o desenvolvimento de componentes para
o portal e pode ser usado em conjunto com qualquer
IDE. O SDK inclui geradores de cdigo e vrias tarefas Apache Ant (ferramenta utilizada para automatizar a construo de softwares) que auxiliam a
criao, compilao e distribuio dos plugins. Alm
do SDK, existe o Liferay IDE, um conjunto de plugins
para o Eclipse, que pode ser baixado gratuitamente.

Estratgias de desenvolvimento
Figura 1. Gerenciamento de Contedo do Liferay.

Existem, basicamente, trs formas de customizar e adicionar novas funcionalidades ao portal. O


que define qual dos mtodos o mais apropriado so
41 \

os requisitos da aplicao a ser desenvolvida.


Cada mtodo possui um nvel de intruso ao
cdigo-fonte do portal e podem influenciar nas atualizaes do Liferay para verses mais recentes. Por
isso, a depender do grau de intruso, essas atualizaes podem se tornar mais simples ou mais complexas.
As formas de desenvolvimento so:
Plugins O mtodo menos intrusivo. Com ele,
os plugins so desenvolvidos como aplicaes
independentes e distribudas em arquivos
WAR. Sendo assim, a forma mais comum e
mais recomendada de se desenvolver para o
Liferay.
Ambiente de extenso Por este mtodo, os
portlets que vm com a instalao padro do
Liferay e os arquivos .jsp podem ser totalmente modificados. Desta forma, as modificaes
ficam sempre separadas do cdigo-fonte do
portal e depois copiadas para o servidor de
aplicaes.
Modificao do cdigo-fonte Este o mtodo
mais intrusivo. Assim, o cdigo-fonte alterado diretamente. No recomendado faz-lo
quando se pretende atualizar o portal para releases posteriores.

de dados que vem por padro no Liferay.


deploy Nesta pasta so colocados os plugins
em que voc deseja adicionar ao portal. O Liferay monitora constantemente essa pasta verificando a existncia de novos plugins e, caso
exista algum novo plugin, ele ser instalado
automaticamente.
Tomcat-7.0.21 o prprio servidor web onde
o Liferay ser instalado.
Como dito anteriormente, por padro o Liferay j
vem pr-configurado. Porm, nada impede que sejam
feitas modificaes em suas configuraes. Para isso,
basta criarmos um arquivo de configurao especial
chamado portal-ext.properties no diretrio Home do
Liferay (onde esto as pastas data, deploy e o diretrio do web container), nele podero ser adicionadas
uma grande quantidade de opes de configurao,
que sobrescrevero as configuraes iniciais do portal.
Uma das configuraes mais comuns relativa ao
banco de dados. Por exemplo, ao invs de se usar o
HSQLDB, poderamos usar o banco de dados MySQL.
Para isso, bastaria simplesmente criar uma base de
dados e fazer o Liferay apontar para ela adicionando
alguns parmetros no nosso arquivo de configurao como na Listagem 1, modificando os valores do
nome do banco (lportal), usurio e senha pelas suas
prprias configuraes. Para os exemplos deste artigo
Baixando o Portal
Para este artigo, utilizaremos o Liferay 6.1 Beta no necessrio usar o MySQL, caso prefira usar o
3 Community (verso gratuita) que usa o servidor de HSQLDB, basta pular esta etapa e iniciar o Tomcat.
aplicaes Tomcat 7. Existe tambm a verso EntepriListagem 1. Exemplo de configurao do arquivo
se (verso comercial) que oferece patches peridicos,
portal-ext.properties.
suporte ao cliente, alm de correes que garantem
mais estabilidade e, consequentemente, uma melhor jdbc.default.driverClassName=com.mysql.jdbc.Driver
performance e segurana ao portal.
jdbc.default.url=jdbc:mysql://localhost/lportal?
O Liferay pode ser baixado do seu prprio site:
useUnicode=true&characterEncoding=
http://www.liferay.com/ na seo de downloads. NesUTF-8&useFastDateParsing=false
te mesmo site tambm podero ser encontrados do- jdbc.default.username=root
cumentao, frum de discusso e tutoriais sobre o jdbc.default.password=pass
portal.
Nota: neste artigo no iremos utilizar nenhuma
Com isso, ao inicializar o portal, as tabelas e daIDE de desenvolvimento, pois iremos trabalhar com dos necessrios para sua execuo sero automaticaos portlets j em produo. Porm se voc quiser de- mente criados.
senvolver seus prprios plugins, recomendamos que
Existem ainda opes relativas a e-mail, servidor,
utilize o Liferay IDE para facilitar seu trabalho, mas logs, segurana, idiomas, entre outros. Voc poder
voc tambm poder utilizar qualquer outra ferra- encontrar mais detalhes e opes de configurao no
menta de sua preferncia (eclipse, por exemplo).
prprio site do Liferay.

Configurando

O arquivo baixado da pgina do Liferay um portal j pr-configurado em um servidor de aplicao


(no caso, o Tomcat). Aps descompactar voc encontrar trs diretrios:
data Armazena dados do portal como os arquivos do portlet Document Library, imagens,
ndices do Lucene e dados do HSQLDB, banco Figura 3. Pgina inicial do Liferay.

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

Desenvolvendo aplicaes dinmicas


com DDL e DDM

Uma das features de destaque do Liferay 6.1 em


relao ao release anterior a presena de Dynamic
Data Lists (DDL). As DDLs foram desenvolvidas para
que usurio finais possam criar suas prprias aplicaes sem a necessidade de escrever uma linha de
cdigo.
Grande parte de aplicaes simples podem ser
inseridas em uma das seguintes categorias:
Aplicaes que criam uma lista de dados gerenciveis utilizando operaes CRUD (Create,
Retrieve, Update, Delete). Um exemplo deste
tipo de aplicao quando um formulrio de
cadastro disponibilizado para os usurios de
um website e uma lista on-line dos usurios cadastrados disponibilizada. Alm disso, ainda
pode-se ter funcionalidades administrativas
para atualizao e remoo de registros.
Semelhante primeira categoria, existe tambm aquelas aplicaes em que os dados precisam passar por um workflow, seguindo um
processo de aprovao. Neste caso, os dados
cadastrados precisariam ser aprovados por um
ou vrios nveis hierrquicos para que possam,
posteriormente, serem exibidos numa pgina.
E, por ltimo, pode-se agrupar dados de diferentes fontes. Aplicaes desta categoria podem usar dados dos usurios que preencheram
um formulrio simples e, ento, combin-los
com outros dados de um workflow ou de outros
sistemas.
As Dynamic Data Lists juntamente com o Kaleo
(engine de workflow da Liferay) do suporte para que
cada uma dessas aplicaes simples possam ser facilmente desenvolvidas. E atravs da interface grfica

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 \

Como dito anteriormente, uma aplicao simples


geralmente possui duas etapas: um formulrio de
cadastro e alguma forma de visualizao dos dados
cadastrados. Para cada uma dessas etapas, o DDM
trabalha com templates diferentes, so eles:
Detail Template template utilizado para o
formulrio de incluso de dados.
List Template template utilizado para a exibio dos dados persistidos.
Agora, mos obra.

Primeiro exemplo

No nosso exemplo, vamos criar uma aplicao


para cadastro de participantes num Evento Nacional
de Tecnologia. O primeiro passo , aps fazermos o
login como administrador, navegar at o portlet de
Dynamic Data List localizado no Painel de Controle.

Figura 6. Listas Default do DDL.

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.

Figura 4. Portlet do Dynamic Data List no Painel de Controle.

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.

Figura 7. Form Builder: criando um Dynamic Data Mapping.

Figura 5. Criando uma lista no Dynamic Data List.

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

Pronto, j temos nossa estrutura, e agora? Agora


vamos adicionar o formulrio a nossa pgina. Volte
para a pgina inicial do Liferay e, pelo menu Add localizado no canto superior esquerdo, localize o portlet
Dynamic Data List Display, e arraste-o para a pgina.
Agora que o portlet est na pgina, temos que
configur-lo. Clique no cone de configurao localizado na parte superior portlet e clique em Configuration. Na janela que se abre, voc dever selecionar
qual lista voc deseja usar, no nosso caso selecionamos a lista Cadastro.
Depois de salvo, voc poder ver uma mensagem
indicando que nenhum registro foi encontrado, pois
realmente nada foi inserido ainda.

Existe tambm na janela de configurao a opo Spreadsheet View. Essa opo, quando habilitada,
permite a visualizao dos dados num formato de
planilha.

Figura 8. Adicionando o DDL pgina.

Figura 11. Spreadsheet View.

Figura 9. Configurando o DDL Portlet.

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.

Figura 10. Formulrio de Cadastro.

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

Agora, vamos supor que queremos que um campo


do nosso formulrio (data de nascimento, por exemplo) seja desabilitado temporariamente. Uma opo
seria modificar nosso schema original, retirando esse
campo da estrutura. Porm, isso poderia acarretar
numa srie de efeitos colaterais, como afetar outras
listas que utilizam a estrutura e at mesmo a perda
de dados existentes.
Por isso, uma boa soluo seria o uso de Templates. Como visto anteriormente, com templates possvel limitar os campos da estrutura inicial que sero
exibidos no formulrio final de cadastro.
Vamos l, clique no boto Add Detail Template
no canto inferior esquerdo do portlet. Perceba que,
na pgina que se abre, so exibidos todos os campos
da nossa estrutura. Caso queiramos remover algum
campo, basta clicarmos no campo desejado e clicar
no X.

Figura 12. Criando um Detail Template.


45 \

No repositrio de plugins do Liferay existe um


portlet chamado Dynamic Data List Form. Esse portlet
usado para habilitar ao usurio o preenchimento do
formulrio sem a necessidade de visualizar a listagem
dos dados, como acontece com o Dynamic Data List
Display. Outra caracterstica importante nesse portlet
a opo de habilitar uma nica submisso ou mltiplas submisses por usurio, ou seja, permite ou no
a um usurio submeter o formulrio mais de uma vez.
Sendo assim, apenas usurios logados no portal conseguiro acessar o formulrio deste portlet. Um bom
exemplo de uso para esse portlet o de uma enquete
interna, onde apenas usurios cadastrados no portal
podem votar e, uma nica vez.

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

ser encontrada na wiki da Liferay procurando-se por


Access Objects from Velocity.
Nas linhas 2 e 3, usamos o servio invocado an<table>
teriormente
para pegar os registros das nossas listas,
#foreach($user in $userRecords)
onde
11907
e
11923 so os IDs das listas. Os IDs das
#set ($cpfUser = $user.getFieldValue(cpf))
listas podem ser encontrados no portlet do DDL lo#foreach($photo in $photoRecords)
calizado Painel de Controle. Por isso, como estamos
#set ($cpfPhoto = $photo.getFieldValue(cpf))
#if( $cpfPhoto == $cpfUser)
trabalhando diretamente com o ID das listas, no
<tr>
importa qual lista est configurada no portlet em
<td>
questo. Porm, se quisermos utilizar o ID da lista
<img src=$photo.getFieldValue(url) />
selecionada poderamos usar a varivel de contexto
</td>
$reserved_record_set_id.
<td>
Depois disso, percorremos todos os objetos das
<th valign=top>
nossas listas e fazemos algumas operaes para forNome: $user.getFieldValue(nome) <br/>
matarmos a exibio da nossa listagem. Note que
Email: $user.getFieldValue(email) <br/>
usamos o mtodo getFieldValue para acessarmos os
Cidade: $user.getFieldValue(local)
</th>
campos dos objetos. Lembra que mudamos a proprie</td>
dade Name de cada campo do nosso schema? Eis a a
</tr>
sua utilidade.
#end
No meu exemplo, adicionei mais dois campos na
#end
minha
estrutura: facebook e twitter que, caso o usu#end
rio preencha, um link ser habilitado. O resultado
</table>
est na figura 15.
O cdigo Velocity completo utilizado no exemplo
Na linha 1, invocamos o servio DDLRecordLocalSerpoder ser baixado do site da revista.
vice referente aos objetos do DDLRecord e colocamos
na varivel $ddlRecordService. Aqui, voc pode usar
qualquer interface do portal que herde de Persisted- Consideraes finais
Este artigo apresenta algumas caractersticas e
ModelLocalService.
formas
de desenvolvimento do portal Liferay. noAssim como o $serviceLocator, existem vrios
tria
a
facilidade
de se construir uma aplicao dioutros objetos auxiliares que podem ser usados no
nmica
utilizando
Dynamic Data Lists e Dynamic
contexto do velocity. Uma lista dessas variveis pode
Data Mapping. Esta, por ser uma das grandes funcionalidades da nova verso do Liferay, representa um
grande diferencial perante s outras opes de desenvolvimento devido a sua facilidade e flexibilidade
de uso. Alm de tudo, o Liferay conta ferramentas,
wiki, frum de discusses e uma grande quantidade
de documentao para auxiliar os desenvolvedores.

/referncias
> Pgina do Liferay liferay.com

Figura 14. Criando um List Template.

> Frum de discusses liferay.com/community/forums


> Wiki do Liferay liferay.com/community/wiki
> Pgina do apache ant ant.apache.org
> Repositrio oficial de plugins liferay.com/web/guest/
downloads/official_plugins
> Repositrio de plugins mantidos pela comunidade
liferay.com/web/guest/downloads/community_plugins
> Arquivos adicionais para download, como o plugins SDK
liferay.com/downloads/liferay-portal/additional-files
> Pgina do Velocity http://velocity.apache.org/
> Livro Oficial do Liferay Liferay in Action. The Official
Guide to Liferay Portal Development.

Figura 15. Listagem final.


47 \