59
Definición del modelo a partir del Portal Normatividad____________________________________________________________________________________1 La definición del modelo________________________________________________________________________________________________________________________2 Estructura jerárquica______________________________________________________________________________________2 Valores predeterminados de indexación_____________________________________________________________________________________________________35

Documentacion Con Aspectos Del Modelo Normatividad

Embed Size (px)

Citation preview

Page 1: Documentacion Con Aspectos Del Modelo Normatividad

Definición del modelo a partir del Portal Normatividad____________________________________________________________________1

La definición del modelo___________________________________________________________________________________________________2

Estructura jerárquica_______________________________________________________________________________________________________________2

Valores predeterminados de indexación________________________________________________________________________________35

Page 2: Documentacion Con Aspectos Del Modelo Normatividad

Definición del modelo a partir del Portal NormatividadSe planteara un modelo ilustrativo que nos ayude a entender cómo debemos plantear la construcción del árbol documental. Nuestro ejercicio se basará en las siguientes premisas:1. Se requiere la implementación de Alfresco para gestionar los documentos del portal Normatividad.2. Existen 19 documentos base que se generan desde el portal Normatividad:

A partir de las premisas anteriores plantearemos un modelo documental de árbol. Sería suficiente el generar los tipos que nos pide el cliente, pero siempre debemos tener en cuenta la extensión del modelo a otras partes de la compañía y sería un error plantear una solución focalizada a una sola área, limitando su capacidad de extensión posterior.

A partir del modelo base “content” generaremos un subtipo (subtype):

1. Tipo para documentos normatividad

Los documentos de normatividad los incluiremos como un subtipo cuyo padre será el del cm:content.

1 Fecha de Emisión/Publicación

2 Fecha de Producción o entrada en Vigencia

3 Fecha Notificación a la Entidad

4 Fecha Notificación a E-DOS

5 Fecha de Carga en Portal

6 Fecha Abrogación

7 Tipo de Documento

8 Vigencia (Borrador, Oficial, No vigente)

9 Movimiento (inicial, sustitución, complemento)

10 Versión

11 Nombre

12 Modulo

13 Proceso

14 Operación

15 No. Operación

16 Tema Descripción

17 Entidad Generadora de Doctos.

18 Entidad Notificadora a E-DOS

19 Usuario Notificador a E-DOS

1 <show id="no:feEmisionPublicacion"/>2 <show id="no:feProduccionoEntradaenVigencia"/>3 <show id="no:feNotificacionEntidad"/>4 <show id="no:feNotoficacionEdos"/>5 <show id="no:feCargaPortal"/>6 <show id="no:feAbrogacion"/>7 <show id="no:TipoDocumento"/>8 <show id="no:Vigencia"/>9 <show id="no:Movimiento"/>

10 <show id="no:Version"/>11 <show id="no:Nombre"/>12 <show id="no:Modulo"/>13 <show id="no:Proceso"/>14 <show id="no:Operacion"/>15 <show id="no:NumOperacion"/>16 <show id="no:TemaDescripcion"/>17 <show id="no:EntGenDoc"/>18 <show id="no:EntNotEdos"/>19 <show id="no:UsrNotEdos"/>

Page 3: Documentacion Con Aspectos Del Modelo Normatividad

Con este modelo se garantiza solucionar la problemática planteada y, a la vez, se permite seguir en el futuro desarrollando el modelo creando nuevos tipos dependientes.

La definición del modelo

Estructura jerárquicaCuando iniciemos la construcción de nuestro modelo documental deberemos identificar qué tipos de documentos vamos a integrar en nuestro sistema, cuales son variantes de un tipo común (con metadatos que seguramente serán los mismos) etcétera. A partir de ello realizaremos un árbol documental de tipos que marcará nuestra estrategia de implantación.

En este caso solo se resume a un tipo de documentos que son los que se encuentran en el modelo de Normatividad, todos los metadatos se resumen para este tipo de documentos ya que son muy parecidos unos con otros y es muy posible que solo en cada tipo se utilizaran los mismos metadatos una y otra vez por lo tanto solo se tendra un tipo de documentos los cuales seran de Tipo Normatividad.

Por tanto es muy posible que nuestro árbol documental se inicie generando un subtipo del modelo base “content”.

Árbol documental: tipos para documentos Normatividad

<cm:content>

Tipo<no:TipoNormatividad>

Page 4: Documentacion Con Aspectos Del Modelo Normatividad

Los tipos Normatividad tienen una serie de metadatos para todos los documentos que clasifiquemos como tales (Tipo Normatividad). Estos metadatos los podemos añadir de dos posibles maneras:1. Agregando los metadatos como propiedades dentro de la definición del propio tipo.2. Generando aspectos que agrupen estas propiedades y asignando dicho aspecto a la definición del tipo.Ambas son formas válidas aunque (y aquí entramos en la visión personal de cada consultor) parece más elegante la definición por aspectos, agregando luego ese aspecto con la etiqueta <mandatory-aspect> al tipo.

Nota:En este caso agregaremos la segunda opción generaremos un Aspecto y lo agregaremos al tipo con la etiqueta <mandatory-aspect>

Definición de la base del modelo documental con tipos y aspectos

Una vez definido el primer nivel del modelo de árbol documental deberemos seguir definiendo la subsiguiente escala jerárquica. Dentro de los documentos Normatividad, la siguiente definición es la propiedad o metadatos de los documento (fecha de emisión publicación,Tipo de documento, Vigencia etc…) y no queremos tener una clasificación con más niveles.

<cm:content>

Tipo<no:TipoNormatividad>

Aspecto<no:Aspecto

Normatividad>

Page 5: Documentacion Con Aspectos Del Modelo Normatividad

Modelo de datos para el Portal Normatividad Alfresco 3.4.d

<cm:content>

Tipo<no:TipoNormatividad>

PROPIEDAD O METADATOno:feEmisionPublicacion

PROPIEDAD O METADATOno:feProduccionoEntradaenVi

gencia

PROPIEDAD O METADATOno:feNotificacionEntidad

PROPIEDAD O METADATOno:feNotoficacionEdos

PROPIEDAD O METADATOno:Movimiento

PROPIEDAD O METADATOno:Vigencia

PROPIEDAD O METADATOno:TipoDocumento

PROPIEDAD O METADATOno:feAbrogacion

PROPIEDAD O METADATOno:Nombre

PROPIEDAD O METADATOno:Modulo

PROPIEDAD O METADATOno:Proceso

PROPIEDAD O METADATOno:Operacion

PROPIEDAD O METADATOno:UsrNotEdos

PROPIEDAD O METADATOno:EntNotEdos >

PROPIEDAD O METADATOno:EntGenDoc

PROPIEDAD O METADATOno:TemaDescripcion

PROPIEDAD O METADATOno:feCargaPortal

PROPIEDAD O METADATOno:Version

PROPIEDAD O METADATOno:NumOperacion

Aspecto<no:AspectoNormativida

d>

Page 6: Documentacion Con Aspectos Del Modelo Normatividad

Implementación del modelo

Archivo de declaración del modeloEl inicio de la construcción del modelo se realiza mediante la generación de un archivo con el modelo y otro declarando el mismo. Estos archivos se hallan en el directorio: {directorio servidor de aplicaciones}\shared\classes\alfresco\extension Si realizamos la instalación del bundle de Alfresco en un directorio que podría ser C:\alfresco en este caso deberemos situar nuestros ficheros en:

C:\Alfresco\tomcat\shared\classes\alfresco\extensionEl fichero de declaración de modelo será un fichero XML que debe denominarse según el patrón xxx-model-context.xml.El modelo que generemos deberá tener un nombre y le asignaremos una abreviatura que utilizaremos como prefijo para definir después aspectos, tipos o propiedades. Para la construcción del modelo anterior utilizaremos:• Como nombre del modelo de contenidos usaremos “normatividad”.• Como prefijo del modelo usaremos “no”De esta manera generaremos un fichero normatividad-model-context.xml para declarar el modelo.

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

<beans>

<!-- Registro de Nuevos Modelos --> <bean id="extension.no.dictionaryBootstrap" parent="dictionaryModelBootstrap" depends-on="dictionaryBootstrap"> <property name="models"> <list> <value>alfresco/extension/normatividad-model.xml</value> </list> </property> </bean>

<bean id="extension.no.resourceBundle" class="org.alfresco.i18n.ResourceBundleBootstrapComponent"> <property name="resourceBundles"> <list> <value>alfresco.messages.normatividadmodelo</value> </list> </property> </bean>

</beans>

Fichero co-model-context.xml

Page 7: Documentacion Con Aspectos Del Modelo Normatividad

En este fichero generaremos dos dependencias:

• Indicaremos en la primera parte la dependencia con el fichero normatividad-model.xml que es el fichero donde se definirá el modelo de contenido (con los tipos, los aspectos y las propiedades o metadatos).

• La segunda hará referencia a un fichero con las etiquetas i18n para configurar los nombres a utilizar en la interfaz cuando se desee implementar la renderización de las mismas. Este fichero será el normatividad.properties y lo tendremos en otro directorio.

.

Page 8: Documentacion Con Aspectos Del Modelo Normatividad

Archivo de definición del modelo (normatividad-model.xml)

El archivo con la definición del modelo (para nosotros el (normatividad-model.xml) es el que almacenará nuestra definición que hemos diseñado anteriormente. Este archivo se almacenará en el mismo directorio que el normatividad-context-model.xml que anteriormente hemos creado.

La cabecera del archivoLa cabecera del archivo nos sirve para definir el nombre del modelo y algunas propiedades (no obligatorias) como la descripción y el autor del modelo. También se importará el diccionario (veremos que usaremos “d” para importar las clases de propiedades) y el content model original (“cm”) que usaremos como base del árbol del modelo. Finalmente definiremos entre las etiquetas <namespace> el prefijo y nombre del modelo.

<?xml version="1.0" encoding="UTF-8"?>

<model name="no:normatividadModelo" xmlns="http://www.alfresco.org/model/dictionary/1.0"> <!-- Normatividad Modelo --> <!—Opcional los metadatos acrca del modelo --> <description>Modelo Normatividad</description> <author>Cristian Vazquez</author> <version>1.0</version>

<!-- Importar las referencias requeridas a otros modelos --> <imports> <!-- Import Alfresco Dictionary Definitions --> <import uri="http://www.alfresco.org/model/dictionary/1.0" prefix="d"/> <!-- Import Alfresco Content Domain Model Definitions --> <import uri="http://www.alfresco.org/model/content/1.0" prefix="cm"/> <!-- Import Alfresco Content Domain Model Definitions --> <import uri="http://www.alfresco.org/model/system/1.0" prefix="sys" /> <import uri="http://www.alfresco.org/model/datalist/1.0" prefix="dl" /> </imports>

<!-- definicion de nuevos nombres de espacios "namespaces" del nuevo modelo --> <namespaces> <namespace uri="http://www.alfresco.com/model/normatividadModelo/1.0" prefix="no"/> </namespaces>

Cabecera del fichero normatividad-model.xml

Page 9: Documentacion Con Aspectos Del Modelo Normatividad

Una vez creada la cabecera el siguiente paso será la generación de las constraints (valores para propiedades que se definan como campos de selección, por ejemplo, los de un deplegable), en los types (tipos) y los aspects (aspectos).

Las constraintsBajo una primera etiqueta <constraints> incluiremos las diferentes que necesitemos para nuestro modelo. Si tomamos por ejemplo las propiedades de los documentos (recordemos que, sin ir más lejos, hablábamos cuando nos referíamos al tipo de documento “normatividad” de que una propiedad podría ser que tenga una lista de características a elegir), definiremos diversas constraint con el nombre

1 no:listaTipodeDocumento

2 no:listaVigencia3 no:listaMovimiento

4 no:listaModulo

5 no:listaModulo

6 no:listaProceso

7 no:listaOperacion

8 no:listaEntGenDoc

9 no:listaEntNotEdos

que será de tipo lista.La definición de las constraints se halla guardada dentro de Alfresco en el paqueteorg.alfresco.repo.dictionary.constraint y pueden ser de los siguientes tipos:• REGEX (org.alfresco.repo.dictionary.constraint.RegexConstraint): se utilizapara que la propiedad esté condicionada al resultado de una expresión.• LENGTH (org.alfresco.repo.dictionary.constraint.StringLengthConstraint): nospermite gestionar una longitud maxima y una minima para un campo de texto.• MINMAX (org.alfresco.repo.dictionary.constraint.NumericRangeConstraint): seutiliza para marcar una propiedad numérica con unos valores limítrofes superiore inferior.• LIST (org.alfresco.repo.dictionary.constraint.ListOfValuesConstraint): se utilizapara restringir el valor de una propiedad a una lista predeterminada de posiblesopciones.Nuestra constraint para los departamentos de nuestra compañía quedaría de lasiguiente manera:

<constraints><constraint type="LIST" name="no:TipodeDocumento">

<parameter name="allowedValues">

Page 10: Documentacion Con Aspectos Del Modelo Normatividad

<list> <value>Seleccione una opcion</value>

<value>Acuerdo</value><value>Circular</value><value>G.O.</value><value>Lay Out</value><value>Leyes</value><value>Lineamiento</value><value>Matriz</value><value>Minutas/Comentarios</value><value>Modelo conceptual</value><value>MPT</value><value>Oficio</value><value>Politicas</value><value>Reglamento</value>

</list></parameter><parameter name="caseSensitive"> <value>true</value>

</parameter> </constraint> <constraint type="LIST" name="no:listaVigencia"> <parameter name="allowedValues"> <list>

<value>Seleccione una opción</value> <value>Borrador</value>

<value>Oficial</value><value>No vigente</value>

</list></parameter><parameter name="caseSensitive"> <value>true</value>

</parameter> </constraint> <constraint type="LIST" name="no:listaMovimiento"> <parameter name="allowedValues"> <list>

<value>Seleccione una opción</value> <value>Inicial</value>

<value>Sustitucion</value><value>Complemento</value>

Page 11: Documentacion Con Aspectos Del Modelo Normatividad

</list></parameter><parameter name="caseSensitive"> <value>true</value>

</parameter> </constraint> <constraint type="LIST" name="no:listaModulo"> <parameter name="allowedValues"> <list>

<value>Seleccione una opción</value> <value>UEAP</value>

<value>CAT</value><value>WEB</value><value>Gestion comercial</value><value>Promotores</value><value>Registro de trabajadores</value><value>Cuentas saldo cero</value><value>Modificacion de datos</value><value>Separacion de cuentas</value><value>Unificacion de cuentas</value><value>Administracion de expedientes</value><value>Traspaso de trabajadores</value><value>Traspaso Icefa Afore</value><value>Administracion de las subcuentas de vivienda</value><value>Captacion de recursos a la cuenta individual</value><value>gestion de Siefores</value><value>Entrega de informacion al cliente</value><value>Entrega de informacion a las autoridades</value><value>Contabilidad</value><value>Retiro en general</value><value>Retiro voluntario</value><value>Retiro IMSS</value><value>Retiro ISSSTE</value><value>Otra (agregar al catalogo)</value>

</list></parameter><parameter name="caseSensitive"> <value>true</value>

</parameter> </constraint> <constraint type="LIST" name="no:listaProceso">

Page 12: Documentacion Con Aspectos Del Modelo Normatividad

<parameter name="allowedValues"> <list>

<value>Seleccione una opción</value><value>43 Bis</value><value>Administración de Expedientes</value><value>Admon. De Cartera y Cta. Individual</value><value>Ahorro Voluntario</value><value>Anualidades Garantizadas</value><value>Asignación de Trabajadores</value><value>Atención de Solicitudes</value><value>Certificación de Registro IMSS</value><value>Certificación de Registro Independientes</value><value>Certificación de Registro ISSSTE</value><value>Cobro de Comisiones</value><value>Conciliación de Estado de Cuenta</value><value>Contabilización de Pólizas</value><value>Cuentas Saldo Cero</value><value>Devolución al Infonavit</value><value>Devolución de semanas cotizadas</value><value>Disposición de Recursos IMSS</value><value>Disposición de Recursos ISSSTE</value><value>Emisión de estado de cuenta</value><value>Emisión de notificaciones</value><value>Estructura Comercial</value><value>Generación de Información Normativa</value><value>Gestión de Promotores</value><value>Impuestos</value><value>Logística de impresión y distribución</value><value>Modificación de Datos IMSS</value><value>Modificación de Datos Independientes</value><value>Modificación de Datos ISSSTE</value><value>Pago de Compensaciones</value><value>Prevención de Lavado de Dinero</value><value>Prospectación</value><value>Recaudación IMSS</value><value>Recaudación ISSSTE</value><value>Resolución de Trámites</value><value>Retiro de ahorro voluntario</value><value>Retiros parciales IMSS</value><value>Retiros parciales ISSSTE</value><value>Seguimiento de Trámites</value>

Page 13: Documentacion Con Aspectos Del Modelo Normatividad

<value>Separación de Cuentas IMSS</value><value>Separación de Cuentas ISSSTE (contingente)</value><value>Transferencia de Acreditados Fovissste</value><value>Transferencia de Acreditados Infonavit</value><value>Transferencia de Recursos IMSS</value><value>Transferencia de Recursos ISSSTE</value><value>Transferencia entre Siefores</value><value>Traspasos Afore - Afore IMSS</value><value>Traspasos Complementarios</value><value>Traspasos CURP ISSSTE / Independientes</value><value>Traspasos Sar 92 IMSS</value><value>Traspasos Sar 92 ISSSTE</value><value>Unificación de Cuentas IMSS</value><value>Unificación de Cuentas ISSSTE</value><value>Otra (agregar al catalogo)</value>

</list></parameter><parameter name="caseSensitive"> <value>true</value>

</parameter> </constraint> <constraint type="LIST" name="no:listaOperacion"> <parameter name="allowedValues"> <list>

<value>Seleccione una opción</value> <value>Actualización de datos</value>

<value>Actualizar la estructura comercial</value><value>Administración de la Cartera</value><value>Administración de la cuenta Individual</value><value>Administración de Marcas y Status</value><value>Administración de Tasas y Vectores</value><value>Ahorro Voluntario</value><value>Armar paquetes por cliente</value><value>Armar y verificar lotes por CR</value><value>Asignación de cuentas</value><value>Asignación de empresas</value><value>Calcular interés real y nominal</value><value>Calcular intereses en tránsito IMSS</value><value>Calcular intereses en tránsito ISSSTE</value><value>Cálculo de comisiones</value><value>Certificación de registro IMSS</value>

Page 14: Documentacion Con Aspectos Del Modelo Normatividad

<value>Certificación de registro independientes</value><value>Certificación de registro ISSSTE</value><value>Certificar a los promotores</value><value>Comisión por saldo</value><value>Complementarios de traspasos A-A Cedente</value><value>Complementarios de traspasos A-A Receptora</value><value>Concluir el trámite</value><value>Confirmar tiempos de respuesta</value><value>Control de correspondencia</value><value>Control de producción de registro</value><value>Control de producción de traspaso</value><value>CURP y posibles duplicados IMSS</value><value>CURP y posibles duplicados independientes</value><value>CURP y posibles duplicados ISSSTE</value><value>Devolución al infonavit</value><value>Devolución de importes excedentes</value><value>Devolución de semanas cotizadas</value><value>Digitalizar expedientes</value><value>DPSJL IMSS</value><value>DPSJL ISSSTE</value><value>Emitir carta de aclaración registro</value><value>Emitir carta de bienvenida</value><value>Emitir carta de negativa</value><value>Emitir carta de pendiente registro</value><value>Emitir carta de rechazo registro / traspaso</value><value>Emitir constancia de interés real y nominal</value><value>Emitir constancia retención</value><value>Emitir EDC de asignados</value><value>Emitir EDC de retiros</value><value>Emitir EDC de traspasos</value><value>Enviar notificación de solución</value><value>Enviar suspensiones y bajas</value><value>Estado de cuenta</value><value>Generación de balanza operativa</value><value>Generación de Edo. Cta. de Promotores</value><value>Generación de información y certificados</value><value>Generar anexo 105</value><value>Generar anexo 59 (llave de encriptación)</value><value>Generar anexo 60 (Contabilidad Formato 1102)</value><value>Generar anexo 61 (Contabilidad (Formato 1104)</value><value>Generar anexo 62 ((Contabilidad Formato 1105)</value>

Page 15: Documentacion Con Aspectos Del Modelo Normatividad

<value>Generar anexo 63 ((Contabilidad Formato 1108)</value><value>Generar anexo 64 (Formato 1110)</value><value>Generar anexo 65 (Sucursales)</value><value>Generar anexo 68 (Formato 0502)</value><value>Generar anexo 69 (PLD)</value><value>Generar anexo 70 (PLD)</value><value>Generar anexo 71 (Formato 016)</value><value>Generar anexo 74 ((Contabilidad Formato 1101)</value><value>Generar los anexos A, B y C</value><value>Generar reporte a CONDUSEF (UEAP)</value><value>Generar reporte de estados de cuenta</value><value>Gestión de bono de pensión</value><value>Gestión de expedientes</value><value>Gestionar anualidades garantizadas</value><value>Gestionar los trámites con operaciones</value><value>Gestionar Traspaso CURP</value><value>Habilitación por recibir aportación></value><value>IMSS tipo de retiro I</value><value>IMSS tipo de retiros A</value><value>IMSS tipo de retiros B</value><value>IMSS tipo de retiros C</value><value>IMSS tipo de retiros D</value><value>IMSS tipo de retiros E</value><value>IMSS tipo de retiros F</value><value>IMSS tipo de retiros G</value><value>IMSS tipo de retiros H</value><value>IMSS tipo de retiros J</value><value>IMSS tipo de retiros M</value><value>IMSS tipo de retiros S</value><value>Individualizar aportaciones especiales</value><value>Individualizar aportaciones ordinarias</value><value>Individualizar recaudación Normal IMSS</value><value>Individualizar recaudación normal ISSSTE</value><value>Individualizar recaudación por asignación</value><value>Individualizar recaudación por separación</value><value>Individualizar subsecuentes FOVISSSTE</value><value>Individualizar subsecuentes INFONAVIT</value><value>Inhabilitación de cuentas saldo cero</value><value>ISSSTE tipo de retiros A</value><value>ISSSTE tipo de retiros B</value><value>ISSSTE tipo de retiros C</value>

Page 16: Documentacion Con Aspectos Del Modelo Normatividad

<value>ISSSTE tipo de retiros D</value><value>ISSSTE tipo de retiros E</value><value>ISSSTE tipo de retiros F</value><value>ISSSTE tipo de retiros G</value><value>ISSSTE tipo de retiros H</value><value>ISSSTE tipo de retiros I</value><value>ISSSTE tipo de retiros J</value><value>ISSSTE tipo de retiros K</value><value>ISSSTE tipo de retiros L</value><value>Juicios Laborales Anexos ABC</value><value>Liberación de pendientes IMSS</value><value>Liberación de pendientes independientes</value><value>Manejo de imágenes</value><value>Metas cumplidas</value><value>Modificación de datos certificables IMSS</value><value>Modificación de datos independientes</value><value>Modificación de datos no certificables IMSS</value><value>Modificaciones de Datos ISSSTE</value><value>Operaciones inusuales</value><value>Operaciones preocupantes</value><value>Operaciones relevantes</value><value>Ordenes de selección de siefore</value><value>Pago de compensaciones</value><value>Preparación de la impresión</value><value>Preparación EDC clientes</value><value>Prevalidador de traspaso</value><value>Promoción del trámite</value><value>Publicar expedientes</value><value>Recepción de ACR</value><value>Recepción de ALP</value><value>Recepción de aportaciones ahorro solidario</value><value>Recepción de aportaciones voluntarias</value><value>Registro de solicitud</value><value>Registro por unificación</value><value>Rendimientos de vivienda</value><value>Reporte Semanal de Retiros de pensiones 73</value><value>Reporte Semanal Desempleo IMSS</value><value>Retirar ahorro solidario</value><value>Retirar aportaciones a largo plazo</value><value>Retirar aportaciones complementarias de retiro</value><value>Retirar aportaciones voluntarias</value>

Page 17: Documentacion Con Aspectos Del Modelo Normatividad

<value>Separación de cuentas IMSS</value><value>Separación de cuentas ISSSTE</value><value>Solicitud de saldo</value><value>Tipo de retiro N</value><value>Totales</value><value>Transferencia de acreditados Fovissste</value><value>Transferencia de acreditados infonavit</value><value>Transferencia Semestral por Edad</value><value>Transferencias entre siefore por procesos alternos</value><value>Traspaso SAR 92 ISSSTE - AFORE</value><value>Traspaso SAR 92-97 IMSS - AFORE</value><value>Traspasos A - A Cedentes</value><value>Traspasos A - A Receptora</value><value>Traspasos Afore - Prestadora</value><value>Traspasos Indebidos</value><value>Traspasos por unificación</value><value>Unificación de cuentas IMSS</value><value>Unificación de cuentas ISSSTE</value><value>Uso de garantía</value><value>Verificar la solución</value><value>Otra (agregar al catalogo)</value>

</list></parameter><parameter name="caseSensitive"> <value>true</value>

</parameter> </constraint> <constraint type="LIST" name="no:listaEntGenDoc"> <parameter name="allowedValues"> <list>

<value>Seleccione una opción</value> <value>Afore</value>

<value>Banxico</value><value>Cámara de diputados</value><value>Cámara de senadores</value><value>Condusef</value><value>Consar</value><value>Fovissste</value><value>IMSS</value><value>Infonavit</value><value>ISSSTE</value>

Page 18: Documentacion Con Aspectos Del Modelo Normatividad

<value>Presidencia de la republica</value><value>Procesar</value><value>SHCP</value><value>Suprema corte</value><value>Tribunal o junta</value><value>Otra (agregar al catalogo)</value>

</list></parameter><parameter name="caseSensitive"> <value>true</value>

</parameter> </constraint> <constraint type="LIST" name="no:listaEntNotEdos"> <parameter name="allowedValues"> <list> <value>Seleccione una opción</value>

<value>CONSAR</value><value>AMAFORE</value><value>PROCESAR</value><value>Afore Afirme Bajío</value><value>Afore Azteca</value><value>Afore Banamex</value><value>Afore Bancomer</value><value>Afore Coppel</value><value>Afore Inbursa</value><value>Afore Invercap</value><value>Afore Metlife</value><value>Afore PensionISSSTE</value><value>Afore Principal</value><value>Afore Profuturo GNP</value><value>Afore SURA</value><value>Afore XXI</value><value>Otra (agregar al Catalogo)</value>

</list></parameter><parameter name="caseSensitive"> <value>true</value>

</parameter> </constraint> </constraints>

Page 19: Documentacion Con Aspectos Del Modelo Normatividad

Definición de la constraint de lista de departamentos en co-model.xml

Un ejemplo de los diferentes tipos de constraints (extraído de la wiki de Alfresco) se muestra en el siguiente código:

Los tiposEn base al context model original generaremos los subtipos que necesitamos para construir nuestro árbol documental. Dentro de un apartado marcado por la etiqueta <types> se definirán los tipos. Los primeros se definen con la referencia del context original. Después generaremos los hijos de estos hasta completar la estructura. Aun que en este caso no tenemos hijos de los tipos ya que solo asignamos uno directamente al content.

<!-- Definicion de los tipos para NORMATIVIDAD -->

<!-- Tipo para el contenido generado para el aspecto de NORMATIVIDAD --> <types>

Page 20: Documentacion Con Aspectos Del Modelo Normatividad

<type name="no:TipoNormatividad"> <title>tipo normatividad</title> <parent>cm:content</parent> <mandatory-aspects> <aspect>no:AspectoNormatividad</aspect> </mandatory-aspects> </type> </types>

Definición del tipo de documento interno

Como se puede observar en el código, generamos un tipo denominado no:TipoNormatividad (recordemos que el prefijo no es el que definimos al inicio), que titulamos como Normatividad. El origen de este tipo (parent) es el content inicial (todo el modelo de contenido por defecto se define con el prefijo cm, de ahí cm:content declarado en el parent. A este tipo le asignamos un aspecto que llevará intrínsecos todos los documentos que definamos como documentos normatividad. Algunos de estos aspectos son de base (prefijo cm) como el que sea auditable, titulable yetiquetable. Adicionalmente le añadimos un aspecto de nuestro propio modelo (prefijo no) que luego definiremos y que llevará las propiedades o metadatos comunes para todos los documentos de este tipo.

En nuestro caso el tipo no contiene por si mismo propiedades, ya que hemos decidido que dichas propiedades se integren como un aspecto (no:AspectoNormatividad). No obstante podríamos definir las propiedades directamente en el tipo. Un ejemplo podría ser el siguiente:

<!-- Tipo para el contenido generado para el aspecto de NORMATIVIDAD --> <types> <type name="no:TipoNormatividad"> <title>tipo normatividad</title> <parent>cm:content</parent>

<mandatory-aspects> <aspect>no:normatividad</aspect>

</mandatory-aspects>

<properties> <property name="no:feEmisionPublicacion">

<title>Fecha de emision publicacion</title>

Page 21: Documentacion Con Aspectos Del Modelo Normatividad

<type>d:date</type><index enabled="true">

<atomic>true</atomic><stored>false</stored><tokenised>false</tokenised>

</index> </property>

<property name="no:feProduccionoEntradaenVigencia"><title>Fecha de Produccion o entrada en Vigencia</title>

<type>d:date</type><index enabled="true">

<atomic>true</atomic><stored>false</stored><tokenised>false</tokenised>

</index> </property>

<property name="no:feNotificacionEntidad"><title>Fecha de Notificacion a la Entidad</title>

<type>d:date</type><index enabled="true">

<atomic>true</atomic><stored>false</stored><tokenised>false</tokenised>

</index> </property>

<property name="no:feNotoficacionEdos"><title>Fecha de Notificacion a e-dos</title>

<type>d:date</type><index enabled="true">

<atomic>true</atomic><stored>false</stored><tokenised>false</tokenised>

</index> </property>

<property name="no:feCargaPortal"><title>Fecha de Carga en Portal</title>

<type>d:date</type> </property>

<property name="no:feAbrogacion"><title>Fecha de Abrogacion</title>

<type>d:date</type><index enabled="true">

<atomic>true</atomic><stored>false</stored><tokenised>false</tokenised>

</index> </property>

<property name="no:TipoDocumento"> <title>Tipo de documento</title>

<type>d:text</type>

Page 22: Documentacion Con Aspectos Del Modelo Normatividad

<index enabled="true"><atomic>true</atomic><stored>false</stored><tokenised>false</tokenised>

</index> <constraints>

<constraint ref="no:TipodeDocumento"/> </constraints>

</property><property name="no:Vigencia"> <title>Vigencia</title>

<type>d:text</type> <index enabled="true">

<atomic>true</atomic><stored>false</stored><tokenised>false</tokenised>

</index> <constraints>

<constraint ref="no:listaVigencia"/> </constraints>

</property><property name="no:Movimiento"> <title>Movimiento</title>

<type>d:text</type><index enabled="true">

<atomic>true</atomic><stored>false</stored><tokenised>false</tokenised>

</index> <constraints>

<constraint ref="no:listaMovimiento"/> </constraints>

</property><property name="no:Version">

<title>Version</title><type>d:text</type><index enabled="true">

<atomic>true</atomic><stored>false</stored><tokenised>false</tokenised>

</index> </property>

<property name="no:Nombre"><title>Nombre</title>

<type>d:text</type><index enabled="true">

<atomic>true</atomic><stored>false</stored><tokenised>false</tokenised>

</index>

Page 23: Documentacion Con Aspectos Del Modelo Normatividad

</property><property name="no:Modulo"> <title>Modulo</title>

<type>d:text</type><index enabled="true">

<atomic>true</atomic><stored>false</stored><tokenised>false</tokenised>

</index> <constraints>

<constraint ref="no:listaModulo"/> </constraints>

</property><property name="no:Proceso"> <title>Proceso</title>

<type>d:text</type><index enabled="true">

<atomic>true</atomic><stored>false</stored><tokenised>false</tokenised>

</index> <constraints>

<constraint ref="no:listaProceso"/> </constraints>

</property><property name="no:Operacion"> <title>Operacion</title>

<type>d:text</type><index enabled="true">

<atomic>true</atomic><stored>false</stored><tokenised>false</tokenised>

</index> <constraints>

<constraint ref="no:listaOperacion"/> </constraints>

</property><property name="no:NumOperacion">

<title>Numero de Operacion</title><type>d:text</type><index enabled="true">

<atomic>true</atomic><stored>false</stored><tokenised>false</tokenised>

</index> </property>

<property name="no:TemaDescripcion"><title>Tema Descripcion</title>

<type>d:text</type> </property>

Page 24: Documentacion Con Aspectos Del Modelo Normatividad

<property name="no:EntGenDoc"> <title>Entidad generadora de documentos</title>

<type>d:text</type> <index enabled="true">

<atomic>true</atomic><stored>false</stored><tokenised>false</tokenised>

</index> <constraints>

<constraint ref="no:listaEntGenDoc"/> </constraints>

</property><property name="no:EntNotEdos"> <title>Entidad Notificadora a e-dos</title>

<type>d:text</type> <index enabled="true">

<atomic>true</atomic><stored>false</stored><tokenised>false</tokenised>

</index> <constraints>

<constraint ref="no:listaEntNotEdos"/> </constraints>

</property><property name="no:UsrNotEdos"> <title>Usuario Notificador a e-dos</title>

<type>d:text</type> <index enabled="true">

<atomic>true</atomic><stored>false</stored><tokenised>false</tokenised>

</index> </property> </properties> </type> </types>

Ejemplo de tipo con propiedades insertadas

Una vez tengamos los tipos que llamaríamos de primer nivel, es decir, los tipos que hemos decidido que su parent type sea el content original, seguiremos definiendo los siguientes niveles de nuestro árbol. Para ello utilizaremos el mismo modelo sustituyendo el parent por el que pertoque.Nota:En nuestro caso esto lo dejaremos así ya que solo contamos con un solo tipo en el cual su parent es el content y no tenemos mas tipos por el momento pero es bueno dejarlo abierto por si en el futuro se requiera hacer mas tipos hijos de este.

Los aspectos

Page 25: Documentacion Con Aspectos Del Modelo Normatividad

Un aspecto personalizado no será sino un conjunto de propiedades o metadatos agrupados que pueden asignarse directamente a un documento o, mediante la definición del modelo de contenidos documentales, a uno o varios tipos de documentos.

En función de nuestra definición del modelo, deberemos generar un aspecto para cada tipo definido (Solo es uno por el momento no:TipoNormatividad). Lo veíamos en el apartado anterior: para el tipo no:TipoNormatividad le hemos asignado un aspecto de carácter obligatorio (mandatory-aspect) denominado no:AspectoNormatividad. Este aspecto tendrá aquellas propiedades que queremos definir para este tipo.

<!-- Definición del aspecto para nuestro modelo -->

<aspects> <aspect name="no:AspectoNormatividad"> <title>Aspecto Normatividad</title> <properties> <property name="no:feEmisionPublicacion">

<title>Fecha de emision publicacion</title><type>d:date</type><index enabled="true">

<atomic>true</atomic><stored>false</stored><tokenised>true</tokenised>

</index> </property>

<property name="no:feProduccionoEntradaenVigencia"><title>Fecha de Produccion o entrada en Vigencia</title>

<type>d:date</type><index enabled="true">

<atomic>false</atomic><stored>false</stored><tokenised>true</tokenised>

</index> </property>

<property name="no:feNotificacionEntidad"><title>Fecha de Notificacion a la Entidad</title>

<type>d:date</type><index enabled="true">

<atomic>false</atomic><stored>false</stored><tokenised>true</tokenised>

</index> </property>

<property name="no:feNotoficacionEdos"><title>Fecha de Notificacion a e-dos</title>

<type>d:date</type><index enabled="true">

<atomic>false</atomic><stored>false</stored><tokenised>true</tokenised>

</index> </property>

Page 26: Documentacion Con Aspectos Del Modelo Normatividad

<property name="no:feCargaPortal"><title>Fecha de Carga en Portal</title>

<type>d:date</type> </property>

<property name="no:feAbrogacion"><title>Fecha de Abrogacion</title>

<type>d:date</type><index enabled="true">

<atomic>false</atomic><stored>false</stored><tokenised>true</tokenised>

</index> </property>

<property name="no:TipoDocumento"> <title>Tipo de documento</title>

<type>d:text</type> <index enabled="true">

<atomic>false</atomic><stored>false</stored><tokenised>true</tokenised>

</index> <constraints>

<constraint ref="no:TipodeDocumento"/> </constraints>

</property><property name="no:Vigencia"> <title>Vigencia</title>

<type>d:text</type> <index enabled="true">

<atomic>false</atomic><stored>false</stored><tokenised>true</tokenised>

</index> <constraints>

<constraint ref="no:listaVigencia"/> </constraints>

</property><property name="no:Movimiento"> <title>Movimiento</title>

<type>d:text</type><index enabled="true">

<atomic>false</atomic><stored>false</stored><tokenised>true</tokenised>

</index> <constraints>

<constraint ref="no:listaMovimiento"/> </constraints>

</property><property name="no:Version">

Page 27: Documentacion Con Aspectos Del Modelo Normatividad

<title>Version</title><type>d:text</type><index enabled="true">

<atomic>false</atomic><stored>false</stored><tokenised>true</tokenised>

</index> </property>

<property name="no:Nombre"><title>Nombre</title>

<type>d:text</type><index enabled="true">

<atomic>false</atomic><stored>false</stored><tokenised>true</tokenised>

</index> </property>

<property name="no:Modulo"> <title>Modulo</title>

<type>d:text</type><index enabled="true">

<atomic>false</atomic><stored>false</stored><tokenised>true</tokenised>

</index> <constraints>

<constraint ref="no:listaModulo"/> </constraints>

</property><property name="no:Proceso"> <title>Proceso</title>

<type>d:text</type><index enabled="true">

<atomic>false</atomic><stored>false</stored><tokenised>true</tokenised>

</index> <constraints>

<constraint ref="no:listaProceso"/> </constraints>

</property><property name="no:Operacion"> <title>Operacion</title>

<type>d:text</type><index enabled="true">

<atomic>false</atomic><stored>false</stored><tokenised>true</tokenised>

</index> <constraints>

Page 28: Documentacion Con Aspectos Del Modelo Normatividad

<constraint ref="no:listaOperacion"/> </constraints>

</property><property name="no:NumOperacion">

<title>Numero de Operacion</title><type>d:text</type><index enabled="true">

<atomic>false</atomic><stored>false</stored><tokenised>true</tokenised>

</index> </property>

<property name="no:TemaDescripcion"><title>Tema Descripcion</title>

<type>d:text</type> </property>

<property name="no:EntGenDoc"> <title>Entidad generadora de documentos</title>

<type>d:text</type> <index enabled="true">

<atomic>false</atomic><stored>false</stored><tokenised>true</tokenised>

</index> <constraints>

<constraint ref="no:listaEntGenDoc"/> </constraints>

</property><property name="no:EntNotEdos"> <title>Entidad Notificadora a e-dos</title>

<type>d:text</type> <index enabled="true">

<atomic>false</atomic><stored>false</stored><tokenised>true</tokenised>

</index> <constraints>

<constraint ref="no:listaEntNotEdos"/> </constraints>

</property><property name="no:UsrNotEdos"> <title>Usuario Notificador a e-dos</title>

<type>d:text</type> <index enabled="true">

<atomic>false</atomic><stored>false</stored><tokenised>true</tokenised>

</index> </property> </properties>

Page 29: Documentacion Con Aspectos Del Modelo Normatividad

</aspect> </aspects>

Definición del aspecto no:AspectoNormatividad en el fichero de definición del modelo

Como podemos observar en lo que realizamos anteriormente, el aspecto se compone de un nombre, un título y un conjunto de propiedades. Estas propiedades o metadatos pueden ser de diferentes tipos (fecha, texto, dígitos enteros o en coma flotante…). Se pueden definir que dichas propiedades sean obligatorias, etcétera.No olvidemos, asimismo, que adicionalmente a los aspectos que podamos definir para nuestro modelo de contenido documental, existen algunos como el de etiquetable, versionable, categorizable etcétera que ya están definidos en el model content original que viene por defecto. Estos aspectos los podremos asociar directamente a un documento o tipo sin necesidad de definirlos específicamente.

Las propiedades o metadatosLas propiedades o metadatos son la unidad básica de la definición del modelo. Nuestra meta cuando iniciamos la construcción del mismo es poder acabar teniendo unos documentos que pertenecen a un tipo y que en base a ese tipo están definidos por unas propiedades que nos permitirán indexarlos, categorizarlos y, posteriormente, realizar busquedas selectivas y localizarlos con mayor facilidad.Estas propiedades pueden ser de diferente naturaleza:

• TEXT (d:text) que introduce un campo de tipo cadena de texto (un nombre etc..).• CONTENT (d:content) que permite la introducción de un documento binario.• INT (d:int) que permite asociar un dígito entero.• LONG (d:long) se utiliza para añadir un entero grande.• FLOAT (d:float) que se usa para introducir un número decimal (coma flotante).• DATE (d:date) que se utiliza para añadir la fecha (año, mes, día).• DATETIME (d:datetime) que permite añadir fecha y hora (denominado en inglés timestamp).• BOOLEAN (d:boolean) que introduce un valor binario TRUE o FALSE• CATEGORY (d:category) que hace referencia a una categoría con una clasificación.• PATH (d:path) que permite la introducción de una URL.

Es importante recordar que los valores de estas variables pueden ser restringidos mediante el uso de las denominadas constraints que vimos al inicio de este capítulo.

Importante:

Page 30: Documentacion Con Aspectos Del Modelo Normatividad

También podemos definir que unas propiedades puedan convertirse en propiedades de tipo índice, de manera que optimicen posteriormente el trabajo para realizar búsquedas por estos mismos metadatos.

<!-- Definicion de los tipos para NORMATIVIDAD --> <!-- Tipo para el contenido generado para el aspecto de NORMATIVIDAD --> <types> <type name="no:TipoNormatividad"> <title>tipo normatividad</title> <parent>cm:content</parent> <mandatory-aspects> <aspect>no:AspectoNormatividad</aspect> </mandatory-aspects> </type> </types>

<!-- Definición del aspecto para nuestro modelo --> <!-- Este aspecto es mandatory para documentos que tengan el tipo Normatividad --><aspects>

<aspect name="no:AspectoNormatividad"> <title>Aspecto Normatividad</title> <properties> <property name="no:feEmisionPublicacion">

<title>Fecha de emision publicacion</title><type>d:date</type><mandatory>true</mandatory><index enabled="true">

<atomic>true</atomic><stored>true</stored><tokenised>true</tokenised>

</index> </property>

<property name="no:feProduccionoEntradaenVigencia"><title>Fecha de Produccion o entrada en Vigencia</title>

<type>d:date</type><mandatory>true</mandatory><index enabled="true">

<atomic>true</atomic><stored>true</stored><tokenised>both</tokenised>

</index> </property>

<property name="no:feNotificacionEntidad"><title>Fecha de Notificacion a la Entidad</title>

<type>d:date</type><mandatory>true</mandatory><index enabled="true">

<atomic>true</atomic><stored>false</stored><tokenised>true</tokenised>

Page 31: Documentacion Con Aspectos Del Modelo Normatividad

</index> </property>

<property name="no:feNotoficacionEdos"><title>Fecha de Notificacion a e-dos</title>

<type>d:date</type><mandatory>true</mandatory><index enabled="true">

<atomic>true</atomic><stored>false</stored><tokenised>true</tokenised>

</index> </property>

<property name="no:feCargaPortal"><title>Fecha de Carga en Portal</title>

<type>d:date</type> </property>

<property name="no:feAbrogacion"><title>Fecha de Abrogacion</title>

<type>d:date</type><mandatory>true</mandatory><index enabled="true">

<atomic>true</atomic><stored>true</stored><tokenised>true</tokenised>

</index> </property>

<property name="no:TipoDocumento"> <title>Tipo de documento</title>

<type>d:text</type> <mandatory>true</mandatory> <index enabled="true">

<atomic>true</atomic><stored>true</stored><tokenised>both</tokenised>

</index> <constraints>

<constraint ref="no:TipodeDocumento"/> </constraints>

</property>

<property name="no:Vigencia"> <title>Vigencia</title>

<type>d:text</type> <mandatory>true</mandatory> <index enabled="true">

<atomic>true</atomic><stored>false</stored><tokenised>true</tokenised>

</index> <constraints>

Page 32: Documentacion Con Aspectos Del Modelo Normatividad

<constraint ref="no:listaVigencia"/> </constraints>

</property>

<property name="no:Movimiento"> <title>Movimiento</title>

<type>d:text</type> <mandatory>true</mandatory>

<index enabled="true"><atomic>true</atomic><stored>true</stored><tokenised>true</tokenised>

</index> <constraints>

<constraint ref="no:listaMovimiento"/> </constraints>

</property>

<property name="no:Version"><title>Version</title>

<type>d:text</type><mandatory>true</mandatory><index enabled="true">

<atomic>true</atomic><stored>true</stored><tokenised>true</tokenised>

</index> </property>

<property name="no:Nombre"><title>Nombre</title>

<type>d:text</type><mandatory>true</mandatory><index enabled="true">

<atomic>true</atomic><stored>true</stored><tokenised>both</tokenised>

</index> </property>

<property name="no:Modulo"> <title>Modulo</title>

<type>d:text</type> <mandatory>true</mandatory>

<index enabled="true"><atomic>true</atomic><stored>true</stored><tokenised>true</tokenised>

</index>

Page 33: Documentacion Con Aspectos Del Modelo Normatividad

<constraints><constraint ref="no:listaModulo"/>

</constraints> </property>

<property name="no:Proceso"> <title>Proceso</title>

<type>d:text</type> <mandatory>true</mandatory>

<index enabled="true"><atomic>true</atomic><stored>true</stored><tokenised>both</tokenised>

</index> <constraints>

<constraint ref="no:listaProceso"/> </constraints>

</property>

<property name="no:Operacion"> <title>Operacion</title>

<type>d:text</type><index enabled="true">

<atomic>true</atomic><stored>true</stored><tokenised>both</tokenised>

</index> <constraints>

<constraint ref="no:listaOperacion"/> </constraints>

</property>

<property name="no:NumOperacion"><title>Numero de Operacion</title>

<type>d:text</type><mandatory>true</mandatory><index enabled="true">

<atomic>true</atomic><stored>true</stored><tokenised>both</tokenised>

</index> </property>

<property name="no:TemaDescripcion"><title>Tema Descripcion</title>

<type>d:text</type><mandatory>true</mandatory><index enabled="true">

<atomic>true</atomic>

Page 34: Documentacion Con Aspectos Del Modelo Normatividad

<stored>true</stored><tokenised>both</tokenised>

</index> </property>

<property name="no:EntGenDoc"> <title>Entidad generadora de documentos</title>

<type>d:text</type> <mandatory>true</mandatory>

<index enabled="true"><atomic>true</atomic><stored>true</stored><tokenised>both</tokenised>

</index> <constraints>

<constraint ref="no:listaEntGenDoc"/> </constraints>

</property>

<property name="no:EntNotEdos"> <title>Entidad Notificadora a e-dos</title>

<type>d:text</type> <mandatory>true</mandatory> <index enabled="true">

<atomic>true</atomic><stored>true</stored><tokenised>true</tokenised>

</index> <constraints>

<constraint ref="no:listaEntNotEdos"/> </constraints>

</property>

<property name="no:UsrNotEdos"> <title>Usuario Notificador a e-dos</title>

<type>d:text</type> <mandatory>true</mandatory> <index enabled="true">

<atomic>true</atomic><stored>true</stored><tokenised>both</tokenised>

</index> </property> </properties> </aspect> </aspects>

Page 35: Documentacion Con Aspectos Del Modelo Normatividad

Aspecto con los datos propios de los documentos Normatividad Este aspecto es mandatory para los documentos que tienen como tipo el TipoNormatividad

En una propiedad, podemos observar que se define su nombre, un título, su tipo en base a los vistos con anterioridad y si la misma es obligatorio que tenga un valor. Mediante el index enabled podemos asignar a dicha propiedad el carácter de ser un índice (se definirá como tal cuando almacenemos el metadato en la base de datos del modelo).

<aspects> <aspect name="no:AspectoNormatividad"> <title>Aspecto Normatividad</title> <properties> <property name="no:feEmisionPublicacion">

<title>Fecha de emision publicacion</title><type>d:date</type><index enabled="true">

<atomic>true</atomic><stored>false</stored><tokenised>true</tokenised>

</index> </property>

Diccionario de datos opcionesEl comportamiento de la indexación de cada propiedad se puede establecer en el modelo de contenido. De forma predeterminada, que se indexan de forma atómica. El valor de la propiedad no se almacena en el índice, y la propiedad que se acorta cuando se indexa.

Page 36: Documentacion Con Aspectos Del Modelo Normatividad

El siguiente ejemplo muestra cómo la indexación puede ser controlada.

Enabled = "false"Si esto es falso, no habrá entrada de esta propiedad en el índice.

Atómica = "true"Si esto es cierto, la propiedad se encuentra indexada en la transacción, si no la propiedad se encuentra indexada en el fondo.

La indexación de contenido que requiere una transformación antes de ser indexada (por ejemplo, PDF) sólo obedecen Atómica = true si la transformación se lleva menos tiempo que el valor especificado para lucene.maxAtomicTransformationTime. Ver # General .

Almacenado = "true"Si es verdad, el valor de la propiedad se almacena en el índice y se pueden obtener a través de la API de Lucene consulta de bajo nivel.Esto puede ser útil durante la depuración de los sistemas para ver exactamente lo que se indexa, pero no establece que se trata de cierto en los sistemas de producción.

Tokenised = "true"Si es "true", el valor de cadena de la propiedad que se acorta antes de indexarSi es "false", que está indexado "tal cual" como una única cadenaSi "both", entonces las dos formas anteriores se basan en el índice

Todo el contenido no está almacenado, indexado, y acorta, si está indexado.El señalizador está determinada por el tipo de propiedad en el diccionario de datos. Esta es la configuración regional apoyada por el diccionario de datos â € "por lo que podría cambiar para acortar todo el contenido en alemán. Por el momento no se pueden mezclar tokenización Alemán e Inglés.

Valores predeterminados de indexaciónLos valores predeterminados de indexación eficaz para todas las propiedades son:<index enabled="true"> <atomic>true</atomic> <stored>false</stored> <tokenised>true</tokenised> </index>

Referenciashttp://docs.alfresco.com/4.0/index.jsp?topic=%2Fcom.alfresco.enterprise.doc%2Fconcepts%2Fsearch-fts-config.htmlPara mas información de una Herramienta de apoyo para las búsquedashttp://www.getopt.org/luke/

Nota:Cuando se crea un nuevo contenido que sera aplicado.Si deseas que se aplique a los contenidos ya existentes, tendrás que reindexar Alfresco.

Page 37: Documentacion Con Aspectos Del Modelo Normatividad

También, como veíamos, podremos restringir mediante las constraints el tipo de valor que asignamos a una propiedad.

<property name="no:TipoDocumento"> <title>Tipo de documento</title>

<type>d:text</type> <mandatory>true</mandatory> <index enabled="true">

<atomic>true</atomic><stored>true</stored><tokenised>both</tokenised>

</index> <constraints>

<constraint ref="no:listaTipodeDocumento"/> </constraints>

</property>

Ejemplo de propiedad restringida con una constraint

En el caso del ejemplo anterior, nuestra propiedad no:TipoDocumento tomará un valor marcado por la constraint no:listaTipoDocumento que habremos definido anteriormente.

<constraint type="LIST" name="no:listaTipodeDocumento"> <parameter name="allowedValues"> <list>

<value>Seleccione una opcion</value> <value>Acuerdo</value>

<value>Circular</value><value>G.O.</value><value>Lay Out</value><value>Leyes</value><value>Lineamiento</value><value>Matriz</value><value>Minutas/Comentarios</value><value>Modelo conceptual</value><value>MPT</value><value>Oficio</value><value>Politicas</value><value>Reglamento</value>

</list></parameter><parameter name="caseSensitive"> <value>true</value>

</parameter> </constraint>

El Archivo de publicación en Alfresco Explorer

Page 38: Documentacion Con Aspectos Del Modelo Normatividad

Una vez hayamos definido nuestro modelo con su jerarquía de tipos, sus aspectos, sus propiedades, constraints etcétera debemos conseguir que dicho modelo se refleje dentro de la interfaz de Alfresco, en términos propios de la aplicación, hemos de transferirlo a los ficheros de renderización.Dado que Alfresco presenta dos interfaces diferentes, la clásica del Explorer y la del Share, será necesario aplicar los cambios por duplicado en ficheros diferentes.El fichero de renderización para Alfresco Explorer es el web-client-config-custom.xml y se halla ubicado en el mismo directorio donde teníamos los ficheros que hemos tratado anteriormente:{directorio servidor de aplicaciones}\shared\classes\alfresco\extensionEl fichero web-client.config-custom.xml se inicia con la etiqueta <alfresco-config> y dentro tendremos diferentes config conditions para definir la visualización de nuestros tipos en las diferentes partes del Explorer.

Pendiente

El Archivo de propiedades

Page 39: Documentacion Con Aspectos Del Modelo Normatividad

En el fichero de declaración del modelo en Explorer veíamos que se aludían a dos definiciones: la definición del modelo de contenido (ya comentada) y el fichero de etiquetas i18n donde traduciremos los nombres de los contenidos y las variables a la cadena de texto pertinente.Este fichero lo llamaremos normatividadmodelo.properties y lo generaremos en el directorio:{directorio servidor de aplicaciones}\shared\classes\alfresco\messages

Las secciones de este fichero serán:• Sección de etiquetas para las propiedades de los aspectos.• Sección de etiquetas para los aspectos.• Sección de etiquetas para los tipos.

En la sección de propiedades definiremos las etiquetas para las mismas que veremoscuando se nos presenten en pantalla. La sintaxis será:# Mensajes personalizados de NORMATIVIDADRecordemos que nuestro modelo se llama normatividadModelo y tiene el prefijo no (no:normatividad).

#Sección de etiquetas para las propiedades de los aspectos#PROPIEDADES DEL ASPECTO NORMATIVIDAD#prefijo_nombredelmodelo.property.prefijo_nombredelapropiedad.tittle=etiquetano_normatividadModelo.property.no_feEmisionPublicacion.title=Fecha de emision publicacionno_normatividadModelo.property.no_feProduccionoEntradaenVigencia.title=Fecha de produccion o entrada en vigenciano_normatividadModelo.property.no_feNotificacionEntidad.title=Fecha de notificacion a la entidadno_normatividadModelo.property.no_feNotoficacionEdos.title=Fecha de notificacion a edosno_normatividadModelo.property.no_feCargaPortal.title=Fecha de carga en el portalno_normatividadModelo.property.no_feAbrogacion.title=Fecha de abrogacionno_normatividadModelo.property.no_TipoDocumento.title=Tipo de documentono_normatividadModelo.property.no_Vigencia.title=Vigenciano_normatividadModelo.property.no_Movimiento.title=Movimientono_normatividadModelo.property.no_Version.title=Versionno_normatividadModelo.property.no_Nombre.title=Nombreno_normatividadModelo.property.no_Modulo.title=Modulono_normatividadModelo.property.no_Proceso.title=Procesono_normatividadModelo.property.no_Operacion.title=Operacionno_normatividadModelo.property.no_NumOperacion.title=Numero de operacionno_normatividadModelo.property.no_TemaDescripcion.title=Tema Descripcionno_normatividadModelo.property.no_EntGenDoc.title=Entidad generadora de documentosno_normatividadModelo.property.no_EntNotEdos.title=Entidad Notificadora a edos

##Sección de etiquetas para los aspectos

Page 40: Documentacion Con Aspectos Del Modelo Normatividad

##Bloque 1: prefijo_nombredelmodelo.aspect.prefijo_nombredelaspecto= etiqueta##Bloque 2: aspect.prefijo_nombredelaspecto= etiquetano_normatividadModelo.aspecto.no_normatividad.title=Normatividadaspect.no_normatividad=Normatividad

#Seccion de etiquetas para los tipos#Bloque 1: prefijo_nombredelmodelo.type.prefijo_nombredeltipo= etiqueta#Bloque 1: type.prefijo_nombredeltipo= etiquetano_normatividadModelo.type.no_TipoNormatividad=Normatividadtype.no_TipoNormatividad=Normatividadprefijo_nombredelmodelo.property.prefijo_nombredelapropiedad.tittle=etiqueta

5.5.- El Archivo de declaración en Alfresco ShareEl hecho de realizar la publicación de las propiedades en la interface de Explorer no implica que esa misma visualización se extienda a Share. Share tiene sus propios ficheros de renderizado y tipos, aspectos, propiedades, etcétera tendrán que darse de alta en estos ficheros para poder mostrarse en cuando utilicemos esa parte de Alfresco.El primer fichero es el que declarará nuestras propiedades para ser renderizadas referenciando a las etiquetas del fichero normatividadmodelo.properties que hemos visto en el apartado anterior. Este fichero se llama custom-slingshot-application-context.xml y se hallará ubicado en el directorio:

{directorio servidor de aplicaciones}\shared\classes\alfresco\web-extension

<?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="webscripts.no.resources" class="org.springframework.extensions.surf.util.ResourceBundleBootstrapComponent"> <property name="resourceBundles"> <list> <value>alfresco.messages.normatividadmodelo</value> </list> </property> </bean></beans>

El Archivo de publicación en Alfresco Share

Page 41: Documentacion Con Aspectos Del Modelo Normatividad

El archivo que gestiona la interface de Share es el share-config-custom.xml. Este fichero se halla en la misma ubicación que el que hemos tratado con anterioridad: {directorio servidor de aplicaciones}\shared\classes\alfresco\web-extensionEn este fichero gestionaremos:• La accesibilidad a los aspectos personalizados cuando se utiliza la opción de añadir aspecto a un documento en sus propiedades.• La jerarquía de asignación de tipos.• La inserción en la búsqueda avanzada del Share• Todos los formularios vinculados a tipos, aspectos y propiedades de un documento, y que se gestionan en conjunto para cada tipo.

Fichero de configuración del share: cabecera inicial

alfresco-config> <!-- Repository Library config section -->

<config evaluator="string-compare" condition="RepositoryLibrary" replace="true"> <visible>true</visible>

</config> <!-- Document Library config section -->

<config evaluator="string-compare" condition="DocumentLibrary" replace="true"><types>

<type name="cm:content"><subtype name="no:TipoNormatividad"/>

</type></types><aspects>

<!-- Aspects that a user can see --><visible>

<aspect name="cm:generalclassifiable" /><aspect name="cm:complianceable" /><aspect name="cm:dublincore" /><aspect name="cm:effectivity" /><aspect name="cm:summarizable" /><aspect name="cm:versionable" /><aspect name="cm:templatable" /><aspect name="cm:emailed" /><aspect name="emailserver:aliasable" /><aspect name="cm:taggable" /><aspect name="app:inlineeditable" /><aspect name=" no:AspectoNormatividad" />

</visible><!-- Aspects that a user can add. Same as "visible" if left empty --><addable></addable><!-- Aspects that a user can remove. Same as "visible" if left empty --><removeable></removeable>

</aspects></config>

La sección de document library del fichero nos permitirá insertar todos los aspectos que deseemos en la opción de añadir aspectos del share.El resultado se mostrará en el cuadro de diálogo de adición de aspectos para losEl resultado se mostrará en el cuadro de diálogo de adición de aspectos para los documentos.

Page 42: Documentacion Con Aspectos Del Modelo Normatividad

Cuadro de diálogo de inserción de aspectos para los documentos en Share

Page 43: Documentacion Con Aspectos Del Modelo Normatividad

Otra sección dentro del mismo Archivo nos permitirá gestionar como jerarquizamos la asignación de tipos a los documentos. Recordemos que nuestro modelo de tipos tiene una jerarquía. Se parte de la base del modelo de contenido estándar (content) y se generan tipos (TipoNormatividad) que a su vez tienen subtipos etcétera que por el momento en nuestro caso no es necesario. En definitiva, tenemos una estructura de árbol.Tenemos que conocer, asimismo, que cuando a un documento le asignamos que es de un determinado tipo esta asignación es irreversible. No podremos devolverlo al estado anterior. Sí que podremos, por otra parte, volver a asignarle un tipo de los niveles siguientes al tipo anterior (dentro del árbol) pero nunca devolverlo a un tipo previo padre, al content model original o a un subtipo de otra naturaleza. La permisividad de saltar des de un tipo a un nivel o más niveles inferiores, dentro de share, se puede definir en este fichero.

Page 44: Documentacion Con Aspectos Del Modelo Normatividad

Algunos apuntes sobre Lucene en el mundo de AlfrescoEn este artículo quiero hablarles de Lucene. Aunque en la versión 4.0 de Alfresco ya se incorpora SOLR como motor de indexación alternativo y escalable, también se puede seguir usando Lucene. Además, existen multitud de instalaciones que utilizan Lucene y que posiblemente seguirán utilizándolo. Voy a ampliar algunos conceptos al respecto para intentar ayudarlos a comprender cómo funciona y cómo solucionar posibles problemas que nos podemos encontrar.

NOTA/DISCLAIMER: Lo que aprendas en este artículo no lo uses en producción salvo que sepas realmente lo que estás haciendo. Empecemos por el principio, el documento. Hay dos partes de un documento en Alfresco, la primera es el documento por si mismo y su contenido, la segunda son los metadatos asociados a ese documento. Por defecto, se indexan esas dos partes de un documento, por eso podemos buscarlos y localizarlos. Esta es una explicación simple ya que por debajo hay una serie de tareas automáticas y un poco más complejas que la descripción anterior. Vamos a verlo.

En Alfresco puedes buscar información mediante las interfaces web Share o Explorer y también mediante las diferentes APIs disponibles. Las búsquedas pueden ser por palabras clave o búsquedas booleanas, Alfresco las traduce a formato Lucene Query y las ejecuta sobre los índices en su instancia de Alfresco.

¿Cómo puedo saber que hay realmente en los índices de Alfresco? Los índices por defecto se almacenan en un directorio llamado “lucene-indexes” dentro del directorio “alf_data“. Dentro del directorio principal de índices hay más carpetas y ficheros que están relacionados con los índices de los que no podemos ver su contenido directamente ya que son binarios y de los que hablaremos más adelante.

Puedes ver el contenido de esos ficheros con una herramienta de debug muy útil y multiplataforma llamada Luke. Para abrir los índices por ejemplo del workspace/Spacestore, en el browser de Luke navega hasta alf_data/lucene-indexes/workspace/SpacesStore y selecciona el ficheroIndexInfo. Luke te permite abrir los índices con la opción “Open in Read Only mode”, úsala. Ya que con Luke puedes hacer tareas de lectura sobre los índices y también ¡borrados! Lee bien la documentación antes de aventurarte a hacer alguna fechoría con esta herramienta. No es el objetivo de este artículo hacer un manual de Luke, simplemente darlo a conocer si no lo conocías ya. Si lo usas y lo dominas puedes escribir un artículo que será muy útil para todos.

Sigamos con los índices. Veamos qué hace Alfresco de forma genérica cuando se sube un documento o se actualiza:

Page 45: Documentacion Con Aspectos Del Modelo Normatividad

Como vemos en la imagen anterior, a ese diagrama global podríamos añadir el siguiente resumen del proceso de indexación:

1º Se transforma el contenido a texto 2º Se usa un analizador basado en el idioma del documento para extraer cadenas derivadas de plurales, mayúsculas, etc.

Dependiendo del idioma, estos analizadores serán más o menos complejos. 3º Lucene indexa los metadatos que están marcados para ser indexados. 4º Lucene indexa el contenido, que sea susceptible de indexar (por ejemplo un documento, si se trata de un binario como una

imagen no se indexa el contenido). La indexación del contenido se podría desactivar.

Page 46: Documentacion Con Aspectos Del Modelo Normatividad

5º Si se trata de una actualización, la versión anterior se mueve a otro directorio (interno de los índices) y la nueva versión se crea en el índice activo (live index).

Hay tres directorios que afectan a los índices y que se pueden configurar en alfresco-global.properties mediante las siguientes propiedades (recuerda que se configuraría usando propiedad=valor y todas las opciones está disponibles en el fichero alfresco/WEB-INF/classes/alfresco/repository.properties):

dir.idexes y dir.indexes.lock que necesitan estar en los discos locales donde se instala el repositorio (alfresco.war), ya que se hace un uso intensivo de I/O de disco.

dir.indexes.backup podemos ubicarlo donde queramos siempre que esté accesible por el servidor, ahí se almacenan los backups automáticos nocturnos a las 3AM cada día. Aunque también se puede ejecutar manualmente mediante JMX en la versión Enterprise. Si quieres saber qué procesos nocturnos afectan a los índices y cómo, lee este artículo. No tener controlados los backups de los índices te pueden llevar a tener que reindexar todo un repositorio completo, que puede llevar varios días dependiendo de la cantidad de contenidos.

Dentro del directorio dir.indexes hay una serie de directorios que corresponden a cada uno de los stores de Alfresco (más info aquí). Cada directorio o subdirectorio contiene un fichero llamado IndexInfo que nos da información sobre los índices de cada uno de los stores.

La indexación de los contenidos se gestionan mediante el modelo de datos, por defecto se utiliza el siguiente fichero alfresco/WEB-INF/classes/alfresco/model/contentModel.xml. Y las opciones para todos los contenidos, si no tenemos ningún tipo adicional es como sigue:

<type name="cm:content">

   <title>Content</title>

   <parent>cm:cmobject</parent>

   <properties>

      <property name="cm:content">

         <type>d:content</type>

         <mandatory>false</mandatory>

         <index enabled="true">

            <atomic>false</atomic>            <stored>false</stored>

            <tokenised>true</tokenised>

         </index>

      </property>

   </properties>

</type>

Page 47: Documentacion Con Aspectos Del Modelo Normatividad

A este respecto, cuando un documento se sube a Alfresco, los metadatos se extraen y se indexan en el acto, pero el contenido no tiene por que ser indexado en ese momento (depende). Veremos más abajo que significan estas opciones y qué nos aportan.

Como vemos en la parte <index enabled=”true”>, hay diferentes opciones en cuanto a los índices de las propiedades o de los contenidos:

Enabled=”false”: Si está a “false” no se indexará esa propiedad. Atomic=”true”: Si está a “true”, esa propiedad (metadato) es indexada en el momento de la transacción, si está a “false”, se

indexará en background. La indexación de contenidos que necesitan transformación antes de ser indexados (p. ej. PDF), solo serán “atomic=true” si la transformación tarda menos tiempo que el valor especificado en el atributo lucene.maxAtomicTransformationTime. Todos los transformadores por defecto están aquí alfresco/WEB-INF/classes/alfresco/services-context.xml.

Stored=”true”: Si está a “true”, el valor de la propiedad se almacenará en el índice y debe ser consultado mediante la API de bajo nivel de Lucene. Esto es útil para debugging si queremos saber qué es exactamente lo que se está indexando, pero no está recomendado en absoluto para producción ya que escribe mucha más información en disco. Recomendado “false”.

Tokenised=”true”: Si está “true”, el valor de la cadena de la propiedad se tokeniza antes de ser indexado. Si está a “false”, se indexará como una única cadena, si está a “both” se harán las dos opciones. Valor recomendado “true”.

Recuerda que por defecto todo el contenido, si se indexa, es “not stored”, indexed y tokenized.

Si quieres cambiar el comportamiento por defecto puedes hacerlo pero deberás reindexar todos los contenidos tras hacer el cambio. No te recomiendo tocar el modelo por defecto, es mejor hacer el tuyo propio y heredar valores o no, dependiendo de las necesidades que tengas. Recuerda que si haces un tipo que herede del tipo raíz “cm:content” no podrás desactivar el indexado del contenido.

Por defecto, las versiones de un documento (que se almacenan en el storeworkspace://version2Store) no se indexan. Ese comportamiento se podría modificar modificando el fichero core-services-context.xml como se puede ver aquí, referenciando la entrada version2Store al bean avmLuceneIndexerAndSearcherFactory igual que se pueden ver el workspace y el avm. Si lo haces recuerda que tendrás un consumo mucho más elevado de disco en los índices (dependerá del número de versiones que tengas por contenido, si no lo controlas bien no lo hagas, puede ser una bomba). Aunque actives la indexación del store de versiones, los formularios de búsqueda de Share o Explorer no buscarán en version2Store, pero se puede usar la API para realizar la búsqueda.

En cuanto a la recuperación de índices, es importante saber que existen cuatro modos FULL, AUTO, VALIDATE y NONE, que se usan en alfresco-global.properties mediante el atributoindex.recovery.mode.

index.recovery.mode=FULL: Borra todos los índices actuales y genera un nuevo índice de todo el contenido (reindexa), durante este proceso el servidor no estará disponible.

index.recovery.mode=AUTO: Comprueba los primeros y últimos 1000 identificadores de transacción (txn) son válidos en cada store (información en la BBDD y en los índices coincide). Si no son válidos, se realizará una indexación FULL. En un cluster es importante tener sincronizados horariamente los servidores porque de lo contrario se lanzarán las reindexaciones al no coincidir la BBDD con los índices y la hora del servidor.

Page 48: Documentacion Con Aspectos Del Modelo Normatividad

index.recovery.mode=VALIDATE: Comprueba los primeros y últimos 1000 identificadores de transacción (txn) son válidos en cada store (información en la BBDD y en los índices coincide). Si no son válidos, simplente devolverá una excepción.

index.recovery.mode=NONE: No se hace ningún tipo de validación en los índices.Como vemos, los índices son muy importantes para Alfresco, tanto que si al arrancar encuentra algún problema grave en ellos, que no se solucione reindexando, el servidor se parará automáticamente. Este comportamiento se controla mediante el valor system.bootstrap.config_check.strict que por defecto está a “true”, podríamos ponerlo a “false” para poder analizar mejor algún problema concreto del que no tenemos mucha información en los logs (úsalo sólo para debug, afecta a otras opciones de configuración) y que evita que Alfresco arranque totalmente.

Al principio decía que los índices deben estar en discos locales (lo más rápidos disponibles y dedicados si es posible) para garantizar el máximo rendimiento de la aplicación. Para evitar problemas de lentitudes recomendable tener el doble del tamaño del índice total como espacio libre, para evitar problemas en caso de reindexación y sobre todo para el merge de los índices que se realiza a menudo. De hecho si compruebas que la subida de ficheros es muy lenta comprueba que tienes suficiente espacio libre en la partición o disco de los índices y que tienes correctamente configurados los file descriptors del sistema operativo (ver este artículo).

En caso de reindexación FULL podrás ver en los logs trazas como las siguientes:

20:33:02,502 INFO [node.index.FullIndexRecoveryComponent] 100 % complete.

20:33:55,753 INFO [node.index.FullIndexRecoveryComponent] Index recovery completed.

Eso no significa que se hayan reindexado todos los contenidos, sólo nos indica que se han reindexado todas las propiedades (metadatos). A partir de ese momento Alfresco se pondrá a reindexar el contenido de los documentos. ¿Como podemos comprobar que está ocurriendo eso? Viendo la actividad en la CPU que puede provocar OpenOffice, ya que éste es utilizado para transformar ficheros MS Word a texto para poder ser indexados, por ejemplo.

Aunque ya lo comenté un poco en este artículo, quiero recordaros que existe el “Adminstrador de índices” o “Index Checker Console” disponible en la versión Enterprise desde la 3.1, puedes encontrarlo aquí: http://localhost:8080/alfresco/service/enterprise/admin/indexcheck. Esta consola te permite:

a) Comprobar los índices: por ejemplo, comprobar que cada transacción realizada por el repositorio está contemplada en los índices. Se puede comprobar por rangos de tiempo o rangos de transacciones.

b) Comprobar que un nodeRef específico o los nodos de una transacción específica están en el índice. c) Reindexar desde un punto concreto hacia delante. d) Comprobar el estado de sincronización de los índices entre transacciones y identificadores.

Page 49: Documentacion Con Aspectos Del Modelo Normatividad

Bueno, esto ha sido todo, seguro que se quedan muchas cosas en el tintero pero espero que estos tips os resulten útiles e interesantes.

http://blyx.com/2011/12/07/algunos-apuntes-sobre-lucene-en-el-mundo-de-alfresco/

Hacer el full index ,solo hacer lo siguiente:

1) Detener el servicio de alfresco.2) Ir al archivo "repository.properties" y modificar la linea "index.recovery.mode=VALIDATE" por "index.recovery.mode=FULL"C:\Alfresco\tomcat\webapps\alfresco\WEB-INF\classes\alfresco3) Reiniciar el servicio de alfresco