meet-ups brazil: padrões de gerenciamento de conteúdo / patterns in content management

31
Padrões de Gerenciamento de Conteúdo Richard Esplin Community Technology

Upload: resplin

Post on 08-Jul-2015

1.902 views

Category:

Technology


1 download

DESCRIPTION

An introduction to patterns for building content applications using the CMIS API. Uma introdução aos padrões pelo gerenciamento de conteúdo usando o API de CMIS.

TRANSCRIPT

Page 1: Meet-ups Brazil: Padrões de Gerenciamento de Conteúdo / Patterns in Content Management

Padrões de Gerenciamento de Conteúdo

Richard Esplin

Community Technology

Page 2: Meet-ups Brazil: Padrões de Gerenciamento de Conteúdo / Patterns in Content Management

O Banco de Dados Relacional Não Vai Ser Adequado

Richard Esplin

Community Technology

Page 3: Meet-ups Brazil: Padrões de Gerenciamento de Conteúdo / Patterns in Content Management

A dor dos documentos . . .

Page 4: Meet-ups Brazil: Padrões de Gerenciamento de Conteúdo / Patterns in Content Management

O banco de dados não faz tudo

● Faz bem o texto e os números, mas não faz bem os dados binários

● Faz bem as definições das tabelas estáticas, mas não das definições dinâmicas

● Limitação de tamanho● Acesso aleatório (faz streaming)● Busca: Algumas fazem indexação dos arquivos

binários, mas não todos

Page 5: Meet-ups Brazil: Padrões de Gerenciamento de Conteúdo / Patterns in Content Management

Vamos construir!

Pasukaru76 (cc attribution) http://www.flickr.com/photos/pasukaru76/4277763808/

Page 6: Meet-ups Brazil: Padrões de Gerenciamento de Conteúdo / Patterns in Content Management

Opções de armazenar os arquivos

● No disco● Amazon S3 ou uma CAS filer no local● Repositório de gerenciamento do código● Um banco de dados de XML● Armazenador dos documentos de NoSQL

Page 7: Meet-ups Brazil: Padrões de Gerenciamento de Conteúdo / Patterns in Content Management

Ao salvar os arquivos . . .

● Segurança● Iniciar um workflow● Versionamento● Replicação● Transformação de conteúdo● Programar um job● Acesso através do disco compartilhado● Acesso aos APIs● Integração com ferramentas

Muito código personalizado!

Page 8: Meet-ups Brazil: Padrões de Gerenciamento de Conteúdo / Patterns in Content Management

O cenário otimista:

gobucks2 (cc attribution non-commercial share-alike) http://www.flickr.com/photos/69331170@N00/2854583096

Page 9: Meet-ups Brazil: Padrões de Gerenciamento de Conteúdo / Patterns in Content Management

O cenário pessimista:

http://commons.wikimedia.org/wiki/File:Professor_Lucifer_Butts.gif

Guardanapo que funciona por si mesmo

Page 10: Meet-ups Brazil: Padrões de Gerenciamento de Conteúdo / Patterns in Content Management

Padrões Recomendados: A Plataforma

Page 11: Meet-ups Brazil: Padrões de Gerenciamento de Conteúdo / Patterns in Content Management

A plataforma

● Os problemas comuns já foram resolvidos● Plataforma de Conteúdo = Repositório + Serviços

● Busca a plataforma certa● Personaliza a plataforma com suas regras de empresa● Personaliza a interface usuária fornecida pela plataforma● Ou escreva sua própria interface usando qualquer

linguagem ou framework

● Garanta que atenda às suas necessidades agora e também no futuro

Page 12: Meet-ups Brazil: Padrões de Gerenciamento de Conteúdo / Patterns in Content Management

Partes dos sistemas de conteúdo● Interface usuário● Armazenamento /

Modelo dos Dados / Metadata

● Processo de Empresa / Workflow

● Serviços de Biblioteca (Upload / Download, Versionamento, Check-in / Check-out)

● Segurança● Search● Scheduler

● Transformação / Renderização / Miniaturas

● Marcação / Categorização● Integração com

Ferramentas dos Autoria● API Remoto● Transferência /

Publicação● Comentários● Notas● Activity Streams /

Notification● Quotas

Page 13: Meet-ups Brazil: Padrões de Gerenciamento de Conteúdo / Patterns in Content Management

Alfresco API

●O API fundamental de Alfresco é de Java●Também tem a opção de JavaScript no server●APIs remotos

● Webscripts de HTTP REST - Java ou JavaScript● CMIS - REST Atom ou SOAP● Alfresco Serviços de Web

Source: 96dpi

Page 14: Meet-ups Brazil: Padrões de Gerenciamento de Conteúdo / Patterns in Content Management

Arquitetura de Alfresco

Aplicações de Web Portais de Conhecimento Serviços de Web

Sistema Virtualdos Arquivos

Alta Avaliabilidade

Motor dosProcessos daEmpresa

CRM

Portal Server

Servidorde Apps

Page 15: Meet-ups Brazil: Padrões de Gerenciamento de Conteúdo / Patterns in Content Management

Desktop

Mobile

Social Media Channels

Web Services Public Alfresco Cloud

Corporate Systems

Open Web APIs

CMISJSR-168

Connectors

WebDAVCMISCIFS

SharePointProtocol

Open WebAPIsCMIS

CMIS-basedAlfresco Sync

CMISWebDAV

Page 16: Meet-ups Brazil: Padrões de Gerenciamento de Conteúdo / Patterns in Content Management

e

Page 17: Meet-ups Brazil: Padrões de Gerenciamento de Conteúdo / Patterns in Content Management

O que é o CMIS?

● Content Management Interoperability Services

● Um API especifico pelo gerenciamento do conteúdo, independente da linguagem, independente do fornecedor

● Denominador comum menor (alguns fornecedores têm extensões)● Funções de CRUD pelas nodas● Check-in / check-out● Associações● Permissões (Listas de controle de acesso)● Politica● Consultas● Atravessar o Repositório

Page 18: Meet-ups Brazil: Padrões de Gerenciamento de Conteúdo / Patterns in Content Management

O que é o CMIS? (continuação)

● Padrão do OASIS● 30+ fornecedores de ECM prometem implementar

● Duas partes● Ligações de SOAP e de AtomPub

– Ligações de JSON em breve● Linguagem baseada nas consultas do SQL

● As extensões especificas ao Alfresco ajudam muito

Page 19: Meet-ups Brazil: Padrões de Gerenciamento de Conteúdo / Patterns in Content Management

Casos de uso

● Criação colaborativa de conteúdo

● Portais

● Integração com os aplicativos do cliente

● Mashups

● Repositório de conteúdo incorporado

Cliente

Repositório de Conteúdo

Repositório de Conteúdo

Repositório de Conteúdo

Cliente

Content RepositoryContent

RepositoryRepositório de Conteúdo

● Workflow & BPM● Arquivamento● Geração dos documentos● Digital Asset Management (DAM)● Web Content Mangaement (WCM)

Page 20: Meet-ups Brazil: Padrões de Gerenciamento de Conteúdo / Patterns in Content Management

A beleza do CMIS

?

Nível de Apresentação

Nível dos Serviços de Conteúdo

?Nível das Aplicações de

Empresa

REST SOAP

Page 21: Meet-ups Brazil: Padrões de Gerenciamento de Conteúdo / Patterns in Content Management

Conheça o CMIS

Cliente

Repositóriode Conteúdo

Serviços

Modelo dedomínio

ler escrever

Con

sum

ad

or

Forn

ec e

dor

Mapiagem do Fornecedor

ContentManagementInteroperabilityServices

Com o CMIS pode ler, buscar, escrever, actualizar, excluir, dar versão, e gerenciar o conteúdo e a metadata!

Page 22: Meet-ups Brazil: Padrões de Gerenciamento de Conteúdo / Patterns in Content Management

Tipos

Documentos● Conteúdo● Rendições● História das versões

Pasta● Recipiente● Hierarquia● Arquivamento / Limadura

Relação● Objeto de Origem● Objeto de Destino

ACL● Objeto de Destino

Descrito pelas Definições dos Tipos

Política● Objeto de Destino

Page 23: Meet-ups Brazil: Padrões de Gerenciamento de Conteúdo / Patterns in Content Management

Definições dos Tipos

*

Custom Type

Object● Type Id● Parent● Display Name● Queryable● Controllable

Document● Versionable● Allow Content

Folder Relationship● Source Types● Target Types

Policy

Property● Property Id● Display Name● Type● Required● Default Value● …

Page 24: Meet-ups Brazil: Padrões de Gerenciamento de Conteúdo / Patterns in Content Management

Apache Chemistry● Uma implementação de CMIS de código aberto

● O projeto que agrupo todos os projetos relacionados ao CMIS dentro de ASF● OpenCMIS (Java, client, e servidor)● cmislib (Python, client)● phpclient (PHP, client)● DotCMIS (.NET, client)

● Implementação de referencia pelo CMIS que é usado pelo comité técnico de CMIS para provar as partes novas de versão 1.1.

Page 25: Meet-ups Brazil: Padrões de Gerenciamento de Conteúdo / Patterns in Content Management

Exemplos

Page 26: Meet-ups Brazil: Padrões de Gerenciamento de Conteúdo / Patterns in Content Management

Meu ambiente

● Debian Mint Wheezy● OpenJDK 1.6.0_24● Python 2.7.2● Alfresco Community Edition 4.0.d● Open CMIS Workbench 0.7.0

Page 27: Meet-ups Brazil: Padrões de Gerenciamento de Conteúdo / Patterns in Content Management

CMIS Workbench

● Baixar● http://chemistry.apache.org/java/developing/tools

/dev-tools-workbench.html● Ligar ao Alfresco

● http://localhost:8080/alfresco/cmisatom● Uma ferramente boa para aprender sobre o

CMIS● Confira o Groovy Console!

Page 28: Meet-ups Brazil: Padrões de Gerenciamento de Conteúdo / Patterns in Content Management

Python● No shell:

virtualenv . ./bin/easy_install cmislib ./bin/python

from cmislib.model import CmisClient client = CmisClient( "http://192.168.56.1:8080/alfresco/cmisatom","admin", "admin") repo = client.defaultRepository repo.id repo.name for (k,v) in repo.getCapabilities().iteritems(): print "%s: %s" %(k,v)

for (k,v) in repo.getRepositoryInfo().iteritems(): print "%s: %s" %(k,v)

root = repo.getRootFolder() root.name folder = root.createFolder('cmis-demo') folder.id folder.name for (k,v) in folder.properties.iteritems(): print "%s: %s" %(k,v)

● Continuação:

props = {}props["cmis:objectTypeId"]="cmis:document"doc = folder.createDocumentFromString('testdoc.txt', props, contentString="This is a test showing how to create a text document", contentType='text/plain')doc.isCheckedOut()props = {}props['cmis:name'] = "test-updated.txt"doc = doc.updateProperties(props)doc.namedoc.delete()len(folder.getChildren())result = repo.query("select * from cmis:folder where cmis:name like '%alf%'")len(result)for i in result: print i.name

result = repo.query("select * from cmis:document where contains('name')")for i in result: print i.name

Page 29: Meet-ups Brazil: Padrões de Gerenciamento de Conteúdo / Patterns in Content Management

Aonde pode aprender mais

● cmis.alfresco.com é um servido público de CMIS e contém links aos recursos CMIS (o cheat sheet é ótimo!)

● Pode ler o especificação de CMIS● O site de Apache Chemistry tem clientes, um servidor

pequeno, e documentação● O tutório “Getting Started with CMIS” demonstra como

usar "cURL para acessar diretamente as ligações de AtomPub"

● Há presentações do Alfresco DevCon 2011 sobre o CMIS no Slideshare aqui e aqui

Page 30: Meet-ups Brazil: Padrões de Gerenciamento de Conteúdo / Patterns in Content Management

Perguntas?

Page 31: Meet-ups Brazil: Padrões de Gerenciamento de Conteúdo / Patterns in Content Management

Atribuição e licenciamento

● Copyright 2012, Alfresco Software● Imagens usado nesta presentação sob a licença

de Creative Commons by-attribution non-commercial share-alike.

● O trabalho original nesta presentação é sob a licença de Creative Commons by-attribution.

● Agradeço o Jeff Potts que me deixou usar a sua presentação como o fundição deste trabalho.