Funciones XPath
De
<keywords content="keywords"> funciones, suma, adicionar, substraer, minimo, min, max, maximo, borrar, borrar relacion, funcion, función, indice, distinto, promedio, funciones xpath</keywords>
Contenido |
Funciones Xpath
XPath provee una serie de funciones que permiten realizar operaciones. Las funciones actualmente provistas por XPath son:
Sum: Suma el valor de una colección
Min: Obtiene el valor mínimo de una colección
Max: Obtiene el valor máximo de una colección
Avg: Obtiene el valor promedio de una colección
Count : Cuenta el número de registros en una colección
Empty: Determina si la colección esta vacia o no
Exist: Determina si hay o no algún registro en una colección
Remove: Borra un registro
distinct-values: Devuelve una colección única, de registros sin repetir
Index-Of: Determina la posición de un o más registros
Mathematical functions: promedio, exponencial, valor absoluto
Ejemplo:
En un proceso de Solicitud de Crédito un único cliente puede solicitar varios productos.
En la imagen de abajo, hay una relación de uno a muchos entre Solicitud (Request) y Productos (Products).
<span id="sum" />Sum
Suma todos los registros de una colección dada
Esta función solo puede ser usada sobre colecciones que devuelvan valores de atributos numéricos (enteros, decimales o moneda)
Sintaxis:
<sum( xPath )>
Me.getXPath("sum(XPath)");
En la imagen de arriba, hay una relación de uno a muchos (1:N) entre Solicitud (Request) y Productos (Products). Esta última entidad tiene un atributo tipo moneda llamado Valor Solicitado (Value Requested), que puede ser sumado para obtener el valor total solicitado:
var Result = <sum(Request.Products.ValueRequested)>; <span id="fck_dom_range_temp_1235484585835_995" />
La sentencia Request.'Products' es el nombre de la relación entre Solicitud y Productos (aquel con una estrella en la flecha).
Los atributos también pueden ser sumados usando Me y Me.Context:
var Result = Me.getXPath("sum(Request.Products.ValueRequested)");
Filtro
Por ejemplo, se requiere el valor de los productos solicitados que han sido aprobados.
Cuando se filtra con variables es necesario usar Me.getXPath("sum(XPath)"); y NO usar los paréntesis mayor menor "< >".
Vea Filtros, para mayor información.
var Result= <sum(Request.Products[Approved = true].ValueRequested)>;
<span id="min" />
Min
Cuando se usa esta función, se obtiene el valor mas pequeño entre de los registros de una colección.
Esta función puede ser usada únicamente en colecciones que devuelvan valores de atributos numéricos (enteros, decimales o moneda).
Sintaxis:
<min( xPath )>
Me.getXPath("min(XPath)");
Ejemplo: Usando la misma imagen, el valor mínimo de Productos es:
var minimum = <min(Request.Products.ValueRequested)>;
El mismo resultado puede ser obtenido usando Me:
var min = Me.getXPath("min(Request.Products.ValueRequested)");
Filtro
Usando filtros, se puede encontrar el valor mínimo de los créditos solicitados que han sido aprobados:
var min = <min(Request.Products[Approved = true].ValueRequested)>;
El mismo resultado puede ser obtenido usando Me y Me.Context:
var min = Me.getXPath("min(Request.Products[Approved= true].ValueRequested)");
Cuando se filtra con variables es necesario usar Me.getXPath("sum(XPath)"); y NO usar los simbolos mayor menor "< >"
Para obtener el valor mínimo de todas las Tarjetas de Crédito, se necesita el uso de una variable en la cual se almacena el código.
Suponga que se usa la variable Codigo y la sentencia queda así:
var min = Me.getXPath("min(Request.Products[ProductType.Code = " + Codigo+"].ValueRequested)");
<span id="max" />
Max
Cuando se usa esta función, se obtiene el valor máximo entre los registros de una colección.
Esta función puede ser usada únicamente en colecciones que devuelvan valores de atributos numéricos (enteros, decimales o moneda).
Sintaxis:
<max( xPath )>
Me.getXPath("max(XPath)");
Filtro
Por medio de filtros, se puede encontrar el valor máximo de los productos que han sido aprobados:
var max = <max(Request.Products[Approved= true].ValueRequested)>;
El mismo resultado puede ser obtenido usando Me y Me.Context:
var max = Me.getXPath("max(Request.Products[Approved= true].ValueRequested)");
Cuando se filtra con varialbes es necesario usar Me.getXPath("sum(XPath)"); y NO usar lo paréntesis mayor menor "< >"
var max = Me.getXPath("max(Request.Products[ProductType.Code = " + Code+"].ValueRequested)");
Avg (Promedio)
Cuando se usa esta función, se obtiene el promedio de la colección.
Esta función puede ser usada únicamente en colecciones que devuelvan valores de atributos numéricos (enteros, decimales o moneda).
Sintaxis:
<avg( xPath )>
Me.getXPath("avg(XPath)");
Ejemplo: Para pbtener el valor promedio de los créditos solicitradosLoans Requested:
var average= <avg(Request.Products.ValueRequested)>;
Los ejemplo usados previamente funcionan exactamente igual, cambiando únicamente la sintaxis.
Count
Cuando se usa esta función, se obtiene el número de elementos en la colección.
Sintaxis:
<count( xPath )>
Me.getXPath("count(XPath)");
Ejemplo:
var totalguarantees = <count(Request.Products)>;
Retorna el número de productos en la solicitud.
var validguarantees = <count(Request.Products[Approved = true])>;
Retorna el número de productos aprobados en la solicitud.
Empty
Esta función devuelve Verdadero (True) cuando la colección o relación esta vacía y Falso (False) en caso contrario.
Sintaxis:
<empty( xPath )>
Me.getXPath("empty(XPath)");
Ejemplo:
var empty= <empty(Request.Products[Approved= true])>;
if (empty) {
CHelper.ThrowValidationError("No hay productos incluidos");
}
Exists
La función devuelve Verdadero (True) cuando la colección o relación tiene al menos un elemento y Falso (False) en caso contrario.
Sintaxis:
<exists( xPath )>
Me.getXPath("exists(XPath)");
Ejemplo:
var exists= <exists(Request.Products)>;
if (exists) {
CHelper.ThrowValidationError("No hay productos incluidos");
}
Ejemplo:
var exists= <exists(Request.Products[Approved= true])>;
if (!exists) {
CHelper.ThrowValidationError("No hay productos incluidos");
}
Remove
Esta función es usada para borrar un elemento de un resultado de una expresión XPath. Sin embargo no la borra del registro.
Sintaxis:
<remove(Xpath, position)>
Ejemplo: Una compañía financiera ofrece un producto que no cobra por su instalación. El calculo del seguro sería.
var quotas= <remove(Request.Quota, 1)>;
for (int x = 0; x < quotas.size(); x++) {
quotas.get(x).setXPath("insurance") = 100000;
}
En este caso, se elimina el primer elemento de la relación y luego se aplica el valor de cada pago.
El método removeRelation es usado para borrar un elemento de una relación.
Distinct-Values
Esta función es usada para obtener una colección de elementos que no se repiten
Sintaxis:
<distinct-values(Xpath)>
Si un cliente tiene muchas solicitudes de préstamos, y cada una tiene garantías, la forma de sumar las propiedades que han sido relacionadas como garantías para obtener la capacidad de endeudamiento sería:
Ejemplo:
var Types = <distinct-values(Request.Guarantees.GuaranteeType)>;
Garantías (Guarantees) es el nombre del fact o relación entre Solicitud y la entidad Garantías. En una Solicitud hay muchas garantías.Esta sentencia devuelve una colección de las diferentes Garantías que tiene una Solicitud.
Index-Of.
Determina la posición de una o más entradas.
Sintaxis:
<index-of(XPath, Valor)>
Ejemplo
var index= <index-of(Request.Products.Approved, true)>;
var Approved = Me.getXPath("Request.Products[" + index+ "]");
<comments />