Toda la información de producto en wiki.bizagi.com aplica para Bizagi BPM Suite 9.1.X.
Para las nuevas versiones de Bizagi BPM Suite (10.X y superior) visite la Guía de Usuario.
 

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:

 

Image:Bulletrojo.gif Sum: Suma el valor de una colección

Image:Bulletrojo.gif Min: Obtiene el valor mínimo de una colección

Image:Bulletrojo.gif Max: Obtiene el valor máximo de una colección

Image:Bulletrojo.gif Avg: Obtiene el valor promedio de una colección

Image:Bulletrojo.gif Count : Cuenta el número de registros en una colección

Image:Bulletrojo.gif Empty: Determina si la colección esta vacia o no

Image:Bulletrojo.gif Exist: Determina si hay o no algún registro en una colección

Image:Bulletrojo.gif Remove: Borra un registro

Image:Bulletrojo.gif distinct-values: Devuelve una colección única, de registros sin repetir

Image:Bulletrojo.gif Index-Of: Determina la posición de un o más registros

Image:Bulletrojo.gif 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).

Image:Business_Rules4_Image002.jpg



<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 />