IBM Web Content Management - Melhores práticas

63
© 2009 IBM Corporation IBM WCM – Melhores Práticas IBM Software Rodrigo Reis IT Specialist & Application Architect IBM Software Services for Collaboration

description

 

Transcript of IBM Web Content Management - Melhores práticas

Page 1: IBM Web Content Management - Melhores práticas

© 2009 IBM Corporation

IBM WCM – Melhores Práticas

IBM Software

Rodrigo ReisIT Specialist & Application ArchitectIBM Software Services for Collaboration

Page 2: IBM Web Content Management - Melhores práticas

© 2012 IBM Corporation2

Agenda

Introdução

IBM WCM - Melhores Práticas

IBM WCM e Java Server Pages

IBM WCM API (Application Program Interface)

Page 3: IBM Web Content Management - Melhores práticas

© 2012 IBM Corporation3

Introdução

Page 4: IBM Web Content Management - Melhores práticas

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

Page 5: IBM Web Content Management - Melhores práticas

© 2012 IBM Corporation5

IBM WCM – Melhores Práticas

Page 6: IBM Web Content Management - 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

Page 7: IBM Web Content Management - Melhores práticas

© 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

Page 8: IBM Web Content Management - Melhores práticas

© 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

Page 9: IBM Web Content Management - Melhores práticas

© 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

Page 10: IBM Web Content Management - Melhores práticas

© 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

Page 11: IBM Web Content Management - Melhores práticas

© 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

Page 12: IBM Web Content Management - Melhores práticas

© 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

Page 13: IBM Web Content Management - Melhores práticas

© 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

Page 14: IBM Web Content Management - Melhores práticas

© 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

Page 15: IBM Web Content Management - Melhores práticas

© 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

Page 16: IBM Web Content Management - Melhores práticas

© 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

Page 17: IBM Web Content Management - Melhores práticas

© 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

Page 18: IBM Web Content Management - Melhores práticas

© 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

Page 19: IBM Web Content Management - Melhores práticas

© 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

Page 20: IBM Web Content Management - Melhores práticas

© 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

Page 21: IBM Web Content Management - Melhores práticas

© 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

Page 22: IBM Web Content Management - Melhores práticas

© 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

Page 23: IBM Web Content Management - Melhores práticas

© 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

Page 24: IBM Web Content Management - Melhores práticas

© 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

Page 25: IBM Web Content Management - Melhores práticas

© 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

Page 26: IBM Web Content Management - Melhores práticas

© 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

Page 27: IBM Web Content Management - Melhores práticas

© 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)

Page 28: IBM Web Content Management - Melhores práticas

© 2012 IBM Corporation28

IBM WCM e Java Server Pages

Page 29: IBM Web Content Management - Melhores práticas

© 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" %>

Page 30: IBM Web Content Management - Melhores práticas

© 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>

Page 31: IBM Web Content Management - Melhores práticas

© 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>

Page 32: IBM Web Content Management - Melhores práticas

© 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

Page 33: IBM Web Content Management - Melhores práticas

© 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>

Page 34: IBM Web Content Management - Melhores práticas

© 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>

Page 35: IBM Web Content Management - Melhores práticas

© 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

Page 36: IBM Web Content Management - Melhores práticas

© 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

Page 37: IBM Web Content Management - Melhores práticas

© 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

Page 38: IBM Web Content Management - Melhores práticas

© 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>

Page 39: IBM Web Content Management - Melhores práticas

© 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

Page 40: IBM Web Content Management - Melhores práticas

© 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

Page 41: IBM Web Content Management - Melhores práticas

© 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

Page 42: IBM Web Content Management - Melhores práticas

© 2012 IBM Corporation42

IBM WCM API

Page 43: IBM Web Content Management - Melhores práticas

© 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

Page 44: IBM Web Content Management - Melhores práticas

© 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

%>

Page 45: IBM Web Content Management - Melhores práticas

© 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()

Page 46: IBM Web Content Management - Melhores práticas

© 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

%>

Page 47: IBM Web Content Management - Melhores práticas

© 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

Page 48: IBM Web Content Management - Melhores práticas

© 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);...

Page 49: IBM Web Content Management - Melhores práticas

© 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();}...

Page 50: IBM Web Content Management - Melhores práticas

© 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);...

Page 51: IBM Web Content Management - Melhores práticas

© 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

Page 52: IBM Web Content Management - Melhores práticas

© 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

Page 53: IBM Web Content Management - Melhores práticas

© 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

Page 54: IBM Web Content Management - Melhores práticas

© 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

Page 55: IBM Web Content Management - Melhores práticas

© 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

Page 56: IBM Web Content Management - Melhores práticas

© 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);

Page 57: IBM Web Content Management - Melhores práticas

© 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}]

Page 58: IBM Web Content Management - Melhores práticas

© 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

Page 59: IBM Web Content Management - Melhores práticas

© 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

Page 60: IBM Web Content Management - Melhores práticas

© 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

Page 61: IBM Web Content Management - Melhores práticas

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

Page 62: IBM Web Content Management - Melhores práticas

© 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

Page 63: IBM Web Content Management - Melhores práticas

© 2012 IBM Corporation63

Obrigado!!!

[email protected]