O documento fornece uma introdução aos padrões de gerenciamento de conteúdo e discute as limitações dos bancos de dados relacionais para armazenar certos tipos de dados, como dados binários. Ele também explora opções para armazenar arquivos, como Amazon S3 ou bancos de dados NoSQL, e discute padrões recomendados para plataformas de conteúdo, incluindo a arquitetura do Alfresco e o padrão CMIS.
4. 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
6. 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
7. Ao salvar os arquivos . . .
● Segurança
● Iniciar um workflow Muito código
● Versionamento personalizado!
● Replicação
● Transformação de conteúdo
● Programar um job
● Acesso através do disco compartilhado
● Acesso aos APIs
● Integração com ferramentas
8. O cenário otimista:
gobucks2 (cc attribution non-commercial share-alike) http://www.flickr.com/photos/69331170@N00/2854583096
9. O cenário pessimista:
Guardanapo que funciona por si mesmo
http://commons.wikimedia.org/wiki/File:Professor_Lucifer_Butts.gif
11. 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
12. Partes dos sistemas de conteúdo
● Interface usuário ● Transformação /
● Armazenamento / Renderização / Miniaturas
Modelo dos Dados / ● Marcação / Categorização
Metadata ● Integração com
● Processo de Empresa / Ferramentas dos Autoria
Workflow ● API Remoto
● Serviços de Biblioteca ● Transferência /
(Upload / Download,
Publicação
Versionamento, Check-in
/ Check-out) ● Comentários
● Segurança ● Notas
13. 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
14. Arquitetura de Alfresco
Aplicações de Web Portais de Conhecimento Serviços de Web
Servidor CRM Motor dos
de Apps Processos da
Empresa
Portal Server
Sistema Virtual Alta Avaliabilidade
dos Arquivos
15. Corporate Systems
Desktop
WebDAV
CMIS
CIFS
CMIS SharePoint
JSR-168 Protocol
Connectors
Social Media Channels
Mobile
CMIS
WebDAV
Open Web APIs
Open Web CMIS-based
Web Services APIs Alfresco Sync Public Alfresco Cloud
CMIS
17. 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
18. 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
19. Casos de uso
Repositório
Cliente Cliente
de Conteúdo
Repositório Repositório Content
Content
de Conteúdo de Conteúdo Repository
Repositório
Repository
de Conteúdo
● Criação colaborativa de conteúdo ● Workflow & BPM
● Portais ● Arquivamento
Integração com os aplicativos do cliente
●
● Geração dos documentos
Mashups
Digital Asset Management (DAM)
●
●
● Repositório de conteúdo incorporado
● Web Content Mangaement (WCM)
20. A beleza do CMIS
Nível de
Apresentação
REST SOAP
?
Nível dos
Serviços de
Conteúdo
Nível das
Aplicações de ?
Empresa
21. Conheça o CMIS
Consumador
Cliente
ler escrever
Serviços
Modelo de
Fornecedor
domínio Content
Management
Mapiagem do Interoperability
Fornecedor Services
Repositório Com o CMIS pode ler, buscar, escrever,
actualizar, excluir, dar versão, e gerenciar o
de Conteúdo conteúdo e a metadata!
22. Tipos
Documentos Pasta
●
Conteúdo ●
Recipiente
●
Rendições ●
Hierarquia
●
História das versões ●
Arquivamento / Limadura
Descrito pelas
Definições dos Tipos
Relação ACL
●
Objeto de Origem ●
Objeto de Destino
●
Objeto de Destino
Política
●
Objeto de Destino
23. Definições dos Tipos
Object Property
●
Type Id ●
Property Id
●
Parent * ●
Display Name
●
Display Name ●
Type
●
Queryable ●
Required
●
Controllable ●
Default Value
●
…
Document Folder Relationship Policy
●
Versionable ●
Source Types
●
Allow Content ●
Target Types
Custom Type
24. 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.
26. 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
27. 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!
28. Python
● No shell: ● Continuação:
virtualenv . props = {}
./bin/easy_install cmislib props["cmis:objectTypeId"]="cmis:document"
./bin/python doc =
folder.createDocumentFromString('testdoc.t
from cmislib.model import CmisClient xt', props, contentString="This is a test
client = CmisClient( showing how to create a text document",
"http://192.168.56.1:8080/alfresco/cmisato contentType='text/plain')
m","admin", "admin") doc.isCheckedOut()
repo = client.defaultRepository props = {}
repo.id props['cmis:name'] = "test-updated.txt"
repo.name doc = doc.updateProperties(props)
for (k,v) in doc.name
repo.getCapabilities().iteritems(): doc.delete()
print "%s: %s" %(k,v) len(folder.getChildren())
result = repo.query("select * from
for (k,v) in cmis:folder where cmis:name like '%alf%'")
repo.getRepositoryInfo().iteritems(): len(result)
print "%s: %s" %(k,v) for i in result:
print i.name
root = repo.getRootFolder()
root.name result = repo.query("select * from
folder = root.createFolder('cmis-demo') cmis:document where contains('name')")
folder.id for i in result:
folder.name print i.name
for (k,v) in
folder.properties.iteritems():
print "%s: %s" %(k,v)
29. 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
31. 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.