Escolar Documentos
Profissional Documentos
Cultura Documentos
2 para
desarrolladores
El ncleo de Alfresco
El ncleo de Alfresco
El ncleo de Alfresco
Introduccin a Alfresco
Qu es Alfresco?
Algunas caractersticas tcnicas del proyecto Alfresco.
Documentacin.
Funcionalidades ms importantes de cara a los usuarios.
Arquitectura tcnica.
Componentes y servicios.
El ncleo de Alfresco
Qu es Alfresco?
Alfresco es un sistema de Gestin de Contenido Empresarial (ECM),
de Documentum.
Los servicios que ofrece Alfresco son una de sus grandes ventajas.
El ncleo de Alfresco
Qu es Alfresco?
Para los usuarios finales, Alfresco se presenta como un conjunto de
El ncleo de Alfresco
Qu es Alfresco?
El ncleo de Alfresco es un repositorio gestionado por un servidor que
El ncleo de Alfresco
Qu es Alfresco?
Alfresco incorpora una arquitectura moderna. El sistema ha crecido
El ncleo de Alfresco
El ncleo de Alfresco
El ncleo de Alfresco
Documentacin
Muy buena documentacin (cosa muy rara
est en la Wiki
http://wiki.alfresco.com
El ncleo de Alfresco
Puede ser usado como una unidad de red compartida con protocolo
El ncleo de Alfresco
El ncleo de Alfresco
El ncleo de Alfresco
Componentes y servicios
Cada parte del repositorio de Alfresco es un componente o un servicio.
Un componente es una implementacin que provee un capacidad o
abstraccin.
El ncleo de Alfresco
Componentes y servicios
El ncleo de Alfresco
Componentes y servicios
Los clientes de Alfresco se acoplan a los servicios y no a los
El ncleo de Alfresco
Componentes y servicios
El ncleo de Alfresco
Componentes y servicios
El ncleo de Alfresco
Componentes y servicios
Los componentes pueden ser intercambiados por nuevas
El ncleo de Alfresco
Componentes y servicios
La flexibilidad descrita anteriormente es posible gracias al uso interno
El ncleo de Alfresco
Services.
El ncleo de Alfresco
(componentes).
El ncleo de Alfresco
Foundation Services
Es la interfaz de ms bajo nivel para acceder a las capacidades del
repositorio.
El ncleo de Alfresco
extensiones.
El ncleo de Alfresco
El ncleo de Alfresco
El ncleo de Alfresco
Arquitectura de Alfresco
Introduccin.
Servidor de aplicaciones de Alfresco.
Repositorio de contenidos.
Protocolos.
El ncleo de Alfresco
Introduccin
La gestin de contenidos empresarial cubre un amplio rango de
El ncleo de Alfresco
Introduccin
Escalado.
Solucin modular.
Incoporando las mejores libreras de terceros.
Independencia del entorno.
Ncleo robusto.
Extensiones con scripts.
Solucin basada en estndares.
El ncleo de Alfresco
Introduccin
El ncleo de Alfresco
Introduccin
ltimamente, Alfresco se usa para implementar un ECM para ofrecer
El ncleo de Alfresco
Introduccin
El servidor de aplicaciones agrupa un repositorio de contenidos y un
estndares:
El ncleo de Alfresco
Introduccin
Aunque se ha realizado un esfuerzo de estandarizacin a la hora de
definir los elementos del ECM, existe un salto entre las caractersticas
ofrecidas por el repositorio y los requisitos tpicos de la solucin.
El ncleo de Alfresco
Introduccin
Alfresco proporciona dos clientes web principales: Alfresco Explorer y
Alfresco Share.
El ncleo de Alfresco
Introduccin
Alfresco ha sido diseado como un sistema modular.
Cada parte es un componente o servicio. Un componente es una
El ncleo de Alfresco
Introduccin
Para soportar esta estratega, Alfresco usa Spring framework
El ncleo de Alfresco
APIs remotas: permiten interaccin programtica con los servicios del servidor.
El ncleo de Alfresco
El ncleo de Alfresco
Remote APIs
Protocols
El ncleo de Alfresco
El ncleo de Alfresco
Repositorio de contenidos
El repositorio es el sistema que se encarga de manejar los contenidos
Importacin y exportacin.
Multi-idioma.
Reglas y acciones.
El ncleo de Alfresco
Repositorio de contenidos
Esquema del repositorio:
Content Repository
El ncleo de Alfresco
Repositorio de contenidos
El repositorio de contenidos proporciona una implementacin de estos
API de Alfresco,
CMIS y
El ncleo de Alfresco
Repositorio de contenidos
Servicios:
Embeddeb APIs
Content Services
Control Services
Collaboration Services
Content Repository
El ncleo de Alfresco
Repositorio de contenidos
El motor de almacenamiento ofrece tambin mecanismos de consulta
El ncleo de Alfresco
Repositorio de contenidos
Por defecto, Alfresco almacena los nodos en la base de datos y el
El ncleo de Alfresco
Protocolos
Para permitir el uso de Alfresco en diferentes mbitos, el servidor de
El ncleo de Alfresco
Protocolos
CIFS (Common Internet File System) es un protocolo que permite la
El ncleo de Alfresco
Protocolos
IMAP (Internet Message Access Protocol) es un estndar que permite
El ncleo de Alfresco
El ncleo de Alfresco
Introduccin
El servidor de contenidos de Alfresco proporciona funcionalidades
El ncleo de Alfresco
Versionado y checkin/checkout.
Auditora.
Modelado.
Bsqueda.
El ncleo de Alfresco
Embeddeb APIs
Content Repository
El ncleo de Alfresco
El ncleo de Alfresco
Content Services
Control Services
Collaboration Services
Content Repository
El ncleo de Alfresco
El ncleo de Alfresco
APIs remotas: usadas por clientes que se comunican con el servidor de contenidos
de Alfresco de forma remota.
APIs embebidas: usadas por extensiones que han sido desplegadas y se ejecutan
dentro del servidor de contenidos de Alfresco.
El ncleo de Alfresco
Embeddeb APIs
El ncleo de Alfresco
API JavaScript: javascript que nos permite acceder a los servicios de base.
API Template: API de slo lectura diseada para renderizar salidas HTML, XML,
JSON, y texto usando el motor de plantillas FreeMarker. Esta API usa una vista
orientada a objetos del repositorio de contenidos combinndola con las plantillas.
El ncleo de Alfresco
Remote APIs
Extensions
Embeddeb APIs
El ncleo de Alfresco
El ncleo de Alfresco
Alfresco API para contenido en Cloud: esta API permite acceder al contenido
gestionado por Alfresco Cloud desde nuestra aplicacin. Es RESTful, cada llamada
es una peticin HTTP, es decir, no se necesita ningn lenguaje de programacin
RESTful.
CMIS: estndar que define servicios web y asociaciones tipo REST para trabajar
con repositorios que cumplen este estndar.
El ncleo de Alfresco
El ncleo de Alfresco
El ncleo de Alfresco
Introduccin
Son el conjunto de servicios que propocionan acceso completo a
Es una API in-process, que significa que el cliente que la usa debe
El ncleo de Alfresco
Acceso a la API
Existen tres estrategias para acceder a estas interfaces en nuestro
cdigo:
El ncleo de Alfresco
Acceso a la API
La interface ServiceRegistry nos proporciona acceso a todos los
// Inicializar el contexto
ApplicationContext ctx = ApplicationContextHelper.getApplicationContext();
// Se obtiene el servicio de registros
final ServiceRegistry serviceRegistry = (ServiceRegistry)
ctx.getBean(ServiceRegistry.SERVICE_REGISTRY);
// Se recupera el servicio de gestin de transacciones
TransactionService transactionService = serviceRegistry.getTransactionService();
El ncleo de Alfresco
Acceso a la API
La interface ServiceRegistry se encuentra en el paquete
mediante su interface:
El ncleo de Alfresco
Acceso a la API
El servicio de registro proporciona diferentes mtodos para acceder a
los servicios:
getActionService.
getPermissionService.
getAuthorityService.
getFileFolderService.
getScriptService.
getWorkflowService.
getNotificationService
getAuditService
...
El ncleo de Alfresco
Servicio AuthenticationService.
Servicio TransactionService.
...
El ncleo de Alfresco
El ncleo de Alfresco
<ref bean="nodeService"/>
</property>
...
El ncleo de Alfresco
Conceptos importantes
Antes de seguir debemos tener en cuenta una series de conceptos
importantes:
Nodo y contenido.
El ncleo de Alfresco
El ncleo de Alfresco
Ejemplos:
workspace://SpacesStore
archive://SpacesStore
El ncleo de Alfresco
UUID.
Ejemplos:
workspace://SpacesStore/5af5a38b-e20a-4885-bbd1-4b3fde9b0dd3
El ncleo de Alfresco
El ncleo de Alfresco
El ncleo de Alfresco
El ncleo de Alfresco
...
El ncleo de Alfresco
El ncleo de Alfresco
El ncleo de Alfresco
http://wiki.alfresco.com/wiki/NodeRef_cookbook
El ncleo de Alfresco
El ncleo de Alfresco
El ncleo de Alfresco
El ncleo de Alfresco
El ncleo de Alfresco
Inyeccin de servicios
Si necesitamos utilizar alguno de estos servicios dentro de cualquiera
${tomcat}/webapps/alfresco/WEB-INF/classes/alfresco define la
mayor parte de los servicios:
El ncleo de Alfresco
Inyeccin de servicios
Servicio de registro: si queremos inyectar este servicio en nuestras
El ncleo de Alfresco
Inyeccin de servicios
Servicio de bsqueda: si queremos hacer referencia a este servicio
El ncleo de Alfresco
Inyeccin de servicios
Servicio de nodos: si queremos hacer referencia a este servicio
El ncleo de Alfresco
Inyeccin de servicios
Servicio de contenidos: si queremos hacer referencia a este servicio
El ncleo de Alfresco
Inyeccin de servicios
Ejemplos:
El ncleo de Alfresco
Core Java,
El ncleo de Alfresco
API Java embebida: es una API implementada en Java, encapsulando todas las
funcionalidades proporcionada por el servicio y es tpicamente una colleccin de
mtodos sin estado. Se considera una API slo accesible para los desarrolladores
API RESTful: se disea entorno a recursos y datos para proporcionar una API
basada en URLs que pueden llamarse desde cualquier lenguaje. Habitualmente, se
construyen sobre los servicios Script.
El ncleo de Alfresco
El ncleo de Alfresco
Introduccin
La API Alfresco JavaScript permite a los desarrolladores crear ficheros
El ncleo de Alfresco
Introduccin
Usando esta API podemos (cont.):
Los scripts pueden incluir otros scripts (import). Esto significa que el
El ncleo de Alfresco
Introduccin
La API Alfresco JavaScript proporciona acceso a objetos Java.
Tendremos acceso a objetos root por defecto, por ejemplo:
Bsquedas.
People API.
Adems es posible aadir otros objetos como objetos raz para usar en
nuestros scripts.
El ncleo de Alfresco
objetos:
ScriptContent API.
Versions API.
Transformation API.
...
4.0_JavaScript_API.
El ncleo de Alfresco
El ncleo de Alfresco
ScriptNode API
Los objetos companyhome, userhome, document, space, y person
El ncleo de Alfresco
ScriptNode API
Una funcionalidad muy til es que cualquier propiedad de tipo
El ncleo de Alfresco
ScriptNode API
El ncleo de Alfresco
ScriptNode API
Ejemplo:
mynode.assocs["cm:translations"][0]
mynode.sourceAssocs["cm:translations"][0]
myforumnode.childAssocs["fm:discussion"][0]
mynode.parentAssocs["cm:contains"][0]
El ncleo de Alfresco
ScriptNode API
El ncleo de Alfresco
que son de slo lectura. Sin embargo provee alternativas para hacerlo.
El ncleo de Alfresco
El ncleo de Alfresco
El ncleo de Alfresco
El ncleo de Alfresco
El ncleo de Alfresco
operacin.
El ncleo de Alfresco
El ncleo de Alfresco
El ncleo de Alfresco
Ejemplos
Crear el backup de un documento:
// find the backup folder - create if not already exists
var backupFolder = space.childByNamePath("Backup");
if (backupFolder == null && space.hasPermission("CreateChildren"))
{
// create the folder for the first time
backupFolder = space.createFolder("Backup");
}
if (backupFolder!= null && backupFolder.hasPermission("CreateChildren"))
{
// copy the doc into the backup folder
var copy = document.copy(backupFolder);
if (copy!= null)
{
// change the name so we know it's a backup
copy.name = "Backup of " + copy.name;
copy.save();
}
}
Preparado por Jess Salinas Revelles
El ncleo de Alfresco
Ejemplos
Crear el backup de un documento:
El ncleo de Alfresco
Ejemplos
Para ver ms ejemplos:
http://wiki.alfresco.com/wiki/JavaScript_API_Cookbook
El ncleo de Alfresco
El ncleo de Alfresco
Introduccin
Una plantilla es un documento que puede aplicarse a uno o varios
plantilla.
El ncleo de Alfresco
El ncleo de Alfresco
Introduccin
Alfresco trabaja por defecto con Freemarker.
La extensin de los ficheros es ftl.
Debemos ser capaces de generar plantillas siguiendo su sintaxis:
<html>
<head>
<title>Welcome!</title>
</head>
<body>
<h1>Welcome ${user}!</h1>
<p>Our latest product:
<a href="${latestProduct.url}">${latestProduct.name}</a>!
</body>
</html>
El ncleo de Alfresco
Introduccin
FreeMarker es un motor de plantillas basado en Java. Se definen
El ncleo de Alfresco
El ncleo de Alfresco
Ejemplo:
El ncleo de Alfresco
${book.title}
Otra alternativa
book["title"]
El ncleo de Alfresco
Operadores de comparacin
= y == son equivalentes.
!=
El ncleo de Alfresco
Operadores de comparacin
<, <=, >= y >
Cuidado con > y >=
El ncleo de Alfresco
Operadores lgicos
Funcin OR: ||
Funcin AND: &&
Funcin NOT: !
Ejemplo:
El ncleo de Alfresco
Operadores numricos
Suma: +, Resta: -, Multiplicacin: *, Divisin: /, Mdulo (resto): %
Ejemplos:
${100 - x * x}
${x / 2}
${12 % 10}
75
2.5
2
El ncleo de Alfresco
Operador concatenacin
Operador suma.
${3 * "5"}
${3 + "5"}
<#-- OK -->
El ncleo de Alfresco
Vectores
Sintaxis:
El ncleo de Alfresco
Vectores
Propiedades:
first, last
join
reverse
size
sort, sort_by
chunk
Ms informacin:
http://freemarker.org/docs/ref_builtins_sequence.html.
El ncleo de Alfresco
Vectores
Ejemplos:
El ncleo de Alfresco
Estructuras selectivas
Sintaxis:
<#if condition>
...
<#elseif condition2>
...
<#elseif condition3>
...
<#else>
...
</#if>
Ejemplo:
<#if x == 1>
x is 1
<#else>
x is not 1
</#if>
Preparado por Jess Salinas Revelles
El ncleo de Alfresco
Iteraciones
Sintaxis:
<#list sequence as item>
...
</#list>
item_index: valor numrico que contiene el ndice del elemento sobre el que se est
iterando.
Ejemplo:
<#assign seq = ["winter", "spring", "summer", "autumn"]>
<#list seq as x>
${x_index + 1}. ${x}<#if x_has_next>,</#if>
</#list>
Preparado por Jess Salinas Revelles
El ncleo de Alfresco
Iteraciones
Ejemplos:
<#assign x=3>
<#list 1..x as i>
${i}
</#list>
<#list seq as x>
${x}
<#if x = "spring"><#break></#if>
</#list>
El ncleo de Alfresco
Directivas en Freemarker
assign.
import.
include.
macro.
...
El ncleo de Alfresco
Ms informacin
http://freemarker.org/docs/index.html
El ncleo de Alfresco
Modelo de datos
El modelo es un objeto o jerarqua de objetos que puede utilizar la
Se muestran a continuacin:
El ncleo de Alfresco
El ncleo de Alfresco
properties, children
assocs, childAssocs
Ms informacin
http://wiki.alfresco.com/wiki/Template_Guide#TemplateNode_Model_API
El ncleo de Alfresco
nodos.
Ejemplo:
Found: ${companyhome.nodeByReference["workspace://SpacesStore/
e661dccb-ecc0-11da-9974-63f65406985a"].id}
El ncleo de Alfresco
El ncleo de Alfresco
correcta.
El ncleo de Alfresco
El ncleo de Alfresco
El ncleo de Alfresco
userhome.childrenByLuceneSearch (cadenaLucene)
Todos los nodos que coinciden con el criterio son recuperados, la bsqueda se
realiza sobre todo el repositorio.
El ncleo de Alfresco
Ms APIs
Tenemos a nuestra disposicin otras APIs responsables de:
Versionado.
Clasificacin.
Procesado XML.
Flujos de trabajo.
...
Para ms informacin:
http://wiki.alfresco.com/wiki/Template_Guide#Version_History
El ncleo de Alfresco
Subsistemas
Introduccin.
Listado de subsistemas.
El ncleo de Alfresco
Introduccin
Un subsistema es un mdulo configurable responsable de una parte de
configuracin.
Este contexto es hijo del principal. Eso significa que puede referenciar
El ncleo de Alfresco
Introduccin
Esto significa que:
Tienen su propio espacio de nombres para sus beans: de esa forma no existe la
posibilidad de conflictos de nombrado.
El ncleo de Alfresco
Listado de subsistemas
Authentication.
Synchronization.
File Servers.
Third Party.
IMAP.
WCM Deployment Receiver.
sysAdmin.
El ncleo de Alfresco
El ncleo de Alfresco
Introduccin
En este captulo vamos a hablar sobre la autenticacin y las
El ncleo de Alfresco
Introduccin
La primera vez que se accede a una instalacin de Alfresco mediante
El ncleo de Alfresco
Introduccin
A partir de aqu, hay un conjunto de personalizaciones que podemos
El ncleo de Alfresco
Seguridad en Alfresco
La seguridad en Alfresco trabaja con dos conceptos importantes:
autenticacin y autorizacin.
Alfresco incluye:
El ncleo de Alfresco
Seguridad en Alfresco
La autorizacin determina qu operaciones puede realizar un usuario
nodo tiene un ACL que usa para asignar permisos a grupos y usuarios.
El ncleo de Alfresco
Seguridad en Alfresco
Por convencin, los beans que ofrecen estos servicios pblicos son los
El ncleo de Alfresco
Seguridad en Alfresco
La asignacin de permisos se realiza mediante listas de control de
El ncleo de Alfresco
Seguridad en Alfresco
La configuracin XML para los permisos tambin define un contexto
ACL libre para los ACEs que se aplican sobre los nodos.
Por ejemplo, puedes usarlo para asignar acceso en modo lectura para
El ncleo de Alfresco
Autenticacin
Introduccin.
Subsistemas de autenticacin.
Tipos de subsistemas.
Cadena de autenticacin.
AlfrescoNTML.
pass-through.
El ncleo de Alfresco
Introduccin
La autenticacin es una de las categoras de subsistemas que
encontramos en Alfresco.
autenticacin.
El ncleo de Alfresco
Subsistemas de autenticacin
La autenticacin y la gestin de identidades se gestiona gracias a un
Alfresco:
El ncleo de Alfresco
Tipos de subsistemas
El ncleo de Alfresco
Cadena de autenticacin
Es muy habitual que al menos uno de los tipos anteriormente
Un tipo.
El ncleo de Alfresco
Cadena de autenticacin
Configuracin de la cadena de autenticacin:
El ncleo de Alfresco
AlfrescoNTML
El mecanismo de autenticacin que ofrece Alfresco, por defecto, es
El ncleo de Alfresco
AlfrescoNTML
Edicin del fichero alfresco-global.properties que se encuentra en la
ruta <installLocation>\shared\classes.
authentication.chain=alfinst:alfrescoNtlm
subsistema.
El ncleo de Alfresco
AlfrescoNTML
Configuracin de la instancia:
El ncleo de Alfresco
pass-through
El subsistema passthru puede reemplazar el sistema de autenticacin
El ncleo de Alfresco
LDAP
El sistema LDAP ofrece dos funciones principales:
El ncleo de Alfresco
Kerberos
El servicio de autenticacin y autorizacin Java (JAAS) se usa dentro
El ncleo de Alfresco
External
El subsistema external se usa con cualquier sistema de autenticacin
externo.
El ncleo de Alfresco
Autoridades
Las autoridades que maneja Alfresco son personas o grupos de
personas.
El ncleo de Alfresco
Definicin de permisos
Los permisos se definen en un fichero de configuracin XML. El fichero
<installLocation>\tomcat\webapps\alfresco\WEB-INF\classes\alfresco\model
\permissionDefinitions.xml
<installLocation>\tomcat\webapps\alfresco\WEB-INF\classes\alfresco\model
\permissionSchema.dtd
El ncleo de Alfresco
Definicin de permisos
Ejemplo: definicin de permisos asociados al aspecto Ownable.
<permissionSet type="cm:ownable" expose="selected">
<!-- Permission control to allow ownership of the node to be taken from others -->
<permissionGroup name="TakeOwnership" requiresType="false" expose="false">
<includePermissionGroup permissionGroup="SetOwner" type="cm:ownable" />
</permissionGroup>
<permissionGroup name="SetOwner" requiresType="false" expose="false"/>
<!-- The low level permission to control setting the owner of a node -->
<permission name="_SetOwner" expose="false" requiresType="false">
<grantedToGroup permissionGroup="SetOwner" />
<requiredPermission on="node" type="sys:base" name="_WriteProperties" />
</permission>
</permissionSet>
El ncleo de Alfresco
Extension classpath
Introduccin.
Sintaxis.
Ejemplo.
El ncleo de Alfresco
Introduccin
El fichero alfresco-global.properties slo puede usarse para definir
classpath.
El ncleo de Alfresco
Sintaxis
Aadir un fichero de propiedades al classpath global del servidor.
<id> es el identificador de la instancia del subsistema, que debe ser el valor por
defecto para subsistemas con una nica instancia o el identificador proporcionado
en la cadena de subsistemas.
El ncleo de Alfresco
Ejemplo
Si la cadena de autenticacin fuera la siguiente:
authentication.chain=alfrescoNtlm1:alfrescoNtlm,ldap1:ldap
alfresco/extension/subsystems/Authentication/alfrescoNtlm/alfrescoNtlm1/
mychanges.properties
El ncleo de Alfresco
Ejemplo
El tipo por defecto y el id de subsistema sin cadenas es default, por lo
alfresco/extension/subsystems/fileServers/default/default/mychanges.properties
El ncleo de Alfresco
Extensiones en Alfresco
Alfresco can be freely customized and extended according to your
needs.
El ncleo de Alfresco
El ncleo de Alfresco
Introduccin
Existen varias formas de empaquetar extensiones de Alfresco.
Para una extensin sencilla que consiste en uno o dos web scripts, la
El ncleo de Alfresco
Introduccin
Las opciones de empaquetado son:
Ficheros sin empaquetar: ficheros individuales tales como web scripts pueden
copiarse en el directorio de extensin.
Fichero AMP: este formato que debemos elegir en la mayor parte de la extensiones,
especialemente cuando van a utilizarse en muchos sitios. La forma ms
recomendable de despliegue de extensiones en entornos de produccin es sta.
El ncleo de Alfresco
Esta tcnica puede ser muy efectiva durante las primeras fases del
El ncleo de Alfresco
Ficheros JAR
El formato JAR puede utilizarse para empaquetar diferentes tipos de
El ncleo de Alfresco
Ficheros AMP
Los ficheros AMP (Alfresco Module Packages) son la mejor forma de
Estos ficheros son ZIPs que siguen un layout especfico y puede ser
procesos.
El ncleo de Alfresco
Rutas de despliegue
Existen diferentes rutas donde poder desplegar las extensiones
Para Tomcat:
El ncleo de Alfresco
default/conf/alfresco/.
El ncleo de Alfresco
El ncleo de Alfresco
$CATALINA_HOME/webapps/alfresco/WEB-INF/classes
$CATALINA_HOME/webapps/share/WEB-INF/classes
Es muy comn aplicar parches sobre los war de Explorer y Share para