Gestión Visual de Tipos Documentales en Alfresco
Desde hace tiempo nos hemos encontrado con que la gestión de los tipos documentales en Alfresco es un proceso mas propio de administradores que de usuarios finales. La discusión de si esta herramienta se debe dejar en manos de desarrolladores o de los propios administradores queda para otro post .
En cualquier caso hemos desarrollado un módulo de Alfresco Explorer (AMP) que permite la Creación y Modificación de Tipos documentales sin tocar una sola linea de XML.
Como funcionaTras instalar la extensión como cualquier otro AMP de Alfresco tendremos un nuevo dashlet disponible en el Escritorio del usuario administrador tal y como se puede apreciar en la captura.
Aquí podemos ver las nuevas opciones para gestionar tipos y para administrar la visibilidad que tienen los atributos en las búsquedas(técnicamente sería lo equivalente a definir en el web-client si se puede o no buscar por los atributos).
Si decidimos gestionar tipos documentales y seleccionamos la primera opción del menú, nos aparecerá una pantalla en la que solo tenemos que seleccionar el nombre y descripción del nuevo Tipo Documental, para pasar inmediatamente a añadir Atributos de dicho Tipo Documental. En el ejemplo podemos ver el Tipo Factura electrónica con unos cuantos atributos definidos.
Tras cubrir los atributos cuidadosamente e indicar si es visible y/o editable, solo tenemos que darle a Terminar y entonces el módulo crea el Tipo documental y lo despliega, de modo que lo tengamos disponible inmediatamente para añadir documentos.
Podemos indicar por que campos y que tipos documentales aparecen en la busqueda avanzada:
Como conseguirloSi a alguien le interesa esta extensión, puede ponerse en contacto con Queres Tecnologías, pero adelanto que aún no sabemos cual será el modelo de distribución. Ahora mismo esta extensión la estamos ofreciendo en todas nuestras implantaciones de Alfresco.
Recognized Alfresco Partner
Recientemente Alfresco ha lanzado el programa de Partners reconocidos , que según se explica en la web:
“Para convertirse en un Partner Reconocido por Alfresco, la empresa necesita demostrar su profundo conocimiento en los productos de Alfresco teniendo en su equipo de trabajo un número determinado de Desarrolladores Reconocidos por Alfresco que hayan superado con éxito el examen de Desarrolladores Reconocidos”.
Nos enorgullece decir que todos nuestros ingenieros han superado con éxito el examen, lo que proporciona a Queres tecnologías el grado de Recognized Alfresco Partner, fruto sin duda de todos estos años de dedicación a la gestión documental Open Source y al desarrollo de soluciones a problemas relacionados con los flujos documentales.
Ubuntu 10: Deshabilitar Servidor X en el arranque
Si utilizamos la última versión de Ubuntu como servidor, quizás no necesitemos hacer uso del sistema de ventanas, ahorrando así memoria RAM y recursos para otras aplicaciones.
En antiguas versiones de Ubuntu, así como Debian, Redhat o Fedora se deshabilitaban las X en el fichero /etc/inittab cambiando el init default de id:5:initdefault: a id:3:initdefault:
Sin embargo en la versión 10 de Ubuntu esto ha cambiado, y ahora debemos modificar esta configuración en el fichero /etc/init/gdm.conf reemplazando la línea:
start on runlevel [016]
por:
start on runlevel [3]
Alfresco ‘fácil, sencillo y para toda la familia’
En algunos casos la instalación de un producto como Alfresco puede resultar tediosa para los que se acercan a la herramienta por primera vez : la instalación de la base datos, el contenedor de aplicaciones, … Esto puede resultar un inconveniente para aquellos que valorando la implantación de un sistema de gestión documental quieran realizar algunas pruebas de concepto antes de decantarse por uno u otro.
Para solventar este obstáculo puede probar Alfresco sin realizar ningún tipo de instalación a tráves de la Alfresco Cloud Trial, una instancia de Alfresco ‘en la nube’ a disposición de quién quiera acercarse a la herramienta a la ‘Veni, vidi, vici’.
Alternativamente – si lo que quiere es probarlo en su propio ordenador – BItNami ha creado un paquete ‘todo en uno’ con instalador automático de los de siguiente, siguiente, que se puede descargar en el siguiente enlace : paquete de Instalación ‘fácil, sencillo y para toda la familia’. Disponible para Windows, Linux y Mac. También se incluyen, si se prefiere ,imágenes para la máquina virtual VMWare o instancias ‘en la nube’ (servidores de amazón).
Queres en la Xornada Empresarial Software Libre
Este próximo Miercoles día 15 de Diciembre se impartirá una Jornada sobre Software Libre, en la que Agasol ha sido invitada para participar en ella.
Como miembros de Agasol, nos han invitado a dar una charla y un taller práctico sobre la Gestión Documental con Alfresco. Con dichas jornadas se pretende fomentar el uso de Alfresco entre las pequeñas y medianas empresas, con lo que invitamos a todo el mundo a apuntarse a dicho evento pues habrá charlas tremendamente interesantes.
Para asistir solo tenies que enviar un email a osluvi@uvigo.es
Podeis acceder al programa completo de la jornada aqui.
LDAP + Alfresco user authentication
Recently, I configurated Alfresco to chain LDAP+ Alfresco user authentication.
To configure this, you have to edit two files: chaining-authentication-context.xml and ldap-authentication-context.xml (the files are in $ALFRESCO_HOME/tomcat/shared/classes/alfresco/extension directory).
The configuration consists of two parts:
- Authentication Service Bean
- Authentication Component Bean
The authentication by default is LDAP. This two configuration files worked:
chaining-authentication-context.xml
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE beans PUBLIC '-//SPRING//DTD BEAN//EN' 'http://www.springframework.org/dtd/spring-beans.dtd'>
<beans>
<!– Chaining –>
<bean id=”authenticationService”>
<property name=”authenticationServices”>
<list>
<ref bean=”authenticationServiceImplLDAP”/>
</list>
</property>
<property name=”mutableAuthenticationService”>
<ref bean=”authenticationServiceImplAlfresco”/>
</property>
</bean>
<bean id=”authenticationComponent”>
<property name=”authenticationComponents”>
<list>
<ref bean=”authenticationComponentImplLDAP”/>
</list>
</property>
<property name=”mutableAuthenticationComponent”>
<ref bean=”authenticationComponentImplAlfresco”/>
</property>
</bean>
<!– Alfresco Auth –>
<bean id=”authenticationServiceImplAlfresco”>
<property name=”authenticationDao”>
<ref bean=”authenticationDaoAlfresco”/>
</property>
<property name=”ticketComponent”>
<ref bean=”ticketComponent”/>
</property>
<property name=”authenticationComponent”>
<ref bean=”authenticationComponentImplAlfresco”/>
</property>
</bean>
<bean id=”authenticationDaoAlfresco”>
<property name=”nodeService”>
<ref bean=”nodeService”/>
</property>
<property name=”dictionaryService”>
<ref bean=”dictionaryService”/>
</property>
<property name=”namespaceService”>
<ref bean=”namespaceService”/>
</property>
<property name=”searchService”>
<ref bean=”admSearchService”/>
</property>
<property name=”userNamesAreCaseSensitive”>
<value>${user.name.caseSensitive}</value>
</property>
<property name=”passwordEncoder”>
<ref bean=”passwordEncoder”/>
</property>
</bean>
<bean id=”authenticationComponentImplAlfresco” >
<property name=”authenticationDao”>
<ref bean=”authenticationDaoAlfresco”/>
</property>
<property name=”authenticationManager”>
<ref bean=”authenticationManager”/>
</property>
<property name=”allowGuestLogin”>
<value>false</value>
</property>
<property name=”nodeService”>
<ref bean=”nodeService” />
</property>
<property name=”personService”>
<ref bean=”personService” />
</property>
<property name=”transactionService”>
<ref bean=”transactionService” />
</property>
</bean>
<!– LDAP Auth –>
<bean id=”authenticationServiceImplLDAP”>
<property name=”authenticationDao”>
<ref bean=”authenticationDaoLDAP” />
</property>
<property name=”ticketComponent”>
<ref bean=”ticketComponent” />
</property>
<property name=”authenticationComponent”>
<ref bean=”authenticationComponentImplLDAP” />
</property>
</bean>
</beans>
ldap-authentication-context.xml
<?xml version=’1.0′ encoding=’UTF-8′?>
<!DOCTYPE beans PUBLIC ‘-//SPRING//DTD BEAN//EN’ ‘http://www.springframework.org/dtd/spring-beans.dtd’>
<beans>
<!– The main configuration has moved into a properties file –>
<bean name=”ldapAuthenticationPlaceholderConfigurer”>
<property name=”ignoreUnresolvablePlaceholders”>
<value>true</value>
</property>
<property name=”locations”>
<value>classpath:alfresco/extension/ldap-authentication.properties</value>
</property>
</bean>
<!– DAO that rejects changes – LDAP is read only at the moment. It does allow users to be deleted with out warnings from the UI. –>
<bean name=”authenticationDaoLDAP” >
<property name=”allowDeleteUser”>
<value>true</value>
</property>
</bean>
<!– LDAP authentication configuration –>
<!–
You can also use JAAS authentication for Kerberos against Active Directory or NTLM if you also require single sign on from the
web browser. You do not have to use LDAP authentication to synchronise groups and users from an LDAP store if it supports other
authentication routes, like Active Directory.
–>
<bean id=”authenticationComponentImplLDAP”>
<property name=”LDAPInitialDirContextFactory”>
<ref bean=”ldapInitialDirContextFactory”/>
</property>
<property name=”userNameFormat”>
<!–
This maps between what the user types in and what is passed through to the underlying LDAP authentication.
“%s” – the user id is passed through without modification.
Used for LDAP authentication such as DIGEST-MD5, anything that is not “simple”.
“cn=%s,ou=London,dc=company,dc=com” – If the user types in “Joe Bloggs” the authenticate as “cn=Joe Bloggs,ou=London,dc=company,dc=com”
Usually for simple authentication. Simple authentication always uses the DN for the user.
–>
<value>${ldap.authentication.userNameFormat}</value>
</property>
<property name=”nodeService”>
<ref bean=”nodeService” />
</property>
<property name=”personService”>
<ref bean=”personService” />
</property>
<property name=”transactionService”>
<ref bean=”transactionService” />
</property>
<property name=”escapeCommasInBind”>
<value>${ldap.authentication.escapeCommasInBind}</value>
</property>
<property name=”escapeCommasInUid”>
<value>${ldap.authentication.escapeCommasInUid}</value>
</property>
</bean>
<!–
This bean is used to support general LDAP authentication. It is also used to provide read only access to users and groups
to pull them out of the LDAP reopsitory
–>
<bean id=”ldapInitialDirContextFactory”>
<property name=”initialDirContextEnvironment”>
<map>
<!– The LDAP provider –>
<entry key=”java.naming.factory.initial”>
<value>${ldap.authentication.java.naming.factory.initial}</value>
</entry>
<!– The url to the LDAP server –>
<!– Note you can use space separated urls – they will be tried in turn until one works –>
<!– This could be used to authenticate against one or more ldap servers (you will not know which one ….) –>
<entry key=”java.naming.provider.url”>
<value>${ldap.authentication.java.naming.provider.url}</value>
</entry>
<!– The authentication mechanism to use –>
<!– Some sasl authentication mechanisms may require a realm to be set –>
<!– java.naming.security.sasl.realm –>
<!– The available options will depend on your LDAP provider –>
<entry key=”java.naming.security.authentication”>
<value>${ldap.authentication.java.naming.security.authentication}</value>
</entry>
<!– The id of a user who can read group and user information –>
<!– This does not go through the pattern substitution defined above and is used “as is” –>
<entry key=”java.naming.security.principal”>
<value>${ldap.authentication.java.naming.security.principal}</value>
</entry>
<!– The password for the user defined above –>
<entry key=”java.naming.security.credentials”>
<value>${ldap.authentication.java.naming.security.credentials}</value>
</entry>
</map>
</property>
</bean>
</beans>
I tried this configuration in Alfresco 2.1.6
Proceso de eliminado de documentos en Alfresco, Kill ‘Em All
Un tema recursivo que sale en todas las conversaciones que tenemos con los usuarios y administradores a los que les implantamos Alfresco es sobre el proceso de borrado de los documentos en el gestor documental. La pregunta siempre es la misma: “¿ Pero Alfresco no borra nunca los documentos ?“.
En este diagrama explicamos el ciclo de vida de un documento.
El vaciado de la papelera de reciclaje se puede hacer manualmente o con el modulo Alfresco Trashcan Cleaner disponible en la forja de Alfresco.
Sin embargo, este sistema en nuestros clientes no nos funcionaba pues la papelera de reciclaje tenía alrededor de 10.000 elementos y la versión de Alfresco que teniamos daba un Java Heap, con lo que hemos realizado un módulo que se encarga de eliminar elementos de la papelera de reciclaje en función de la fecha del documento y por ejemplo permite eliminar documentos que lleven en la papelera mas de 5 meses. El módulo se llama Kill ‘Em All y lo colgaremos en la forja en cuanto lo tengamos depurado y si a alguien le interesa.
Referencias:
El artículo de Blyx.com me ha recordado que tenía este otro en el tintero desde hacía varios meses
Alfresco Multi-Tenant
Si os muestro esta imagen
muchos diréis que no es ninguna novedad, que es lógico pensar que aunque todos acedemos a internet y nuestros datos viajan por un mismo cable cada red particular puede compartir sus documentos sin que el vecino de abajo sepa cuales son. Pues esto mismo podemos hacer con Alfresco, gracias a la característica “Multi-Tenant” (a partir de aquí llamada MT).
Para qué sirve esta característica?
Podríamos definirla como la posibilidad de crear alfrescos independientes usando una única instancia de Alfresco. Nuestros clientes usarán un único Alfresco, un único war, sin embargo gracias al MT podremos generar nuevos repositorios para que cada organización tenga su propio repositorio físico pero todos usen un único método de entrada.
Activación del Multi-Tenant (Para este ejemplo hemos usado Alfresco Enterprise 3.2.1.2)
Cuando instalamos un nuevo Alfresco no disponemos de la característica MT activada por defecto. Para poder activarla es necesario modificar una serie de documentos. Si hemos descargado la versión de Alfresco que incluye el tomcat, debemos ir al directorio /tomcat/shared/classes/alfresco/extension/mt.
Observaremos que existen 3 archivos con extensión .sample (esta extensión es usada para que no se tenga en cuenta la configuración que contiene el archivo) que deberemos renombrar eliminando el .sample para que en el siguiente arranque de alfresco se tomen en cuenta. Los archivos a renombrar son:
- mt-context.xml.sample -> mt-context.xml
- mt-admin-context.xml.sample -> mt-admin-context.xml
- mt-contentstore-context.xml.sample -> mt-contentstore-context.xml
Una vez hechos los cambios, procederemos a reiniciar/arrancar Alfresco, fijándonos que en los logs aparecerán unos mensajes que nos indican que el MT está activado:
12:24:42,449 User:System INFO [repo.tenant.MultiTAdminServiceImpl] Alfresco Multi-Tenant startup - 0 enabled tenants, 0 disabled tenants
12:24:55,127 INFO [service.descriptor.DescriptorService] Alfresco license: Enterprise - v3.2 granted to Queres Technologias (does not expire)
12:24:55,128 INFO [service.descriptor.DescriptorService] Alfresco started (Enterprise - Multi-Tenant): Current version 3.2.1 (.2 3) schema 3501 - Originally installed version 3.2.1 (.2 3) schema 3501
Gestión de los Tenants
Para poder acceder a la URL de administración de MT debemos autenticarnos como administradores en Alfresco Explorer (por defecto admin/admin) y luego ir a la URL:
http://localhost:8080/alfresco/faces/jsp/admin/tenantadmin-console.jsp
Al igual que ocurre en la URL de administración de workflows lo primero que veremos será un input text para introducir los comandos y debajo una sección de ayuda con todos los comandos disponibles y una breve explicación de cada uno.
Creación de un Tenant
Para crear un tenant existe el comando create, al que debemos pasar una serie de parámetros:
- dominio del tenant (p.e. queres.com)
- contraseña para el usuario admin@queres.com
- directorio del alf_data para el nuevo tenant
el comando final quedaría similar a:
create queres.com password /opt/alfresco/alf_data_queres
Si vemos los logs del catalina.out podremos seguir el proceso de creación. Cuando aparezca un mensaje en la admin consola similar a “created tenant: queres.com” el proceso ha terminado.
Una vez creado el tenant podremos acceder al repositorio usando el explorador con la misma url de siempre:
http://localhost:8080/alfresco
Como usuario deberemos introducir admin@queres.com y la contraseña que indicamos al crear el tenant. Al acceder veremos un repositorio limpio como la primera vez que instalamos nuestro Alfresco y sin ninguna referencia al repositorio inicial (usuarios, grupos, nodos, etc).
Desactivar un Tenant
Para impedir el acceso a un tenant basta con ejecutar la orden “disable “. Haciendo esto no borramos el repositorio pero si un usuario del tenant trata de hacer login obtendrá un error de acceso.
Habilitar un Tenant
Si queremos dar acceso nuevamente a un tenant desactivado basta con ejecutar la orden “enable “. Los usuarios del tenant podrán acceder de nuevo a él.
Eliminar un Tenant
Para eliminar un tenant debemos ejecutar la orden “delete “. Esta acción requiere que reiniciemos el servidor para que se borren los indices. Además es necesario borrar el directorio del los indices manualmente (el alf_data del tenant se especifica cuando se crea).
El resto de órdenes se pueden ver escribiendo el comando “help“, pero me pareció interesante detallar las órdenes de creación, borrado y habilitación/in-habilitación.
Referencias:
http://wiki.alfresco.com/wiki/MT
http://blyx.com/2010/02/08/multitenancy-en-alfresco/
Nueva documentación online de Alfresco
A través de network.alfresco.com veo que han implementado un nuevo sistema de documentación y ayuda.
Las webs de ayuda disponibles son:
1. Administering an Alfresco ECM Production Environment
2. FreeMarker Template API
3. JavaScript API
4. RESTful API
5. Surf Platform API
Después de haber probado el sistema, la verdad es que resulta más cómodo que la wiki. Aporta una información más clara y agrupada y personalmente me resulta más navegable.
Junto con la traducción realizada por MADEJA de la wiki de Alfresco, se han convertido en mis marcadores más usados
Que os parece este nuevo sistema?
Gestión de Proyectos con Alfresco Share, integración con Redmine
Aplicando el principio de dogfooding, empezamos a emplear Alfresco para la gestión de proyectos hace mucho tiempo, ahora damos un salto mas con la gestión de los mismos desde el propio Share.
Alfresco Share nos permite tener en un único espacio de trabajo toda la documentación asociada al proyecto, las tareas de desarrollo (mediante el módulo de integración con Redmine que hemos desarrollado) de cada usuario y el calendario del proyecto.
De este modo cubrimos las siguientes necesidades de una manera efectiva:
- Múltiples Proyectos (Sites), Estos se crean automaticamente con una plantilla de proyecto que genera estructura y documentación base.
- Potenciar la colaboración entre equipos, principalmente gracias al wiki y a los foros
- Integración con el correo electrónico, viene out of the box con Alfresco, pero aún así hemos mejorado esta funcionalidad para ajustarse mas a nuestras necesidades.
- Integración con nuestras herramientas de desarrollo Redmine.
- Integración con nuestra herramienta de Soporte (Request Tracker),
- Planificación, Hitos y Calendario, empleamos el calendario del Site para la gestión de las fechas de entrega, vacaciones del equipo, etc …
- Entregables a clientes, gracias a la habilidad de poder invitar a determinadas partes del Site a nuestros clientes, el intercambio de documentación entre ellos y nosotros se ha hecho mucho mas ágil.
Con todo esto creemos que la integración con Redmine ha sido fundamental para dar el salto a Alfresco Share.
Nota: La extensión de Redmine la tenemos disponible de manera gratuita a todos nuestros clientes de A^3S (Alfresco As A Service).



