Upload
elliando-dias
View
495
Download
1
Tags:
Embed Size (px)
Citation preview
Portlets: Let them make your virtual world!
Portlets: Let them make your virtual world!
Fabiano Cruz Coordenador NEC / Java User Group – Petrópolis
Marcelo Mayworm Coordenador NEC / Java User Group – Petrópolis
Portlets: Let them make your virtual world!
Agenda
• Gerenciamento de informação• Framework Jetspeed
– Overview– Instalação e configuração
• Porlets API• Study Case
Portlets: Let them make your virtual world!
Proposta
• Pesquisa e desenvolvimento de soluçõespara a integração e gerenciamento deinformação, baseada em projetos OpenSource e seguindo o conceito Web based
• Pesquisa e desenvolvimento de novasfeatures para o Framework Jetspeed
• Contribuições para a Apache SoftwareFoundation
• Publicações periódicas
Portlets: Let them make your virtual world!
Gestão do Conhecimento
• Durante as primeiras décadas da Informáticaa ênfase foi em gerenciar dados
• Estruturas de dados, arquiteturas de dados,bancos de dados, data warehouses, e assimpor diante
• Transformar os dados transacionais emconhecimento e inteligência para suportar astomadas de decisões
• O fluxo de informações integrado aumentouvertiginosamente, proporcionando umadifusão de conhecimento
Portlets: Let them make your virtual world!
As mudanças
• Prover informações organizadas– Visão liner versus visão holística
• Obter meios efetivos de uma empresa serelacionar com seus fornecedores e clientes– ERP(Enterprise Resource Planning)– CRM(Customer Relationship Management)– KM(Knowledge Management)– SCM(Supply Chain Management)
• Data Mining, junto às demaisfuncionalidades do ERP transforma dadosem informações relevantes
Portlets: Let them make your virtual world!
Integração Web based
• Tecnologias Web based para suportar astransações desse novo ambiente– Applications Service Provider (ASPs)– Dificuldade de customizar(os processos se adequam
a empresa)• Com a expansão da Internet e das intranets
corporativas, a distinção entre os sistemas de “backoffice” e “front office” tem sido cada vez mais tênue
• Rede Integrada de valor– O bem mais valioso para o sucesso é a informação– Empresas estarão conectadas diretamente uma a
uma• Integrando a partir de Web based
Portlets: Let them make your virtual world!
### ????? ###
• Mas o que nos falta?– Integrar sistemas tecnológicos num único
ponto de acesso
Portlets: Let them make your virtual world!
O que é um Portal ?
• Funções típicas:– Registro de usuário– Autenticação e autorização– Componentes de gerenciamento de dados:
• Portlets– Personalização baseada em profiles/behavior– Customização de páginas por usuários– Busca– Gerenciamento de conteúdo
Portlets: Let them make your virtual world!
Exemplo:
Portlets: Let them make your virtual world!
JetSpeed | Visão Geral
• Um Framework da Apache SoftwareFoundation
• O principal projeto Open Source de umPortal Server
• Usa o Portal Structure Markup Languagepara definir o page layout, contents,decorations, etc– Jetspeed prove uma ferramenta de
customização / administração para serutilizada durante o carregamento da página
• Usa XML para definir serviços
Portlets: Let them make your virtual world!
Portal | Topologia
Portlets: Let them make your virtual world!
JetSpeed | Arquitetura
• Dentro do Jetspeed, o Framework Turbine éresponsável por gerenciar a autenticaçãodos usuários e as suas configuração delayout de página.
• Portlets podem interagir com os serviços doTurbine através do RunData object.
• Uso de templates– JSP, Velocity etc
Portlets: Let them make your virtual world!
JetSpeed | Page Layout
• Pense nos portlets como componentesativos que mostram dados dentro de umapágina HTML. A figura ilustra os portletsdentro da página de um
portal. São exibidos três portlets
Portlets: Let them make your virtual world!
Jetspeed | Screen/Page
• Essa figura mostra a anatomia da páginacontendo os portlets. Dentro dessa página, oconteúdo do portlet é gerenciado peloPortletControl e PortletController.
Portlets: Let them make your virtual world!
Jetspeed | Screen/Page
• PortletControl– Dentro da página do Portlet, gerencia o título
e corpo do Portlet• PortletController
– Gerencia múltiplos portletControl (cada umgerenciando seu portlet), provendo umapágina de entrada de informações para osportlets
Portlets: Let them make your virtual world!
Jetspeed | Portlets Goals
• Possuem pequenas web applications para ousuário
• "skin“: essas web applications possibilitamao usuário definir background color, title barcolor, icons, etc
• Gerenciamento de performace entremúltiplos portlets através da utilização decache
• Facilmente customizado pelo usuário
Portlets: Let them make your virtual world!
Jetspeed | Portlets Goals
• Facilmente desenvolvidos e não requeremque o desenvolvedor conheça os detalhesda implementação da Engine JetSpeed
• Facilmente desenvolvidos, pois aAbstractPortlet class definine a maioria dasações ocorridas em grande parte dassituações
• Permite automaticamente a apresentaçãoatravés dos formatos HTML e WML
Portlets: Let them make your virtual world!
Jetspeed | Portlets Goals
• Prove métodos para o portlet determinar oestado atual ou anterior de apresentação.Todos os portlets devem suportar o VIEWmode
• Clicando em um desses controlesapresentados pela figura, o usuário pode,facilmente, alterar o modo e/ou estado deexibição do portlet. Exemplo:
Portlets: Let them make your virtual world!
Jetspeed | Portlets Padrão
• Esses são os portlets padrão e maiscomumente usados:– WebPage Portlet– HTML Portlet– JSP Portlet– RSS Portlet– XSL Portlet
Portlets: Let them make your virtual world!
Jetspeed | Portlets Padrão
• WebPage Portlet– Apresenta uma página web dentro de um
Portlet– Essa página será carregada pela Engine
Jetspeed, eximindo o portlet de qualquerinteração com o browser do usuário, comocookies, sendo gerenciada pelo seu sub-sistema de cache
– O WebPagePortlet irá converter, ou apagar,algumas tags do HTML, resultando em umapágina que será apresentada em um portlet
Portlets: Let them make your virtual world!
Jetspeed | Portlets Padrão
• HTML Portlet– Apresenta uma página HTML estática dentro
de um portlet– Porque utilizar um HTML Portlet ao invés de
um WebPagePortlet?– HTML é estático– Não é um HTML completo, ex.: <HEAD> não existe
dentro do arquivo– O arquivo HTML não precisa estar visível para o Web
Server– Tarefas específicas não podem ser realizadas por um
WebPagePortlet– Portlet que apresentam somento uma imagem, como
JPEG ou SVG
Portlets: Let them make your virtual world!
Jetspeed | Portlets Padrão
• HTML Portlet Example
<portlet-entry name=“OneDay" hidden="false"
type="ref“ parent="HTML"application="false">
<meta-info>
<title>One Day Java</title>
<description>HTML Example</description>
</meta-info>
<url>/OneDay.html</url>
</portlet-entry>
Portlets: Let them make your virtual world!
Jetspeed | Portlets Padrão
• JSP Portlet– Apresenta o output de um JSP dentro de um
portlet– Porque utilizar um JSP Portlet ao invés de
um WebPagePortlet?• JSP não tem que estar visível para o Web Server• Determinadas tarefas não podem ser atingidas
com o WebPagePortlet• Jetspeed Tag Library
Portlets: Let them make your virtual world!
Jetspeed | Portlets Padrão
• JSP Portlet Example
<portlet-entry name=“OneDayJSP" hidden="false"
type="ref" parent="JSP" application="false">
<meta-info>
<title>One Day JSP Example</title>
<description>Simple JSP Portlet</description>
</meta-info>
<parameter name="template" value=“OneDay.jsp"
hidden="false"/>
</portlet-entry>
Portlets: Let them make your virtual world!
Jetspeed | Portlets Padrão
• RSS Portlet– Apresenta um RSS que prove informações
para um portlet• Rich Site Summary (RSS) é um formato baseado
em XML, desenvolvido pela Netscape. O objetivodo RSS é o de propogar as alterações em um site,incluindo seu portal desenvolvido com o Jetspeed,dinamizando o processo de publicação deconteúdo
Portlets: Let them make your virtual world!
Jetspeed | Portlets Padrão
• RSS Portlet– A formatação de RSS dentro de um portlet é
controlada pelo stylesheet– Informações sobre o RSS:http://my.netscape.com/publish/formats/rss-spec-0.91.html
Portlets: Let them make your virtual world!
Jetspeed | Portlets Padrão
• RSS Portlets Example
<portlet-entry name=“Apacheweek"
hidden="false" type="ref" parent="RSS"
application="false">
<meta-info>
<title>Apacheweek</title>
</meta-info>
<url>
http://www.apacheweek.com/issues/apacheweek-headlines.xml
</url>
</portlet-entry>
Portlets: Let them make your virtual world!
Jetspeed | Portlets Padrão
• XSL Portlet– Apresenta um documento XML transformado
dentro de um portlet
Portlets: Let them make your virtual world!
Jetspeed | Instalação
• Para instalar o JetSpeed siga esses três passos:– Download and install TomCat 3.2 (Binaries)
• http://jakarta.apache.org/builds/jakarta-tomcat/release/v3.2.4/bin/
– Download JetSpeed 1.3.a2 (Binaries)• http://jakarta.apache.org/builds/jakarta-
jetspeed/release/v1.3a2/– Download Apache James. Configure a propriedade
mail.server no arquivo de propriedadesTurbineResources.properties, o qual se encontra emwebapps/jetspeed/WEB-INF/conf
Portlets: Let them make your virtual world!
Jetspeed | Configuração
• Descompactar o arquivo jetspeed-1.3a2-release-src.zip
• Copiar o arquivo jetspeed.war (Web Archieve),para o diretório WEBAPPS do TomCat
• Start o TomCat <TOMCAT_HOME>/bin/startup Nota: O TOMCAT_HOME deverá estar setado
• Conectar– http://localhost:8080/jetspeed
Portlets: Let them make your virtual world!
Jetspeed | Estrutura de Dir.
• Conf– Contém todos os arquivos de configuração do Jetspeed
• Linguagem, Poll de Conexões, Controle de log (LOG4J), Arquivo de Registro dos Portlets (.xreg), etc
• Lib– Armazena todos os JARs (Java Archieve) do Projeto
• Templates– Velocity e JSP– HTML e/ou WML– Funcionalidades iniciais
• Template de cadastro, login, etc
Portlets: Let them make your virtual world!
Jetspeed | DataBases
• Banco default– Hypersonic– Configuração default no TurbineResource.properties
database.default.driver=org.hsql.jdbcDriverdatabase.default.url=jdbc:HypersonicSQL:${webappRoot}/WE
B-INF/db/jetspeeddatabase.default. username=sadatabase.default. password=
Portlets: Let them make your virtual world!
Jetspeed | New DataBase
• Script de criação e preechimento das tabelaspara:– MySQL, Postgres, Sybase, DB2 e Oracle– Baixando o Source Code, você terá acesso a
esses arquivos• Obter o driver JDBC do distribuidor
– Colocá-lo no diretório lib do JetSpeed• Alterar o TurbineResource.properties
Portlets: Let them make your virtual world!
Jetspeed | MySQL Example
• MySQL Connector/J 2.0.14 (ZIP)– mm.mysql-2.0.4-bin.jar
• TurbineResource.propertiesdatabase.default.driver=org.gjt.mm.mysql.Driverdatabase.default.url=jdbc:mysql://localhost:3306/nec_dbdatabase.default.username=rootdatabase.default.password=
Portlets: Let them make your virtual world!
Jetspeed | Study Case
• Desenvolvendo Portlets – Hello World ! ☺
1. package org.nec.portal.portlets;
2. import org.apache.jetspeed.portal.portlets.AbstractPortlet;
3. import org.apache.turbine.util.RunData;
4. import org.apache.ecs.ConcreteElement;
5. import org.apache.ecs.StringElement;
6.
7. public class HelloWorldPortlet extends
8. AbstractPortlet9. {• public ConcreteElement getContent• (RunData runData)12. {13. return (new StringElement ("Hello World!"));14. }15. }
Portlets: Let them make your virtual world!
Jetspeed | Study Case
• A classe utilizada como base para novosportlets é a classe AbstractPortlet. Ela estálocalizada no packageorg.apache.jetspeed.portal.portlets
• Extendendo a AbstractPortlet, você terá querealizar a implementação do métodogetContent( )
Portlets: Let them make your virtual world!
Jetspeed | Study Case
• getContent( )– Também implementa a interface RunData do
Turbine como um parâmetro. Através dosmétodos getters e setters da RunData interface,você tem acesso em runtime as informaçõesarmazenadas no Turbine, incluindo cookies,locale, e dados do usuário. A maioria dos dadosatualmente, são gerenciados pelo próprioJetspeed, e não precisamos nos preocupar comeles na hora do desenvolvimento dos portlets
Portlets: Let them make your virtual world!
Jetspeed | Study Case
• O método getContent( ) retorna um ConcreteElementde um ECS
• ECS (Element Construction Set)– Para mostrar o conteúdo, portlets usam o
ECS API. Este vem com o JetSpeed, o qualgera markup elements a partir de objetosJava. Você pode usar servlet template ouJSP para gerar conteúdo como saída, oqual é capturado por uma ECS que mostrao seu conteúdo. ECS suporta tanto WMLcomo HTML
Portlets: Let them make your virtual world!
Jetspeed | Exemplo ECSout.println("<HTML>");
out.println("<HEAD><TITLE>Demo<TITLE><HEAD>");
out.println("<BODY>");
out.println("<H1>Demo Header<H1>");
out.println("<H3>Sub Header:<H3>");
out.println("<FONT SIZE=\"+1\" FACE=\"Times\" COLOR=\"#FFFFFF">);
out.println("The big dog & the little cat chased each other.");
out.println("<FONT>");
out.println("<BODY>");
out.printL>");
Html html = new Html()
.addElement(new Head()
.addElement(new Title("Demo")))
.addElement(new Body()
.addElement(new H1("Demo Header"))
.addElement(new H3("Sub Header:"))
.addElement(new Font().setSize("+1")
.setColor(HtmlColor.WHITE)
.setFace("Times")
.addElement("The big dog & the little cat chased each other.")));
out.println(html.toString());
// or write to the outputstream directly
output(out);
Construção Manual de HTML
Construção com ECS
Portlets: Let them make your virtual world!
Jetspeed | Study Case
• Publicando o portlet no Jetspeed– O arquivo .xreg
• portlet.xreg– Arquivo de registro dos portlets default e de
configuração do Jetspeed• local-portlets.xreg
– Para que você não tenha problemas nas atualizaçõesde versões do Jetspeed, se faz necessário criar o seupróprio catálogo de portlets
Portlets: Let them make your virtual world!
Jetspeed | Study Case• Desenvolvendo Portlets – Arquivo de Registro do Portlet (.xreg)1. <?xml version="1.0" encoding="UTF-8"?>
2. <registry>
3. <portlet-entry name="HelloWorld“
4. hidden="false" type="instance“
5. application="false">
6. <meta-info>
7. <title>HelloWorld</title>
8. <description>
9. Portlet HelloWorld – One Day Java
10. </description>
11. </meta-info>
12. <classname>
13. org.nec.portal.portlets.HelloWorldPortlet
14. </classname>
15. <media-type ref="html"/>
16. </portlet-entry>
17. </registry>
Portlets: Let them make your virtual world!
Jetspeed | Study Case
• Catálogo de portlets
Portlets: Let them make your virtual world!
Jetspeed | Study Case
• Adicionando o portlet do catálogo ao portalpersonalizado do usuário
Portlets: Let them make your virtual world!
Jetspeed | Study Case
• Página personalizada do usuário
Portlets: Let them make your virtual world!
Jetspeed | Study Case
• Você deverá publicar o seu novoportlet no Jetspeed de forma manual,utilizando um “dialeto do XML”denominado Portal Structure MarkupLanguage (PSML)
• O Jetspeed utiliza o PSML paradescrever configurações internas,disponíveis nos portlets, econfigurações do usuário
• O portlet deverá estar disponívelatravés de seu portlet registry (.xreg)
Portlets: Let them make your virtual world!
Jetspeed | Study Case• Desenvolvendo Portlets – Arquivo de Publicação do Portlet
(.psml)
1. <?xml version="1.0" encoding="UTF-8"?>
2. <portlets
3. xmlns="http://www.apache.org/2000/02/CVS">
4. <controller name="ThreeColumns"/>
5. <skin name="NECPortletStyles"/>
6. <entry parent="HelloWorld">
7. <layout>
8. <property name="column" value="1"/>
9. <property name="row" value="1"/>
10. </layout>
11. </entry>
12. </portlets>
Portlets: Let them make your virtual world!
Jetspeed | Study Case
• Jetspeed e Wireless– Wap de uma forma transparente– Utilizando o Nokia Mobile Internet Toolkit
Portlets: Let them make your virtual world!
Jetspeed | Study Case
Tela de Login Página Personalizada do Usuário
Portlets: Let them make your virtual world!
Jetspeed | Study Case
• Resources– Para informações adicionais, recursos e
ferramentas, veja os seguintes web sites• http://jakarta.apache.org• http://jakarta.apache.org/jetspeed• http://www.mysql.com• http://www.javasoft.com• http://www.javaworld.com• http://www.google.com.br ☺
Portlets: Let them make your virtual world!
Jetspeed | Study Case
• Perguntas– … e respostas …
Portlets: Let them make your virtual world!
Portlets: Let them make your virtual world!
Portlets: Let them make your virtual world!
Portlets: Let them make your virtual world!
Fabiano [email protected]
Marcelo [email protected]