<< Clic para mostrar Tabla de Contenidos >> Ejemplos de funciones avanzadas de XPath |
El modelo de datos del siguiente diagrama será utilizado como guía para explicar las funciones avanzadas XPath. Imagine que trabaja en una compañía de teléfonos y esta a cargo de la Mesa de ayuda para atender las quejas y reclamos que se presenten. Cada queja debe estar relacionada con un cliente. Para resolver cada caso, su equipo de trabajo debe contactar al cliente por teléfono varias veces. Un Historial del proceso lleva todo el registro de las llamadas realizadas.
newCollectionItem: Permite incluir nuevos registros dentro de la colección. Los registros se incluyen inicialmente como una entrada vacía. Usted puede utilizar XPath o variables para asignar los valores del nuevo registro.
Ejemplo: Cada comentario se debe registrar en la colección Historia.
var User = Me.Case.WorkingCredential.UserId;
CommentRecord=Me.newCollectionItem("ClaimsAndComplaints.History")
CommentRecord.setXPath("Actions",<ClaimsAndComplaints.Response>);
CommentRecord.setXPath("PostedBy",User);
CommentRecord.setXPath("Dates", DateTime.Now);
Distinct-values: Retorna una colección filtrada que no contiene valores repetidos de un atributo. Es necesario indicar el atributo por el cual se va a realizar la discriminación.
Ejemplo: Se necesita saber cuantos números telefónicos han sido marcados para contactar al cliente.
DiffPhone = <distinct-values(ClaimsAndComplaints.Calls.TelephoneNumber)>;
<ClaimsAndComplaints.DiffPhoneNumbers> = DiffPhone.size();
Get value as collection: Transforma una lista de valores almacenados en cadenas de texto en un arrayList. En algunos casos es necesario manejar las colecciones utilizando expresiones y no a través de la funcionalidad Iterate over XPath para permitir una completa manipulación del código.
Ejemplo: Es necesario que todas las llamadas tengas observaciones. La función transforma la lista de llamadas en una cadena de texto dentro del ArrayList AllCalls. El siguiente ejemplo fue realizado para ilustrar la funcionalidad, esto también puede ser realizado utilizando un Iterate over XPath.
var AllCalls = CHelper.GetValueAsCollection(<ClaimsAndComplaints.Calls>);
for (var i = 0; i< AllCalls.size(); i++) {
var CallRecord = AllCalls.get(i);
if(BAIsNull(CallRecord.getXPath("Observations")))
CHelper.ThrowValidationError("The Call "+CallRecord.getXPath("TelephoneNumber")+" has not observations");
}
Nota: el XPath NO debe contener el objeto de entidad principal, solo la colección dentro de la entidad.
RemoveRelation: Permite borrar elementos de una colección. Es posible especificar si se quiere o no eliminar los registros de la base de datos en el Segundo parámetro.
Ejemplo: Todas las llamadas que no han sido marcadas deben ser removidas.
Me.removeRelation("ClaimsAndComplaints.Calls[Mark = false]",true);
Sort: Ordenar registros de una colección en orden ascendente de acuerdo a un atributo. Solo es posible ordenar utilizando un entero, real, fecha o un atributo string. El método recibe una colección y regresa la colección ordenada de acuerdo a los valores del atributo.
Ejemplo: Se quiere ordenar los registros de las llamadass por fecha y guardarlos en una nueva variable.
var CallsChecked=<sort(ClaimsAndComplaints.Calls[Mark = false],'DateAndTime')>;
Round: La función round se usa para reducir un numero (moneda, real, float) dado a un número específico de decimales.
Ejemplo: Redondear un valor moneda dos puestos decimales.
<Purchase.RoundedPrice> = CHelper.Math.Round(<Purchase.InitialPrice>,2)
Redondear un valor moneda sin puestos decimales
<Purchase.RoundedPrice> = CHelper.Math.Round(<Purchase.InitialPrice>)
Floor: La función floor redondea un número (moneda, real, float) hacia abajo al entero más cercano.
Ejemplo: Redondear un atributo tipo moneda al entero menor
<Purchase.RoundedPrice> = CHelper.Math.Floor(<Purchase.InitialPrice>)
Ceiling: La función ceiling redondea un número (moneda, real, float) hacia arriba al entero más cercano.
Ejemplo: Redondear un atributo tipo moneda al entero mayor
<Purchase.RoundedPrice> = CHelper.Math.Ceiling(<Purchase.InitialPrice>)
Last Updated 1/26/2022 3:55:37 PM