Professional Documents
Culture Documents
1
Qué nos permite un Web Script
• Construir servicios identificados por una URI y que son accesibles mediante HTTP.
• Convertir el repositorio de Alfresco en un Servidor HTTP que permite el acceso a sus contenidos.
2
WebScripts frente a APIs tradicionales
• APIS tradicionales:
• Desventaja: los documentos no son accesibles directamente, sino que debemos escribir
código capaz de invocar a los métodos del API.
• Web Scripts:
3
Acceso REST (1)
• Los Web Scripts proporcionan acceso REST al contenido del repositorio de Alfresco.
• Además, proporciona una forma de acceder uniformemente a los contenidos por parte de
aplicaciones y servicios cliente, como por ejemplo:
• El navegador web.
• Portales.
• Permite ver a los repositorios de contenidos de Alfresco como una colección de documentos
interrelacionados entre sí.
4
Acceso REST (2)
• Permite contruir un interfaz de peso ligero usando tecnologías como JavaScript.
• Podemos mapear contenido dentro del repositorio con recursos en la web (URIs).
5
Soluciones donde se han usado Web Scripts
• Integración de Alfresco con sistemas de terceros.
• Portlets.
• Búsquedas personalizadas.
6
Qué es un Web Script
• Es un servicio ligado a una URI que responde a métodos HTTP.
7
Tipos de Web Scripts
• Web Scripts de datos y Web Scripts de presentación.
• Alfresco proporciona una serie de Web Scripts de datos listos para ser usados.
8
Componentes de la implementación de un Web Script
• Un documento que describe, entre otras cosas, la URI asociada al Web Script.
• Se escribe en JavaScript.
• Es opcional.
• Tiene acceso a todos los argumentos de la URI y a los datos construidos por el script de
control, si es que existe.
9
Acceso a los Web Scripts
• Suponiendo que está en nuestra máquina: http://localhost:8080/alfresco/service/index.
• Ejemplo de Web Script que tiene los 3 elementos: Retrieve Day Events.
10
Desde dónde podemos usar un Web Script
• En un navegador: accediendo a la URI del Web Script.
11
URIs
• De la forma: http[s]://<host>:<port>/[<contextPath>/]/<servicePath>[/<scriptPath>][?<scriptArgs>]
• servicePath es el path al cual los servicios de Alfresco están mapeados, generalmente /service.
12
Ejemplos de URIs
• http://localhost:8080/alfresco/service/api/path/Workspace/SpacesStore/Company%20Home/children
• http://localhost:8081/share/service/mytasks?priority=1
13
Autenticación
• Algunos Web Scripts pueden requerir que el invocador se autentique.
14
Ejemplo de autenticación
• Autenticación soportada por el Explorer Web Client de Alfresco.
15
Formato de la respuesta (1)
• Si la llamada al Web Script no proporciona indicaciones sobre qué codificación para la respuesta
usar, se utiliza la codificación por defecto del Web Script.
16
Formato de la respuesta (2)
• Valores más comunes:
17
Ejemplo de creación de un Web Script (1)
• Company Home > Data Dictionary > Web Scripts.
• XML.
• Contenido de hello.get.desc.xml.
• Plain text.
• Contenido de response_hello.
18
Ejemplo de creación de un Web Script (2)
• Registro del Web Script.
• http://localhost:8080/alfresco/service/index
• http://localhost:8080/alfresco/service/sample/hello
19
Elección de una URI
• Elemento <url> del documento de descripción.
• Relativa a http:/.../service/
20
Lugares donde pueden ir los ficheros
• Carpeta del repositorio /Company Home/Data Dictionary/Web Scripts Extensions
21
Elementos del fichero de descripción
• Hay muchos, vemos algunos de los más comunes.
22
Script de control (1)
• Ejecuta JavaScript en la invocación de su respectiva URI.
23
Script de control (2)
• Algunos objetos disponibles para todos los Web Scripts:
• argsM. Array asociativo para todos los parámetros de la URI, donde cada clave es un
nombre de argumento y cada valor es un array que contiene los respectivos valores de
argumentos.
• Ejemplo:
// log each argument (assuming only one value has been provided for each)
for (arg in args) {
logger.log(arg + "=" + args[arg]);
}
// log each argument (assuming one or more values have been provided for each)
for (arg in argsM) {
for each (val in argsM[arg]) {
logger.log(arg + "=" + val);
}
}
24
Script de control (3)
• Algunos objetos disponibles para todos los Web Scripts (cont):
• url. Proporciona acceso a la URI, o partes de ella, que lanzó el Web Script.
25
Script de control (4)
• Algunos objetos disponibles para Web Scripts almacenados en el repositorio de Alfresco:
26
Plantilla de respuesta (1)
• Renderiza la respuesta a una petición HTTP.
• argsM. Array asociativo para todos los parámetros de la URI, donde cada clave es un
nombre de argumento y cada valor es un array que contiene los respectivos valores de
argumentos.
• url. Proporciona acceso a la URI, o partes de ella, que lanzó el Web Script.
27
Plantilla de respuesta (2)
• Algunos objetos disponibles para Web Scripts almacenados en el repositorio de Alfresco:
28
URLs interesantes
29
Introducción a las búsquedas
30
1
API de búsqueda
31
1
Lucene: Ejemplo 1
32
1
Lucene: Ejemplo 2
33
1
Ejemplo con XPath
• Búsqueda de todos los nodos que comiencen por “company_home”, que tengan un aspecto
“contractDocument” y un atributo “referenceDate” igual a “2009-06-30T00:00:00”:
34
1
Lucene frente a Xpath
• Ventajas de Lucene:
• Ventajas de XPath:
• Es más sencillo que Lucene, por lo que la curva de aprendizaje es menos pronunciada.
• Es más conocido que Lucene, al ser frecuente su uso en las búsquedas de nodos en
XML.
35
1
URLs interesantes
• http://wiki.alfresco.com/wiki/Search
36
1