Acceder al iésimo registro de una colección

<< Clic para mostrar Tabla de Contenidos >>

Navegación:  Automatización de Procesos con poco código > Studio Cloud -ambiente de autoría > Bizagi Studio > Asistente de Procesos > Reglas de Negocio > Ejemplos de reglas de negocio > Colecciones y entidades > Ejemplos de colecciones >

Acceder al iésimo registro de una colección

En algunas situaciones es necesario obtener o manipular la información de un registro específico en una colección.

Para ello no es necesario iterar sobre toda la colección y detenerse cuando se encuentre el registro deseado. Al conocer la posición del registro de la colección, se puede acceder fácilmente a él a través de una expresión.

 

La sintaxis que se utiliza para acceder a esta información es la siguiente:

 

Para obtener información

 

Collection.get(index of the record). getXPath("Attribute")

Para asignar un valor

 

Collection.get(index of the record). setXPath("Attribute",value)

 

note_pin

Tenga en cuenta que los índices del los registros dentro de la colección, siempre inicia en 0.

 

Supongamos que una empresa utiliza Bizagi para sortear diferentes premios entre sus clientes. Un servicio externo genera un número aleatorio que representa la posición del cliente, dentro de la colección de clientes. Como el número de clientes puede ser muy grande, el nombre del ganador se almacena en un atributo de tipo de string. Una vez obtenida esta información, el cliente se identifica como ganador en la base de datos, con el fin de que excluirlo en futuros sorteos.

 

El siguiente es el modelo de datos asociado al proceso:

 

AccessSpecificRecord1

 

Para obtener la información del ganador, desde la colección del clientes, siga los pasos descritos a continuación:

 

1. Vaya a la actividad en la que se realiza el sorteo y cree una expresión a la entrada. A continuación, cree un módulo de expresión.

 

AccessSpecificRecord2

 

2. El número aleatorio generado por el servicio externo se almacena en el atributo WinnerIndex. Escriba la siguiente expresión para obtener el nombre del ganador de la colección de los clientes. Este se almacena en el atributo WinnerName.

 

AccessSpecificRecord3

 

//Obtenga el indicie del ganador dentro de la colección de clientes

WinnerIndex=<Raffle.WinnerIndex>

 

//Obtenga la colección de clientes

Clients=Me.getXPath("Raffle.Clients");

 

//Obtenga el nombre del ganador utilizando el indice del cliente dentro de la colección de clientes

<Raffle.WinnerName>=Clients.get(WinnerIndex).getXPath("Name");

 

Usted también puede obtener el id del registro en el que está iterando

 

//Obtenga el nombre del ganador utilizando el id

<Raffle.WinnerName>=Clients.get(WinnerIndex).getXPath("Id");

 

//Obtenga el nombre del ganador utilizando la llave primaria

<Raffle.WinnerName>=Clients.get(WinnerIndex).getXPath("idClients");

 

note_pin

La llave primaria se construye concatenando la palabra "id" con el nombre de la entidad(por ejemplo, idClients)

 

3. Ahora, para identificar al cliente como un ganador use la siguiente línea. Esto asignará al atributo Winner del ganador, el valor true.

 

AccessSpecificRecord4

 

//Actualice la información del ganador utilizando el indice del cliente dentro de la colección de clientes

Clients.get(WinnerIndex).setXPath("Winner",true);

 

4. Finalmente vaya al Portal de Trabajo para probar la expresión.

 

AccessSpecificRecord5

 

note_pin

Para tener un mejor desempeño, cuando se manipulen datos dentro de un ciclo, extraiga en una variable la entidad de proceso y después, utilice la variable dentro del ciclo.

 

Ejemplo:

 

var max = 1500;
var PEntity = Me.getXPath("ProcessEntity");
for (var x = 0; x < max; x++)
{
      var Record = PEntity.get(0).getXPath("Attribute");

      ...
}


Last Updated 1/26/2022 4:09:00 PM