Mostrando entradas con la etiqueta alfresco 5. Mostrar todas las entradas
Mostrando entradas con la etiqueta alfresco 5. Mostrar todas las entradas

19 de agosto de 2021

:: Alfresco. Consultar la versión de Alfresco instalada


Una forma rápida de recuperar la versión de Alfresco que tenemos instalada, es a través de la API, de la siguiente manera:


https://localhost:8080/share/proxy/alfresco/api/server


Un ejemplo de la salida podría ser la siguiente:

{

   "data":

   {

      "edition": "Community",

      "version": "5.0.0 (d r99759-b2)",

      "schema": "8022"

   }

}

8 de octubre de 2019

:: Alfresco. Envío de notificaciones a un grupo

En esta ocasión -como prueba de concepto- lo que queremos hacer es enviar un correo electrónico al grupo de "Contabilidad", cada vez que se suba una nueva factura a Alfresco.

De esta manera, tendremos definido un grupo "Contabilidad" -compuesto por varios integrantes- a los que se les notificará por correo electrónico cada vez que se suba un documento a una determinada carpeta, por ejemplo: "Facturas".
Sobre la carpeta "Facturas" definiremos una regla de contenido, de forma que cada vez que se suba un nuevo documento, se ejecute un script, al que llamaremos: "notificarfactura.js".

El contenido de este javascript, sería algo similar a lo siguiente:


### Notificar con plantilla
function sendMail()
{
    var mail = actions.create("mail");
    mail.parameters.to_many = "GROUP_site_Contabilidad";
    mail.parameters.subject = "Nueva factura disponible: " + document.name;
    mail.parameters.template =
    companyhome.childByNamePath("Data Dictionary/Email Templates/Notify Email Templates/notify_user_email.html.ftl");
    mail.execute(document);
}
sendMail();

### Notificar sin plantilla
function sendMail()
{
    var mail = actions.create("mail");
    mail.parameters.to_many = "GROUP_site_Contabilidad";
    mail.parameters.subject = "Nueva factura disponible: " + document.name;
    mail.execute(document);
}
sendMail();


29 de enero de 2019

:: Tip. Búsqueda por etiquetas en Alfresco

Si en nuestro gestor documental etiquetamos los documentos, podemos llevar a cabo búsquedas sobre estos, haciendo uso de las etiquetas. Para ello, en el buscador, debemos especificar:


TAG:"nombre-de-la-etiqueta"


Por ejemplo, para buscar los documentos que contengan la etiqueta "cmis", la búsqueda a realizar sería:


TAG:"cmis"


31 de agosto de 2018

:: Alfresco. Creación de un "tenant"

¿Qué es Multitenant en Alfresco?
De una forma sencilla, podríamos decir que con una única instalación de Alfresco, podemos tener "alfrescos" independientes para nuestros clientes. Es decir, a partir de un único .war, tendremos distintos repositorios físicos independientes.



Creación de un tenant
Para definir un "tenant" en Alfresco, debemos seguir una serie de pasos que describiremos a continuación:
1.- Como usuario administrador, accederemos a la consola de administración
http://localhost:8383/alfresco/

Seleccionaremos la entrada denominada: "Alfresco Administration Console"



2.- En la consola de administración, seleccionamos la entrada: "Consola de  inquilino"


3.- Tras seleccionar esta entrada, nos mostrará la consola desde la que podemos llevar a cabo la creación del tenant.
Disponemos de un comando de ayuda: "help" el cual nos mostrará la sintaxis y operaciones que podemos llevar a cabo desde la consola

4.- Insertaremos la siguiente instrucción:
create netic360.com netic360$18

De esta manera, crearemos un tenant denominado: "netic360.com" con la clave de administración: "netic360$18)"


5.- Una vez creado este tenant, podemos ejecutar la instrucción: "show tenant" para comprobar que efectivamente se ha creado.


6.- Cerramos sesión y a continuación nos loguearemos en el tenant creado.
Las credenciales de acceso serán:
usuario: admin@netic360.com
clave: netic360$18


Sobre el nuevo tenant creado, trabajaremos con normalidad, creando sitios, definiendo reglas, tipos de contenidos, ....

Más información sobre MT en Alfresco y características no soportadas:
https://docs.alfresco.com/5.2/concepts/mt-not-implemented.html


20 de agosto de 2018

:: Alfresco. Importación de metadatos con Bulk Filesystem Import Tool

Alfresco dispone de una herramienta para llevar a cabo la importación masiva de documentos, denominada: Bulk Filesystem Import Tool.

En esta herramienta debemos especificar la ruta origen (visible desde el servidor) y la ruta destino donde se ubicarán los documentos importados.
http://{servidor-alfresco}/alfresco/service/bulkfsimport



Además de los documentos, podemos preparar previamente una serie de ficheros de metadatos, denominados "shadow metadata files" que contendrán la metainformación de cada uno de ellos.

De esta manera, si por ejemplo los ficheros a importar son facturas y disponemos de esta metainformación, podemos generar un fichero xml asociado el fichero.

Como caso de prueba, disponemos de un tipo de datos personalizado, denominado: "factura" con los siguientes campos:
- Proveedor
- Fecha
- Concepto
- Nif
- Nº factura

Si el documento (factura) se llama "fichero 1.pdf" tendremos que generar un fichero xml nombrado: "fichero 1.pdf.metadata.properties.xml". Este fichero xml contendrá la siguiente información:


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
  <entry key="fact:proveedor">epson</entry>
  <entry key="fact:fecha">2018-05-18</entry>
  <entry key="fact:concepto">Impresora multifunción</entry>
  <entry key="fact:nif">0000000</entry>
  <entry key="fact:nfactura">152</entry>
  <entry key="cm:description">Documento de tipo factura.</entry>
</properties>


Una vez finalizada la importación de los ficheros, tendremos en Alfresco la información asociada a estos:

Más información: https://github.com/pmonks/alfresco-bulk-import/wiki/Preparing-the-Source-Content

1 de agosto de 2018

::Alfresco. Algunas tablas útiles

En posts anteriores describimos cómo podíamos extraer el modelo de datos que está por detrás de Alfresco, siempre y cuando tengamos acceso a la base de datos.

En ocasiones, puede resultar de utilidad realizar alguna consulta directa sobre determinadas tablas, para obtener información detallada. Algunas de las tablas interesantes a tener en cuenta son las siguientes:

alf_store: Contiene información sobre los almacenes disponibles en Alfresco

alf_node: Contiene información sobre los distintos nodos de Alfresco; hay que recordar que en Alfresco todo está representado por nodos

alf_qname: Contiene los nombres de los tipos de propiedades

alf_node_properties: Contiene información sobre las propiedades de los modelos de datos de Alfresco (documentos, carpetas, usuarios,...)


16 de julio de 2018

:: Alfresco. Crear documento desde plantilla con un número incremental

Como prueba de concepto, queremos que los usuarios creen documentos a partir de una plantilla, y que estos tengan el mismo nombre y un código numérico (incremental), indicando el número de documento.

Para ello, los pasos a seguir son los siguientes:

.- La plantilla del documento la copiaremos en: ""
De esta manera, a nuestros usuarios les aparecerá la opción de seleccionar la plantilla oportuna, en la opción: "Crear documento a partir de plantilla"

.- Sobre la carpeta contenedora, definiremos una regla de contenido que al crear o entrar documentos ejecute un script

.- El contenido del script: "rename_doc.js" podría ser algo similar a esto:

var folder=document.parent;
var documents=folder.children;
var docNumber=documents.length;

document.name=document.name+"_"+docNumber+".docx";
document.properties["cm:title"]=document.name+"_"+docNumber+".docx";
document.properties["cm:description"]="DocNumber: "+docNumber;
document.save();


4 de julio de 2018

:: Alfresco. Evitar el autocompletado de contraseñas en la página de login

Como prueba de concepto vamos a crear una página de login personalizada, para lo que seguiremos los pasos que describiremos a continuación.

1.- Localizamos el fichero: "login.get.html.ftl" ubicado en: "\tomcat\webapps\share\WEB-INF\classes\alfresco\site-webscripts\org\alfresco\components\guest"

2.- Copiamos el fichero anterior a la siguiente ubicación: "\tomcat\shared\classes\alfresco\web-extension\site-webscripts\org\alfresco\components\guest"
En caso de que alguna de las carpetas no exista, será necesario crearlas.

3.- Sobre este fichero, llevaremos a cabo las modificaciones necesarias


<@markup id="form">
         <form id="${el}-form" accept-charset="UTF-8" method="post" action="${loginUrl}" class="form-fields login ${edition}" autocomplete="off">
            <@markup id="fields">
            <input type="hidden" id="${el}-success" name="success" value="${successUrl?replace("@","%40")?html}"/>
            <input type="hidden" name="failure" value="${failureUrl?replace("@","%40")?html}"/>
            <div class="form-field">
               <label for="${el}-username">${msg("label.username")}</label><br/>
               <input type="text" id="${el}-username" name="username" maxlength="255" value="<#if lastUsername??>${lastUsername?html}</#if>" />
            </div>
            <div class="form-field">
               <label for="${el}-password">${msg("label.password")}</label><br/>
               <input type="password" id="${el}-password" name="password" maxlength="255" />
            </div>
   <div class="form-field">
    <input type="checkbox" id="showpassword" onclick="showPassword('${el}-password')"/>
    <label for="showpassword"> Mostrar clave</label><br/>
   </div>
            </@markup>
            <@markup id="buttons">
            <div class="form-field">
               <input type="submit" id="${el}-submit" class="login-button" value="${msg("button.login")}"/>
            </div>
            </@markup>
         </form>
      </@markup>


Tras reiniciar el servicio de Alfresco, como formulario de login se mostrará este que hemos modificado.


Información adicional: https://developer.mozilla.org/en-US/docs/Web/Security/Securing_your_site/Turning_off_form_autocompletion

10 de junio de 2018

:: Alfresco. Script para asignar un workflow

La prueba de concepto consiste en asociar un workflow de revisión a los documentos que se suben a una determinada carpeta.
Para ello, sobre esta carpeta, definiremos una regla de contenido de forma que se ejecute el script especificado.

El contenido del script "crear_workflow.js" podría ser algo similar a lo siguiente:


function createAdvancedWorkflow(docNode) {
   logger.system.out("Dentro de la función");
   var workflow = actions.create("start-workflow");
   workflow.parameters.workflowName = "activiti$activitiReview";
   logger.system.out("workflow:"+workflow);
   workflow.parameters["bpm:workflowDescription"] = "Revisa por favor este documento: "+docNode.name;
   logger.system.out("Descripcion");
   workflow.parameters["bpm:assignee"] = people.getPerson("usr1"); // TODO: not hard coded, this is testing
   logger.system.out("Asignado");

   //var futureDate = new Date();
   //futureDate.setDate(futureDate.getDate() + 3);
   //workflow.parameters["bpm:workflowDueDate"] = futureDate; 
   logger.system.out("Antes de salir");
   workflow.execute(docNode);
}

function main() {
       var docNode = search.findNode(document.nodeRef); 
       var name = document.name;
       logger.system.out("Documento:"+name);

       createAdvancedWorkflow(docNode);

}
main();


4 de junio de 2018

:: Alfresco .Consultar los grupos a los que pertenece un usuario (Tip)

Una forma sencilla de obtener los grupos a los que pertenece un usuario de Alfresco, es realizando la siguiente llamada:




http://localhost:8181/alfresco/s/api/people/USUARIO?groups=true

Tendremos que sustituir el literal: "USUARIO" por el nombre de usuario que deseemos consultar.

La respuesta que obtendremos será algo similar a lo siguiente:

{
 "url": "\/alfresco\/s\/api\/people\/usr3",
 "userName": "usr3",
 "enabled": true,
 "firstName": "usr3",
 "lastName": "",
 "jobtitle": null,
 "organization": null,
 "organizationId": null, 
 "location": null,
 "telephone": null,
 "mobile": null,
 "email": "gis@asac.as",
 "companyaddress1": null,
 "companyaddress2": null,
 "companyaddress3": null,
 "companypostcode": null,
 "companytelephone": null,
 "companyfax": null,
 "companyemail": null,
 "skype": null,
 "instantmsg": null,
 "userStatus": null,
 "userStatusTime": null,
 "googleusername": null,
 "quota": -1,
 "sizeCurrent": 0,
 "emailFeedDisabled": false,
 "persondescription": null,
 "authorizationStatus": null,
 "isDeleted": false,
 "isAdminAuthority": false
,
 "capabilities":
 {
  "isAdmin":
  false
    ,"isMutable":
  true
    ,"isGuest":
  false
   },
 "groups": [
 {
  "itemName": "GROUP_Contabilidad",
  "displayName": "Contabilidad"
 }],
 "immutability":
 {
 }
}


12 de diciembre de 2017

:: Alfresco. Importación masiva de documentos

Alfresco dispone de una utilidad para llevar a cabo la importación masiva de documentos, esta está accesible en la siguiente url:


http://localhost:8383/alfresco/service/bulkfsimport


Los campos que deberemos cumplimentar son los siguientes:

Import directory
Directorio desde el que realizaremos la importación (ficheros a importar en nuestro Alfresco)

Por ejemplo: d:\software
Target space
Path
Ruta -dentro de nuestro Alfresco- al nodo (carpeta) sobre la que se realizará la importación

Por ejemplo: /Espacio de empresa/Sitios/netic360/documentLibrary/Inicio
NodeRef
Referencia al nodo sobre el que queremos importar (por ejemplo carpeta dentro de nuestro Alfresco) 
Por ejemplo: workspace://SpacesStore/844bc038-53f5-4a79-b06e-941c1b8302c1
Disable rules
Nos permitirá - si es necesario - habilitar/deshabilitar la ejecución de reglas, lo que podría ralentizar la carga masiva

Replace existing files
Marcando esta opción reemplazará los ficheros existentes con los que están siendo importados

Batch size
Es el nº de directorio y ficheros que serán importados de una sola vez
Por ejemplo: 10
Number of threads
Número de hilos de ejecución
Por ejemplo: 5

Para comprobar el estado de importación podemos acceder a la url:

http://localhost:8383/alfresco/service/bulkfsimport/status

Para obtener el path o el NodeRef es útil hacer uso de las "Herramientas de administración" > "Navegador de Nodos".

18 de septiembre de 2017

:: Alfresco. Refresco de las etiquetas (Tip)

Quizás en alguna ocasión has etiquetado documentos y al realizar un filtro por las etiquetas que indican que están asociadas a algún documento obtenemos el mensaje: "No hay elementos de contenido".

Esto podría ser debido a que se ha eliminado un documento con esa etiqueta, y ha quedado en la papelera (no se ha eliminado definitivamente). Si tras eliminar el contenido de la papelera y refrescar, el problema persiste, podríamos -mediante un script- intentar refrescar las etiquetas.

var refresh = actions.create('refresh-tagscope');
refresh.execute(space);


Este script podríamos ejecutarlo de manera manual sobre un sitio para obligar a que la propiedad cm:tagScopeSummary (puede ser consultado a través del navegador de nodos) se actualice cada vez que se asigne una etiqueta de un documento en un sitio.

13 de septiembre de 2017

:: Alfresco. Convertir documento a PDF desde un script

A continuación describiremos cómo llevar a cabo la conversión de un documento (por ejemplo docx) a formato PDF desde un script de Alfresco, creando -además- una nueva versión de este.

El planteamiento podría ser el siguiente:

1.- Crearemos un script al que llamaremos "convert_pdf.js" y que ubicaremos en: "Repositorio>Diccionario de datos>Scripts" con el siguiente contenido:

var pdfNode=document.transformDocument("application/pdf");
var version=document.createVersion("version pdf",true); //true=create major version
document.properties.content.write(pdfNode.properties.content,true,false);
document.name+=".pdf";
document.save();
pdfNode.remove();


2.- Crearemos una carpeta sobre la que llevaremos a cabo esta prueba de concepto, y que denominaremos: "Word a PDF"

3.- Sobre esta carpeta que acabamos de crear, definiremos una regla de contenido:
- Cuando: se crean o entran elementos en esta carpeta
- Si se cumplen todos los criterios: Todos los elementos
- Realizar acción: Ejecutar script - convert_pdf.js

4.- Cada vez que subamos un documento a esta carpeta, se ejecutará el script de conversión a PDF, y se creará una nueva versión del documento


Como podemos ver en la imagen anterior, se ha realizado correctamente la conversión a PDF y se ha generado una nueva versión del documento.

7 de septiembre de 2017

:: Alfresco. Realizar una búsqueda sobre una carpeta concreta de Alfresco (Tip)

Si bien este tipo de búsqueda no es posible realizarlo desde la interfaz de Alfresco, podemos -desde el navegador de nodos- lanzar una consulta.
Por ejemplo, utilizando la sintaxis CMIS, la consulta podría ser algo así:

SELECT cmis:name FROM cmis:document WHERE IN_FOLDER('id_carpeta')

Mediante la consulta anterior buscaremos todos los documentos que se encuentren dentro de la carpeta cuyo identificador especifiquemos. Este identificador podemos consultarlo cuando accedemos a los detalles de las propiedades, por ejemplo:"ba7d9c8b-48dd-4b90-bf30-73fc4e38b03d"

El resultado de la consulta -en nuestro Alfresco- sería:

22 de septiembre de 2016

:: Tip Alfresco. Buscar todos los usuarios

A menudo, una pregunta recurrente en Alfresco es cómo buscar u obtener la relación completa de usuarios definidos.
Normalmente se tiende a utilizar el carácter "*", no devolviendo ningún resultado.

Los caracteres que debemos utilizar son:
\* (caracter escapado)
%

El carácter más ampliamente utilizado es "%" por lo que al añadirlo en el cajetín de búsqueda de los usuarios, obtendremos la relación de aquellos definidos en el sistema.

31 de agosto de 2016

:: Alfresco. Habilitar el modo "debug"

Para habilitar el modo "debug" en Alfresco 5, los pasos a seguir son los siguientes:
.- Editaremos el fichero "share-config-custom.xml" ubicado en: "${alfresco}\tomcat\shared\classes\alfresco\web-extension"

.- Modificamos el valor que aparece en la siguiente línea y lo establecemos a "true"
< client-debug >false< /client-debug >

Tras reiniciar el servicio de Alfresco, en el menú principal tendremos acceso a una nueva entrada denominada "Debug Menu " con las siguientes entradas:

  • Update Logging Preferences
  • Show Pub/Sub Log
  • Show Data Model
  • Toggle Developer View


Para cada una de estas opciones, disponemos además de la opción de una configuración rápida en cuanto a la información a mostrar en los logs:

  • Debug Logging
  • Show All Logs
  • Show Warning Messages
  • Show Error Messages

16 de agosto de 2016

:: Alfresco. Configuración del LDAP

La vinculación de la solución de Gestión Documental Alfresco -en su versión 5- con el LDAP (como en el resto de versiones) se realiza siguiendo los pasos siguientes:


1.- Debemos editar el fichero alfresco-global.properties ubicado en "Alfresco/tomcat/shared/classes"
2.- Añadiremos la siguiente configuración al fichero:

##LDAP
authentication.chain=alfinst:alfrescoNtlm,ldap1:ldap-ad
ntlm.authentication.sso.enabled=false
ldap.authentication.allowGuestLogin=false

ldap.authentication.userNameFormat=%s
#your login is the same like user name in windows
ldap.synchronization.active=true
ldap.authentication.java.naming.security.authentication=simple
ldap.authentication.java.naming.provider.url=ldap://xxxx.local/:389
ldap.authentication.defaultAdministratorUserNames=xxxx
ldap.synchronization.java.naming.security.principal=xxxx@xxxx.local
ldap.synchronization.java.naming.security.credentials=xxxxx
ldap.synchronization.userSearchBase=ou\=xxxx,ou\=xxxx,dc\=xxxx,dc\=xxxx

Tras configurar el ldap en este fichero y una vez guardados los cambios, procederemos a reiniciar el servicio.

Cuando el usuario acceda al login, el proceso de validación se realizará contra el directorio activo.

13 de agosto de 2016

:: Alfresco. Deshabilitar enlace al repositorio

En implantaciones de la solución de gestión documental Alfresco, en ocasiones uno de los requisitos consiste en deshabilitar/ocultar una entrada de menú.
En este caso particular, si se desea ocultar la entrada "Repositorio" para usuarios no administradores, los pasos a seguir son los mostrador a continuación.

Buscaremos el fichero "share-config-custom.xml" ubicado en: "${alfresco}\tomcat\shared\classes\alfresco\web-extension" y modificaremos el código en negrita.
<!-- Repository Library config section -->
   <config evaluator="string-compare" condition="RepositoryLibrary" replace="true">
      <!--
         Root nodeRef or xpath expression for top-level folder.
         e.g. alfresco://user/home, /app:company_home/st:sites/cm:site1
         If using an xpath expression, ensure it is properly ISO9075 encoded here.
     -- >
      <root-node >alfresco://company/home</root-node>
     <tree>
         <!--
            Whether the folder Tree component should enumerate child folders or not.
            This is a relatively expensive operation, so should be set to "false" for Repositories with broad folder structures.
         -->
         <evaluate-child-folders>false
        
         <!--
            Optionally limit the number of folders shown in treeview throughout Share.
         -->
         <maximum-folder-count >500< /maximum-folder-count>
      </tree>
      <!--
         Whether the link to the Repository Library appears in the header component or not.
      -->
      <visible >false</visible>
   </config>
De esta manera, el enlace al repositorio no estará disponible para usuarios que no sean administradores.

8 de agosto de 2016

:: Alfresco. Restringir el tipo de ficheros a subir a la biblioteca de documentos

En un proyecto de implantación de Alfresco como solución de getión documental es habitual que uno de los requisitos del cliente sean que no desea que suban "ficheros ejecutables".

Una posible solución, para evitar que suban ficheros de un determinado tipo a una carpeta sería siguiendo los siguientes pasos:

.- Definiremos un fichero .js al que llamaremos "netic360_block_document.js" y que subiremos a: "Repositorio" > "Diccionario de datos" > "Scripts"
function main()
{
    var name = document.name;
    var siteName = document.siteShortName;
    var parent = document.parent;
    throw "Formato de fichero no soportado";
}
main();

.- En la carpeta sobre la que deseamos aplicar esta restricción definiremos una regla encargada de ejecutar el script en el caso de que el "mimetype" del documento sea un "fichero binario".


De esta manera, a la hora de subir un fichero binario, no se completará el proceso al ser identificado como un formato no permitido.

4 de agosto de 2016

:: Alfresco. Creación de un grupo

Para crear un nuevo grupo de usuarios en Alfresco, seleccionaremos la entrada de menú "Herramientas administrativas" > "Grupos".
Nos aparecerá un cajetín donde realizar una búsqueda por un determinado literal; en nuestro caso - y puesto que vamos a crear un nuevo grupo- pulsaremos sobre el botón "Examinar".

Para proceder a la creación, pulsaremos sobre el botón "+" y cumplimentaremos los datos del formulario.

Una vez pulsemos sobre el botón "Crear grupo" nos aparecerá la relación de grupos disponibles, momento tras el que pasaremos a crear o asociar un usuario a un determinado grupo.

:: Liferay DXP 2026. Habilitar RSS

En la versión Liferay DXP 2026 para habilitar las fuentes de datos RSS debemos seguir los pasos siguientes: 1.- Accederemos a la Configuraci...