<< Clic para mostrar Tabla de Contenidos >> Usar .id con XPath |
La sentencia .id después de un XPath podría requerirse o no dependiendo de lo que usted desee hacer.
Cuando se agregan elementos a una colección
Imagine un Proceso de Solicitud de Crédito Personal, donde hay varios productos en cada solicitud. Hay una relación uno a muchos entre la Entidad de Proceso Solicitud y la Entidad de colección Productos.
•La entidad uno se denomina Solicitud.
•La entidad colección se denomina Productos.
•La relación es Solicitud_Productos.
•Productos tiene un atributo llamado Valor.
Usted necesita agregar un nuevo producto a la colección con US$10.000 como valor. Utilice las siguientes declaraciones:
USE:
var NuevoProducto = Me.newCollectionItem(“idSolicitud.Solicitud_Productos”);
NuevoProducto.setXPath(“Valor”, 10000);
NO USE:
NuevoProducto.setXPath(“idSolicitud”,<idSolicitud.id>);
Esta última declaración perjudica la relación debido a que la función newCollectionItem llena el id del atributo automáticamente..
Cuando utilice un setXPath con asignación directa
Cuando usted utiliza la declaración setXPath, asigne el objeto y no el entero de la relación.
Utilizando la imagen que se muestra a continuación, imagine que usted tiene un Proceso de Mesa de Ayuda que gestiona reportes de incidentes (o tickets) con el fin de minimizar interrupciones en los servicios de tecnología de la información.
De acuerdo a cómo evoluciona el ticket en el proceso cambiará su estado. Hay una relación de entidad-relacionada entre la Entidad de Proceso denominada Ticket y la entidad paramétrica denominada Estado. Los valores se muestran a continuación:
Utilizamos un elemento de asignación para establecer el estado del Ticket.
Como el Ticket es recibido por el departamento de Mesa de Ayuda, su estado será Abierto.
USE
var parameters = new FilterParameters();
parameters.AddParameter("@Code", 1);
var Status = CHelper.getEntityAttrib("HelpDeskCaseStatus","idStatus","Code = @Code",parameters);
<Ticket.Status> = Estado;
NO USE:
var parameters = new FilterParameters();
parameters.AddParameter("@Code", 1);
var Status = CHelper.getEntityAttrib("HelpDeskCaseStatus","idStatus","Code = @Code",parameters);
<Ticket.Status.id> = Estado;
NO USE:
var parameters = new FilterParameters();
parameters.AddParameter("@Code", 1);
var Status = CHelper.getEntityAttrib("HelpDeskCaseStatus","idStatus","Code = @Code",parameters);
<Ticket.Status> = Estado.id;
Cuando se utilice setXPath en la función newCollectionItem
Cuando utilice la función newCollectionItem usted necesita asignar los XPaths a los atributos del nuevo registro de la colección.
Hay un caso especial donde usted debe utilizar .id: Cuando la sentencia setXPath incluya una sentencia getXPath para asignar un valor.
Imagine que usted tiene un Proceso de Solicitud de Compras que puede incluir muchos clientes. Por lo tanto, hay una relación uno a muchos entre la Entidad de Proceso SolicituddeProductos y Clientes. También hay una relación de atributo relacionado entre SolicituddeProductos y Clientes que almacena el cliente principal de la solicitud.
Usted necesita agregar a la colección de clientes el nombre del cliente principal y su estado.
•La entidad de Proceso se denomina SolicituddeProductos.
•La entidad colección se denomina Clientes.
•La relación de entidad relacionada es ClientePrincipal
•La relación es SolicituddeProductos_Clientes
•Clientes tiene un atributo llamado Nombre
var AgregarCliente=Me.newCollectionItem("SolicituddeProductos.SolicituddeProductos_Clientes");
AgregarCliente.setXPath("NombreCliente",Me.getXPath("ClientePrincipal.Nombre"));
AgregarCliente.setXPath("Estado",Me.getXPath("ClientePrincipal.Estado.id"));
Cuando se utilice getXPath con una colección filtrada
Cuando utilice la función getXPath en colecciones y necesite un filtro en una tabla con una variable, usted necesita utilizar .id.
Imagine que tiene una Política de Suscripción Colectiva donde hay muchos vehículos para cada solicitud. Usted necesita saber cuántos vehículos hay de un cierto tipo en una solicitud.
Hay una relación uno a muchos entre la Entidad de Proceso Solicitud y la entidad colección Vehículos.
•La entidad uno se denomina Solicitud.
•La entidad colección se denomina Vehiculos.
•La relación es Solicitud_Vehiculos
•Los Productos tienen un atributo denominado TipodeVehiculo que esta relacionado a la entidad paramétrica.
USE
var parameters = new FilterParameters();
parameters.AddParameter("@Code", 1);
var idVehicleType = CHelper.getEntityAttrib("VehicleType","idType","Code = @Code",parameters);
var CuentadeVehiculos = Me.getXPath("count(Solicutud.Solicitud_Vehiculos["TipodeVehiculo.id = "+idTipodeVehiculo+"])");
NO USE
var parameters = new FilterParameters();
parameters.AddParameter("@Code", 1);
var idVehicleType = CHelper.getEntityAttrib("VehicleType","idType","Code = @Code",parameters);
var CuentadeVehiculos = Me.getXPath("count(Solicutud.Solicitud_Vehiculos["TipodeVehiculo.id = "+idVehicleType.id+"])");
Cuando se compare XPath en sentencias con if
Cuando se comparan XPath en sentencias con if, se debe comparar contra el objeto que relaciona a la entidad y no id.
1. USE
if (!IsNull(Request.getXPath("VehicleType")))
NO USE
if (Request.getXPath("VehicleType.id") != null)
2. USE
if(idVehicleType == Request.getXPath("VehicleType.id"))
Si idVehicleType es un entero
if(idVehicleType == Request.getXPath("VehicleType"))
Si idVehicleType es una variable relacionada con una entidad
NO USE
if(idVehicleType == Request.getXPath("VehicleType.id"))
Si idVehicleType es una variable relacionada con una entidad
3. USE
if (Request.getXPath("VehicleType.Code") == "2")
NO USE
var parameters = new FilterParameters();
parameters.AddParameter("@Code", 2);
var idVehicleType = CHelper.getEntityAttrib("VehicleType","idType","Code = @Code",parameters);
if (Request.getXPath("VehicleType.id")==idVehicleType)
Last Updated 1/26/2022 4:09:29 PM