IBM Web Content Management - Melhores práticas

1,511 views
1,383 views

Published on

Published in: Technology
3 Comments
3 Likes
Statistics
Notes
  • Rodrigo, muito obrigado! Muito esclarecedor! Realmente funcionou! Com relação ao desenvolvimento do servlet isso ali eu conseguia fazer, porém, jogando diretamente nessa página ali eu nao conseguia.

    No meu cenário aqui estou tentando adicionar um outro editor de texto, acredito que agora funcionará.

    Obrigado novamente.
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Olá André, no slide 40 eu dou duas sugestões de onde armazenar os arquivos jsp. Essa informação é complemento ao slide anterior sobre componentes jsp do WCM. O objetivo não é acessar estes arquivos diretamente pelo navegador.

    Instruções de como fazer referência ao arquivo jsp dentro de um componente jsp do WCM: http://www-10.lotus.com/ldd/portalwiki.nsf/xpDocViewer.xsp?lookupName=IBM+Web+Content+Manager+8+Product+Documentation#action=openDocument&res_title=Selecting_a_JSP_file_wcm8&content=pdcontent

    Se estiver desenvolvendo um aplicativo web que usa a API do WCM, você pode instalar normalmente no WAS e acessa-lo através do contexto da aplicação definido durante o deploy ou no descritor de implementação. Exemplo: http://myhost:10039/mycontextroot/myjsp.jsp.

    Mas respondendo diretamente sua pergunta, a url para acessar um jsp no PA_WCM_Authoring_UI seria do tipo:
    http://myhost:10039/wps/PA_WCM_Authoring_UI/jsp/html/myjsp.jsp

    Obrigado pelo comentário e abraço!

       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Amigo, no seu slide orienta colocar os arquivos .jsp no seguinte diretório:
    /installedApps/PA_WCM_Authoring_UI/ilw
    wcm-authoring.war/jsp/html

    E para acessar esse arquivo pelo navegador qual seria o endereço?

    Abraço! E obrigado desde já.
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total views
1,511
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
52
Comments
3
Likes
3
Embeds 0
No embeds

No notes for slide

IBM Web Content Management - Melhores práticas

  1. 1. IBM Web Content Management Melhores Práticas Rodrigo Reis IT Specialist & Application Architect IBM Collaboration Services
  2. 2. 2 Agenda ● Introdução ● Melhores Práticas ● WCM e Java Server Pages ● WCM API (Application Program Interface)
  3. 3. 3 Introdução
  4. 4. 4 Introdução ● Este workshop não é de introdução ao IBM Web Content Management ● Necessário conhecimento básico de Programação Web (JSP, HTML), IBM WebSphere Portal e IBM Web Content Management ● O projeto de um site com IBM WCM é similar ao de qualquer outro site ou sistema Web. Algumas práticas mencionadas aqui não são exclusivas do IBM WCM
  5. 5. 5 Melhores Práticas
  6. 6. 6 Melhores Práticas ● Antes de Iniciar ● Criação de Conteúdo ● Projetos ● Busca ● Syndication ● Performance ● Administração ● Explorando Assets
  7. 7. 7 Melhores Práticas: Antes de Iniciar A importância do planejamento ● Planejar é perda de tempo? ● Planejar é uma conta que sempre teremos de pagar ● Planejar não é garantia de ter um produto de qualidade ● Em média apenas 30% dos projetos são entregues no prazo
  8. 8. 8 Melhores Práticas: Antes de Iniciar No desenvolvimento do projeto, as seguintes áreas devem estar bem documentadas: ● Necessidade de negócio, modelo operacional, objetivo inicial e a longo prazo ● Usuários e seus objetivos ● Site Framework e arquitetura da informação ● Taxonomia ● Modelos de Workflow ● Arquitetura de Bibliotecas ● Definição de modelos de Autoria e Apresentação * Não são especificos do Web Content Management, mas devem ser conhecidos antes de iniciar a implementação do projeto
  9. 9. 9 Melhores Práticas: Antes de Iniciar ● Arquitetura de Deployment ● Modelo de Segurança ● Suporte a múltiplos idiomas e acessibilidade ● Requerimentos de Personalização ● Integração com outros produtos ● Busca
  10. 10. 10 Melhores Práticas: Antes de Iniciar Gestão do conhecimento ● Manter os assets de projeto atualizados ● Disseminação da informação ✔ Descrição do projeto ✔ Membros e responsabilidades ✔ Documentos (arquitetura, técnicos, manuais, etc) ✔ Links internos e externos ✔ Detalhamento dos processos (Build, Deploy, Defects, ...) ✔ Cronograma ● Utilizar ferramentas de apoio
  11. 11. 11 Melhores Práticas: Antes de Iniciar Por que ter um ambiente de autoria? ● Evitar inserir erros diretamente em produção ● Segurança, garantir que conteúdos críticos não serão acidentalmente modificados ● Visualizar alterações antes de publicar ● Aprovar alterações antes de publicar ● Agendar quando alterações serão publicadas
  12. 12. 12 Melhores Práticas: Criação de Conteúdo ● Planejar a criação de conteúdo Garantir que o Site terá conteúdo suficiente para testes e publicação ● Criar Grupos de acesso Evitar assim adicionar acesso à usuários diretamente em conteúdo e componentes ● Criar Bibliotecas de Conteúdo Não é recomendado utilizar a biblioteca padrão. Ao invés disso crie suas próprias bibliotecas ● Evitar espaços e caracteres especiais no nome de bibliotecas Não nomear biblioteca com mesmo nome de um portal virtual
  13. 13. 13 Melhores Práticas: Criação de Conteúdo ● Use bibliotecas de forma eficiente Por exemplo, divida seu site em uma biblioteca de conteúdo e outra de componentes ● Ao criar bibliotecas, defina as permissões à biblioteca e tipos de recurso Para por exemplo, permitir criadores de conteúdo ver conteúdo e ocultar deles todos recursos administrativos ● Quando mover conteúdo entre bibliotecas é recomendado usar a função Mover A função Mover irá atualizar qualquer referência ao item movido
  14. 14. 14 Melhores Práticas: Criação de Conteúdo ● Defina um padrão de nomenclatura para todos tipos de elementos Ajuda a manter a organização e localizar facilmente elementos ● Considere a utilização de um prefixo de biblioteca Quando trabalhando com mais de uma biblioteca ● Crie componentes reutilizáveis Exemplos: header e footer, layouts de menu e navigator, javascript, … ● Use o componente CSS Exemplo: Um campo Rich Text pode ser configurado para usar um CSS
  15. 15. 15 Melhores Práticas: Criação de Conteúdo ● Use o Inline editing para editar e criar conteúdo diretamente na página É recomendado utiliza-lo apenas em ambiente de autoria para evitar conflitos de syndication ● Defina conteúdo padrão para Site Areas Considere bloquear o conteúdo padrão para prevenir ele de ser excluído ou modificado Se um conteúdo padrão não for definido, o primeiro conteúdo da Site Area será exibido ● Evite um número excessivo de portlets Web Content View numa mesma página Matenha um número menor que 5, que está de acordo com as melhores práticas do WebSphere Portal
  16. 16. 16 Melhores Práticas: Criação de Conteúdo ● Não utilize nomes longos (>50 caracteres) para Site Areas e Content São utilizados na construção de URLs ● Não utilize IDs de elementos e espere integridade IDs são ponteiros internos e podem ser atualizados ● Não modifique arquivos Java e JSP do produto Não irá obter suporte e perderá as modificações quando aplicar um fix ou atualização
  17. 17. 17 Melhores Práticas: Projetos ● Projetos agrupam alterações que você e outros usuários estão fazendo ● Itens de projeto são isolados do site publicado e de outros projetos ● Itens individuais em um projeto não são visíveis no site publicado até o projeto inteiro ser publicado ● Todos itens de um projeto podem ser pré-visualizados juntos antes da publicação
  18. 18. 18 Melhores Práticas: Projetos Mudanças em um site são isoladas das operações diárias ● Mude a estrutura e layout do site ● Adicione novas Site Areas ● Marque elementos de design ou conteúdo para exclusão ● Teste a apresentação dos elementos de design no contexto do site real
  19. 19. 19 Melhores Práticas: Projetos Desenvolvedores podem coordenar grandes mudanças em um site sem impactar nenhum visitante ou criador de conteúdo
  20. 20. 20 Melhores Práticas: Busca de conteúdo ● Entender o que é requerido pela busca ✔ Qual conteúdo será buscado? ✔ Onde está armazenado? ✔ Quanto conteúdo existe e quais os formatos? ✔ Quais campos serão pesquisados? ✔ Qual formato da query? ✔ Como os resultados serão exibidos? ● Conhecer o perfil dos usuários Não crie um sistema de busca avançado se seus usuários nunca irão utilizar. A busca deve ser simples e fácil de usar
  21. 21. 21 Melhores Práticas: Busca de conteúdo ● Buscar conteúdo seguro A segurança estará garantida desde que o acesso esteja definido para Apenas usuários autenticados ● Considerar a utilização de ferramentas de busca externas Se seus requerimentos de busca são extensos, é recomendado integrar uma ferramenta de busca externa ● Não escreva um mecanismo de busca usando API só porque você pode Se o Portal não atende os requerimentos, considere uma ferramenta externa antes de tentar usar a API
  22. 22. 22 Melhores Práticas: Syndication ● Configure servidores de Delivery como Subscribe Only Interrompe tarefa de monitoramento que busca de itens para ser sindicados ● Escolha o tipo Live Items quando sindicando para servidores de produção A menos que se tenha uma necessidade especifica, como conteúdo podendo ser modificado diretamente em Delivery ● Permissões de acesso a bibliotecas não são sindicados Defina o acesso à biblioteca manualmente após a primeira sindicância ou alterações subsequentes
  23. 23. 23 Melhores Práticas: Syndication ● Sindicar todas bibliotecas necessárias Se um conteúdo na biblioteca A faz referência a um componente na biblioteca B, ambas devem estar incluídas no mesmo syndicator ● Aumente a frequência de sindicância Em ambientes de testes, por exemplo, 20 minutos ou mais pode ser um intervalo mais apropriado
  24. 24. 24 Melhores Práticas: Performance ● Evite ter uma Homepage com tamanho superior a 80Kb Verifique se todos componentes da página estão otimizados (imagens com qualidade em 60%, css e javascript minificados, etc). ● Garanta que todos componentes de Menu e Navegação estão otimizados Evite vários critérios de busca ● Otimize Modelos de Autoria Para um melhor desempenho, é recomendado limitar o número de elementos (menor que 15) ● Garanta que os servidores LDAP estão otimizados Uso de grande número de atributos e queries mal formadas degradam a performance
  25. 25. 25 Melhores Práticas: Performance ● Garanta que o Portal Server está otimizado JVM, Aplicativos rodando, etc ● Garanta que o HTTP Server está otimizado Cache, compressão, etc ● Monitore e resolva todos erros encontrados nos logs do Portal Excessões de aplicativos, segurança, componentes ausentes, etc ● Defina uma política de cache Use Pre-Rendering, Servlet-Caching (ex. Dynacache) ou Web Content Management Caching
  26. 26. 26 Melhores Práticas: Performance ● WCM Caching A performance do WCM varia de acordo com o tipo de cache selecionado BASIC - É o tipo de cache mais simples, a primeira vez que a pagina é renderizada pelo WCM é armazenada em cache e então todos usuários irão acessar o mesmo conteúdo até que ele expire. Logo não pode ser usado para site com conteúdos personalizados SITE - Igual ao BASIC, exceto pelo fato que podemos usar connect tags para sobrescrever o cache default. Não pode ser usado para site com conteúdos personalizados
  27. 27. 27 Melhores Práticas: Performance SECURED - Neste tipo de cache usuários que têm configurações de grupo idênticas acessam os mesmos itens em cache. Recomendado para sites personalizados onde acesso a diferentes páginas da Web e componentes WCM são baseados em grupos PERSONALIZED - Aqui usuários que compartilham o mesmo perfil de personalização acessam os mesmos itens em cache. Recomendado para sites que utilizam regras de personalização baseadas em perfis USER - Para este cache, uma cópia de cada página que o usuário visita é armazenada no cache de usuário. Recomendado quando não podemos usar regras de personalização baseadas em perfis ou via grupos de acesso SESSION - Uma cópia de cada página que o usuário visita é armazenado no cache de sessão. Possui pior performance de todos os tipos de cache, não recomendado o uso, são ser que realmente necessário
  28. 28. 28 Melhores Práticas: Performance ● Connect tag Cache personalizado pode ser aplicado a componentes do WCM dentro de modelos de apresentação para especializar o tipo de cache <connect SRV="cmpnt" PATH="/libraryname/Site/SiteArea/Content" SOURCE="library" CMPNTNAME="TestNav" CONTENTCACHE="site" EXPIRES="REL 9000s"> </connect>
  29. 29. 29 Melhores Práticas: Administração ● Tenha uma estratégia de backup ativa Sempre teste o backup e restore e verifique se todos itens estão no backup ● ● Monitore o site “Recommended fixes and updates for WebSphere Portal” Verifique a lista de fixes recomendados e teste antes de distribuir em todos ambientes ● Otimize o banco de dados JCR Periodicamente otimize índices e tabelas do banco que armazena todos dados do Web Content Management
  30. 30. 30 Melhores Práticas: Administração ● Não habilite traces e deixe eles lá Traces devem ser usados para monitorar pontualmente um problema, sua ativação degrada a performance ● Monitore, Monitore, Monitore Monitore uso de CPU, Memória, Rede e outros elementos dos servidores LDAP, HTTP, Banco de Dados e WebSphere
  31. 31. 31 Melhores Práticas: Explorando Assets ● Por que reinventar da roda? Muitos Assets disponíveis no site IBM Collaboration Solutions Catalog ● Exemplos de Assets voltados para WCM ✔ Content Template Catalog (CTC) É um conjunto de melhores práticas e modelos que aceleram a construção de um website ✔ IBM Support Tool for WCM Inclui uma variedade de ferramentas que são úteis na solução de problemas relacionados com conteúdo ✔ Web Content Manager Social Media Publisher Extensão para WCM que permite às empresas promover o seu conteúdo web em redes sociais (bem como fornecer algumas estatísticas básicas sobre o conteúdo promovido)
  32. 32. 32 WCM e Java Server Pages
  33. 33. 33 WCM e Java Server Pages: TagLib ● São utilizadas para ter acesso facilitado a componentes e conteúdos do WCM ● Podem ser utilizadas no componente JSP ou em páginas JSP Dentro de uma página JSP o suporte é incluído com o seguinte código: <%@ taglib uri="/WEB-INF/tld/wcm.tld" prefix="wcm" %>
  34. 34. 34 WCM e Java Server Pages: TagLib ● InitWorkspace - Utilizado para inicializar a workspace <wcm:initworkspace username=" " password=" " > [Error Message] </wcm:initworkspace> ● Explicit Context - Define explicitamente o contexto atual <wcm:setExplicitContext wcmWebAppPath=" " wcmServletPath=" " path=" " > [Error Message] </wcm:setExplicitContext>
  35. 35. 35 WCM e Java Server Pages: TagLib ● Context Retrieval - Define o contexto baseado numa localização na forma de url <wcm:setContext location=" " wcmWebAppPath="" wcmServletPath="" param=" " > [Error Message] </wcm:setContext> ● libraryComponent - Renderiza o componente de uma biblioteca <wcm:libraryComponent name=" " > [Error Message] </wcm:libraryComponent>
  36. 36. 36 WCM e Java Server Pages: TagLib ● content - Renderiza o conteúdo baseado no contexto atual <wcm:content pageDesign=" " > [Error Message] </wcm:content> ● contentComponent - Renderiza o elemento de uma Site Area ou Conteúdo atual <wcm:contentComponent type=" " key=" " > [Error Message] </wcm:contentComponent> Melhor prática: - Se for adicionar suporte a múltiplos idiomas no tratamento de erros, considere o uso de Java Resource Bundles
  37. 37. 37 WCM e Java Server Pages: Exemplo TagLib <%@ taglib uri="/WEB-INF/tld/wcm.tld" prefix="wcm" %> <html> <head> <title>Testando IBM Workplace Web Content Management JSP</title> </head> <body> <wcm:initworkspace username=“wpsadmin" password="password" > initworkspace falhou!<br> </wcm:initworkspace> <wcm:setExplicitContext path="Showcase/Showcase+Internal+Site/News/" > Explicit Context falhou!<br> </wcm:setExplicitContext>
  38. 38. 38 WCM e Java Server Pages: Exemplo TagLib <wcm:libraryComponent name=“SC Menu News"> Component falhou!<br> </wcm:libraryComponent> <wcm:content> Content falhou!<br> </wcm:content> <wcm:contentComponent type="content" key=“SC Body" > Content Component falhou!<br> </wcm:contentComponent> </body></html>
  39. 39. 39 WCM e Java Server Pages: Remote Actions ● Usando Remote Actions <a href="?wcmAuthoringAction=<action>">Text</a> ● Ações disponíveis ● Approve ● Decline ● Delete ● Edit ● Read ● Openmainview ● New
  40. 40. 40 WCM e Java Server Pages: Remote Actions ● Approve, decline, delete, edit, read: Exemplo, aprovar e rejeitar um item do workflow: ?wcmAuthoringAction=approve&docid=ID1 ?wcmAuthoringAction=decline&docid=ID1&docid=ID2 ● openmainview: Usado para abrir uma janela com o portlet de autoria: ?wcmAuthoringAction=openmainview&view=contentbysitearea Parametros: contentbysitearea, contentbytitle, myrecentmydraft, mypendingapproval, mypublished, myexpired, mydeleted, alldraftitems, allexpireditems, allpublisheditems, alldeleteditems, componentsbytype
  41. 41. 41 WCM e Java Server Pages: Remote Actions ● new: ✔ Usado para abrir o formulário de novo item: ?wcmAuthoringAction=new&type=com.ibm.workplace.wcm.api.* Parametros: Nome das classes dentro do pacote com.ibm.workplace.wcm.api.<Name> ✔ Para novo conteúdo é possível especificar o template de autoria: wcmAuthoringAction=new&type=com.ibm.workplace.wcm.api.WCM_C ontent?atid=ID ✔ Para novos Site Areas, Conteúdo e Categorias é possível especificar o pai do novo item: wcmAuthoringAction=new&type=com.ibm.workplace.wcm.api.WCM_S iteArea?pid=ID
  42. 42. 42 WCM e Java Server Pages: Remote Actions <table> <tr><td> <a href="? wcmAuthoringAction=new&type=com.ibm.workplace.wcm.api.WCM_Content"> Criar novo Conteúdo</a> </td></tr> <tr><td> <a href="?wcmAuthoringAction=openmainview&view=contentbytitle"> Abrir conteúdo por título</a> </td></tr> <tr><td> <a href="?wcmAuthoringAction=openmainview&view=contentbysitearea"> Abrir conteúdo por site area</a> </td></tr> </table>
  43. 43. 43 WCM e Java Server Pages: Componente JSP ● Utiliza uma página JSP existente no servidor Pode conter TagLibs do WCM ou código WCM API ● Podem ser integradas a qualquer Template de Apresentação como componente
  44. 44. 44 WCM e Java Server Pages: Componente JSP Armazenando páginas JSP ✔ Para uso no Portlet de Autoria (como Pagina de Ativação, Editor de Texto ou JSP para Template de Autoria) <portal_server_root>/installedApps/PA_WCM_Authoring_UI/ilwwcm- authoring.war/jsp/html ✔ Para uso genérico (em tema, portlets, etc), crie um WAR para armazenar a página Melhores práticas: - A sindicância não irá mover as páginas JSP referenciadas em componentes JSP - Instalação de fixes pode remover arquivos JSP do portlet de Autoria
  45. 45. 45 WCM e Java Server Pages: Página de Ativação ● Criar um interface de autoria simples e com as ações mais comuns ● Restringir acesso a estrutura da biblioteca de conteúdo ● Pode utilizar TagLib, Remote Actions e código Java
  46. 46. 46 WCM API
  47. 47. 47 WCM API: Introdução A API publica do WCM é focada no processamento de conteúdo ● Bibliotecas de Conteúdo Criar, Excluir, Mover ou copiar items entre bibliotecas ● Busca Localizar itens por: nome ou tipo, conteúdo modificados a partir de uma data, por template de autoria, categoria, caminho ou status de workflow ● Recuperar itens por ID ● Criar, excluir e salvar os seguintes itens: Content, Site Areas, File Resource, HTML, Image, Date and Time, Link, Number, Style Sheet or User Selection ● Aprovar ou Rejeitar contéudo em um estágio de workflow
  48. 48. 48 WCM API: Obtendo Workspace <%@ page import="com.ibm.workplace.wcm.api.*" %> <% // Declara Workspace e Inital Context InitialContext ctx = null; Workspace workspace = null; // Recupera o servico WebContentService usando JNDI WebContentService webContentService = (WebContentService) ctx.lookup("portal:service/wcm/WebContentService"); //Obtem Workspace para o usuario autenticado Workspace = webContentService.getRepository().getWorkspace(); //Trabalha com a workspace … %>
  49. 49. 49 ● Outros metódos para obter Workspace  getSystemWorkspace() Retorna a Workspace representando a visão do sistema  getAnonymousWorkspace() Retorna a Workspace para um usuário anônimo  getWorkspace(java.security.Principal principal) Retorna a Workspace para um usuário especifico Melhor prática: - Finalizar uma workspace apenas dentro de um JSP fora do WCM: endWorkspace() WCM API: Obtendo Workspace
  50. 50. 50 Melhor prática: - Obter uma workspace do WCM é uma operação extensa, considere salvar a workspace do usuário atual para melhor performance <%@ page import="com.ibm.workplace.wcm.api.*" %> <% // Cria WCM Workspace (ira salvar na sessao automaticamente) %> <wcm:initworkspace user="<%= request.getUserPrincipal() %>" > <% // Obtem workspace armazenada na sessao Workspace usersWorkspace = (Workspace) pageContext.getAttribute(Workspace.WCM_WORKSPACE_KEY); //Trabalha com a workspace … %> WCM API: Usando cache
  51. 51. 51 Melhor prática: - Também é possível armazenar a workspace usando um Sigleton public static Workspace getSystemWorkspaceInstance(){ if(ws == null) ws = getSystemWorkspace(); return ws; } Melhor prática: - Coloque funcionalidades comuns dentro de um JSP ou classe utilitária. Assim você poderá alterar funcionalidades comuns em apenas um lugar e refletir em todos locais que o utilizam WCM API: Usando cache
  52. 52. 52 WCM API: Criando conteúdo ● workspace.createContent – cria um novo objeto Content baseado numa template de autoria e site area Exemplo: Criando e salvando um conteúdo ... //Cria um conteudo vazio Content newContent = workspace.createContent(authoringTemplate, parentSiteArea, null, ChildPosition.END); //Define o nome do conteudo newContent.setName("Travel - Be the first tourist on the moon"); //Salva do conteudo workspace.save(newContent); ...
  53. 53. 53 WCM API: Localizando elementos //Obtem biblioteca de documentos DocumentLibrary documentLibrary = workspace.getDocumentLibrary("content"); //Define biblioteca de documento para trabalhar na sessao workspace.setCurrentDocumentLibrary(documentLibrary); //Recupera SiteArea pai DocumentIdIterator parentIter = workspace.findByName(DocumentTypes.SiteArea, ”Travel"); DocumentId parentSiteArea = null; if(parentIter.hasNext()) { parentSiteArea = parentIter.nextId(); } //Recupera o Template de Autoria DocumentIdIterator authoringIter = workspace.findByName(DocumentTypes.AuthoringTemplate, "Article"); DocumentId authoringTemplate = null; if(authoringIter.hasNext()) { authoringTemplate = authoringIter.nextId(); } ...
  54. 54. 54 WCM API: Exemplo de workflow ... //Localiza conteudo usando findByName DocumentIdIterator contentIter = workspace.findByName(DocumentTypes.Content, "Lista de Aplicativos"); DocumentId contentId = null; if(contentIter.hasNext()) { contentId = contentIter.nextId(); } //Recupera conteudo usando getById Content content = (Content)workspace.getById(contentId); //Move conteudo para proximo estagio de workflow content.nextWorkflowStage(); //Salva conteudo workspace.save(content); ...
  55. 55. 55 WCM API: Busca de conteúdo ● workspace.contentSearch – retorna todos documentos que satisfazem os critérios de busca public com.ibm.workplace.wcm.api.DocumentIdIterator contentSearch (com.ibm.workplace.wcm.api.DocumentId templateId, com.ibm.workplace.wcm.api.DocumentId[] siteAreaIds, com.ibm.workplace.wcm.api.DocumentId[] categoryIds, java.lang.String[] keywords, boolean matchAllKeys *) * Opcional ● O método contentSearch() se comporta de maneira similar ao componente de Menu ● Se Site Area forem especificadas, todos ascendentes e descendentes serão incluídos ● A ordem dos resultados não é garantida Melhor prática: - Apenas utilizar contentSearch se não for possível usar o componente Menu
  56. 56. 56 WCM API – Outras opções de busca Workspace.findContentByAuthoringTemplate Workspace.findContentByCategory Workspace.findContentByWorkflowStage Workspace.findByType Workspace.findContentByPath Workspace.findContentModifiedBetween Workspace.findContentModifiedSince Workspace.findByPath Workspace.findContentByWorkflowStage
  57. 57. 57 WCM API – Estendendo o uso da API ● Estender e integrar o Web Content Management com aplicações externas via JMS (Java Messaging Service) ● Query API ● Rendering Plugin Extension Point ● Text Provider Extension Point
  58. 58. 58 WCM API – JMS & WCM ● Mensagens JMS podem ser publicadas para: Autoria: Criar, Atualizar, Mover, Excluir Sindication: Iniciar, Parar Pre-Rendering: Iniciar, Parar ● Mensagens contem todas informações relevantes para eventos: Atualizar Item: ItemState Status do Item DocId UUID do item que foi atualizado DocName Nome do item que foi atualizado DocType Tipo, nome da classe API do item LibraryId Id da biblioteca que contem o item LibraryName Nome da biblioteca que contem o item
  59. 59. 59 WCM API – Query API ● Criar queries escaláveis para qualquer item armazenado no WCM ● Resultados podem ser ordenados e paginados Os seguintes parametros podem ser combinados para compor as queries: Tipo do Item Criador Data Expiração Id do Item Autor Data Publicação Nome do Item Proprietário Workflow Titulo do Item Modificado por Estágio Workflow Biblioteca Criado Desde Status Workflow Status Projeto Modificado Desde Palavras chaves Categorias ● Resultados de uma query pode ser ordenado por: Autor Titulo do Item Data Criação Nome do Item Data Modificação
  60. 60. 60 WCM API: Exemplo de Query API //Obtem QueryService a partir da Workspace e cria query QueryService queryService = getWorkspaceInstance().getQueryService(); Query query = queryService.createQuery(Folder.class); //Obtem biblioteca de documentos a ser pesquisada DocumentLibrary library = getWorkspaceInstance().getDocumentLibrary(“Biblioteca”); //Define parametros de pesquisa query.addSelector(Selectors.libraryEquals(library)); query.addSelector(HistorySelectors.modifiedSince(oneWeekAgo())); query.addSort(Sorts.byDateModified(SortDirection.DESCENDING)); //Executa query e armazena resultados ResultIterator results = null; results = queryService.execute(query);
  61. 61. 61 WCM API – RenderingPlugin Extension Point ● Permite criar novos componentes de renderização Java Web App que implementa RenderingPlugin e contem um descritor plugin.xml ● Pode declarar plugins dentro de HTML ou campos RichText [Plugin:{Nome do Plugin}] ● Plugins podem ter tags de abertura e fechamento e opcionalmente renderizar conteúdos dentro da tag [Plugin:{Nome do Plugin}] [Component name=”Algum componente"] [/Plugin:{Nome do Plugin}]
  62. 62. 62 WCM API – RenderingPlugin Extension Point ● Plugins podem ter múltiplos parametros. Parametros podem ter múltiplos valores [Plugin:{Nome do Plugin} param1=”val1” param2=”val2” param3=”val3”] ● O valor de um parametro pode ser o resultado de outra tag WCM [Plugin:MyRenderingPlugin encode="false“ key="ARTICLE_1“ title="[Property context='current' type='content' field='title']"] Exemplos de uso: ● Incluir vídeos ● Conteúdo dentro de conteúdo ● Integrar com uma ferramenta como Velocity
  63. 63. 63 WCM API – Text Provider Extension Point ● Permite a localização de campos na interface de autoria Java Web App que implementa TextProvider e contem um descritor plugin.xml ● Campos localizados são exibidos em formulários e exibições ● Campos que podem ser localizados Elementos no Template de Autoria Titulo de Exibição Descrição Campos de Ajuda
  64. 64. 64 WCM API – Quando usar JSP e API? ● Usar conteúdo dentro de outros portlets ● Acessar funcionalidades do Portal dentro do WCM ● Layouts não possíveis usando componentes padrões do WCM ● Importa conteúdo ou recurso Web de outras fontes ● Publicação automática de conteúdo do WCM ● Intregação de conteúdo com sistemas externos ● Enfim, quando quiser ir além do que o WCM oferece no portlet de autoria
  65. 65. 65 Informações adicionais IBM Web Content Management Home Page http://www.ibm.com/software/lotus/products/webcontentmanagement/ IBM Web Content Management Information Center documentation http://www-10.lotus.com/ldd/portalwiki.nsf/xpDocViewer.xsp? lookupName=IBM+Web+Content+Manager+7+Product+Documentation#action= openDocument&content=catcontent&ct=prodDoc Java doc for IBM Web Content Management 7 API http://public.dhe.ibm.com/software/dw/lotus/portal_javadoc/7/lwcm/api- javadoc/index.html IBM Collaboration Solutions Catalog https://greenhouse.lotus.com/catalog/
  66. 66. 66 Referências ● What’s NEW and HOT in Portal WCM 7 - Stuart Crump ● ICS TechTalk: Making Your Content More Social with IBM Web Content Manager's Content Template Catalog v3 - Herbert Hilhorst, Chris Berry ● IBM Workplace Web Content Management: API Development Best Practices - Herbert Hilhorst ● Best Practices for using IBM Workplace Web Content Management V6.0 - David De Vos, Melissa Howarth
  67. 67. © 2013 IBM Corporation Obrigado!!! Rodrigo Reis rodrigoareis@br.ibm.com IT Specialist & Application Architect IBM Software Services for Collaboration

×