Upload
resplin
View
1.902
Download
1
Embed Size (px)
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.
Citation preview
Padrões de Gerenciamento de Conteúdo
Richard Esplin
Community Technology
O Banco de Dados Relacional Não Vai Ser Adequado
Richard Esplin
Community Technology
A dor dos documentos . . .
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
Vamos construir!
Pasukaru76 (cc attribution) http://www.flickr.com/photos/pasukaru76/4277763808/
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
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!
O cenário otimista:
gobucks2 (cc attribution non-commercial share-alike) http://www.flickr.com/photos/69331170@N00/2854583096
O cenário pessimista:
http://commons.wikimedia.org/wiki/File:Professor_Lucifer_Butts.gif
Guardanapo que funciona por si mesmo
Padrões Recomendados: A Plataforma
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
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
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
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
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
e
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
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
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)
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
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!
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
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● …
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.
Exemplos
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
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!
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
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
Perguntas?
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.