Está en la página 1de 36

Web Scripts

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. No es necesario ninguna herramienta adicional. No es necesario tener conocimientos de Java.

WebScripts frente a APIs tradicionales


APIS tradicionales: Lo que hemos visto en el primer da. Colleccin de mtodos para interaccionar con el repositorio. Desventaja: los documentos no son accesibles directamente, sino que debemos escribir cdigo capaz de invocar a los mtodos del API.

Web Scripts: Se sigue un estilo llamado REST (REpresentational State Transfer). Las llamadas a mtodos no son el centro de atencin. En su lugar, tenemos URIs (Uniquely Identified Resources) y un interfaz de acceso mediante HTTP.

Acceso REST (1)


Los Web Scripts proporcionan acceso REST al contenido del repositorio de Alfresco. Permite establecer controles a los contenidos empresariales del repositorio. Adems, proporciona una forma de acceder uniformemente a los contenidos por parte de aplicaciones y servicios cliente, como por ejemplo: El navegador web. Portales. Una aplicacin personalizada.

Permite ver a los repositorios de contenidos de Alfresco como una coleccin de documentos interrelacionados entre s.

Acceso REST (2)


Permite contruir un interfaz de peso ligero usando tecnologas como JavaScript. Podemos mapear contenido dentro del repositorio con recursos en la web (URIs).

Soluciones donde se han usado Web Scripts


Integracin de Alfresco con sistemas de terceros. Portlets. Bsquedas personalizadas. Integracin con Office. Desarrollo de aplicaciones para Facebook.

Qu es un Web Script
Es un servicio ligado a una URI que responde a mtodos HTTP. Mtodos HTTP: GET, POST, PUT y DELETE.

Tipos de Web Scripts


Web Scripts de datos y Web Scripts de presentacin. Web Scripts de datos: Encapsulan el acceso y la modicacin de contenidos del repositorio. Son proporcionados y expuestos por el servidor de Alfresco. Alfresco proporciona una serie de Web Scripts de datos listos para ser usados.

Web Scripts de presentacin: Permiten construir interfaces de usuario. Tpicamente, renderizan HTML. Pueden ser almacenados en el servidor de Alfresco, pero tambin en un servidor web separado.

Componentes de la implementacin de un Web Script


Un documento que describe, entre otras cosas, la URI asociada al Web Script. Un script de control. Este script: Se escribe en JavaScript. Es opcional. Realiza el trabajo propiamente dicho del Web Script. Puede actualizar el repositorio de Alfresco. Tiene acceso a todos los argumentos de la URI y a los servicios de Alfresco.

Una o ms plantillas de Freemaker: Se conocen como vistas. Se encargan de renderizar la salida en el formato adecuado. Por ejemplo, HTML o XML. Tiene acceso a todos los argumentos de la URI y a los datos construidos por el script de control, si es que existe.

Acceso a los Web Scripts


Suponiendo que est en nuestra mquina: http://localhost:8080/alfresco/service/index. Ejemplo de Web Script que tiene los 3 elementos: Retrieve Day Events. Ejemplo de Web Script sin script de control: Tagging Actions.

10

Desde dnde podemos usar un Web Script


En un navegador: accediendo a la URI del Web Script. Desde una pgina JSF. Desde una aplicacin de Facebook.

11

URIs
De la forma: http[s]://<host>:<port>/[<contextPath>/]/<servicePath>[/<scriptPath>][?<scriptArgs>] host es el nombre o direccin del servidor que alberga el Web Script. port es el puerto a travs del cual el Web Script se expone en el servidor. contextPath es el path donde la aplicacin est desplegada, generalmente /alfresco. servicePath es el path al cual los servicios de Alfresco estn mapeados, generalmente /service. scriptPath es el path especfico al Web Script. scriptArgs son los argumentos que se le pasan al Web Script.

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

Autenticacin
Algunos Web Scripts pueden requerir que el invocador se autentique. Cada Web Script dicta sus propios requerimientos de autenticacin. Si un Web Script requiere autenticacin y el invocador no est autenticado, se inicia el proceso de autenticacin correspondiente. Una vez autenticado, se realiza la invocacin al Web Script propiamente dicha.

14

Ejemplo de autenticacin
Autenticacin soportada por el Explorer Web Client de Alfresco. Copiamos la URI del Web Script Retrieve Day Events. Hacemos logout y cerramos el navegador. Abrimos de nuevo el navegador e introducimos la URI del Web Script. Veremos que pide autenticacin: usamos admin, admin.

15

Formato de la respuesta (1)


Si la llamada al Web Script no proporciona indicaciones sobre qu codificacin para la respuesta usar, se utiliza la codificacin por defecto del Web Script. La llamada al Web Script puede indicar el formato de la respuesta principalmente de las siguientes formas: Extensin de la URL. Ej: http://<host>:<port>/<contextPath>/<servicePath>/api/path/Workspace /SpacesStore/Company%20Home/children.html Argumento de formato. Ej: http://<host>:<port>/<contextPath>/<servicePath>/api/path/Workspace /SpacesStore/Company%20Home/children?format=html

16

Formato de la respuesta (2)


Valores ms comunes: Html. Para text/html. Text. Para text/plain. Xml. Para text/xml.

17

Ejemplo de creacin de un Web Script (1)


Company Home > Data Dictionary > Web Scripts. Crear el XML de descripcin. Create -> Create Content. Nombre, ej: hello2.get.desc.xml. XML. Contenido de hello.get.desc.xml.

Crear la plantilla de respuesta. Create -> Create Content. Nombre, ej: hello2.get.html.ftl. Plain text. Contenido de response_hello.
18

Ejemplo de creacin de un Web Script (2)


Registro del Web Script. http://localhost:8080/alfresco/service/index Pinchamos en Refresh list of Web Scripts.

Prueba del Web Script. http://localhost:8080/alfresco/service/sample/hello Si funciona, veremos un mensaje de saludo.

19

Eleccin de una URI


Elemento <url> del documento de descripcin. Relativa a http:/.../service/

20

Lugares donde pueden ir los ficheros


Carpeta del repositorio /Company Home/Data Dictionary/Web Scripts Extensions Carpeta del repositorio /Company Home/Data Dictionary/Web Scripts Carpeta del classpath /alfresco/extension/templates/webscripts Carpeta del classpath /alfresco/templates/webscripts

21

Elementos del fichero de descripcin


Hay muchos, vemos algunos de los ms comunes. shortname es el nombre de nuestro Web Script. description es una descripcin breve del Web Script. url es una plantilla de URI a la que el Web Script est ligado. authentication es el nivel requerido de autenticacin. Los valores vlidos son: none especifica que no se requiere autenticacin. guest especifica que al menos se requiere autenticacin como guest. user especifica que al menos se requiere autenticacin de un usuario registrado. admin especifica que se requiere autenticacin como administrador.

22

Script de control (1)


Ejecuta JavaScript en la invocacin de su respectiva URI. Puede ejecutar consultas o actualizaciones contra el repositorio. Nombre del archivo de la forma <serviceId>.<httpMethod>.js

23

Script de control (2)


Algunos objetos disponibles para todos los Web Scripts: Args. Array asociativo para todos los parmetros de la URI. argsM. Array asociativo para todos los parmetros 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. format. Proporciona informacin sobre el formato de la respuesta.

25

Script de control (4)


Algunos objetos disponibles para Web Scripts almacenados en el repositorio de Alfresco: roothome. El nodo raz del repositorio. companyhome. El nodo Company Home. search. Proporciona acceso a Lucene y resultados almacenados de las bsquedas.

26

Plantilla de respuesta (1)


Renderiza la respuesta a una peticin HTTP. Mltiples formatos de respuesta. Formato del nombre de archivo: <serviceId>.<httpMethod>.<format>.ftl format es el formato de la respuesta.

Algunos objetos disponibles para todos los Web Scripts: Args. Array asociativo para todos los parmetros de la URI. argsM. Array asociativo para todos los parmetros 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. format. Proporciona informacin sobre el formato de la respuesta.

27

Plantilla de respuesta (2)


Algunos objetos disponibles para Web Scripts almacenados en el repositorio de Alfresco: roothome. El nodo raz del repositorio. companyhome. El nodo Company Home. No est disponible, por ejemplo, un objeto search.

28

URLs interesantes
Web Scripts en general: http://wiki.alfresco.com/wiki/Web_Scripts Ejemplos de Web Scripts: http://wiki.alfresco.com/wiki/Web_Scripts_Examples

29

Introduccin a las bsquedas

30 1

API de bsqueda
Las bsquedas se definen usando el objeto org.alfresco.service.cmr.search.SearchParameters. Son ejecutadas usando el bean SearchService. SearchService est disponible a travs del bean auxiliar RepositoryServices. Las bsquedas devuelven un objeto de clase org.alfresco.service.cmr.search.ResultSet. El objeto anterior se compone de objetos de clase org.alfresco.service.cmr.search.ResultSetRow. Cada objeto de esta clase se refiere a un nodo en el repositorio.

31 1

Lucene: Ejemplo 1
En FirstFoundationClient, lnea 97 y siguientes.

32 1

Lucene: Ejemplo 2
Uso de Lucene para encontrar todos los nodos de un content type.

SearchParameters sp = new SearchParameters(); sp.addStore(getStoreRef()); sp.setLanguage(SearchService.LANGUAGE_LUCENE); sp.setQuery("TYPE:\"{http://www.alfresco.org/model/content/1.0}content\""); ResultSet results = null; try { results = serviceRegistry.getSearchService().query(sp); for(ResultSetRow row : results) { NodeRef currentNodeRef = row.getNodeRef(); ... } } finally { if(results != null) { results.close(); } }

33 1

Ejemplo con XPath


Bsqueda 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:

+PATH:"/app:company_home//." AND +ASPECT:"{vic.model}contractDocument" AND +@vic\:referenceDate:"2009-06-30T00:00:00"

34 1

Lucene frente a Xpath


Ventajas de Lucene: Es ms flexible que Xpath.

Ventajas de XPath: Es ms sencillo que Lucene, por lo que la curva de aprendizaje es menos pronunciada. Es ms conocido que Lucene, al ser frecuente su uso en las bsquedas de nodos en XML.

35 1

URLs interesantes
http://wiki.alfresco.com/wiki/Search

36 1

También podría gustarte