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.
No hay comentarios:
Publicar un comentario
Déjanos tu comentario