« Tagasi

Descarga de documentos mediante webscripts en Alfresco ECM

Alfresco ECM nos ofrece infinidad de posibilidades a la hora de llevar a cabo integraciones con terceros. Los webscripts son una de las estrategias más utilizadas. En este artículo analizaremos de forma simple cómo generar urls la descarga de documentos almacenados en Alfresco ECM que podemos utilizar en cualquier aplicación.

Introducción

Supongamos que queremos diseñar un webscript en Alfresco que realice una búsqueda y genere una respuesta HTML con información de los documentos, entre otras cosas, su url de descarga. El controlador en función de una serie de criterios recupera un conjunto de nodos:

Ejemplo.get.js

...
var resultadoBusqueda = search.luceneSearch( … );
...


Posteriormente, estos nodos son cargados en la variable model para que la plantilla ftl del webscript pueda utilizar esa información.

model.res = resultadoBusqueda;

Una vez tenemos todos los nodos, queremos generar una respuesta en formato HTML en una plantilla Ejemplo.get.html.ftl con información de cada documento y su url de descarga.

<h1>Resultado de la búsqueda</h1>

<#if res?has_content>

<table>
<thead>
<tr>
    <th>Nombre del documento</th>
    …
</tr>
</thead>
<tbody>
    …

<#else>
    <h1>No hay documentos que mostrar</h1>
</#if>


Como se puede ver, se utiliza la directiva if de Freemarker.

Iteración sobre los documentos

Primero, debemos aprender a iterar sobre los elementos de una lista de nodos, para ello utilizaremos la directiva <#list>:

<#list res as item>
<tr>
    <td>${item.properties["cm:name"]}</td>
    <td>${item.properties["sample:info1"]}</td>
    ...
   
</tr>
</#list>

La variable item identifica a cada documento dentro de cada iteración. El mapa properties nos permite recuperar los valores de las diferentes propiedades de un nodo, para profundizar en estos conceptos la wiki de Alfresco puede ser un buen recurso, por ejemplo, ${item.properties["cm:name"]} es el nombre del documento.

Construcción url de descarga

Para construir la url de descarga de cada documento tendremos que manejar los siguientes conceptos:

  1. Url de descarga para cada documento: existe una propiedad asociado a cada nodo llamada downloadUrl que nos permite recuperar la url de descarga.
  2. Url del host donde se encuentra desplegado Alfresco: existe un objeto implícito llamado url que nos permite acceder, entre otras cosas, a la propiedad server, de tal forma que, la variable url.server nos ofrece la url del servidor.
  3. Ticket de autenticación: la url de descarga de un documento está protegida, es decir, debemos estar autenticados para descargar el documento. Para ello utilizaremos el concepto de ticket (Pre-Authorized Calls)  mediante el objeto implícito session y su propiedad ticket.

La url de descarga, utilizando los conceptos anteriormente comentados es:

    ${url.server}/alfresco${item.downloadUrl}?ticket=${session.ticket}

Para finalizar, la plantilla sería algo tal que así:

<h1>Resultado de la búsqueda</h1>

<#if res?has_content>

<table>
<thead>
<tr>
    <th>Nombre del documento</th>
    <th>Nuevo propietario</th>
    <th>Fecha de cambio de titularidad</th>
    <th>Descarga</th>
</tr>
</thead>
<tbody>
<#list res as item>
<tr>
    <td>${item.properties["cm:name"]}</td>
    <td>${item.properties["sample:info1"]}</td>
    <td>${item.properties["sample:fechaInfo"]?date}</td>
    <td><a href="${url.server}/alfresco${item.downloadUrl}?ticket=${session.ticket}" download><span>Descarga</span></a></td>
</tr>
</#list>
<tbody>
</table>
<#else>
    <h1>No hay documentos que mostrar</h1>
</#if>

Conclusión

En este artículo, hemos querido demostrar cómo generar en un webscript fragmentos HTML donde aparecen urls que nos permiten descargar de documentos almacenados en Alfresco ECM de una forma muy simple.

Kommentaarid
Tagasiviite aadress:

comments powered by Disqus