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 Promedio Empty Count

De

<keywords content="keywords">promedio, vacio, count, registros, no existe, funcion, avg</keywords>

Contenido

Funciones XPath

Image:Bulletrojo.gif Los ejemplos en este artículo usarán la siguiente sintaxis. En el modelo de datos la Entidad de Proceso es: ProcessEntity.

Esta entidad puede ser relacionada con otras entidades hasta alcanzar una relación de uno a muchos.

<ProcessEntityAttribute.….AttributeN.FactName[Filter]>

  • ProcessEntityAttribute.….AttributeN: el XPath empieza con la Entidad de Proceso, hasta alcanzar la entidad de uno a muchos.
  • FactName: Nombre de la relación de uno a muchos. Esta entidad tiene una colección de registros.
  • Filter: Condición a ser alcanzada en la colección.
  • AttributeName: Nombre del atributo en la entidad "muchos", la que debe ser un atributo numérico.


Image:Bulletrojo.gif Los ejemplos estan basados en el siguiente modelo de datos.

Este es un Proceso de Solicitud de Crédito. Cada Solicitud tiene un Cliente, y Codeudores (más de uno) para ser aprobados.

Una Solicitud puede tener varios productos (puede tener más de un producto con el mismo tipo de producto), y estos productos pueden ser aprobados o rechazados (Estado del Producto- Product State).


Image:Business_Rules4_Image007.jpg



Avg (Promedio)

Esta función puede ser únicamente usada sobre colecciones que devuelvan valores de atributos numéricos (números enteros, decimales o moneda).

Cuando usted usa esta función, usted obtiene el valor promedio de los  registros en la colección existente.


<avg(ProcessEntityAttribute,…,AttributeN.FactName.AtributeName)>

AttributeName: Nombre del atributo en la entidad muchos, la cual debe ser un atributo numérico.


Ejemplo: Obtengamos el valor promedio de las Solicitudes de crédito: <avg(Request.Request_LoanReq.cValueRequested)>



Image:Bulletazul.gif Para obtener el valor promedio de los resgistros que cumplen una condición, sin usar variables en la condición.

<avg(ProcessEntityAttribute,…,AttributeN.FactName[Filter].AtributeName)>

Filtro: Condición a cumplir

AttributeName: Nombre del atributo en la entidad muchos, el cual debe ser un atributo numérico.

Ejemplo : Obtengamos el valor promedio de las Solicitudes de Crédito que requieren Desembolso.

<avg(Request.Request_LoanReq[idLoanType.bRequireDisbursement] .cValueRequested)>

 

'Image:Bulletazul.gif 'Para obtener el promedio de los registros que cumplen una condición, usando variables.

Me.getXPath(“avg(ProcessEntityAttribute.….AttributeN.FactName[FilterVble].AtributeName)”)

FiltroVariable: Condición a cumplir usando variables.

AttributeName: Nombre del atributo en la entidad muchos, el cual debe ser un atributo numérico.


Ejemplo: Obtengamos el promedio de las Solicitudes de Crédito cuyo código  es igual al valor de una variable, usando el código

var x = 125;

'Me.getXPath("avg('Request.Products[ProductType.Code = " + x + "].ValueRequested)")


Ejemplo: En el Banco Ideal, un estudio especial está siendo conducido sobre la capacidad de pago de los codeudores. En el estudio, el valor promedio de los ingresos y de los gastos del codeudor son utilizados. Para calcular la capacidad de pago, una regla de libreria fue usada para recibir el total de los ingresos y el total de los gastos como parámetros. Veamos cómo usted obtendría el valor promedio de los ingresos y los gastos.


 


Modificando el ejemplo anterior, ahora usted ha creado la regla que promediará los ingresos totales y los gastos totales de los codeudores aprobados. Esto requeriría filtrar la expresión.


Count

Cuando usted usa esta función, usted obtiene el número total de registros en la colección.


<count(ProcessEntityAttribute.….AttributeN.FactName)>

Ejemplo: Obtengamos el número total de productos solicitados y asigne el valor al campo iNumberLoans:


 

'Image:Bulletazul.gif 'Para obtener el número de registros que cumplen  una condición, sin usar variables en la condición.

<count(ProcessEntityAttribute.….AttributeN.FactName[Filter])>

Filtro: Condición a cumplir

Ejemplo: Obtengamos el número total de los productos solicitados aprobados. <count(Request.Products[ProductState.State= 'Approved')>

 

Image:Bulletazul.gif Para obtener el número de registros que cumplen una condición, usando variables en la condición.

Me.getXPath(“count(ProcessEntityAttribute.….AttributeN.FactName[FilterVble])”)

FilterVble: Condición a cumplir usando variables.

Ejemplo: Obtengamos el número de Productos solicitados aprobados, suponga que la entidad Status no es Administrable y que el idStatus para los Aprobados es guardado en una variable. var x = 'Aprobado'; Me.getXPath("count(Request.Products[ProductState.State= " + x + "])")


  Ejemplo: Dentro del Proceso Solicitud de créditos de consumo, cuando todos los productos de la solicitud son rechazados, una actividad es generada para el asesor comercial donde se le debe informar al cliente los motivos del Rechazo.

Image:Business_Rules4_Image019.jpg

 


 

  

La expresión presentada previamente sería:

<count(Request.Products[ProductState.State='Rejected'])>== <count(Request.Products)>;

 

Empty

Cuando usted usa esta función, usted obtiene verdadero (true) cuando la colección no tiene registros.


<empty(ProcessEntityAttribute.….AttributeN.FactName)>

Ejemplo: Verifiquemos si no existe ningún producto en al solicitud <empty(Request.Products)>


 

'Image:Bulletazul.gif 'Para verificar si no existe ningún registro en la colección que cumpla una condición dada, sin usar variables en la condición.


<empty(ProcessEntityAttribute.….AttributeN.FactName[Filter])>

Filtro: Condición a cumplir

AttributeName: Nombre del atributo en la entidad muchos, el cual debe ser un atributo numérico.


Ejemplo: Verifiquemos si no existe ningun producto aprobado en la solicitud, suponga que la entidad Status no es Administrable y que el IdStatus para los Aprobados es igual a 1. <empty(idRequest.Request_LoanReq[idStatus.id = 1])>


 

Image:Bulletazul.gif Para verificar si no existe ninún registro que cumpla una condición dada, usando variables en la condición.


Me.getXPath(“empty(ProcessEntityAttribute.….AttributeN.FactName[FilterVble])”)

FilterVble: Condición a cumplir usando variables.

Ejemplo: Verifiquemossi no existe ningun producto aprobado en la solicitud, suponga que la entidad Status no es Administrable y que el idStatus para los aprobados es guardado en una variable.
var x = 'Approved';
Me.getXPath("empty(Request.Products[ProductState.State = " + x + "])")" +  x + "])")


Ejemplo: Cuando la Solicitud de Créditos NO tiene garantías asociadas, el proceso NO debería ingresar al Proceso de Constitución.


Image:Business_Rules5_Image005.jpg

 

Image:Business_Rules5_Image006.jpg



  Modificando el ejemplo anterior, considerando que algunas garantías requieren de constitución y otras no. Cuando la Solicitud de Crédito no tiene garantías que requieran de  una constitución, el proceso no debería entrar al proceso de Constitución de garantías (Constitution). La expresion que estaría asociada al flujo de secuencia NO que va a la actividad Informar Resultado al cliente  (Inform Client of Result) sería:



 

 

La expresión completa presentada en la expresión anterior es:

<empty(Request.Guarantees[RequiresConst=true])>


<comments />