Personal tools

Expresiones Xpath

From BPM, workflow, six sigma, business process, process management, business process management, BPMN, workflows, process automation, work flow, BPMS, Business Process Management Software, bpm software, workflow management, workflow software, ISO | BizAgi

Jump to: navigation, search
  

Contents

Cómo construir Expresiones Xpath

XPath (XML Path Languaje) es el resultado del esfuerzo por construir un lenguaje de navegación en XMLs que sea fácil de usar y útil para realizar tareas complejas. BizAgi ha incorporado a su lenguaje este estándar, permitiendo que el usuario realice tareas comunes, asignación de valores, consultas y navegación sobre las entidades de negocio.

Expresiones básicas

         Sintaxis <Expression XPath >


Nota:  Las expresiones XPath estarán enmarcadas dentro de los caracteres '<' y '>'


Una expresión XPath, define una ruta de navegación entre objetos. Ejemplo:


Con base en el diagrama entidad - relación propuesto, las siguientes expresiones XPath, son válidas:

 

Xpath

Significado

<idSolicitud.SolicitudNotificada>

¿La solicitud ha sido notificada?

<idGarantia.Constituida>

¿La garantía está constituída?

<idSolicitud.Valor>

Valor de la solicitud


En caso de querer navegar a través de una relación entre las entidades, solo se debe utilizar el nombre de la relación (Fact).
Si la cardinalidad es 1 a muchos, la expresión xPath representará un conjunto de valores. Ejemplos:

 

Xpath

Meaning

<idSolicitud.Garantias>

Conjunto de garantías de la solicitud

<idSolicitud.Garantias.Valor>

Conjunto de valores de todas las garantías de la solicitud.

<idSolicitud.Garantias.TipoGarantias.Nombre>

Nombre de todos los tipos de garantías asociadas con la solicitud.


Asignación de valores

La forma más sencilla de asignar un valor a un elemento, es utilizar el operador "=".

Ejemplos:

Asignación

Significado

<idCliente.Nombre> = "Pedro"

Asigna el nombre "Pedro" al cliente

<idSolicitud.Garantias.Valor> = 50,000

Asigna el valor 50,000 a todos los registros de valor de las garantías asociadas a la solicitud

 

La siguiente expresión asigna a la variable "garantias" una colección con todos las garantias de la solicitud.

var garantias = <idSolicitud.Garantias>

En algunos casos, es necesario contar con expresiones xPath dinámicas, para las cuales se podrán utilizar las funciones setXPath y getXPath

Sintax setXPath and getXPath

setXPath( XPath Expression, value)

La expresión setXPath( expresion-XPath, valor ) permite asignar un valor. getXPath( XPath Expression ) obtains a value

La expresión getXPath( expresion-XPath) permite obtener un valor.


Las expresiones dinámicas, son útiles para recorrer elementos de una colección de valores, por ejemplo en una relación 1 a muchos. Ver ejemplo en la sección filtrado.

Para asignar un valor específico a un registro de la colección, en este caso a una garantía, se debe recorrer la colección y asignarlo al i-esimo registro, utilizando la siguiente expresión:

garantias.get(i).setXPath("Valor", 30000)

Una forma de lograr el mismo resultado, es utilizar un filtro en la colección. Ver filtrado

Las expresiones XPath siempre comienzan con el identifcador de un atributo de la entidad de aplicación, o PV, por ejemplo "idSolicitud".
En los escenarios donde la entidad de contexto es diferente, la forma de navegar por los atributos es utilizar Me.Context.


Ejemplo:
Me.getXPath("idSolicitud.Garantias")
Me.Context.getXPath("Nombre")


Filtrado

Los filtros son una poderosa herramienta, que permiten restringir el número de elementos que son representados por una expresión XPath.
Las expresiones de filtrado son sentencias que darán rangos de valores o condiciones especificas sobre los objetos. Ejemplos. Filtro

 

Expresión

Significado

<idSolicitud.Garantias[idTipoGarantia.Nombre = 'Hipotecaria']>

Conjunto de garantias de tipo Hipotecario

<idSolicitud.Garantias[Valor > 10000 AND Valor < 15000]>

Conjunto de garantías de la solicitud con un valor entre 10000 y 15000



Nota: En las expresiones de filtrado, el atributo "id" es utilizado para realizar comparaciones contra identificadores específicos. Si el filtro usa un nombre de atributo que representa una entidad relacionada, se deberá usar el atributo "id" para realizar este tipo de comparaciones.

El filtro en esta expresión es ERRÓNEO, pues se quiere comparar un objeto TipoGarantia contra un número. <idSolicitud.Garantias[idTipoGarantia = 1]>

El filtro CORRECTO compara el valor del identificador con un número

<idSolicitud.Garantias[idTipoGarantia.id = 1]>


Colecciones

Un uso común, es la manipulación de colecciones de valores por medio de XPath.

  • La asignación masiva de valores por ejemplo, se realizaría con una expresión de este tipo:

<idSolicitud.Garantias[idTipoGarantia.sNombre = 'Hipotecaria'].Valor> = 5000


Todas las garantias de tipo hipotecario de la solicitud tomarán el valor 5000


  • XPath provee un conjunto de FUNCIONES para realizar operaciones sobre los elementos de una colección:

Sumas, promedios, minimos, maximos, etc.


   Ver funciones XPath, para mayor información.


  • Se puede utilizar otra técnica para recorrer una colección, conocida como IterateOverXPath.


Adicionar elementos a una relación

Para agregar elementos a una relación se usa la función addRelation, con ella se creará una nueva entidad y su retorno corresponderá a la entidad agregada. Ejemplo:



Si se desea agregar elementos a la relación entre la entidad de aplicación “SolicitudCreditoIdealCC” y su relación “GarantiasConstituidas” (cuya descripción en la grafica es “Garantias de la Solicitud”) se realizaría lo siguiente:

Me.addRelation(“GarantiasConstituidas”);

Esta instrucción nos creará un elemento “GarantiasSolicitud” con el cual podremos interactuar, por ejemplo para cambiar sus atributos, veamos como:

var nuevagarantia = Me.addRelation(“GarantiasContituidas”);

nuevagarantia.setXPath(“NombreGarantia”) = “Casa 127”;


Ahora, veamos los elementos de la instrucción addRelation:


Elemento

Descripción

nuevagarantia

Variable que contendrá la nueva garantía

Me

Contexto para el addRelation, cuando se usa el Me el XPath provisto inicia desde la entidad aplicación. Para entidades de contexto se usaría Me.Context

"GarantiasConstituidas"

XPath de la relación sobre la cual se quiere agregar un nuevo elemento, este xpath puede contener varios saltos como por ejemplo: “idCliente.idSolicitud.Garantias” en donde idCliente e idSolicitud corresponden a relaciones 1 a 1 y Garantias es la relación 1 a muchos sobre la que se quiere agregar un nuevo elemento


En este ejemplo: Me.addRelation(“idCliente.idSolicitud.Garantias[id = 10].Documentos”) se creará un nuevo Documento a la garantía cuyo id es el 10. Ver filtrado.

La función addRelation también puede ser usada para agregar elementos a una relación muchos a muchos (NxM) indicando el id del elemento a agregar, asi:


var nuevoproductogarantia = Me.addRelation(“ProductoGarantias”, 18);

En este caso la garantía cuyo id sea 18 será agregada a la relación “ProductoGarantias”, en el caso de las relaciones muchos a muchos el elemento de la derecha de la relación debe estar creado con anterioridad.


Artículos relacionados: