Configurar una nueva lista de datos en Alfresco

10/01/2014

Uno de los problemas que tiene Alfresco comparado con otros CMS, es que no es fácil personalizar algunos elementos, tal como las listas de datos o los aspectos. En Sharepoint por ejemplo, es bastante sencillo crear y personalizar una lista de datos todo desde la interfaz web, pero en Alfresco es más complicado. En este post vamos a ver cómo crear una lista de datos personalizada en Alfresco.

Imaginemos que queremos guardar nuestras facturas en una lista de datos de Alfresco. Si accedemos al propio entorno de Alfresco veremos que hay diversas listas de datos ya previamente instaladas que podemos utilizar

Listas de datos por defecto instaladas en Alfresco

Listas de datos por defecto instaladas en Alfresco

Pero vemos que no hay un botón desde el entorno web para poder agregar y personalizar una nueva lista de datos. Para ello debemos seguir una serie de pasos:

1. Crear un modelo de datos nuevo para la lista de datos

Para crear una nueva lista de datos necesitamos crear un modelo de datos para la nueva lista. Los modelos de datos se definen en esta ruta de Alfresco:

C:\Alfresco\tomcat\shared\classes\alfresco\extension\

Dentro de dicha carpeta vamos a colocar dos ficheros: modelo_lista_FRA.xml y modelo_lista_FRA-context.xml

El fichero modelo_lista_FRA.xml contiene el modelo con la definición de la nueva lista de datos denominada modeloFra. Dicho modelo contiene el nombre (listaFra), las propiedades de la lista (id Factura, Cliente, Total…), los tipos (texto, numérico, anexos…), etc…

<?xml version=”1.0″ encoding=”UTF-8″?>

<!– Definition of new Model –>

<model name=”fra:modeloFra” xmlns=”http://www.alfresco.org/model/dictionary/1.0″&gt;

<!– Optional meta-data about the model –>
<description>Lista de datos Personalizada</description>
<author>Santiago Carbonell Forment</author>
<version>1.0</version>

<!– Imports are required to allow references to definitions in other models –>
<imports>
<!– Import Alfresco Dictionary Definitions –>
<import uri=”http://www.alfresco.org/model/dictionary/1.0&#8243; prefix=”d”/>
<!– Import Alfresco Content Domain Model Definitions –>
<import uri=”http://www.alfresco.org/model/content/1.0&#8243; prefix=”cm”/>
<!– Import Alfresco Data List Model Definitions –>
<import uri=”http://www.alfresco.org/model/datalist/1.0&#8243; prefix=”dl”/>
</imports>

<!– Introduction of new namespaces defined by this model –>
<namespaces>
<namespace uri=”fra.listadatos.com” prefix=”fra”/>
</namespaces>

<!– T Y P E D E F I N I T I O N S –>
<types>
<!– Data list defintions For this model go here –>
<type name=”fra:listaFra”>
<title>Lista de Facturas</title>
<description>Lista de Facturas</description>
<parent>dl:dataListItem</parent>
<properties>
<property name=”fra:fraID”>
<title>ID Factura</title>
<type>d:text</type>
<mandatory>true</mandatory>
</property>
<property name=”fra:fraCliente”>
<title>Cliente</title>
<type>d:text</type>
<mandatory>true</mandatory>
</property>
<property name=”fra:fraTotal”>
<title>Total Factura</title>
<type>d:text</type>
<mandatory>false</mandatory>
</property>
</properties>

<associations>
<association name=”fra:fraAnexo”>
<title>Anexos</title>
<source>
<mandatory>false</mandatory>
<many>true</many>
</source>
<target>
<class>cm:content</class>
<mandatory>false</mandatory>
<many>true</many>
</target>
</association>
</associations>
</type>
</types>
</model>

El fichero modelo_lista_FRA-context.xml indica a Alfresco que importe la definición del nuevo modelo. Lo más importante de este fichero, es que el nombre tiene que finalizar como context.xml, ya que Alfresco cargará todos los ficheros con modelos personalizados que finalicen así. Este fichero lo único que hace es crear un nuevo bean de Spring de Alfresco referenciando la definición del fichero anterior.

<?xml version=’1.0′ encoding=’UTF-8′?>
<!DOCTYPE beans PUBLIC ‘-//SPRING//DTD BEAN//EN’ ‘http://www.springframework.org/dtd/spring-beans.dtd’&gt;

<beans>

<!– Registration of new models –>
<bean id=”extension.fra.dictionaryBootstrap” parent=”dictionaryModelBootstrap” depends-on=”dictionaryBootstrap”>
<property name=”models”>
<list>
<value>alfresco/extension/modelo_lista_FRA.xml</value>
</list>
</property>
</bean>

</beans>

2. Configurar el fichero shared-config-custom.xml para importar el nuevo modelo

Una vez hemos creado los dos ficheros de definición del modelo de la lista de datos, debemos decirle a Alfresco que los importe como una nueva lista. Para ello debemos configurar el fichero shared-config-custom.xml que se encuentra en esta ruta de Alfresco:
C:\Alfresco\tomcat\shared\classes\alfresco\web-extension\

Dicho fichero contiene la definición global de muchos otros objetos de Alfresco tal como aspectos, lista de datos, etc…. Entre las dos etiquetas de configuración de dicho fichero (<alfresco-config> y </alfresco-config>) copiamos el código que importará la nueva lista. En dicho código indicamos el nombre de la lista de datos que vamos a importar listaFra e indicaremos los formularios de edición, creación y de vista la del DataGrid.

<!– Lista de datos Facturas –>

<config evaluator=”model-type” condition=”fra:listaFra”>
<forms>
<!– Create item form –>
<form>
<field-visibility>
<!– for the form creation we are showing everything except approved date –>
<show id=”fra:fraID” />
<show id=”fra:fraCliente” />
<show id=”fra:fraTotal” />
<show id=”fra:fraAnexo” />
</field-visibility>
<create-form template=”/org/alfresco/components/data-lists/forms/dataitem.ftl” />
<appearance>
<field id=”fra:fraCliente”>
<control template=”/org/alfresco/components/form/controls/textarea.ftl” />
</field>

<field id=”fra:fraTotal”>
<control template=”/org/alfresco/components/form/controls/textarea.ftl” />
</field>
<field id=”fra:fraAnexo”>
<control>
<control-param name=”startLocation”>{doclib}</control-param>
</control>
</field>
</appearance>
</form>

<!– Data Grid view –>
<form id=”datagrid”>
<field-visibility>
<show id=”fra:fraID” />
<show id=”fra:fraCliente” />
<show id=”fra:fraTotal” />
<show id=”fra:Anexo” />
</field-visibility>
</form>
</forms>
</config>

<!– Edit view –>
<config evaluator=”node-type” condition=”fra:listaFra”>
<forms>
<!– Edit marketing item form –>
<form>
<field-visibility>
<show id=”fra:fraID” />
<show id=”fra:fraCliente” />
<show id=”fra:fraTotal” />
<show id=”fra:fraAnexo” />
</field-visibility>
<create-form template=”/org/alfresco/components/data-lists/forms/dataitem.ftl” />
<appearance>
<field id=”fra:fraCliente”>
<control template=”/org/alfresco/components/form/controls/textarea.ftl” />
</field>

<field id=”fra:fraTotal”>
<control template=”/org/alfresco/components/form/controls/textarea.ftl” />
</field>
<field id=”fra:fraAnexo”>
<control>
<control-param name=”startLocation”>{doclib}</control-param>
</control>
</field>
</appearance>

</form>
</forms>
</config>

3. Probar la nueva lista de datos

Ya sólo nos queda probar la nueva lista de datos. Para ello reiniciamos el servidor J2EE de Alfresco y accedemos al entorno del share y creamos una nueva lista de datos. Veremos que aparece la nueva lista de facturas personalizada.

Nueva lista de datos en Alfresco

Nueva lista de datos en Alfresco

Si agregamos una nueva factura podemos ver el formulario que definimos en el fichero shared-config-custom.xml

Formulario personalizado de introducción de nuevos datos en la lista de datos

Formulario personalizado de introducción de nuevos datos en la lista de datos

y podemos ver las nuevas facturas en la vista del grid.

Lista del Grid de la nueva lista de datos personalizada

Lista del Grid de la nueva lista de datos personalizada

4 comentarios to “Configurar una nueva lista de datos en Alfresco”

  1. Felipe Says:

    Buenas, estoy utilizando la versión 4.2.f de alfresco y tengo problemas con la creación de listas de datos se me cae el sitio; agradezco su ayuda

  2. mycnmaster Says:

    Excelente amigo gracias por el tutorial me sirvio mucho


Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: