jueves, 13 de marzo de 2014

Creando Tipos de Documentos en Alfresco

La creación de tipos de documentos y aspectos en Alfresco; resulta en la creación y modificación de una serie de archivos en su mayoria xml.

Dichos archivos se guardan en:
  • Extension
    /opt/bitnami/apache-tomcat/shared/classes/extension
  • Web-Extension
    /opt/bitnami/apache-tomcat/shared/classes/web-extension
  • Messages
    /opt/bitnami/apache-tomcat/shared/classes/messages
El servidor que he usado es una maquina virtual, obtenida desde bitnami. Así, pues la ruta de uds. podría ser otra. Para dejar un estandar debería ser: ruta_de_instalación_alfresco/...

Paso 1

Crear un archivo xml, de nombre "testcustommodel.xml"; con el siguiente formato:
<?xml version="1.0" encoding="UTF-8"?>
<model name="test:basemodel" xmlns="http://www.alfresco.org/model/dictionary/1.0">
    <!-- Detalle básico del modelo -->
    <description>Test Base Model</description>
    <author>None</author>
    <version>1.0</version>

    <!-- Agrego los modelos que utilizaré en mi propio modelo -->
    <imports>
        <import uri="http://www.alfresco.org/model/dictionary/1.0" prefix="d" />
        <import uri="http://www.alfresco.org/model/content/1.0" prefix="cm" />
    </imports>

    <!-- Agrego el espacio de nombre para mi propio modelo -->
    <namespaces>
        <namespace uri="http://www.alfresco.org/model/testbasemodel/1.0" prefix="test" />
    </namespaces>

    <!-- Coloco los tipos de documentos -->
    <types>
        <type name="test:basedocumenttype">
            <!-- Coloco el titulo de mi tipo de documento -->
            <title>Test Base Document Type</title>
           
            <!-- Coloco el padre de mi tipo de documento -->
            <parent>cm:content</parent>
           
            <!-- Coloco las propiedades de mi propio modelo -->
            <properties>
                <!-- Coloco el nombre de la propiedad -->
                <property name="test:entityid">
                    <!-- Coloco el tipo de la propiedad -->
                    <type>d:text</type>
                </property>
                <property name="test:entityname">
                    <type>d:text</type>
                </property>               
            </properties>           
        </type>
    </types>
</model>
Paso 2
Crear un archivo xml, de nombre "testcustommodel-model-context.xml" con el siguiente formato:
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE beans PUBLIC '-//SPRING//DTD BEAN//EN' 'http://www.springframework.org/dtd/spring-beans.dtd'>
<beans>
        <bean id="extension.test.dictionaryBootstrap" parent="dictionaryModelBootstrap" depends-on="dictionaryBootstrap">
                <property name="models">
                        <list>
                                <!-- la ruta hacía mi modelo -->
                                <value>alfresco/extension/testcustommodel.xml</value>
                        </list>
                </property>
        </bean>

        <bean id="extension.test.resourceBundle" class="org.alfresco.i18n.ResourceBundleBootstrapComponent">
                <property name="resourceBundles">
                        <list>
                                <!-- la ruta hacía el archivo de mensajes -->
                                <value>alfresco.messages.testcustommodelmessage</value>
                        </list>
                </property>
        </bean>
</beans>
Estos dos archivos xml deben ir dentro de la carpeta "extension".

Paso 3

Modificamos el archivo "custom-slingshot-application-context.xml" que se encuentra en la carpeta web-extension. Agregando las siguientes líneas:
<bean id="webscripts.test.resources" class="org.springframework.extensions.surf.util.ResourceBundleBootstrapComponent">
    <property name="resourceBundles">
        <list>
            <value>alfresco.messages.testcustommodelmessage</value>
        </list>
    </property>
</bean>

Paso 4

Modificamos el archivo "share-config-custom.xml" que se encuentra en la carpeta web-extension; agregando las líneas:
<config evaluator="string-compare" condition="DocumentLibrary">
    <types>
            <type name="cm:content">
                    <subtype name="test:basedocumenttype" />
            </type>
    </types>
    <aspects>
            <visible>
            </visible>

            <addable>
            </addable>

            <removeable>
            </removeable>
    </aspects>

</config>

<config evaluator="node-type" condition="cm:content">
<forms>
    <form>
            <field-visibility>                       
                <show id="test:entityid" />
                <show id="test:entityname" />
            </field-visibility>
    </form>

    <form id="doclib-simple-metadata">
            <field-visibility>
                <show id="test:entityid" />
                <show id="test:entityname" />
            </field-visibility>

            <edit-form template="../documentlibrary/forms/doclib-simple-metadata.ftl" />
    </form>

    <form id="doclib-inline-edit">
            <field-visibility>
                <show id="test:entityid" />
                <show id="test:entityname" />
            </field-visibility>
    </form>
</forms>
</config>

Paso 5

En la carpeta messages, crear el archivo "testcustommodelmessage.properties"; con el siguiente contenido:
test_basemodel.type.test_basedocumenttype.title=Tipo de Documento Base (Test)

test_basemodel.property.test_entityid.title=Identificador manejado por el sistema para las entidades
test_basemodel.property.test_entityname.title=Entidad
Finalmente reiniciamos tomcat y verificamos que en Alfresco nos aparezca un nuevo tipo de documento.

Es de mucha ayuda siempre revisar los logs share, alfresco y catalina; estos se encuentran en la ruta: /opt/bitnami/apache-tomcat/logs

1 comentario:

  1. buenas tardes, es posible que explique con imagenea como se sube un tipo documetal que tenga metadatas personalizada??
    Aun no logro entenderlo .

    Muchas gracias a cualquier que me apoye.

    Saludos desde Venezuela

    ResponderEliminar