Uno de los canales más comunes para nuestros documentos de empresa,
independientemente que diseñemos sistemas complejos de gestión y
almacenamiento, sigue siendo el correo electrónico. Revisando un
artículo del blog key to content, he pensado una solución para
la denominada «data ingestion» de determinados contenidos en
un gestor documental, para uno de nuestros procesos de firma digital.
Hemos hablado aquí
en algunas ocasiones de los clientes de firma digital (sinadura) y facturación electrónica
(ef4ktur) y la integración
de ciertos procesos y conectores con Alfresco. En ambos clientes
existe la posibilidad de enviar un PDF firmado o un XML Facturae
firmado a un destinatario a través de un cliente de correo externo. Y
de eso precisamente trata el artículo de hoy, de inyectar o subir un
contenido a nuestro repositorio de Alfresco enviando un correo electrónico.
Para ello brevemente debemos configurar las opciones de correo
electronico (alfresco > 3.2) en el fichero
alfresco-global.properties de modo que:
email.inbound.enabled=true email.server.enabled=true email.server.port=1125 email.server.domain=zylk.net email.inbound.unknownUser=anonymous email.server.allowed.senders=.*
Tras reiniciar el servidor son necesarios un par de cosas:
- Definir los usuarios senders de contenidos en el grupo EMAIL_CONTRIBUTORS
- Elegir un espacio (por ejemplo el espacio Facturas), aplicarle el
aspecto Email Alias y editarlo como «facturas».
De este modo, cuando un usuario autorizado (desde el email que tiene
definido en alfresco) envie un correo a facturas AT
alfresco.dominio.net el correo y el adjunto se guardarán en la carpeta
definida (también se puede usar el email ID). De este modo, imaginemos
que firmamos una factura desde el cliente de facturación electrónica
ef4ktur y la enviamos por correo electrónico con la opción Enviar que
incluye el programa, esta se guardará automáticamente en el espacio
Facturas. Si ademas lo conectamos con otros procesos de extracción de
metadatos de los que hablamos en artículos
anteriores tenemos nuestras facturas, guardadas, firmadas
digitalmente, tipificadas y con sus correspondientes metadatos
extraídos automáticamente a través de una regla de contenido.
Las propiedades del mensaje de correo enviado:
Y la factura adjunta de la cual se han extraido los metadatos correspondientes:
Otra posibilidad sencilla, no sólo de almacenaje, es que la misma
regla lance un flujo de trabajo simple de aprobación en Alfresco para
que un responsable valide la factura a enviar.
Por otro lado, como peros de este procedimiento, diriamos tres:
- que no hay enlace/relación directa entre el adjunto y el mensaje
de correo, solo el metadato Archivos Adjuntos. - que no se pueden enviar dos emails con asunto igual (da un error
de envío de correo) - que no se pueden enviar ficheros adjuntos con nombres iguales a
los anteriormente enviados, porque los machaca.
Además, esta característica de inyección de datos puede explotarse
para hacer cargas sencillas de documentos via scripts de shell con el
comando mail aunque no es el procedimiento indicado para cargas
masivas. Por poner un ejemplo de uso de scripting, en un artículo
de hace algún tiempo escribía sobre la utilización de cups-pdf
como impresora virtual de firma digital con las características
de línea de comandos de sinadura. Pues bien, en ese script podemos
incluir una sentencia del estilo:
id=`date +%DT%T` uuencode factura316-signed.pdf factura316-signed.pdf | mail -s "Printed and signed by cups-pdf at ${id}" facturas@alfresco.dominio.net
y además subiremos nuestro documento impreso convertido a pdf (un
formulario web, un documento de openoffice, una imagen…..) firmado
digitalmente en nuestro repositorio de Alfresco.