Proyecto

General

Perfil

Comparar valores (genérica)

Información

Autor David Henriquez
Sitio Web http://www.facebook.com/adapting-lab
Repositorio source:Guardas-America/trunk/src/CompareValues
Código fuente http://svn-community.adapting.com:8080/svn/Community/Plugins/Guardas-America/trunk/src/CompareValuesGeneric
Versión Actual v1.0
Compatible con Abox 2.6.3

Resumen

Compara valores de un metadato o palabra reservada contra otro metadato, palabras reservadas o constantes.
Los metadatos puedes ser de tipo: Cadena, Entero, Decimal, Fecha, Boolean. Si no es ninguno de estos tipos deben ser exactos (p.e. el orden en una lista).

Esta guarda es una mejora de la guarda anterior "CompareMetadataValue". Las mejoras fueron:
  • Compara todas las combinaciones.

Esta guarda sustituye a la guarda anterior "CompareValues", que debe dejar de utilizarse.

Notas de instalación

Descargue el código fuente del plugin y compílelo usando Visual Studio 2010. Luego dependiendo si lo va a integrar en una instalación de Abox o en un proyecto de extensión de Abox sigua las siguientes instrucciones.
En una instalación de Abox

Copiar la dll que genera el proyecto, en principio se debe llamar Adapting.CompareValuesGeneric.dll, en la carpeta /bin del sitio web donde esta Abox.

Incluya el proyecto en su proyecto para extender Abox, añada una referencia en Adapting.Web al proyecto que acaba de incluir.

Guía de uso

Una vez incluida la clase en el proyecto y recompilado el proyecto, tiene que modificar el XML del workflow para añadir esta guarda que ejecuta el worlflow antes de cambiar de estado. Para hacer esto incluya este código en las acciones de la transición en la que quiere que se ejecute.

     
<guard type="CompareValuesGeneric">
        <param name=".metadata_value">deviceCode</param>
        <param name=".keyword_value">CurrentUser</param>
        <param name="operator">Equal</param>
        <param name=".metadata_valueToCompare">deviceName</param>
        <param name=".keyword_valueToCompare">CurrentUser</param>
        <param name=".constant_valueToCompare">Hola mundo</param>
      </guard>
 


codigo para configuracion del HotEditor

 <guard code="CompareValuesGeneric" available="true">
              <name>Comparar valores</name>
              <description>Comparar valores entre metadatos, palabras reservadas o constantes (numeros, cadena de caracteres y fechas)</description>
              <type>Valores de metadatos</type>
              <contentTypes>
                  <contentType>document</contentType>
                  <contentType>casefolder</contentType>        
                  <contentType>webPage</contentType>
                  <contentType>service</contentType>
              </contentTypes>
              <params>
                  <param code=".metadata_value" minOccurs="0" maxOccurs="1">
                      <type>metadata</type>
                      <name>Codigo del campo a validar</name>
                      <description>Código del campo a validar.</description>
                  </param>
                  <param code=".keyword_value" minOccurs="0" maxOccurs="1">
                      <type>keyword</type>
                      <name>Palabra reservada a validar</name>
                      <description>Palabra reservada a validar.</description>
                  </param>
                  <param code=".constant_value" minOccurs="0" maxOccurs="1">
                      <type>string</type>
                      <name>Constante con código del metadato del padre</name>
                      <description>Código del metadato del contenido padre</description>
                  </param>
                  <param code="operator" minOccurs="1" maxOccurs="1">
                      <type>list</type>
                      <name>Operador</name>
                      <values>
                          <value code="Equal">igual</value>
                         <value code="Less">menor</value>
                          <value code="Greater">mayor</value>
                          <value code="LessOrEqual">menor o igual</value>
                          <value code="GreaterOrEqual">mayor o igual</value>
                          <value code="Different">diferente</value>
                          <value code="Contains">contiene</value>
                          <value code="NotContains">no contiene</value>
                          <value code="FolderIsTheDaughterOf">es carpeta hija de</value>  <!-- da false si ambas son iguales !-->
                          <value code="NotFolderIsTheDaughterOf">no es carpeta hija de</value>
                          <value code="Regex">expresión regular</value>                         
                      </values>
                      <description>Se escoge el tipo de comparación</description>
                  </param>
                  <param code=".metadata_valueToCompare" minOccurs="0" maxOccurs="1">
                      <type>metadata</type>
                      <name>Código del metadato a comparar</name>
                      <description>Metadato a comparar</description>
                  </param>
                  <param code=".keyword_valueToCompare" minOccurs="0" maxOccurs="1">
                      <type>keyword</type>
                      <name>Palabra reservada a comparar</name>
                      <description>Palabra reservada a comparar</description>
                  </param>
                  <param code=".constant_valueToCompare" minOccurs="0" maxOccurs="1">
                      <type>string</type>
                      <name>Constante a comparar</name>
                      <description>Constante a comparar</description>
                  </param>
                  <param code="messageToShow" minOccurs="0" maxOccurs="1">
                      <type>richtext</type>
                      <name>Mensaje para mostrar</name>
                      <description>Mensaje informativo a mostrar</description>
                  </param>
              </params>
          </guard>


.metadata_value: Código del metadato a comparar.
.keyword_value: Palabra reservada a comparar.
operator: Tipo de comparación. Puede ser: Equal, Less, Greater, LessOrEqual, GreaterOrEqual, Different, Contains.
.metadata_valueToCompare: Código del metadato a comparar.
.keyword_valueToCompare: Palabra reservada a comparar.
.constant_valueToCompare: Constante a comparar.

Nota: Solo debe escogerse un metadato de estos grupos {.metadata_value,.keyword_value}, {operator}, {.metadata_valueToCompare, .keyword_valueToCompare, .constant_valueToCompare}

A partir de la versión 2.7.4 puede utilizar metadatos de tipo "Carpeta" ó "Expediente" si desea comparar sus ids con algún metadato, constante o keyword (CurrentContentParentID).

Histórico

24/09/2012

19/11/2012

A partir de la versión 2.7.5:

  • Fue incluido el operador "Contains".
  • Fue incluido el operador "NotContains".

A partir de la 2.7.11

  • Fue incluido el operador "FolderIsTheDaughterOf"
  • Fue incluido el operador "NotFolderIsTheDaughterOf"

Notas:

- Funcionan para preguntar si una carpeta contiene o no a otra, el primer valor a comparar deber ser un metadato de tipo folderlink.
- Arroja "false" con "FolderIsTheDaughterOf" si ambas carpetas son iguales, en la negación arroja "true".

07/07/2014 se agregó el parametro ".constant_value" para agregar el codigo de un metadato ubicado en el padre del contenido.

Para ello se creó la guarda alternativa CompareValuesGeneric, para aislar posibles problemas. En un futuro la guarda a mantener será solamente ésta.

22/05/2015 Corrección al comparar fechas avanzadas.

15/07/2015 ya se puede utilizar con metadatos MirrorField y MathSuites

06/05/2019 Se puede comparar entre libmath con sigo mismo y mathsuite consigo mismo. También se puede compara alguno de estos metadatos con un metadato tipo = entero, decimal o texto. NO compara con un tipo fecha.

13/06/2019 Se ajusta la guarda CompareValuesGeneric para que al momento de hacer una comparación(operación) admita metadatos tipo:
  • "Listas maestras" en la cuales se tendrá en cuenta el CÓDIGO de la lista, no es id.
  • "Listado" en cual se valida, inicialmente, si se ingresó un id a comparar, por los que se busca si este existe en la lista. En caso de que esto no ocurra, entonces de hace una comparación con el valor texto de la selección. Los dos valores a comparar se someten a un ajuste antes: se reduce a minúsculas, sin espacio en blanco y sin acentos, solo me mantendrán estos tres símbolos = . @ y - .

23/12/2019 Se incluye nuevo tipo de comparación llamado "Regex" que permitirá compara metadatos y keywords con un valor contante que seria una expresión regular. No estará disponible para números (Decimales), booleanos y fechas.

16/04/2020 Se ajusta la guarda CompareValuesGeneric para comparaciones con [CurrentUserOrganizations] contra una organización que esta en el contenido, esta comparación se puede hacer con un CONTAINS (contiene)
  • Se añade un nuevo parámetro "constantuser_valueToCompare" (con punto delante o sin punto delante)
    que permite consultar el valor del metadato del usuario actual y compararlo (normal, como está ahora) con cualquier metadato, constante o palabra clave del contenido.
     <param code=".constantuser_valueToCompare" minOccurs="0" maxOccurs="1">
                        <type>string</type>
                        <name>Código del metadato del usuario</name>
                        <description>Código del metadato del usuario a comparar</description>
                    </param>
    

25/01/2021 Se añade validación del metadato "CustomOrganizationDataBaseLink".

19/04/2021 Se permite la comparación con códigos de metadatos tipo LISTA y LISTA MAESTRA con listas secundarias

19/01/2022 Se permite la comparación que dependera de la cantidad de usuarios asignados a un metadato de tipo RoleLink con un valor asignado a un metadato de tipo entero o de tipo decimal.

Esta funcionara con las siguientes comparaciones numericas:

Equal
Less
Greater
LessOrEqual
GreaterOrEqual
Different

11/03/2022 Ahora se permite comparar el metadato "ContactDataBaseLink" con otros metadatos del mismo tipo, con una constante que contenga el código (número de documento) del contacto que se encuentre almacenado en el metadato o con una Keyword.

Comparación con metadato:

 <guard type="CompareValuesGeneric">
        <param name=".metadata_value">ContactLinkFieldCode</param>        
        <param name="operator">Equal</param>      
        <param name=".metadata_valueToCompare">ContactLinkFieldCode2</param>         
      </guard>

Comparación con constante:
 <guard type="CompareValuesGeneric">
        <param name=".metadata_value">ContactLinkFieldCode</param>        
        <param name="operator">Equal</param>   
        <param name=".constant_valueToCompare">85457988</param>    
      </guard>

Comparación con keyword:
 <guard type="CompareValuesGeneric">
        <param name=".metadata_value">ContactLinkFieldCode</param>        
        <param name="operator">Equal</param>
        <param name=".keyword_valueToCompare">[Null]</param>          
      </guard>

01/12/2022 Se agrega la opción para poder hacer comparaciones con el tipo de metadato RoleLink esta es la estructura del XML:

<guard type="CompareValuesGeneric">
        <param name=".metadata_value">Doc.DestExt.897</param> <!--Código metadato RoleLink-->
        <param name="operator">Equal</param>
        <param name=".constant_valueToCompare">o_100.CAL</param> <!--Código usuario o role o organización a comparar -->
      </guard>

Si se desea comparar con usuario se debe colocar u_ seguido del código del usuario.
Si se desea comparar con organización se debe colocar o_ seguido del código del organización.
Si se desea comparar con roles se debe colocar r_ seguido del código del rol.

Volver al inicio
Agregar imagen desde el portapapeles (Tamaño máximo: 10 MB)