Mostrando entradas con la etiqueta tipos de datos alfresco 5. Mostrar todas las entradas
Mostrando entradas con la etiqueta tipos de datos alfresco 5. Mostrar todas las entradas

22 de mayo de 2016

:: Alfresco. Creación de tipos de datos personalizados

Es habitual tener que crear tipos personalizados o extender el modelo de datos de Alfresco.

Para llevar a cabo la definición de estos tipos de datos, los pasos a seguir son los siguientes:

.- Definición de un tipo datos al que llamaremos "factura". Crearemos el fichero "facturaModel.xml" en la siguiente ubicación: "${alfresco}/tomcat/shared/classes/alfresco/extension/" o bien podemos crear una carpeta más "myModel" dentro de la que ubicaremos este fichero.
<?xml version="1.0" encoding="UTF-8"?>
<model name="fact:FacturaModel"
       xmlns="http://www.alfresco.org/model/dictionary/1.0"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

    <description>Facturas Compra Model</description>
    <author>neTIC360</author>
    <version>1.0</version>

    <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>

    <!-- Definicion del namespace del modelo -->
    <namespaces>
        <namespace uri="fact.model" prefix="fact"/>
    </namespaces>

    <types>
    <!-- Definicion del nuevo tipo documental -->
        <type name="fact:factura">
            <title>Factura</title>
            <parent>cm:content</parent>

<!-- Definicion de las propiedades -->
            <properties>
                <property name="fact:nfactura">
                    <title>Nº factura</title>
                    <type>d:text</type>
                    <mandatory>true</mandatory>
<index enabled="true">
<atomic>true</atomic>
<stored>true</stored>
<tokenised>true</tokenised>
</index>
                </property>
                <property name="fact:anio">
                    <title>Año</title>
                    <type>d:int</type>
                    <mandatory>true</mandatory>
                </property>
<property name="fact:fecha">
                    <title>Fecha</title>
                    <type>d:datetime</type>
                    <mandatory>false</mandatory>
                </property>
<property name="fact:nif">
                    <title>NIF</title>
                    <type>d:text</type>
                    <mandatory>false</mandatory>
                </property>
<property name="fact:nproveedor">
                    <title>Proveedor</title>
                    <type>d:text</type>
                    <mandatory>false</mandatory>
                </property>
<property name="fact:concepto">
                    <title>Concepto</title>
                    <type>d:mltext</type>
                    <mandatory>false</mandatory>
                </property>
            </properties>
        </type>
    </types>
</model>

De forma similar crearemos otro tipo de datos "Contrato" para lo que crearemos un fichero: "contratoModel.xml" con una estructura similar a la anterior

.- Definimos el contexto para el modelo que acabamos de crear. Para ello creamos el fichero: "model-context.xml" o lo editamos en el caso de que ya exista, ubicado en: "${alfresco}tomcat/shared/classes/alfresco/extension/" o podemos crear uno nuevo nombrándolo como "${alfresco}tomcat/shared/classes/alfresco/extension/netic360-model-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>
    <bean id="netic360-extension.dictionaryBootstrap" parent="dictionaryModelBootstrap" depends-on="dictionaryBootstrap">
        <property name="models">
        <!-- Referencia a los modelos que hayamos creado-->
            <list>    
<value>alfresco/extension/contratoModel.xml</value>
<value>alfresco/extension/facturaModel.xml</value>
            </list>
        </property>
    </bean>
</beans>


.- En el fichero "share-config-custom.xml" ubicado en "${alfresco}tomcat/shared/classes/alfresco/web-extension/" buscamos el siguiente código y añadimos la línea correspondiente a  nuestro tipo de datos:
< !--
         Used by the "Change Type" action

         Define valid subtypes using the following example:
           
               
           

         Remember to also add the relevant i18n string(s):
            cm_mysubtype=My SubType
      -- >
      < types >
         < type name="cm:content " >
< subtype name="fact:factura" />
         < /type >

         < type name="cm:folder" >
         < /type >

         < type name="trx:transferTarget" >
            < subtype name="trx:fileTransferTarget" />
         < /type >
      < /types >

.- Para comprobar que el tipo de datos es correcto, reiniciamos el servicio de Alfresco y comprobamos si la acción "Cambiar tipo" funciona correctamente con nuestro tipo de datos definido

.- Si el cambio de tipo es correcto accedemos a las propiedades del documento de este nuevo tipo y podremos ver que tiene los campos correspondientes a los metadatos que hemos definido en nuestro modelo

.- La siguiente prueba sería definir una carpeta y una regla sobre esta, de forma que todo documento que entre en esta, sea especializado a nuestro tipo de datos definido

.- Para poder crear un contenido del nuevo tipo definido, buscaremos en el siguiente fichero: "share-config-custom.xml" el siguiente literal: " < config evaluator="string-compare" condition="DocumentLibrary" replace="true" >"

Tras el código que indicamos en puntos anteriores, insertamos el código siguiente:
< create-content >
< content id="fact_factura" mimetype="text/plain" label="Facturas" itemid="fact:factura" icon="" / >
< content id="con_contrato" mimetype="text/plain" label="Contrato" itemid="con:contrato" icon="" / >
< /create-content >

IMPORTANTE: Para que nos aparezcan no sólo los nuevos tipos de datos a crear , sino también los existentes, en la anterior línea debemos cambiar el valor del atributo "replace" y ponerlo a false. De esta manera, la linea quedaría como sigue:
< config evaluator="string-compare" condition="DocumentLibrary" replace="false" >"

.- Nos faltarían los literales de traducción correspondientes a nuestro modelo, para lo que crearemos un fichero denominado: "netic360lingshot.properties"ubicado en: "${alfresco}tomcat/shared/classes/alfresco/web-extension/messages/"
De la misma manera buscamos el fichero "slingshot.properties" ubicado en: "${alfresco}\tomcat\webapps\share\WEB-INF\classes\alfresco\messages" y lo copiamos en la misma ruta que el anterior.

.- Para que estos literales sean encontrados por Alfresco Share debemos localizar el fichero "custom-slingshot-application-context.xml.sample" ubicado en: "${alfresco}tomcat/shared/classes/alfresco/web-extension/" y lo renombraremos como "custom-slingshot-application-context.xml".
< bean id="netic360slingshot.resources" class="org.alfresco.i18n.ResourceBundleBootstrapComponent" >
        < property name="resourceBundles" >
            < list >
< value>alfresco.web.extension.messages.slingshot< /value >
< value >alfresco.web-extension.messages.netic360slingshot< /value >
            < /list >
        < /property >
    < /bean >


De esta manera tendríamos definido un nuevo tipo de datos, pero serán necesarias otras configuraciones para la interfaz de Alfresco Share.

:: 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...