Cómo añadir un nuevo tipo a Alfresco

En este tutorial, vamos a explicar cómo crear un nuevo tipo en Alfresco. Para ello, vamos a ir viendo un ejemplo muy sencillo.

El ejemplo va a estar basado en la necesidad de una empresa de Recursos Humanos que está buscando un experto en Alfresco o un buen arquitecto 😛 . Para ello necesita crear un nuevo tipo de documento, que llamaremos CV. Los Curriculums (CV) tendrán dos propiedades: status y decision, y a su vez, status sólo tendrá dos posibles valores: «Under review» y «Ready».

1. En primer lugar, añade un nuevo espacio de nombres
Ve al archivo content-model.xml, y añade un espacio de nombres customizado. En nuestro ejemplo va a ser «ex»

<!-- Custom namespace -->
<namespaces>
<namespace uri="http://www.example.com/model/content/1.0"
prefix="ex" />
</namespaces>

2. Después, crea una constraint list para indicar valores permitidos
Para la property status vamos a crear una constraint list que tiene los valores «Under review» and «Ready»

<constraints>
<constraint name="ex:allowedStatus" type="LIST">
<parameter name="allowedValues">
<list>
<value>Under Review</value>
<value>Ready</value>
</list>
</parameter>
</constraint>
</constraints>

3. Detalla la definición del nuevo tipo
En este paso, en el ejemplo vamos definir el tipo ex:status, con las dos propiedades que comentamos: status y decision.

<types>
<!-- CV type -->
<type name="ex:cv">
<title>CV</title>
<properties>
<property name="ex:status">
<title>status</title>
<type>d:text</type>
<constraints>
<constraint ref="ex:allowedStatus"/>
</constraints>
</property>
<property name="ex:decision">
<title>decision</title>
<type>d:text</type>
</property>
</properties>
</type>
</types>

Con esto ¡Ya tendríamos nuestro modelo listo en Alfresco!

4. Si estas usando Share, modifica share-config-custom.xml para mostrar el nuevo tipo
Esto es necesario, ya que el hecho de que un tipo exista en Alfresco, no hace automáticamente que aparezca en Share, por lo que, si queremos que los usuarios puedan ver estas propiedades y modificarlas, tenemos que añadir la siguiente configuración en
share-config-custom.xml, para añadir nuestro tipo «ex:cv» como subtipo de «cm:content»

<types>
<type name="cm:content">
<subtype name="ex:cv" />
</type>
</types>

5. Indica una label para el nuevo tipo
En web-extension/messages/*-share-amp.properties añade una property con la siguiente sintaxis:
type.{namespace}_{type}={label}, por ejemplo, para nuestro caso sería:

#Names for types
type.ex_cv=Resume

6. Determina la visibilidad de las propiedades
En share-config-custom.xml añade:

<!-- ex:cv -->
<config evaluator="model-type" condition="ex:cv">
<forms>
<form>
<field-visibility>
<show id="ex:status" force="true"/>
<show id="ex:decision" force="true" />
</field-visibility>
</form>
</config>

Y voilà

custom type alfresco