Date post: | 05-Dec-2014 |
Category: |
Technology |
Upload: | rodrigoareis |
View: | 1,011 times |
Download: | 2 times |
© 2009 IBM Corporation
IBM WCM – Melhores Práticas
IBM Software
Rodrigo ReisIT Specialist & Application ArchitectIBM Software Services for Collaboration
© 2012 IBM Corporation2
Agenda
Introdução
IBM WCM - Melhores Práticas
IBM WCM e Java Server Pages
IBM WCM API (Application Program Interface)
© 2012 IBM Corporation3
Introdução
© 2012 IBM Corporation4
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.
© 2012 IBM Corporation5
IBM WCM – Melhores Práticas
© 2012 IBM Corporation6
IBM WCM – Melhores Práticas
Antes de Iniciar
Criação de Conteúdo
Projetos
Busca
Syndication
Performance
Administração
Explorando Assets
© 2012 IBM Corporation7
IBM WCM – 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
© 2012 IBM Corporation8
IBM WCM – 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 templates de Autoria e Apresentação
– Arquitetura de Deployment
– Modelo de Seguraça
– Suporte a múltiplos idiomas e acessibilidade
– Requerimentos de Personalização
– Integração com outros produtos
– Busca
* Não são especificos do Web Content Management, mas devem ser conhecidos antes de iniciar a implementação do projeto
© 2012 IBM Corporation9
IBM WCM – 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
© 2012 IBM Corporation10
IBM WCM – 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
© 2012 IBM Corporation11
IBM WCM – 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
© 2012 IBM Corporation12
IBM WCM – 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 para 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
© 2012 IBM Corporation13
IBM WCM – 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
© 2012 IBM Corporation14
IBM WCM – 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
© 2012 IBM Corporation15
IBM WCM – 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
© 2012 IBM Corporation16
IBM WCM – 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
© 2012 IBM Corporation17
IBM WCM – 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
© 2012 IBM Corporation18
IBM WCM – Melhores Práticas: Projetos
Desenvolvedores podem coordenar grandes mudanças em um site sem impactar nenhum visitante ou criador de conteúdo
© 2012 IBM Corporation19
IBM WCM – 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
© 2012 IBM Corporation20
IBM WCM – 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
© 2012 IBM Corporation21
IBM WCM – Melhores Práticas: Syndication
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
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
© 2012 IBM Corporation22
IBM WCM – 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
© 2012 IBM Corporation23
IBM WCM – 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
© 2012 IBM Corporation24
IBM WCM – 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 Basic Caching
© 2012 IBM Corporation25
IBM WCM – 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
© 2012 IBM Corporation26
IBM WCM – 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
© 2012 IBM Corporation27
IBM WCM – 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 WCMInclui uma variedade de ferramentas que são úteis na solução de problemas relacionados com conteúdo
–Web Content Manager Social Media PublisherExtensã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)
© 2012 IBM Corporation28
IBM WCM e Java Server Pages
© 2012 IBM Corporation29
IBM 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" %>
© 2012 IBM Corporation30
IBM 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>
© 2012 IBM Corporation31
IBM 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>
© 2012 IBM Corporation32
IBM 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
© 2012 IBM Corporation33
IBM 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>
© 2012 IBM Corporation34
IBM 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>
© 2012 IBM Corporation35
IBM 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
© 2012 IBM Corporation36
IBM 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.
Exemplo:?wcmAuthoringAction=openmainview&view=contentbysiteareaParametros: contentbysitearea, contentbytitle, myrecentmydraft, mypendingapproval, mypublished, myexpired, mydeleted, alldraftitems, allexpireditems, allpublisheditems, alldeleteditems, componentsbytype
© 2012 IBM Corporation37
IBM 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_Content?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_SiteArea?pid=ID
© 2012 IBM Corporation38
IBM WCM e Java Server Pages: Exemplo 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>
© 2012 IBM Corporation39
IBM WCM e Java Server Pages: Usando 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
© 2012 IBM Corporation40
IBM WCM e Java Server Pages: Usando 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
© 2012 IBM Corporation41
IBM 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
© 2012 IBM Corporation42
IBM WCM API
© 2012 IBM Corporation43
IBM 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
© 2012 IBM Corporation44
IBM 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
…
%>
© 2012 IBM Corporation45
IBM WCM API: Obtendo Workspace
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()
© 2012 IBM Corporation46
IBM WCM API: Usando cache
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
…
%>
© 2012 IBM Corporation47
IBM WCM API: Usando cache
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
© 2012 IBM Corporation48
IBM WCM API: Criando conteúdo
workspace.createContent – cria um novo objeto Content baseado numa template de autoria e site area
public com.ibm.workplace.wcm.api.Content createContent(com.ibm.workplace.wcm.api.DocumentId authoringTemplateId,com.ibm.workplace.wcm.api.DocumentId parentSiteAreaId *,com.ibm.workplace.wcm.api.DocumentId siblingId *,int position *)* Opcional
Exemplo: Criando e salvando um conteúdo...//Cria um conteudo vazioContent newContent = workspace.createContent(authoringTemplate, parentSiteArea, null, ChildPosition.END);//Define o nome do conteudonewContent.setName("Travel - Be the first tourist on the moon");//Salva do conteudoworkspace.save(newContent);...
© 2012 IBM Corporation49
IBM WCM API: Localizando Site Area e Template de Autoria
//Obtem biblioteca de documentosDocumentLibrary documentLibrary = workspace.getDocumentLibrary("content");
//Define biblioteca de documento para trabalhar na sessao workspace.setCurrentDocumentLibrary(documentLibrary);
//Recupera SiteArea paiDocumentIdIterator parentIter = workspace.findByName(DocumentTypes.SiteArea, ”Travel");DocumentId parentSiteArea = null;if(parentIter.hasNext()) { parentSiteArea = parentIter.nextId();}
//Recupera o Template de AutoriaDocumentIdIterator authoringIter = workspace.findByName(DocumentTypes.AuthoringTemplate, "Article");DocumentId authoringTemplate = null;if(authoringIter.hasNext()) { authoringTemplate = authoringIter.nextId();}...
© 2012 IBM Corporation50
IBM WCM API: Movendo conteúdo para próximo estágio
...//Localiza conteudo usando findByNameDocumentIdIterator contentIter = workspace.findByName(DocumentTypes.Content, "Lista de Aplicativos");
DocumentId contentId = null;if(contentIter.hasNext()) { contentId = contentIter.nextId();}
//Recupera conteudo usando getByIdContent content = (Content)workspace.getById(contentId);
//Move conteudo para proximo estagio de workflowcontent.nextWorkflowStage();
//Salva conteudoworkspace.save(content);...
© 2012 IBM Corporation51
IBM WCM API: Busca de conteúdoworkspace.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
© 2012 IBM Corporation52
IBM WCM API – Outras opções de busca de conteúdo da API
Workspace.findContentByAuthoringTemplate
Workspace.findContentByCategory
Workspace.findContentByWorkflowStage
Workspace.findByType
Workspace.findContentByPath
Workspace.findContentModifiedBetween
Workspace.findContentModifiedSince
Workspace.findByPath
Workspace.findContentByWorkflowStage
© 2012 IBM Corporation53
IBM 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
© 2012 IBM Corporation54
IBM WCM API – JMS & WCM
Mensagens JMS podem ser publicadas para:Autoria: Criar, Atualizar, Mover, ExcluirSindication: Iniciar, PararPre-Rendering: Iniciar, Parar
Mensagens contem todas informações relevantes para eventos:
Atualizar Item:ItemState Status do ItemDocId UUID do item que foi atualizadoDocName Nome do item que foi atualizadoDocType Tipo, nome da classe API do item LibraryId Id da biblioteca que contem o itemLibraryName Nome da biblioteca que contem o item
© 2012 IBM Corporation55
IBM 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çãoId do Item Autor Data PublicaçãoNome do Item Proprietário WorkflowTitulo do Item Modificado por Estágio WorkflowBiblioteca Criado Desde Status WorkflowStatus Projeto Modificado Desde Palavras chavesCategorias
Resultados de uma query pode ser ordenado por:Autor Titulo do Item Data CriaçãoNome do Item Data Modificação
© 2012 IBM Corporation56
IBM WCM API: Exemplo de Query API
//Obtem QueryService a partir da Workspace e cria queryQueryService queryService = getWorkspaceInstance().getQueryService();Query query = queryService.createQuery(Folder.class);
//Obtem biblioteca de documentos a ser pesquisadaDocumentLibrary library = getWorkspaceInstance().getDocumentLibrary(“Biblioteca”);
//Define parametros de pesquisaquery.addSelector(Selectors.libraryEquals(library));query.addSelector(HistorySelectors.modifiedSince(oneWeekAgo()));query.addSort(Sorts.byDateModified(SortDirection.DESCENDING));
//Executa query e armazena resultadosResultIterator results = null;results = queryService.execute(query);
© 2012 IBM Corporation57
IBM 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}]
© 2012 IBM Corporation58
IBM 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
© 2012 IBM Corporation59
IBM 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 localizadosTitulo de Exibição DescriçãoCampos de Ajuda Elementos no Template de Autoria
© 2012 IBM Corporation60
IBM 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
© 2012 IBM Corporation61
Informações adicionais
IBM Web Content Management Home Pagehttp://www.ibm.com/software/lotus/products/webcontentmanagement/
IBM Web Content Management Information Center documentationhttp://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 APIhttp://public.dhe.ibm.com/software/dw/lotus/portal_javadoc/7/lwcm/api-javadoc/index.html
IBM Collaboration Solutions Cataloghttps://greenhouse.lotus.com/catalog/
© 2012 IBM Corporation62
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