Proyecto

General

Perfil

Valores iniciales (InitialValuesRegistrar)

Información

Autor David Henriquez
Sitio Web http://www.adapting.com
Repositorio source:Valores-iniciales
Código fuente https://svn-community.adapting.com/svn/community/Plugins/Modules/trunk/src/Adapting.TRD
http://america.adapting.co:8080/svn/software/plugins/trd_default_metadata/trunk/src/InitialValuesRegistrar
Versión Actual v1.0
Compatible con Abox 2.5.3 en adelante

Resumen

Este plugin se registra al evento después de guardar un documento, un expediente y una carpeta, se creó con el fin de asignar valores a metadatos según su tipo de entidad.

La idea es definir valores iniciales a un metadato que se encuentre en varios tipos de entidades diferentes.

Estos valores se cargan desde un archivo xml.

Para las versiones anteriores a la 2.7.2 omita los criterios del 2 - 9, el plugin evaluará los criterios en orden, en caso de no encontrarlo pasará al siguiente:

  • 1. Tipo exacto: Busca el tipo de entidad exacto dentro del archivo xml.
  • 2. Carpeta exacto: Busca el código de la carpeta exacta dentro del archivo xml.
  • 3. Tipo comienza por: Busca el tipo de entidad en el archivo xml con la forma (cadena*), Esto quiere decir que si el código del tipo empieza por cadena asignará su valor especificado.
  • 4. Tipo termina en: Busca el tipo de entidad en el archivo xml con la forma (*cadena), Esto quiere decir que si el código del tipo termina en cadena asignará su valor especificado.
  • 5. Tipo contiene a: Busca el tipo de entidad en el archivo xml con la forma (cadena), Esto quiere decir que si el código del tipo contiene la cadena asignará su valor especificado.
  • 6. Carpeta comienza por: Busca la carpeta en el archivo xml con la forma (cadena*), Esto quiere decir que si el código de la carpeta empieza por cadena asignará su valor especificado.
  • 7. Carpeta termina en: Busca la carpeta en el archivo xml con la forma (*cadena), Esto quiere decir que si el código de la carpeta termina en cadena asignará su valor especificado.
  • 8. Carpeta contiene a: Busca la carpeta en el archivo xml con la forma (cadena), Esto quiere decir que si el código de la carpeta contiene la cadena asignará su valor especificado.
  • 9. Ultimo valor por defecto: si no cumple con ninguna de las condiciones anteriores y se encuentra esta etiqueta "<lastDefaultValue>" en el archivo xml asignará el valor aquí especificado.

Nota: El módulo sólo asignará valores a los metadatos si estos no tienen valor previo, es decir, el metadato tiene que estar vacío en el momento de aplicar estas reglas.

Notas de instalación

Descargar el código fuente del plugin y compílarlo usando Visual Studio 2010. Y realizar los siguientes pasos:
  1. Copiar los archivos Adapting.InitialValuesRegistrar.dll que se encuentra en la carpeta bin del proyecto y ubicarla en la carpeta /bin del sitio web donde esta Abox.
  1. Incluir la siguiente linea en el archivo "appSettings.config" en la carpeta "/Config" del sitio web donde esta Abox:
    <add key="trdFile" value="Config/trd.xml" />
  1. Se debe crear un archivo xml con el nombre "trd" y ubicarlo en la carpeta "/Config" del sitio web donde esta Abox. Esta archivo debe tener la siguiente estructura:

<?xml version="1.0" encoding="utf-8"?>
<trd>

  <document>

     <!-- Especificar metadatos de tipos documentales a los cuales se les quiera inicializar valores. 
          Nota: El atributo "type" lleva el tipo de datos del valor que se asignará. 
                Se puede establecer tantos metadatos y tipos según se requiera. -->  

     <metadata code="codigo_del_metadato" type="tipo_del_metadato"> 

         <!-- Especificar los tipos documentales y carpetas con el valor a asignar en el metadato del documento que se está creando. -->    

         <type code="tipo_del_documento_1">valor_1</type>         

         <!-- Carpetas. -->    

         <folder code="carpeta_del_documento_1">valor_1</folder>

         <!-- En caso de requerir otros criterios, observe los siguientes ejemplos. -->    

         <type code="tipo_del_*">valor_1</type>         
         <type code="*_documento_1">valor_1</type>         
         <type code="*_del_*">valor_1</type>         

         <folder code="carpeta_del_*">valor_1</folder>         
         <folder code="*_del_documento_1">valor_1</folder>         
         <folder code="*_del_*">valor_1</folder>         

         <!-- En caso de no encontrar el tipo ni carpeta correspondiente,  ni valores con expresiones asignará el valor de la etiqueta <lastDefaultValue>. -->   

         <lastDefaultValue>valor_por_defecto</lastDefaultValue> 

     </metadata>                   

  </document>

  <casefolder>

     <!-- Especificar metadatos de series documentales a los cuales se les quiera inicializar valores. 
          Nota: El atributo "type" lleva el tipo de datos del valor que se asignará. 
                Se puede establecer tantos metadatos y tipos según se requiera. -->       

     <metadata code="codigo_del_metadato" type="tipo_del_metadato"> 

         <!-- Especificar los tipos documentales y carpetas con el valor a asignar en el metadato del documento que se está creando. -->    

         <type code="serie_documental_1">valor_1</type>         

         <!-- Carpetas. -->    

         <folder code="carpeta_del_expediente_1">valor_1</folder>

         <!-- En caso de requerir otros criterios, observe los siguientes ejemplos. -->    

         <type code="serie_*">valor_1</type>         
         <type code="*_documental_1">valor_1</type>         
         <type code="*_serie_doc*">valor_1</type>         

         <folder code="carpeta_del_*">valor_1</folder>         
         <folder code="*_del_expediente_1">valor_1</folder>         
         <folder code="*_del_*">valor_1</folder>         

         <!-- En caso de no encontrar el tipo ni carpeta correspondiente,  ni valores con expresiones asignará el valor de la etiqueta <lastDefaultValue>. -->   

         <lastDefaultValue>valor_por_defecto</lastDefaultValue>  

      </metadata> 

  </casefolder>

  <folder>

    <!-- Aqui podrá especificar la misma estructura que se hizo en para tipos documentales y series documentales. -->

  </folder>

</trd>


Añadir vistas de manipulación de archivo "trd.xml"

Con lo descrito anteriormente quedará totalmente funcional el plungin, pero puede incluir una vista a abox para cargar, descargar o eliminar el archivo. Deberá Incluir el archivo "Adapting.TRD.dll" (ubicado en el directorio principal del proyecto) en la carpeta /bin del sitio web donde esta Abox.

Además debe incluir la carpeta TRD en la carpeta /Areas del sitio web donde esta Abox.

Por último debe crear una entrada de menú desde la aplicación (abox):

Menú partner > Sitios web y menús > Editar sitio web > pestaña menú.

Historico

30/11/2012 A partir de la version 2.7.5 si el valor del tipo es vacío no le asigna valor (tampoco LastDefaultValue) y continua con el otro metadato.

17/04/2013 (2.7.8+):

Ahora se puede colocar códigos en lugar de guids para las siguientes entidades:

documentlink
folderlink
casefolderlink
containerlink
userlink
organizationlink
rolelink

Para todos los casos se podrán seguir colocando guid.

Para el rolelink hay que colocarlo de la siguiente forma:

Guid:
u_01fcbfd3-6fad-4ac8-89a5-1542b8ec4262,o_259023c3-a3f4-4304-86ff-a19d00a5367e,r_0e2dd02f-71f4-4387-8b18-a18e00903db3

Códigos:
u_admin,o_org 7,r_CodRole

xml


<?xml version="1.0" encoding="utf-8"?>
<trd>
  <document>
    <metadata code="folderlink" type="folderlink">      
      <type code="RootDocumentType">655c7733-7b3a-4b1a-9f9b-030e861b4aa3</type>      
    </metadata>
    <metadata code="expedientelink" type="casefolderlink">      
      <type code="RootDocumentType">E-RootCaseFolderType.13.000</type>      
    </metadata>
    <metadata code="documentlink" type="documentlink">      
      <type code="RootDocumentType">13.04.48136</type>      
    </metadata>
    <metadata code="organizationlink" type="organizationlink">      
      <type code="RootDocumentType">rootOrganization</type>      
    </metadata>
    <metadata code="rolelink" type="rolelink">      
      <type code="RootDocumentType">u_01fcbfd3-6fad-4ac8-89a5-1542b8ec4262,o_259023c3-a3f4-4304-86ff-a19d00a5367e,r_0e2dd02f-71f4-4387-8b18-a18e00903db3</type>      
    </metadata>
    <metadata code="containerlink" type="containerlink">      
      <type code="RootDocumentType">RootFolder</type>      
    </metadata>
    <metadata code="userlink" type="userlink">      
      <type code="RootDocumentType">admin</type>      
    </metadata>
  </document> 
</trd>

Nota: Es importante resaltar que los tipos de los metadatos debe estar escritos de la siguiente forma:

documentlink
folderlink
casefolderlink
containerlink
userlink
organizationlink
rolelink

Finalizan en "Link"

2.7.11 se ha modificado el metodo de busqueda con una expesion regular para remplazar las busquedas por (*) en cualquier parte de codigo y se agrego la opcion de valor inicial para metadatos de fecha avanzada con intervalos hacia adelante o hacia atras.

      <!--hacia adelante, despues de la fecha actual-->
       <metadata code="prueba.trd.dateavanced" type="advanceddate">
        <type code="*.EL.*">D_4,M_0,Y_0</type>
        <lastDefaultValue>D_4,M_0,Y_0</lastDefaultValue>
    </metadata>

    <!--hacia atras, antes de la fecha actual-->
       <metadata code="prueba.trd.dateavanced" type="advanceddate">
        <type code="*.EL.*">D_-4,M_0,Y_0</type>
        <lastDefaultValue>D_4,M_0,Y_0</lastDefaultValue>
    </metadata>

 

NOTA: Valor inicial en fecha avanzada por TRD funciona de la de version 2.7.11 en adelante

15/07/2015 - Cambio en InitialValuesRegistrar para que coja expresiones regulares puras

A partir de la versión 3.0 de abox puede emplearse la DLL InitialValuesRegistrar con dos cambios:

  • Todas las comparaciones se realizarán con expresiones regulares puras
  • Para mejorar el rendimiento la TRD.xml se guarda en memoria. Para actualizarla hay que reiniciar el IIS del sitio.

10/03/2016 se agregaron palabras claves para los valores a agregar al metadato, las palabras claves agregadas son las siguientes "foldercode" y "typecode".

NOTA: los valores numericos separados por , dentro de los "[]" realizan es un substring del codigo a buscar en la palabra clave como se explica en el siguiente ejemplo [foldercode,2,4] donde 2 seria desde donde iniciaria y 4 la cantidad de letras a extraer del codigo,tener en cuenta que el indice de las palabras empieza en 0 (la primera letra es 0), si el codigo del folder es "ABOX.100" el la anterios exprecion devolveria "OX.1".

ejemplo XML

<metadata code="COD.METADATO" type="TIPO.METADATO">
<type code="RootDocumentType"></type>
<type code="01.10.01.01.*">01.10.01.01</type>  <!-- como siempre -->
<type code="01.*">01.[typecode,2,7]</type>    <!-- cuando se cumpla expresión de tipos, poner 01 y el cód.del tipo desde carácter 3º hasta 9 -->
<type code="02.*">02.[typecode,3]</type>      <!-- cuando se cumpla expresión de tipos, poner 02 y el cód.del tipo desde carácter 3º al final -->
<folder code="10.01.05.*">10.01.05</folder>    <!-- como siempre -->
<folder code="10.*">[foldercode,1,8]#</folder> <!-- cuando se cumpla expresión de carpeta, poner el cod.de la carpeta desde el carácter 2º al 8º+# -->
<folder code="20.*">[foldercode]</folder> <!-- cuando se cumpla expresión de carpeta, poner el cod.de la carpeta completo -->
<lastDefaultValue>nada</lastDefaultValue>
</metadata>
 

11/09/2018 - Implementación de Reporte AGN e integración del plugin "InitialValuesRegistrar" al modulo TRD

La ruta para generar los reportes de AGN es /TRD/TRD/AgnReport.
En esta página se despliega un combo con los tipos documentales disponibles con Reporte AGN y el botón para exportar el reporte (Dicho botón no funcionará al darle click dos veces a menos que se cambie el combo para generar otro reporte o al recargar la página).
Se debe eliminar la DLL de InitialValuesRegistrar a partir de esta versión !!!

Configurar el reporte AGN

  1. Verificar que se encuentre el archivo Adapting.TRD.dll en la carpeta "bin/".
  2. Dentro de una carpeta llamada "Config/AGN/" se debe copiar el archivo "trd_agn.xlsx" que se descarga con la dll.
  3. Se debe crear un archivo llamado "agn_types_config.txt" dentro de la carpeta "Config/AGN/", dentro de dicho archivo se especifica por linea los códigos de los tipos documentales que se le pueden generar reporte, por defecto: El proceso es el abuelo; La unidad jerárquica superior es el padre; Responsables es el tipo documental seleccionado; Serie es el hijo inmediato; Subserie o tipo documental de la serie es el hijo de segundo nivel (Es subserie si al menos alguno tiene hijos o tipo documental si no tienen hijos (en este ultimo caso la serie no tiene subserie)); Tipo documental de la subserie el hijo de tercer nivel. Por lo tanto los tipos documentales que se le elijan al menos deben tener abuelo y dos niveles de hijos.

Personalizar el reporte AGN (Excel)

Para personalizar el reporte se debe modificar o editar el archivo "trd_agn.xlsx" en "Config/AGN/".
Se debe tener en cuenta que este objeto que referencia este reporte es el tipo seleccionado, por consecuencia al parametrizar un valor como .Parent es el padre del tipo seleccionado.

Las palabras claves que analiza y reemplaza el sistema dentro de la excel son las que empiezan por: adapting.value.----, adapting.function.---- y adapting.list.----

adapting.value:
Hace referencia al tipo documental documental seleccionado y a partir de allí se le acceder a cualquiera de sus propiedades pej:
  • Nombre del padre: *adapting.value.*Parent.Name.SingleString
  • Nombre + Código del tipo documental: *adapting.value.*Name.SingleString||*adapting.value.*Code
  • Nombre - Código del tipo documental: *adapting.value.*Name.SingleString|| - ||*adapting.value.*Code
Nota:
  • || se usa para concatenar parámetros entre si o texto fijo en una misma celda.
  • Para conocer mas propiedades que se pueden usar se debe conocer el objeto DocumentType.
  • No usar una parte del texto en negrilla (estilos en general) y otro no, en la misma celda, porque la celda queda vacía al generar el reporte.

adapting.function:
Son funciones predefinidas en el sistema, de momento solo hay una pero puede crecer:

  • adapting.function.gettrddateupdated: Última actualización del archivo "trd.xml" en "Config/".
Nota:
  • || se usa para concatenar parámetros entre si o texto fijo en una misma celda.
  • No usar una parte del texto en negrilla (estilos en general) y otro no, en la misma celda, porque la celda queda vacía al generar el reporte.

adapting.list:
Son parámetros usados para el listado. La primera linea en la excel define la configuración de las series y subseries, y la segunda la configuración de los tipos documentales. Estos se pueden definir de las siguientes formas:

  • adapting.list: funciona igual que adapting.value, pero para listados. P.ej: adapting.list.Code = Código del tipo doc en esa linea.
  • adapting.list.Code|Substring.9.2: Llama al método Substring haciendo uso del Código del tipo documental con los parámetros Substring(9,2) (Desde el carácter 9, selecciona 2). Esta palabra clave solo funcionan con métodos que reciban parámetros enteros o sin parámetros (Se puede mejorar luego).
  • adapting.list.trdmetadata|DatosRetDisp.PlazoRetAC: Busca el valor por defecto en la tabla de TRD del metadato (DatosRetDisp.PlazoRetAC). Si el resultado es true se reemplaza con una X y cuando es false se deja vacío (Si el campo esta definido en la TRD como Boolean funciona también con los numeros 1 = 'X' y 0 = '').
Nota:
  • Cuando se usa la propiedad adapting.list.Description en la Serie/Subserie las celdas en la misma columna de los tipos documentas se combinan.
  • La configuración de los listados están en la fila 12 y desde la columna A(1) y la columna M(13) para Series y Subseries, y fila 13 con las mismas columnas para los tipos documentales.
  • Por defecto los listados empiezan desde la fila 12 y desde la columna 1(A) hasta la 13(M), para cambiar estos valores se pueden modificar escribiendo la fila en la celda A100, la columna desde en la celda B100 y la columna hasta en la celda C100 (Se puede mejorar luego para que los encuentre).
  • El archido de recurso de este modulo se encuentra en producto (TRD.Resx)

Para tener en cuenta

  • El Reporte AGN se realiza sobre los tipos documentales, por lo tanto la serie y subserie son también tipos (abuelo y padre, respectivamente).
  • Los valores de trd son buscados en el archivo "trd.xml" dentro de la carpeta "Config/".
  • La serie y subserie son buscados como "casefolder" dentro del archivo de la TRD y los tipos documentales en "document" dentro del mismo archivo. Por lo tanto hay que tener cuidado con los códigos que se le coloquen a los tipos (serie, subserie), para que los pueda encontrar en el archivo por la dimensión correcta.
  • Para las series y subseries no funciona el valor "lastDefaultValue" dentro de la TRD (por el motivo expuesto en el punto anterior), en cambio para los tipos documentales si funcionan.
  • Los hijos del tipo documental seleccionado en el reporte que no tengan hijos, no se muestran en el reporte.
  • Existe una única plantilla Excel para generar este informe y se encuentra en config/TRD (debe subirme manualmente a esta carpeta).

25/09/2018 - Mejoras y correcciones del Reporte AGN.

  • El reporte es ordenado en Series, Subseries y Tipos Documentales.
  • El campo de descripción para Series sin subseries ahora se agrupa.
  • A los valores ahora se le puede pasar mas de una función p.ej. adapting.list.Name.SingleString|Replace.(I).|Replace.(E).|Replace.(S).|Trim, esto seria equivalente a decir: "al nombre del tipo documental reemplaza las cadenas '(I)','(E)','(S)' por vacío y luego elimina todos los espacios por atras y delante del resultado" (doctype.Name.SingleString.Replace("(I)","").Replace("(E)","").Replace("(S)","").Trim()).

05/10/2018 - Edición online del fichero de valores iniciales trd.xml.

  • Se añade un plugin para la edición online del fichero el cual permite:
  • Editar Parámetros, Mover y Crear nuevas etiquetas y Buscar códigos.
  • Las fuente del plugin es: http://www.lexiconista.com/xonomy/
Nota:
  • Con el fin de no perder los comentarios del archivo trd.xml, se añaden al plugin en etiquetas <comment> y se ocultan a la vista del usuario.
  • Esto no afecta al archivo trd.xml.
  • Se ha modificado la vista (\Areas\TRD\Views\TRD) y se ha añadido dos archivos javascript(\Content\Javascript) y un carpeta que contiene las Css (\Content\Css).

16/11/2018 - Mejora en el orden la creación de tags en la edición online de Valores iniciales TRD.

  • Se realiza una modificación a las configuraciones del plugin Xonomy, lo que permite:
  • Añadir etiquetas <type> antes de la etiqueta <lastBefaultValue>.
  • Permitir una sola etiqueta <lastBefaultValue>.
  • y edición del orden manual a las etiquetas <type> y <lastBefaultValue>.

29/05/2019
Se añade nueva key en el appSetting para obtener la ruta del archivo Holidays.xml:

<add key="holidaysFile" value="\Config\Calendars\Holidays.xml"/>

21/01/2020
Ahora se calculan primero las reglas <folder> y luego las reglas <type>.

20/03/2020
Se añade una nueva keyword que va a introducir un valor de un metadato del USUARIO que está creando o actualizando el contenido. Adicionalmente, si no existe el metadato o su valor es null se colocar una constante o keyword que estará después del ultimo "#".

[usermetadata#codigo del metadato#Constante o Keyword]

03/03/2021
Se añade combo de versiones trd a la vista que generar reportes AGN "AgnReport", para poder generar reportes según la versión que se halla seleccionado.
Se agregan dos funciones predefinidas en el sistema:
  • adapting.function.gettrdversion: Versión del tipo seleccionado.
  • adapting.function.gettrdversiondateupdated: Fecha del archivo "trd.xml" según la versión seleccionada.

10/10/2022
*Se modifico la logica de obtencion de valores para los metadatos desde valores iniciales, anteriormente hacia la ejecucion preguntando por los parametros types y luego folders, se realizo el cambio para consultar primero por las etiquetas folders y luego las types.

13/03/2022
DocumentService.AfterMovingDocumentToCaseFolder += AddTrdDefaultValues 
  • Se agrego el evento para que se haga el recalculo de permisos luego de mover un documento a un expediente o una carpeta
Volver al inicio
Agregar imagen desde el portapapeles (Tamaño máximo: 10 MB)