Obtener y utilizar valores de una entidad

<< Click to Display Table of Contents >>

Navigation:  Bizagi Studio > Asistente de Procesos > Reglas de Negocio > Ejemplos de reglas de negocio >

Obtener y utilizar valores de una entidad

Obtener un valor de una entidad no relacionada en el Modelo de Datos

Suponga un proceso de Solicitud de crédito donde la cantidad máxima solicitada se basa en un estudio de riesgos. Cuando un Analista ingresa el puntaje de riesgo calculado en la tarea Capacidad de Pago y da clic en el botón guardar, el límite superior de la cantidad aprobada será mostrado.

 

La estimación de riesgo se guarda en una Entidad paramétrica donde cada rango tiene un monto máximo relacionado:

 

CHelper38

 

Ya que la entidad paramétrica no se relaciona directamente con el modelo de datos, necesitamos utilizar una función que busque el valor mencionado dependiendo del nivel de riesgo.

Vamos a utilizar la función getEntityAttrib. La función se encuentra en la categoría Navegación de Datos.

Esto pasará el puntaje de riesgo ingresado por el analista para determinar en que rango se encuentra y devolver la cantidad máxima que puede ser solicitada.

 

DataNavigation1

 

La sintaxis de la función es:

 

CHelper.getEntityAttrib("Entity","ValueToReturn","filter","")

 

La entidad será la entidad paramétrica Riesgo.

El valor retorna la cantidad máxima aprobada.

El filtro será el rango del riesgo ingresado.

 

En el cuarto paso del asistente, seleccione Acciones de la Actividad.

Dé clic en la tarea donde se va ha mostrar el límite superior aprobado y cree una expresión Al Guardar.

 

CHelper39

 

El puntaje del riesgo ingresado por el analista está guardado en el atributo Riesgo.

La cantidad máxima será asignada al atributo Cantidad Máxima.

 

CHelper40

 

La expresión deberá lucir de la siguiente forma:

 

CHelper41

 

// Obtener el puntaje del riesgo.

var RiskValue=<CreditRequest.Risk>;

// Obtenga el máximo monto aprobado

<CreditRequest.MaximumAmount>=CHelper.getEntityAttrib("Risk","MaximumApprovedAmount",

"(LowerBound <="+RiskValue+") AND (UpperBound > "+RiskValue+")","");

 

Dé clic en Ok para guardar los cambios.

 

Cuando un Analista ingrese el puntaje de riesgo y dé clic en Guardar, la cantidad máxima correspondiente será mostrada.

 

CHelper42

 

 

CHelper43

 

 

Obtener valores de una colección

Suponga un proceso de Solicitud de compras donde tiene una colección de productos, donde cada producto tiene un único precio y una cantidad. El requerimiento es obtener el costo total de los productos de la orden.

 

Necesitamos iterar sobre los productos de la colección regresados por la consulta XPath. Por cada producto que vamos a obtener el precio total y sumarlo al costo total de la compra.

 

Para iterar sobre la colección, es necesario guardar el resultado de la consulta XPath en una variable y luego llamar la función GetValueAsCollection, pasando la variable de la consulta como parámetro. Una vez los valores han sido convertidos a un Array List, es posible navegar los valores de la colección utilizando la función FOR.

 

note_pin

Usted puede ejecutar este ejemplo utilizando la función Over XPath. El ejemplo solo tiene como propósito brindar un ejemplo.

 

 

CHelper56

 

La función GetValueAsCollection se encuentra en la categoría Navegación de Datos.

 

DataNavigation2

 

La sintaxis de la función es:

 

CHelper.GetValueAsCollection("Collection")

 

Los parámetros de la función son: el XPath de la colección obtenido, en este caso será la colección Productos Solicitados.

 

Cree una expresión Al guardar de la tarea donde se va a realizar el cálculo.

 

CHelper52

Agregue una expresión con el siguiente código.

 

CHelper53

 

var Collection=<PurchaseRequest.ProductsRequested>;

//Convierta el objeto de la colección en una colección para ser iterado.

var Array=CHelper.GetValueAsCollection(Collection);

//Inicialice la variable guardada en el Costo Total.

var Total=0

 

//Itere sobre la colección para obtener el precio de cada uno de los productos

for (var I=0; I < Array.size(); I++)

{

//Obtener cada elemento, luego guardar le precio y la cantidad.

var Element= Array.get(I);

var ElementPrice=Element.getXPath("UnitPrice") ;

var ElementQuantity=Element.getXPath("Quantity");

 

//Acumular el precio total en la variable Costo Total.

Total=Total+(ElementPrice*ElementQuantity);

}

// Asignar el costo total en el atributo mostrado.

<PurchaseRequest.TotalCost>=Total;

 

La colección se debe ver en el Portal de Trabajo de la siguiente manera.

 

CHelper54

 

Una vez la expresión es ejecutada, el costo total es mostrado.

 

CHelper55

 

 

Obtener valores de atributos específicos de una entidad

En un Contact Center, se debe enviar una notificación al jefe de la persona que trabaja en una solicitud, en caso de que el tiempo para atenderlo se exceda. Usted necesita entonces conocer la dirección de correo electrónico del jefe.

 

Para obtenerlo, usted puede utilizar la función CHelper.getAttrib. Esta función devuelve el valor de un atributo dado de un registro específico en una entidad.

 

Los parámetros de esta función son:

 

sEntityName: Nombre de la entidad.

oEntitYKey: Id del registro específico dentro de la entidad.

sAttribName: Nombre del atributo de la entidad.

 

Y la sintaxis es:

CHelper.getAttrib(sEntityName, oEntityKey, sAttribName);

 

Incluya una expresión como una acción de actividad.

Obtenga el id del jefe del asignado actual utilizando la función Me.Case.WorkingCredential.UserProperties().

 

CHelper92

 

Utilice la función CHelper.getattrib() para obtener desde la entidad WFUser, la dirección de correo electrónico del usuario deseado. En este caso almacene este valor en un atributo del modelo de datos (BossEmail).

 

CHelper93

 

 

//Obtain the identifier of the current assignee user

var BossId=Me.Case.WorkingCredential.UserProperties["idbossuser"];

//Obtain the email of the user from the WFUser entity

<ContactCenter.BossEmail> = CHelper.getAttrib("WFUser",BossId,"Email");

 

 

Modificar valores de atributos específicos de una entidad

Un banco ofrece múltiples productos crediticios a sus clientes. Una vez que se aprueba y entrega un producto, se realizará un seguimiento mensual con el fin de evaluar si el cliente cumple con los pagos pactados a tiempo. Si el cliente cae en mora en repetidas ocasiones, todas sus solicitudes en progreso se penalizan y por lo tanto difícilmente serán aprobados.

 

Para identificar si una solicitud ha sido penalizada, se utiliza un atributo Booleano en el modelo de datos. Este atributo debe actualizarse en todas las solicitudes en progreso del cliente cuando este caiga en mora.

 

Para actualizar este valor usted puede hacer uso de la función CHelper.setAttrib. Esta función asigna un valor a un atributo dado de un registro específico de una entidad.

 

Los parámetros de esta función son:

 

sEntityName: Nombre de la entidad.

oEntitYKey: Id del registro específico dentro de la entidad.

sAttribName: Nombre del atributo de la entidad.

oAttribValue: Valor a asignar.

 

Y la sintaxis es:

CHelper.setAttrib(sEntityName ,oEntityKey, sAttribName, oAttribValue);

 

Incluya una expresión como una acción de actividad.

Primero obtenga la lista de casos en progreso del cliente que será penalizado.

 

 

CHelper94

 

Luego, en cada solicitud actualice el atributo que identifica si una solicitud ha sido penalizada. Para hacerlo navegue la lista de solicitudes y utilice la función CHelper.setAttrib.

 

CHelper95

 

//Obtenga la lista de solicitudes del usuario evaluado

var IdCustomerEvaluated=<CustomersFollowUp.CustomerEvaluated.Id>

var ListOfRequests = CEntityManager.GetEntity("CreditRequest").GetEntityList("", "","idRequester="+IdCustomerEvaluated, "");

//Actualice cada caso

for (var i=0;i<ListOfRequests.Length;i++)

{

CHelper.setAttrib("CreditRequest",ListOfRequests[i].SurrogateKeyValue,"RequestPenalized",true);

}