Resumo Anotações para Certificação OCE Oracle WebLogic Portal 10g                              DeveloperGilberto Augusto H...
o   Domain                       Administration Server                       Configuration Repository (pasta config)      ...
• username                         • properties                      @JdbcControl.SQL            o   Exemplo@ControlExtens...
o   Desktop                     Backable Properties                         • Backing File                     Desktop Pro...
•   Presentation Class                           •   Presentation ID                           •   Presentation Style     ...
Contras                           • Não isola o conteúdo clipado, ele roda no contexto do portal                          ...
• É executado sempre, em cada request, depois de o conteudo ser renderizado                     isRequestTargeted(HttpServ...
•   Inter-Portlet Communication           o Não suportado para Asynchronous Portlets           o Portlet Event Handlers (r...
o Suporta XHTML                       Consequências do uso de portlets asíncronos                           • Não suporta ...
Look And Feel   • Look and Feel          o Determina como o conteúdo do portal será renderizado          o É independente ...
•   Skin           o   Oferece cores, imagens, fonts e estilos (CSS e JS) utilizados para renderizar o conteúdo do        ...
o     Arquivo .chromosome<chromosome>       <genes>              <gene name="titlebar-color">                      <value>...
<netuix:markupDefinition>       <netuix:locale language="en" />       <netuix:markup>               <netuix:GridLayout tit...
•   NetUI (Beehive Framework)          o Open-source application framework desenvolvido para criar aplicações web baseadas...
Basic Method                         • Implementadas em um método@Jpf.Action(forwards = {               @Jpf.Forward(name ...
Content – “texto simples”                      Span – “texto dentro de uma tag <span>”                      Label – “texto...
Feita de maneira declarativa, via Annotations                       No NetUI ela é feita server-side                      ...
•   Tratamento de Exceção           o Anotação @Jpf.Catch                       Captura um certo tipo de exceção e direcio...
BookBackingContext          o   Alguns Métodos:                     setTitle / getTitle                     setVisible / i...
•   Portal JSP TagsWSRP  • Federated Portals       o Permitem que portais compartilhem recursos (portlets) que podem ser u...
o  Produtor WSRP                     Registro de consumidor                     Registro de entitlements                  ...
o   Atenção: books e pages remotos podem ser adicionados apenas em portais em produção,               através do Console A...
o    Suas características são definidas a partir de “Properties”, que podem ser:                        Boolean           ...
Criando workflows customizados                          • Através de arquivo de configurações XML                         ...
o   Content Selectors                      A cada request no portal, faz uma busca de conteúdo através de property values ...
o   API Overview           o   Content Management Controls                      O portal oferece Beehive Content Controls ...
Criar Repository                      Criar novo Folder ou Node                      Criar novo Content Type              ...
o   Fabricantes que já se integram com o BEA Portal                           Documentum                           Interwo...
o    Recursos que precisam ser recarregados explicitamente:                        .portal                        Books   ...
•   Visitor Entitlements            o É um mecanismo para determinar “quem” pode acessar qual recurso e “o quê” ele pode f...
Extende o core do Weblogic Portal                     Community                         • É uma coleção de recursos de por...
• Apenas o usuário que postou                        Personal                            • Apenas o usuário que postou, e ...
7 – Detalhamento: Content Type    • Property definitions: todo o metadado que possa ser útil obter no portal (como largura...
Upcoming SlideShare
Loading in...5
×

Resumo Anotacoes Certificacao OCE WebLogic Portal 10g Developer

2,504

Published on

Meus resumos e anotações da época que fiz a prova de certificação Oracle WebLogic Portal 10g Developer (agora substituído pelo WebCenter e ADF).

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
2,504
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
22
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "Resumo Anotacoes Certificacao OCE WebLogic Portal 10g Developer"

  1. 1. Resumo Anotações para Certificação OCE Oracle WebLogic Portal 10g DeveloperGilberto Augusto Holms@gibaholmsgibaholms85@gmail.comhttp://gibaholms.wordpress.com/Portal Architecture • Portal Project Lifecycle o Architect -> Develop -> Assemble & Deploy -> Manage • Need for Enterprise Portals o Rápido desenvolvimento e deploy o Utiliza tecnologias baseadas em padrões o Gerenciamento e workflow de conteúdo integrados o Personalização e customização o Administração e segurança centralizados o High availability, performance e scalability o Flexibilidade e agilidade para futuras mudanças • WebLogic Portal Services o Portal application framework Desktops Books Pages Portlets Look and Feel o Federated Portals Consumo de portal-resources remotos via SOAP sobre HTTP ou HTTPS o Content management Conteúdo gerenciável sem retrabalho de desenvolvimento Temporização de conteúdo o Communities Foundation para gerenciar portais colaborativos É uma extensão do portal framework Compartilhamento de conteúdo Pode-se participar por registro e/ou convite o Unified user profile Define propriedades que representam características de um usuário Tais características podem ser mantidas na base do portal ou externamente em bancos ou diretórios o Personalization Capacidade da aplicação de modificar sua aparência e/ou comportamento de acordo com o usuário ou uma determinada audiência o Security & administration Usuários e perfis Visitor entitlements – diferentes permissões de acesso de acordo com perfis Delegated administration – diferentes permissões de administração de acordo com perfis Publicação e aprovação de conteúdo Portal data propagation o Enterprise search Licensa inclusa do produto Autonomy Engine e APIs de busca, gerenciamento, indexamento de conteúdo, exemplos de portlets de busca e relatórioBasic WebLogic Server • WebLogic ServerGilberto Holms http://gibaholms.wordpress.com/
  2. 2. o Domain Administration Server Configuration Repository (pasta config) Domain Log Cluster / Managed Servers ( + local logging )WebLogic Workshop • WTP o Editores HTML, CSS, XSD, etc… o Suporte a maioria dos servidores o Operações e conexões a bases de dados – Database Explorer • JDT o Suporte aos variados módulos J2EE o Editores JSP e JSF o Servlet e EJB • Facets o Componentes reutilizáveis em várias aplicações J2EE (WAR ou EAR) o Deployados apenas uma vez no servidor • Merged Projects View o Mostra todas os deploys reutilizáveis – shared J2EE libraries • Apache Beehive o NetUI Page Flow o Java Controls (FALTA PAG 106) o Web Services Metadata o Framework MVC View – NetUI JSP Controller – Page Flow Controller Class (jpf) Model – Java Control o System Controls Padrão do Apache Beehive • EJB Control • JDBC Control • JMS Control Extensões do Workshop • Timer Control • Service Control • JDBC Control o Principais annotations @JdbcControl.ConnectionDataSource • jndiName @JdbcControl.ConnectionDriver • databaseDriverClass • databaseURL • passwordGilberto Holms http://gibaholms.wordpress.com/
  3. 3. • username • properties @JdbcControl.SQL o Exemplo@ControlExtension@JdbcControl.ConnectionDataSource(jndiName = "LOCAL_ORACLE_TESTE")public interface ClienteJDBCControl extends JdbcControl { public static class Cliente { private int id; private String nome; @Override public String toString() { return id + " | " + nome; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getNome() { return nome; } public void setNome(String nome) { this.nome = nome; } } @JdbcControl.SQL(statement="SELECT ID, NOME FROM CLIENTE WHERE ID = {id}") public Cliente buscar(int id) throws SQLException;} • JMS Control o Principais nnotations @JMSControl.Destination • sendType • sendJndiName • jndiConnectionFactory • transacted • … @JMSControl.Message • MessageType (enum) o Exemplo@ControlExtension@JMSControl.Destination(sendType = JMSControl.DestinationType.Auto, sendJndiName = "TesteJMSTopic", jndiConnectionFactory = "TesteJMSFactory", transacted = false)public interface TesteJMSControl extends JMSControl { @Message(JMSControl.MessageType.Text) public void sendMessage(String body);} • Custom Control o @ControlInterface Anotar na interface do controle o @ControlImplementation Anotar na classe concreta do controleBuilding a Portal Application • Portal Projects o EAR o Web o DataSync • Propriedades ConfiguráveisGilberto Holms http://gibaholms.wordpress.com/
  4. 4. o Desktop Backable Properties • Backing File Desktop Properties • Asynchronous Mode • Definition Label • Disc Enabled • DVT Enabled • Encoding • Look and Feel • Scroll to Window • Shell • Title • Tree Optimization Presentation Properties • Presentation Class • Presentation ID • Presentation Style • Properties • Skeleton URI o Book Backable Properties • Backing File • Definition Label • Hidden • Packed • Rollover Image • Selected Image • Theme • Title • Unselected Image Book Properties • Content Presentation • Default Page • Editable • Navigation • Orientation • Return to Default Page Presentation Properties • Presentation Class • Presentation ID • Presentation Style • Properties • Skeleton URI o Page Backable Properties • Backing File • Definition Label • Hidden • Packed • Rollover Image • Selected Image • Theme • Title • Unselected Image Page Properties • Layout Type Presentation PropertiesGilberto Holms http://gibaholms.wordpress.com/
  5. 5. • Presentation Class • Presentation ID • Presentation Style • Properties • Skeleton URIPortlet Development • Tipos de Portlets o JSP/HTML Portlets Prós • Simples para implementação, deploy, teste • Recomendado para portlets que apenas mostram dados Contras • Não prove arquitetura MVC • Difícil de linkar com outras JSPs • Difícil de manter e evoluir o Java Portlet É baseado na especificação JSR-168 Prós • Portabilidade entre múltiplos vendedores • Foundation para construir portlets MVC Contras • Não possui tooling na IDE • Desenvolvimento em baixo nível (similar a servlets) • O controlador MVC precisa ser codificado pelo desenvolvedor o Java Page Flow Portlet Prós • Rápido desenvolvimento e tooling utilizando a IDE • Arquitetura MVC • Integração com Beehive Controls • Melhora o Struts, utilizando annotations Contras • Muitos recursos talvez sejam desnecessários para simples portlets o Browser (URL) Portlet Encapsula uma página da Web Útil para integração com sistemas web legados o Struts Portlet Prós • Pode-se migrar uma aplicação antiga Struts para o portal • Arquitetura MVC Contras • Não possui tooling na IDE • Mais complexo que NetUi (pois contém classes e XML) o JavaServer Faces (JSF) Portlets É baseado na especificção JSR-127 Prós • Componentes de tela podem ser construídos com drag-and-drop • Arquitetura MVC Contras • Não possui tooling na IDE • Mais complexo que NetUi o Remote Portlet Consumir portlets deployados em outro servidor (vide WSRP) o Clipper Portlet Semelhante ao browser portlet, porém ele incorpora a página dentro do próprio portal, podendo clipar apenas um determinado conteúdo via xpath Prós • O resto do portal pode acessar o conteúdo e compartilhar a mesma sessão da página clipada • Permite fazer um request via POST na página remota antes de cliparGilberto Holms http://gibaholms.wordpress.com/
  6. 6. Contras • Não isola o conteúdo clipado, ele roda no contexto do portal • Autenticação não é criptografada • JavaScript nas páginas remotas não é garantido que funcione corretamente • Os cookies são carregados pelo portal, e não persistidos no cliente • Configuração do Portlet Backable Properties • Backing File Portlet General Properties • Async Content Rendering • Cache Expires (seconds) • Cache Render Dependencies • Client Classifications • Default Minimized • Definition Label • Description • Event Handlers • Forkable • Fork Pre-Render • Fork Pre-Render Timeout • Fork Render • Fork Render Timeout • LAF Dependencies Path • Orientation • Packed o Se false, ele extenderá na horizontal o máximo que conseguir (width 100%). Se true, ele ocupa o mínimo espaço horizontal possível. • Render Cacheable o Se true, o conteúdo de output sera cacheado entre requests o O cache será recusado se o usuário interagir via links ou forms o Pode-se usar o WebLogic Portal Cache Manager para controle programático de caching • Title Portlet Properties • Content Presentation Class • Content Presentation Style • Offer As Remote Portlet Titlebar • Show Titlebar Presentation Properties • Presentation Class • Presentation ID • Presentation Style • Properties • Skeleton URI • Backing Files o JspBacking AbstractJspBacking o Sempre extender AbstractJspBacking, pois ela implementa os métodos de renderização o É criada uma instância por request o Métodos init(HttpServletRequest, HttpServletResponse) : void • É sempre executado, em cada request, antes do desktop ser renderizado handlePostbackData(HttpServletRequest, HttpServletResponse) : boolean • É executado se o recurso for visível e for “postback” (interação usuário, é identificado pelo parametro _nfpb=true) preRender(HttpServletRequest, HttpServletResponse) : boolean • É executado se o recurso for visível dispose( ) : voidGilberto Holms http://gibaholms.wordpress.com/
  7. 7. • É executado sempre, em cada request, depois de o conteudo ser renderizado isRequestTargeted(HttpServletRequest, HttpServletResponse) : boolean • É usado para saber se o request foi em um particular portlet o Ordem de Chamada Página Abriu • init Usuário interagiu fora de um recurso com B.F.: • init • handlePostbackData Usuário interagiu em um recurso com B.F.: • init • handlePostbackData • preRender • dispose Usuário interagiu em um recurso interno a um recurso com B.F.: • (idem ao anterior) o Observações: Em caso de portlet, pode ser criada em dois níveis de escopo • netuix:portlet – atua no nível do portlet • netuix:jspContent – atua apenas na jsp do portlet (não influencia na renderização do portlet) • Depende do recurso netuix_servlet.jar no classpath do projeto • Portlet File o Tipos de Content: jspContent pageflowContent facesContent bookContent portionContent strutsContent uriContent<portal:root> <netuix:portlet definitionLabel="homeGeral" title="Homegeral"> <netuix:content> <netuix:jspContent contentUri="/homeGeral/home.jsp"/> </netuix:content> </netuix:portlet> <netuix:preference description="Descricao do parametro" modifiable="true" multiValued="true" name="nome" value="giba"/></portal:root> o Portlet Preferences: Pares de key-value para parametrização de valores Permite que diferentes instâncias do portlet possam ter esse valor modificado em runtime Podem ser configuradas via Workshop (dev) ou via Console Administrativo (prod) Recuperando os valores via API:PortletBackingContext context = PortletBackingContext.getPortletBackingContext(request);PortletPreferences preferences = context.getPortletPreferences(request);String nome = preferences.getValue("nome", "Giba"); //Giba é o default caso não exista o atributo Recuperando os valores via TAGLIB:Gilberto Holms http://gibaholms.wordpress.com/
  8. 8. • Inter-Portlet Communication o Não suportado para Asynchronous Portlets o Portlet Event Handlers (recomendado) Escuta eventos de um ou mais portlets, e responde com uma Event Action Tipos de Event Handlers • Handle Generic Event o Disparado por uma PageFlow Action de mesmo nome ou um custom event de mesmo nome • Handle Portal Event o Portlet states (minimize, maximize, etc) o Visibility o Portlet refresh • Handle Custom Event o Disparado programaticamentePortletBackingContext portlet = PortletBackingContext.getPortletBackingContext(request);portlet.fireCustomEvent("myCustomEvent", myPayloadObject); • Handle PageFlow Event o Actions de PageFlows • Handle Struts Event o Action do Struts • Handle Faces Event o Action de JSF Tipos de Event Actions • Change Window Mode • Change Window State • Activate Page • Fire Generic Event • Fire Custom Event • Invoke BackingFile Method • Invoke PageFlow Action • Invoke Struts Action • Invoke Faces Action o Backing Files o Refresh Actions PageFlow portlets podem inscrever uma action para ser executada no refresh É executada quando há refresh do portlet e nenhuma action foi invocada pelo usuário o listenTo portlet property Está deprecated o Compartilhamento de Dados Request Parameters • Obter um parametro da URL do browser:HttpServletRequest outerRequest = ScopedServletUtils.getOuterRequest(this.getRequest());String nome = outerRequest.getParameter("nome"); Request Attributes Session Attributes • Asynchronous Portlets o Por padrão o portal executa os portlets de forma sincrona o Todos os portlets precisam ser carregados para que o usuário possa interagir o Se o portlet for assíncrono, ele será executado em uma thread separada o Habilitando skeletons para chamada assíncrona: framework/features Atributo “Async Content Rendering” (a escolha é transparente ao cliente) • AJAX o Usa o mesmo documento HTML o Suporta features como cross-portlet drag-and-drop o Não suporta XHTML o Melhor integração look-and-feel o Necessita JavaScript no browser • IFRAME o Usa um documento HTML separadoGilberto Holms http://gibaholms.wordpress.com/
  9. 9. o Suporta XHTML Consequências do uso de portlets asíncronos • Não suporta inter-portlet communication • Portlet Backing Files são executadas duas vezes • Comandos HTTP redirect não são suportados no portlet • Alguns commandos da PortletBackingContext API não são suportados o Desabilitando request assíncrono em um portlet:<render:controlContext asyncContentDisabled="true"> <netui:form action="addToCart"> <netui:select dataSource="actionForm.productSku" /> <netui:button value="Submit" type="submit" /> </netui:form></render:controlContext> o Fork Render É uma alternative ao portlet assíncrono Os portlets são carregados em paralelo, o que melhora a performance geral O cliente ainda é obrigado a esperar todos carregarem para interagir Portlets que suportam: • JSP • PageFlow • Java (JSR-168) • Remote (WSRP) Configurando no portlet • Forkable: true • Fork Render: true • Fork Render Timeout: 30 o É possível renderizar um Portlet standalone assincronamente via código, utilizando o mesmo framework de portlets assíncronos, diretamente na JSP:<render:portalFacet label="standalone_portlet_cart" path="/portlets/shoppingCart.portlet"/>Gilberto Holms http://gibaholms.wordpress.com/
  10. 10. Look And Feel • Look and Feel o Determina como o conteúdo do portal será renderizado o É independente do conteúdo do portlet o Pode ser aplicado genericamente ou de acordo a um tipo de dispositivo (palm, etc) o Elementos do LAF: Skeletons Shells Skins (incluindo genes) Layouts Themes o Ciclo de Vida do LAF Portal XML Representation PresentationContext Skeleton + Skin HTML o Arquivo .laf É uma associação de um Skeleton e um Skin<netuix:markupDefinition> <netuix:locale language="en"/> <netuix:markup> <netuix:lookAndFeel title="Teste" description="" definitionLabel="TesteDefinitionLabel_1" skin="Teste" skinPath="/framework/skins/" skeleton="Teste" skeletonPath="/framework/skeletons/" markupType="LookAndFeel" markupName="TesteLookAndFeel_1"/> </netuix:markup></netuix:markupDefinition> • Skeleton o É um conjunto de JSPs que renderizam o conteúdo do portal em HTML o Define a estrutura do portal e aplica os elementos do Skin o Pode ser baseado em um dispositivo o Cada skeleton JSP é executada duas vezes: beginRender e endRender<render:beginRender> <body> . . Custom Logic . . <div class="bea-portal-body-content"></render:beginRender><render:endRender> </div> . . Custom Logic . . </body></render:endRender> o Um skeleton para um determinado elemento pode ser “override” através da propriedade Presentation Properties Skeleton URI o Skeleton.xml Indica configurações e locais para procurar por JSPs<ns:skeleton> <ns:render-format> <ns:preset>HTML_4_01_TRANSITIONAL</ns:preset> </ns:render-format> <ns:render-strategy> <ns:search-path> <ns:path-element>.</ns:path-element> <ns:path-element>../default</ns:path-element> <ns:path-element>../shared</ns:path-element> </ns:search-path> </ns:render-strategy></ns:skeleton>Gilberto Holms http://gibaholms.wordpress.com/
  11. 11. • Skin o Oferece cores, imagens, fonts e estilos (CSS e JS) utilizados para renderizar o conteúdo do portal o Skin.xml Indica configurações e locais para serem encontrados imagens, css e js. Indica também os commandos de link de css e include de javascript a serem renderizados no portal<ns:skin xmlns:ns="http://www.bea.com/servers/portal/framework/laf/1.0.0"> <ns:target-skeleton> <ns:skeleton-id>default</ns:skeleton-id> <ns:skeleton-path>/framework/skeletons</ns:skeleton-path> </ns:target-skeleton> <ns:images> <ns:search-path> <ns:path-element>images</ns:path-element> </ns:search-path> </ns:images> <ns:render-dependencies> <ns:html> <ns:links> <ns:search-path> <ns:path-element>.</ns:path-element> </ns:search-path> <ns:link href="css/body.css" rel="stylesheet" type="text/css"/> <ns:link href="css/book.css" rel="stylesheet" type="text/css"/> <!-- OUTROS --> </ns:links> <ns:scripts> <ns:search-path> <ns:path-element>js</ns:path-element> <ns:path-element>../shared/js</ns:path-element> </ns:search-path> <ns:script src="console.js" type="text/javascript"/> <ns:script src="cookies.js" type="text/javascript"/> <!-- OUTROS --> </ns:scripts> </ns:html> </ns:render-dependencies> <ns:script-dependencies> <ns:script-fragments> <ns:fragment event-handler="onload">initSkin()</ns:fragment> </ns:script-fragments> </ns:script-dependencies></ns:skin> o Um CSS para um determinado elemento pode ser “override” através da propriedade Presentation Properties Presentation Class o Podemos adicionar atributos CSS inline aos já presentes em um elemento utilizando a propriedade Presentation Properties Presentation Style (geralmente utilizamos para definer height – altura e overflow – rolagem) • Chromosomes and Genes o É possível definir genes através de ${tokens} em arquivos do skin ou do skeleton (CSS, JS, JSP, etc) e então definir seus valores através do arquivo chromosome o Por definição eles devem ser criados nas pastas “Skin” ou “Skeleton” o Denifido em arquivo.laf Skin Chromosome Name ou Skeleton Chromosome NameGilberto Holms http://gibaholms.wordpress.com/
  12. 12. o Arquivo .chromosome<chromosome> <genes> <gene name="titlebar-color"> <value>blue</value> </gene> <gene name="titlebar-size"> <value>18px</value> </gene> </genes></chromosome> o Atenção: para utilizar chromosomes no skin, é preciso definir no skin.xml o uso de CSS e JS inlined no html, como indicado na caixa da direita:<ns:link href="window.css" rel="stylesheet" <ns:style content-uri="window.css" type="text/css" /> type="text/css" /><ns:script src="teste.js" type="text/javascript"/> <ns:script type="text/javascript"> alert(teste ${meuGene}); </ns:script> o Observações:Existe conceito de default.chromosome, que é onde o portal localiza os cromossomos default do skin ouskeleton. Então podemos adicionar outros arquivos .chromosome para sobrescrever parcialmente um geneparticular Para referenciar um recurso de LAF na JSP sem ficar preso ao caminho e o laf escolhidos, utilizar o recurso de reescrita wlp_rewrite:<img src="/framework/skins/classic/img/logo.gif"/> <img src="”wlp_rewrite?logo.gif/wlp_rewrite"/> • Shell o Define a estrutura macro do portal, definindo as áreas de Header, Footer e conteúdo o Arquivo .shell<netuix:markupDefinition> <netuix:locale language="en" /> <netuix:markup> <netuix:shell title="Custom JSP Shell" description="A Custom Shell with Header and Footer." markupType="Shell" markupName="customJSPHeaderFooter"> <netuix:head /> <netuix:body> <netuix:header> <netuix:jspContent contentUri="/resources/jsp/customheader.jsp" /> </netuix:header> <netuix:break /> <netuix:footer> <netuix:jspContent contentUri="/resources/jsp/customfooter.jsp" /> </netuix:footer> </netuix:body> </netuix:shell> </netuix:markup></netuix:markupDefinition> o Observações Caso a tag <netuix:header/> esteja vazia, por default serão carregados os arquivos header.jsp e footer.jsp do skeleton O header e o footer também podem possuir um layout atrelado O header e o footer podem ter os mesmos contents que um portlet pode ter (vide seção de portlets) e ainda pode incluir um portlet através da tag <netuix:portletInstance> • Layout o Define o posicionamento dos portlets em uma página o Tipos básicos de layout: Flow Layout • Posicionamento lado a lado, seguindo a ordem left-to-right ou top-to-botton Grid Layout • São definidas linhas e colunas Border Layout • São definidas 5 áreas geográficas (norte, sul, leste, oeste, centro) Custom Layout • Arquivo .layout: define a descrição, o arquivo html de definição e os placeholdersGilberto Holms http://gibaholms.wordpress.com/
  13. 13. <netuix:markupDefinition> <netuix:locale language="en" /> <netuix:markup> <netuix:GridLayout title="My Layout" description="This is my custom layout" htmlLayoutUri="/framework/markup/layout/myLayout.html.txt" markupType="Layout" markupName="myLayout"> <netuix:placeholder title="esquerda" description="..." markupType="Placeholder" markupName="myPlaceholder1" /> <netuix:placeholder title="direita" description="..." markupType="Placeholder" markupName="myPlaceholder2" /> </netuix:GridLayout> </netuix:markup></netuix:markupDefinition> • Arquivo .html.txt: define o html do layout, onde cada placeholder é identificado pela ordem em que aparece no arquivo de layout<table class="portalLayout" id="thePortalLayout" width="100%" height="100%"> <tr> <td class="placeholderTD" valign="top" width="30%"> <placeholder number="0" /> </td> <td class="placeholderTD" valign="top" width="70%"> <placeholder number="1" /> </td> </tr></table> o Observações: Ao invest de um arquivo .html.txt podemos utilizar um skeleton jsp e renderizar o layout via código java • Theme o É um componente “fine-grained” capaz de sobrescrever partes de um skin ou skeleton o Pode ser associado a nível de Book, Page e Portlet o Pode atuar das seguintes formas: Sobrescrever JSP em um skeleton Sobrescrever imagens em um skin Adicionar novos arquivos CSS em um skin o Criando um Theme Criar um arquivo de definição .theme<netuix:markupDefinition> <netuix:locale language="en"/> <netuix:markup> <netuix:theme name="greyout" title="Grey Out" description="A Theme used to de-emphasise a particular entity." markupType="Theme" markupName="greyout"/> </netuix:markup></netuix:markupDefinition> Criar pasta em Skin e Skeleton com o mesmo nome do theme • Os arquivos de skeleton sobrescreverão os skeletons default Declarar os arquivos de skin em skin.xml • Os arquivos de skin sobrescreverão os skins default Opcional: utilizar um arquivo structure.xmlNetUI • Struts Framework o Open-source application framework desenvolvido para criar aplicações web baseadas na arquitetura MVC o Componentes: Front-Controller (ActionServlet) Arquivo de configurações XML Tags JSP Classes • Action – implementa a lógica do controller • ActionForm – encapsula dados de formulário em JavaBeans • ActionForward – implementa lógica de navegação • ActionMapping – binda actions para URIsGilberto Holms http://gibaholms.wordpress.com/
  14. 14. • NetUI (Beehive Framework) o Open-source application framework desenvolvido para criar aplicações web baseadas na arquitetura MVC, baseado no Struts o É parte do projeto Apache Beehive o Componentes: Java PageFlows NetUI Tags JSP Java Controls Form Beans (POJO) • Java PageFlow o É uma classe java com Beehive Annotations o Podem ser nested ou shared, para melhor permitir modularidade e reuso o Composição: Actions • Definem a lógica de navegação entre JSPs • Configurados via annotation • Responde um ou mais forwards Forward • Define o próximo elemento (JSP) do fluxo de navegação • É declarado na action • Actions o Dois tipos de action: Simple Action • Contém apenas um simples condicional@Jpf.Controller(simpleActions = { @Jpf.SimpleAction(name = "someAction", path = "default.jsp", conditionalForwards = { @Jpf.ConditionalForward(condition = "${pageFlow.advanced}", path = "advanced.jsp"), @Jpf.ConditionalForward(condition = "${param==’yes’}", path = "alternate.jsp") }) })public class ClienteController extends PageFlowController { ... }Gilberto Holms http://gibaholms.wordpress.com/
  15. 15. Basic Method • Implementadas em um método@Jpf.Action(forwards = { @Jpf.Forward(name = "somePage", path = "somePage.jsp") })public Forward someAction() { return new Forward("somePage");} • Java Controls o Os Java Controls podem ser utilizados no PageFlow o O controle é injetado pelo container através da annotation @Control@Controlprivate ClienteJDBCControl clienteJDBCControl; • Nested PageFlows o É um PageFlow completo que pode ser invocado por outro PageFlow o Retorna ao PageFlow chamador via uma action de saída, que corresponde a uma action do PageFlow chamador o Utilização: Modularidade Manutenção Reuso • Shared PageFlows o É um PageFlow que contém uma “biblioteca” de actions e JSPs, que não é necessariamente um fluxo completo o Seus conteúdos (actions, handlers, etc) podem ser acessados por qualquer PageFlow que o referencie o Extende a superclasse SharedFlowController o É instanciado em qualquer PageFlow, da seguinte forma:@Jpf.Contoller(sharedFlowsRefs = { @Jpf.SharedFlowRef(name = "sharedFlowOne", type = example.SharedFlowClassOne.class), @Jpf.SharedFlowRef(name = "sharedFlowTwo", type = example.SharedFlowClassTwo.class) })public class MyController extends PageFlowController { ... } • NetUI Tags o Wizards Create Form Data Display Data Grid Update Form o Tags que Disparam Actions Anchor Anchor Cell Area Button Form Image Anchor Image Anchor Cell Tree Item o Tags Renderizadoras de ConteúdoGilberto Holms http://gibaholms.wordpress.com/
  16. 16. Content – “texto simples” Span – “texto dentro de uma tag <span>” Label – “texto para input field” o Tags para Data Binding Repeater • Itera sobre coleções, arrays e FormBeans (não gera html) <netui-data:repeater dataSource="pageFlow.cartItems"> <netui-data:repeaterHeader> <table> </netui-data:repeaterHeader> <netui-data:repeaterItem> <tr> <td>${container.item.name}</td> <td> <netui:span value="${container.item.price}"> <netui:formatNumber pattern="$##,###.00" /> </netui:span> </td> </tr> </netui-data:repeaterItem> <netui-data:repeaterFooter> </table> </netui-data:repeaterFooter> </netui-data:repeater> Data Grid • Renderiza coleções, arrays e FormBeans (gera um grid html) <netui-data:dataGrid dataSource="pageScope.pets" name="petGrid"> <netui-data:configurePager pageSize="5" /> <netui-data:rows> <netui-data:spanCell value="${container.item.name}" /> <netui-data:spanCell value="${container.item.description}" /> <netui-data:spanCell value="${container.item.price}" /> <netui-data:anchorCell value="Details" action="details"> <netui:parameter name="id" value="${container.item.petId}" /> </netui-data:anchorCell> </netui-data:rows> </netui-data:dataGrid> Tree • Renderiza uma árvore de itens <netui:tree dataSource="pageFlow.projectTree" selectionAction="selectTreeNode" tagId="tree"> <netui:treeItem expanded="true"> <netui:treeLabel>0</netui:treeLabel> <netui:treeItem>0.0</netui:treeItem> <netui:treeItem>0.1</netui:treeItem> <netui:treeItem>0.2</netui:treeItem> </netui:treeItem> </netui:tree> • Data Binding Contexts o Objetos Expression Language 2.0 (EL) definidos: requestScope / sessionScope / applicationScope / pageScope actionForm • Variáveis do FormBean associado à tag <netui:form> corrente (acessível apenas dentro dessa tag) pageFlow • Variáveis de instância do PageFlow corrente (regra nomes JavaBeans) Container • Objeto corrente das tags de iteração (repeater, dataGrid, cellRepeater…) • Form Bean o Classe interna definida dentro do controller, anotada com @Jpf.FormBean:@Jpf.FormBeanpublic static class BeginFormBean implements java.io.Serializable {...} o É passada para a action declarando na mesma um parâmetro do tipo do FormBean o É bindada na JSP através de uma tag netui:form e o elemento EL actionForm o Validação de FormBeansGilberto Holms http://gibaholms.wordpress.com/
  17. 17. Feita de maneira declarativa, via Annotations No NetUI ela é feita server-side Regras de validação: Implementando Validação: • Definindo a regra de validação (2 modos) o Na própria action (pode ser específico por action) @Jpf.Action( ... validatableProperties = { @Jpf.ValidatableProperty(propertyName = "idade", validateRequired = @Jpf.ValidateRequired(message="Campo obrigatório"), validateType = @Jpf.ValidateType(type=long.class, message="Número inteiro")) }) public Forward myAction(MyFormBean form) { ... } o Em cada GETTER do FormBean @Jpf.ValidatableProperty( validateRequired = @Jpf.ValidateRequired(message="Campo obrigatório"), validateType = @Jpf.ValidateType(type=long.class, message="Número inteiro") ) public BigInteger getIdade() { ... } • Definindo o fluxo de navegação de erro @Jpf.Action( ... validationErrorForward = @Jpf.Forward(name="fail", path="input.jsp") ) public Forward myAction(MyFormBean form) { ... } o Obs.: para voltar pra mesma página que submeteu o form utilizamos: @Jpf.Forward(navigateTo = Jpf.NavigateTo.currentPage) • Exibindo a mensagem de erro na tela<netui:error key="idade" /> MessageBundle • É uma alternativa às mensagens fixas • Um arquivo properties que serve de repositório de mensagens de erro • Basta declarar no controller (caminho relativo à pasta “src/” e sem a extensão) @Jpf.Controller( ... messageBundles = { @Jpf.MessageBundle(bundlePath = "bundleErros") } //caminho resolvido: src/bundleErros.properties ) o Obs.: na tag de validação, ao invés de message, definir o atributo messageKey, setando a key do properties para a mensagemGilberto Holms http://gibaholms.wordpress.com/
  18. 18. • Tratamento de Exceção o Anotação @Jpf.Catch Captura um certo tipo de exceção e direciona para uma action/jsp ou para um método ExceptionHandler (@Jpf.ExceptionHandler) o Pode ser feita: A nível de Controller • Aplica a todas as actions do controller A nível de Action o Obs.: uma action pode lançar exceções declaradas (throws Exception), que também serão tratadas pelo mecanismo de tratamento de exceção • Internacionalização o É definida através de MessageBundles o É carregado dinamicamente de acordo com o idioma do browser do cliente o Padrão de nomenclatura: nomeQualquer.properties – bundle default nomeQualquer_es.properties nomeQualquer_en.properties o Utilizando o Message Bundle (2 modos) No controller • Declaração: o Idêntico ao bundle de validação – adicionar no array da annotation o Caminho relativo à src, porém separado por pontos • Utilização:<netui:span value="${bundle.default.message1}"/> Na própria JSP • Declaração: o Caminho relativo à src, porém separado por barras o Exemplo:<netui-data:declareBundle name="fooMessages" bundlePath="org/foo/messages" /> • Utilização:<netui:span value="${bundle.fooMessages.message1}"/>Tags and API • Presentation Context Manipula o estado corrente de um elemento, informando o que é necessário para renderizá- lo e informações sobre o elemento Bastante utilizado para renderização no skeleton • Algumas Subclasses: o DesktopPresentationContext o HeaderPresentationContext o PagePresentationContext o LayoutPresentationContext o … • Alguns Métodos: o isVisible o getChildren o getProperty o … • Obtendo via códigoDesktopPresentationContext dpc = DesktopPresentationContext.getDesktopPresentationContext(request);HeaderPresentationContext hpc = HeaderPresentationContext.getHeaderPresentationContext(request);...... • Backing Contexts o Fornece informações sobre o estado dos elementos e permite que eles sejam modificados o Possuem a classe pai WindowBackingContext o Algumas Subclasses: PortletBackingContext PageBackingContextGilberto Holms http://gibaholms.wordpress.com/
  19. 19. BookBackingContext o Alguns Métodos: setTitle / getTitle setVisible / isVisible getDefinitionLabel setupStateChangeEventGilberto Holms http://gibaholms.wordpress.com/
  20. 20. • Portal JSP TagsWSRP • Federated Portals o Permitem que portais compartilhem recursos (portlets) que podem ser utilizados como serviços por outros portais o “Um Portal A está interessado em um portlet do Portal B”: Sem Federação: • Portal A exporta o portlet • TI migra e deploya o portlet no Portal B • Qualquer mudança no portlet precisa fazer tudo denovo Com federação: • Portal A publica o portlet como WebService no seu UDDI • TI do Portal B cria um “Proxy Portlet” e o configura para consumir o portlet • Qualquer mudança feita no portlet será vista automaticamente no Portal B o Possui interoperabilidade com portais de outros vendedores e tecnologias (.NET, etc) o O que é WSRP: “Web Services for Remote Portlets” É uma especificação mantida pela OASIS Define uma interface padronizada para implementação de Federated Portals Permite que consumidores agreguem remote markups usando SOAP Conceitos: • Produtor – fornece recursos via Web Services • Consumidor – consome e agrega recursos de um ou mais produtoresGilberto Holms http://gibaholms.wordpress.com/
  21. 21. o Produtor WSRP Registro de consumidor Registro de entitlements Federated portlets / books / pages WS-Security / SAML Integração com Service Registry o Consumidor WSRP Proxy portlets / books / pages Visitor Entitlements User Identity Propagation (SAML) User Profile Propagation • Implementando um Produtor WSRP o Adicionar facet “WSRP Producer” o Extender o domínio adicionando o template wsrp-simple-producer.jar o Nos arquivos que deseja oferecer (.portlet / .book / .page), setar propriedade: Portlet Properties Offer As Remote o O Producer WSDL se tornará disponível em: http://<host>:<port>/<webapp>/producer?wsdl o Configuração do Producer o O Visitor Entitlement é realizado através de “WSRP Properties” setadas no consumidor, que são enviadas para o produtor no momento do registro: Criar um “Property Set” no DataSync Project Adicionar properties no Property Set Registra o Property Set no arquivo wsrp-producer-config.xml Entitlement: no Console Administrativo, criar o entitlement utilizando “Role Expression” associado ao Property Set criado, definindo uma regra com o valor de uma propriedade • Implementando um Consumidor WSRP o Configuração do Consumer o Criar um portlet do tipo “Remote Portlet” o Digitar a url do Producer WSDL e clicar em “Register” o Serão exibidos todos os portlets remotos que o produtor oferece para que seja escolhido um o Serão exibidas todas as propriedades que o Producer declara no seu Property Set, para que elas sejam preenchidas pelo consumidorGilberto Holms http://gibaholms.wordpress.com/
  22. 22. o Atenção: books e pages remotos podem ser adicionados apenas em portais em produção, através do Console Administrativo (e não no workshop) • Inter-Protlet Communication o É feita da mesma forma, criando Event Handlers no portlet proxy e Actions no portlet local • User Profile o O consumidor informa as User Profile Properties que o produtor declarar como necessárias, na hora do registro • Transferencia de Dados o Um protlet local pode trocar dados (objeto Serializable) com um portlet remoto, da seguinte forma: • Interceptors o É possível que um consumidor declare interceptors nas chamadas do portlet remoto, para uma lógica qualquer: Error handling / validation Implementação de cache Mudança de markup Mudança de HTTP HeadersContent Management • Motivações: o O conteúdo de um site é modificado muito frequentemente o O site precisa ser ágil, sem a necessidade de um desenvolvedor o Gerenciamento de mudança do conteúdo • Um Content Management System (CMS) deve prover: o Ferramentas para administração e desenvolvimento o Ferramentas para criação / publicação de conteúdo o Um repositório (storage) estruturado para armazenamento do conteúdo o Sistema de busca Property-based • Virtual Content Repository o É o repositório lógico para acesso e organização de conteúdos no console administrativo o Pode agrupar vários repositórios físicos logicamente • Content Repository o É o repositório físico, onde realmente fica guardado o conteúdo o Opções de Content Repository BEA Repository • Database (default) • File System o Mais performático o Se utilizado com versionamento, o conteúdo antigo é guardado na base de dados o Porém, não é transacional Third-Party Repository • Repositórios de outros fabricantes (ex. Documentum) o Por padrão, o versionamento de conteúdo (“Library Services”) vem desabilitado o Podemos utilizar Content Workflow somente em repositórios versionados • Content Types o É o template, a definição de um determinado tipo de conteúdoGilberto Holms http://gibaholms.wordpress.com/
  23. 23. o Suas características são definidas a partir de “Properties”, que podem ser: Boolean Long Integer Number Decimal String Date/Time Binary – um arquivo qualquer Nested Content Type – um sub-elemento complexo (outro Content Type) Link – algum outro conteúdo já implantado o Opções gerais para as Properties: Required Read Only Primary Property • Uma por content-type, podendo ser utilizada para otimizar a busca de conteúdos Searchable • Pode ser incluída na busca de conteúdo Is Explicit • Mapeia o valor para uma coluna específica na tabela do CMS Allow Multiple Values • Uma lista de valores Restrict Values • Cria um domínio de valores permitidos o Hierarquia de Content Types Abstract Content Types • Não podem virar conteúdo, serve apenas para ser “herdado” (é um) ou “agregado” (tem um) por outros Content Types o Adicionando conteúdo: Console Administrativo do Portal Através do Windows Explorer, se o WebDAV estiver configurado Programaticamente, utilizando CMS Controls e Content API Usando Propagation Tools o Content Folders Pastas utilizadas para agrupar lógicamente conteúdos Importante pois permite setar Visitor Entitlements e Workflow em folder-lever • WebDAV o Web-based Distributed Authoring and Versioning o É uma extensão do protocolo HTTP o Permite que administradores publiquem conteúdo através do Windows Explorer o Pode ser utilizada em um repositório por vez o O WebDAV determina o Content Type associado ao conteúdo de duas formas: Utiliza o Content Type default associado ao repositório Utiliza o Content Type default associado à pasta atual o Para isso, configurar as seguintes propriedades no repositório: WEBDAV_ENABLED e WEBDAV_TYPE • Library Services o Fornece: Versionamento Content Workflow Content Workspace Controle de ciclo-de-vida o Pode ser ativado apenas em repositórios do tipo “BEA Repository” o Content Workspace Uma user-view do conteúdo atual Gerencia check-in / check-out de conteúdo e os Assigned Itens para sua role no caso do uso de workflow o Content Workflow Workflow default:Gilberto Holms http://gibaholms.wordpress.com/
  24. 24. Criando workflows customizados • Através de arquivo de configurações XML • Cada estado do workflow é definido atrave´s de classes de estado default do produto, chamadas de Workflow Action Class • Exemplo de uma declaração de transição do status 2 para o status 6:<transition> <from-status id="2"> <capabilityConstraint>can_publish</capabilityConstraint> </from-status> ... <to-status id="6"> <capabilityConstraint>can_publish</capabilityConstraint> <action class="examples.workflow.TechnicalAction" /> </to-status></transition> • Selectors e Placeholders o O Portal fornece aos desenvolvedores alguns recursos para publicação de conteúdo gerenciável: Content Selectors Content Placeholders Campaigns JSP Tag Libraries Java API e Controls o Content Placeholders A cada request no portal, faz uma busca de conteúdo através de property values (através de uma query) e randomiza, escolhendo um conteúdo para exibir Comportamento de um banner Suporta prioridades e balanceamento de peso Suporta personalização utilizando properties e campaigns É criado no projeto DataSync Exemplo de querysource = ’edudev’ && !(title like ’Java*’)keywords contains ’bea’ || title = ’bea’expireDate > now Existem propriedades pré-definidas pelo portal, que podem ser utilizadas na query: • cm_nodeName • cm_path • cm_objectClass • cm_createdBy • cm_modifiedBy • cm_createdDate • cm_modifiedDate Exemplo de content query via TagLib:<cm:search id="nodes" query="title like ’Java*’ && cm_objectClass = ’books’" /> Exibindo o placeholder na página JSP:<ph:placeholder name="/placeholders/myPlaceholder.pla" height="100" width="150" /> Propriedades que podemos utilizar na tag ph:placeholder:Gilberto Holms http://gibaholms.wordpress.com/
  25. 25. o Content Selectors A cada request no portal, faz uma busca de conteúdo através de property values (através de uma query) e retorna todos os content nodes localizados Suporta personalização utilizando properties e segments Exibindo o selector na página JSP: • A Tag pz:contentSelector retorna o array de nodes encontrados, e então utilizamos uma tag netui-data:repeater para iterar sobre os nodes e exibí-los como necessário: <pz:contentSelector rule="myContentSelector" id="sampleContent" /> <netui-data:repeater dataSource="sampleContent"> <netui-data:repeaterHeader> <tr> <td>Content Title</td> </tr> </netui-data:repeaterHeader> <netui-data:repeaterItem> <tr> <td><cm:getProperty node="${container.item}" name="title" /></td> </tr> </netui-data:repeaterItem> </netui-data:repeater> • Content Management API o Node Representa um elemento/conteúdo no CMS Existem duas categorias de Node: • Hierarchy Nodes – pastas • Content Nodes – conteúdos Um Hierarchy Node pode conter outros Hierarchy Nodes e Content Nodes Características do Content Node • Possui um único ID • É tipado pelo content type (ObjectClass) • Contém properties o Property Representa um par chave/valor, que é associado a um Content Node o ObjectClass Representa o Content Type do qual foi criado o Content Node o ID É o identificador único do Content Node o Pacote com.bea.content o O ponto de partida é sempre uma ContentManagerFactory:ContentContext contentContext = new ContentContext(this.getRequest());INodeManager nodeManager = ContentManagerFactory.getNodeManager();Node node = nodeManager.addNode(contentContext, PathHelper.SEPARATOR + "BEA Repository" + PathHelper.SEPARATOR + "newNode", "someType", properties);Node newNode = nodeManager.getNode(context, "/BEA Repository/newNode"); Obs.: os entitlements necessários para acessar o content são determinados a partir da identidade do usuário obtida do request: new ContentContext(this.getRequest())Gilberto Holms http://gibaholms.wordpress.com/
  26. 26. o API Overview o Content Management Controls O portal oferece Beehive Content Controls para acessar a CMS API de forma simplificada Principais CMS Controls: • Content Node Control o Substitui o INodeManager o Permite: Adicionar novos Nodes Gerencias Nodes Obter Property e ID dos Nodes Obter Nodes filhos • Content Search Control o Substitui o ISearchManager o Permite: Buscar conteúdos através de uma content query Retorna uma SortableFilterablePagedResult, que é uma lista que pode ser ordenada, filtrada e paginada o Content Management JSP Tags Estas funcionalidades também são fornecidas através de tags: • <cm:search> • <cm:getNode> • <cm:getProperty> Os conteúdos retornados em forma de lista podem ser iterados por qualquer tag iterativa ou scriptlet Para mostrar propriedades binárias (ex.: imagens), é preciso utilizar o ShowBinary servlet Exemplos:<cm:getNode path="/BEA Repository/news" id="node" /><% String nodeName = node.getName(); %><cm:getNode path="/BEA Repository/news/news1" id="node"/><cm:getProperty id="node" name="title"/><cm:search id="nodes" query="source =edudev"/><% for(int i = 0;i < nodes.length; i++) { ... } %><cm:getNode path="/BEA Repository/MyImageContent" id="imageNode"/><img src="<%=request.getContextPath()%>/ShowBinary?nodePath=${imageNode.path}/MyBinaryProperty"/> • Content Management Administration API o É uma API parecida com a CMS API, porém permite a administração do sistema de Content Management do portal:Gilberto Holms http://gibaholms.wordpress.com/
  27. 27. Criar Repository Criar novo Folder ou Node Criar novo Content Type Adicionar um novo Workflow Check-in e Check-out de conteúdos o Usuários precisam estar autenticados e possuir permissão para as operações o Pacote com.bea.federated com.bea.federated.INodeManager com.bea.federated.ITypeManager com.bea.federated.IVersionManager o Content Administration Controls Também são fornecidos Beehive Content Administration Controls para simplificar o uso da API Principais CMS Administration Controls: o Content Node Control o Content Repository Control o Content Type Control o Content Workflow Control • Third-Party CMS Systems Integration o Arquitetura geral do sistema de CMS da BEA: o É criado como um Repository, que é associado a um Virtual Content Repository o Técnicas de integração que podem ser utilizadas: Implementação do BEA Content Repository Service Provider Interface (SPI) Implementação da JSR-170 Service Provider Interface (SPI) – “Content Repository for Java API” Propagação de conteúdo diretamente para as tabelas da BEA Portlets de conteúdo customizados o Se o fabricante optar pela JSR-170, é necessário implantar uma Bridge. O portal fornece esta bridgeGilberto Holms http://gibaholms.wordpress.com/
  28. 28. o Fabricantes que já se integram com o BEA Portal Documentum Interwoven FatWire StellentPortal Administration • Atividades possíveis de administração: o Usuários e profiles o Modificações finais em desktops e seus componentes o Setar permissão para componentes do portal de acordo com roles o Delegar capacidades administrativas para outros administradores o Publicar e aprovar conteúdo o Application deployment o Portal data propagation • Um portal tem dois ciclos bem definidos: Development e Administration o Development Criação do arquivo .portal, que é apenas o template de um portal o Administration Assemblar templates para criar um portal customizado, focado em um tipo de usuário Aplicar segurança nos recursos do portal Outras atividades post-development • Portal Template vs. Portal Desktop Instance o O arquivo .portal é apenas um template (filesystem portal) o A partir dele são criadas instâncias reais de portal (database portal) o Na instância real podemos modificar books, pages, portlets e look-and-feel, sem que o template .portal original seja alterado o A instância real (Desktop) é uma “view” do portal direcionada a um determinado publico • Portal Propagation Tool o Permite que mudanças de LDAP e base de dados sejam propagadas de um ambiente para outro o Desta forma, podemos por exemplo replicar no ambiente de produção todas as configurações realizadas no ambiente de homologação o Realizado através do Workshop ou script Ant o Podemos propagar: • Portal XIP Tool o Administradores podem fazer mudanças drásticas em um template de portal para criar sua instância em produção o O XIP Tool permite recriar template files (.portal, .book, .page) a partir dos últimos desktops usados em produção, para que as alterações feitas via console administrativo possam ser replicadas posteriormente • Portal Library Resources o São mostrados todos os recursos disponíveis para o portal deployado (books, pages, portlets, lafs, etc…) o Recursos que são sincronizados automaticamente durante o desenvolvimento: .portlet .shell .laf .layout .themeGilberto Holms http://gibaholms.wordpress.com/
  29. 29. o Recursos que precisam ser recarregados explicitamente: .portal Books Pages • Instância real – Production Desktop o URLs do production desktop: o Formas de criar um Production Desktop: Utilizar um template em uma lista Assemblar manualmente com os recursos da library Utilizar um arquivo .portal o No production desktop podemos setar/modificar: Details – resumo dos atributos Contents – gerenciar child resources (boos/pages) Preferences – gerenciar Portlet Preferences Visitor Entitlements Delegated AdminPortal Security • WebLogic Security Realm: • Users and Groups o Entidades do WebLogic Server Realm o Podem ser gerenciados pelo console do WebLogic Server ou pelo console administrativo do Portal • User Profiles o Dados adicionais sobre a entidade (ex.: endereço, telefone, emal, etc…) o São gerenciados pelo console administrativo do Portal o São agrupados em Property Sets • Roles o São classificações (perfis/papéis) para usuários o Podem ser atribuídos/classificados usuários das seguintes formas: Grupos Users Regras com atributos de User Profile Regras com atributos gravados na sessão (HttpSession) Tempo / horaGilberto Holms http://gibaholms.wordpress.com/
  30. 30. • Visitor Entitlements o É um mecanismo para determinar “quem” pode acessar qual recurso e “o quê” ele pode fazer o É a permissão é concedida a nível de “Role” o Podem ser aplicados a nível de Desktops Book Page Portlet Conteúdo o Podem ser concedidas permissões de: View Minimize Maximize Edit Remove o Já possui automaticamente dois Entitlements padrão: Authenticated Visitor – todos que estão autenticados (independente da role) AnonymousVisitor – todos que não estão autenticados • Visitor Tools o Permite que um Desktop seja customizado por cada usuário, para si próprio o A customização é persistida e permanece ativa para os próximos acessos do usuário o O usuário pode customizar: Adicionar/remover Books e Pages Posição dos Books e Pages Adicionar/remover Portlets Posição dos Portlets Trocar Look-and-Feel o Pode ser aplicado apenas a um Production Desktop (não a nível de arquivo .portal) o É preciso adicionar a “facet” chamada Portal Visitor Tools o É criada uma pasta “/visitorTools” com os componentes necessários e o Visitor Tools Portlet o Visitor Tools Portlet É o portlet que permite que o usuário gerencie sua view do desktop Geralmente é incluído no Header (arquivo .shell) Requer que o usuário esteja autenticado Fica em “/visitorTools/visitorMenu.portlet” o Através do Console Administrativo do Portal, o administrador pode dar LOCK em placeholders, o que disabilitará a customização daquele placeholder específico o O Entitlement para definir quem pode customizar qual recurso deve ser atribuído através da Library, e não da instância do desktopGroupSpace • Conceitos de Portais Colaborativos o Portais que permitem o compartilhamento de conteúdo entre usuários, como discussões, notificações, anúncios, email, etc. o Principais requisitos para colaboração: Interface unificada Member invitation e gerenciamento automático Controle de acesso à informação Ser extensível, para contemplar futuros requisitos • Weblogic Portal Communities o Weblogic Portal Community Framework Base para criar e manter Portais ColaborativosGilberto Holms http://gibaholms.wordpress.com/
  31. 31. Extende o core do Weblogic Portal Community • É uma coleção de recursos de portal que fornecem implementação dos requisitos de colaboração • Suporta compartilhamento de conteúdo • Suporta member registration / invitation Uma Community é uma forma especializada de um Portal Desktop Componentes de uma Community: • Componentes comuns de portal (como Books, Pages e Portlets) • Assemblado através do Console Administrativo do Portal • Pode ser iniciado através de um template criado no Workshop • Pode ser customizável através de Visitor Tools Community Templates • Da mesma forma que portais normais são criados através de templates .portal, as Communities são criadas por templates .community e .ctmeta o Gerenciamento de Usuários nas Communities Os usuários podem se tornar membros de uma community das seguintes formas: • Respondendo a um link de convite na página do portal • Respondendo a um email de convite • Registrando-se sem um convite (communities públicas) Papéis (roles) das Communities • Creator o Cria e gerencia comunidades, todas configurações de portlets, automaticamente é convidado para fazer parte da community • Owner o Apenas gerencia comunidades, todas configurações de portlets, automaticamente é convidado para fazer parte da community • Contributor o Utiliza todas as features dos portlets, exceto deletar conteúdo • Viewer o Utiliza apenas features read-only dos portlets • GroupSpace Community o É uma aplicação completa pré-definida criada sobre o Community Framework, com vários recursos prontos para serem customizados e reutilizados o Arquitetura do GroupSpace o GroupSpace Portlets Mail Calendar Document Library Discussion Forums RSS Reader Issues Tasks Announcements Search o Os usuários podem definir a visibilidade do conteúdo que postam nos GroupSpace Portlets: Community • Todos os membros da community PrivateGilberto Holms http://gibaholms.wordpress.com/
  32. 32. • Apenas o usuário que postou Personal • Apenas o usuário que postou, e o conteúdo é visível em todas comunidades que o usuário é membro o Todo o conteúdo das GroupSpace Communities são modelados através de Content Types, que são criados automaticamente pelo aplicativo o Os GroupSpace portlets suportam diversos tipos de customização via código Content Management – Principais Conceitos1 – Virtual Content Repository É o repositório lógico para acesso aos conteúdos pelo console de administração. Independe do tipo derepositório físico e pode agrupar vários repositórios físicos logicamente.2 – Repository É o repositório físico, onde realmente fica guardado o conteúdo. Pode ser dos seguintes tipos: • BEA Repository o Tipo Database (é o default) Já vem pré-configurado, utiliza base de dados tanto para guardar os metadados quanto o conteúdo. o Tipo Filesystem Utiliza base de dados para guardar os metadados e o disco rígido para guardar o conteúdo binário (tem melhor performance). Se utilizado com versionamento, o conteúdo antigo é guardado na database, assim se assegurando que se houver problemas no filesystem, os arquivos anteriores possam ser recuperados. Contra: não é transacional, se a rede cair durante uma alteração, ela será perdida. • Third-Party Repository Integração com repositórios de outros fabricantes. O versionamento (Library Services) por padrão vem desabilitado. Para habilitar: Aba “Repositories” > Selecione o repositório > Library Services Só podemos utilizar workflow em repositórios versionados.3 – Content Types É uma definição de um “Tipo de Conteúdo”, que pode ter propriedades de vários tipos “primitivos” (string,data, binário...) ou ainda um sub-elemento de outro “Content Type” complexo. Será o template para que a pessoa responsável por publicar conteúdo utilize, portanto deve ser bemdescrito.4 – Content Folders São pastas criadas dentro da aba “Content” para organizar o conteúdo. Servem para organizarlogicamente o conteúdo, mas são importantes porque também permitem setar workflow e autorização separadospor pasta (aliás, permite tanto configurações folder-level quanto file-level).5 – Content Workflow Permite um fluxo de aprovação para o conteúdo. Lembrete: precisa habilitar o versionamento (LibraryServices) do repositório. O portal fornece um workflow default, mas podemos criar um personalizado: - Criar um XML de definição de workflow - Adicionar ele no repositório - Setar as configurações de autorização dos steps do workflow - O workflow fica disponível para ser associado a qualquer recurso Podem ser associados a Content Folders, Content Types e Contents.6 – Content É um conteúdo criado (a implementação de um Content Type), pronto para ser carregado e exibido noportal.Gilberto Holms http://gibaholms.wordpress.com/
  33. 33. 7 – Detalhamento: Content Type • Property definitions: todo o metadado que possa ser útil obter no portal (como largura da imagem ou tamanho), ou para utilizar “Interaction Management”. o Boolean o Long Integer o Number Decimal o String o Date/Time o Binary – um arquivo qualquer (como por exemplo uma imagem) o Nested Content Type – um sub-elemento complexo (outro content type) o Link – algum outro conteúdo implementado • Property options: opções gerais da propriedade: o Required – é obrigatória ao criar o conteúdo o Read Only – valor não pode ser alterado o Primary Property – apenas uma por content type, com isso podemos criar uma busca de conteúdo apenas por esse campo para otimizar a consulta o Searchable – pode ser incluída na busca de conteúdo o Is Explicit – mapeia o valor para uma coluna específica da tabela do CMS o Allow Multiple Values – permite mais de um valor para a propriedade (array) o Restrict values – cria um choice (domínio) de valores permitidos • Abstract Content Types: tipos que não podem virar conteúdo diretamente, são apenas pedaços de um content type maior, ou seja, não têm significado sozinhos. • Content type inhiterance: é quando você deseja que content types herdem propriedades de um outro content type • Content workflow: associa o tipo a um workflow, ou seja, todo o conteúdo criado a partir desse tipo possuirá este workflow associado.Gilberto Holms http://gibaholms.wordpress.com/

×