Usar EntityArray para acciones en lote

<< Click to Display Table of Contents >>

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

Usar EntityArray para acciones en lote

Puede apoyarse en las acciones en lote cuando desee manejar registros múltiples en una sola acción, ejecutando una expresión. Las expresiones en lote para las acciones tienen una sintaxis especial para navegar a través de los registros que han sido incluidos en la regla. Todos los registros son manejados utilizando el objeto EntityArray:

 

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

   EntityArray[i].setXPath("Attribute", value);

 EntityArray[i].getXPath("Attribute");

}

 

Ejemplo

Suponga que usted quiere aprobar varias solicitudes de vacaciones de sus empleados. La compañía tiene una política para las personas que toman sus vacaciones en el mes de Diciembre: todos participarán en una rifa por un viaje gratis. Si usted quiere manejar la aprobación de las vacaciones y definir el ganador del premio usando una expresión, deberá iniciar un proceso para llevar a cabo dicho objetivo.

 

 

¿Qué necesita hacer?

1. Crear el Modelo de Datos que soportará el escenario.

2. Crear una búsqueda que verifique todas las solicitudes de vacaciones de sus empleados directos.

3. Crear una acción en lote para ejecutar una expresión que seleccionará todos los registros como aprobados, y seguidamente, avanzará en cada uno de los procesos para iniciar el proceso de asignación del premio.

4. Habilitar el proceso de solicitud de Vacaciones para continuar después de la aprobación en lote.

5. Crear un disparador para gestionar el premio.

 

 

Crear el Modelo de Datos que soportará el escenario

El Modelo de Datos para este proceso es muy simple. Una entidad llamada SolicitudVacaciones (VacationRequest) sostiene la mayor proporción de datos para el caso, y tiene una relación con la entidad paramétrica Estatus de la Solicitud (Request State), la cual sostiene el estado de la solicitud. La entidad Estatus es importante en este caso, pues depende de un supervisor quien podrá encontrar las solicitudes pendientes.

 

EntityArray1

 

Crear una búsqueda que verifique todas las solicitudes de vacaciones de sus empleados directos

Tenemos un Stakeholder llamado Trabajador (Employee) quien tiene configurada una búsqueda que le permite encontrar todas las solicitudes de vacaciones pendientes realizadas por sus subordinados.

Esta búsqueda tiene dos valores establecidos por defecto: uno, el Jefe como aquel usuario que ha iniciado sesión, y dos, el estado de la solicitud para filtrar las solicitudes que están pendientes.

 

EntityArray2

 

Tenga en cuenta que la forma tiene dos campos de sólo lectura. El Supervisor tiene un valor por defecto que fue construido usando la expresión que se muestra en la imagen a continuación:

 

EntityArray3

 

Crear una acción en lote para ejecutar una expresión

 

La acción que seleccionará todas las solicitudes como aprobadas después de realizar una búsqueda, se verá de la siguiente manera. Recuerde seleccionar la opción Agrupar varios ítems en el Asistente Avanzado.

 

EntityArray4

 

EntityArray5

 

EntityArray6

 

Approvedstate = CHelper.getEntityAttrib("RequestState","idRequestState","idRequestState = 1","");

random = CHelper.Math.Rand(0,EntityArray.Length);

CHelper.trace("Raffle","random "+random);

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

{

   EntityArray[i].setXPath("VacationLeaveState", Approvedstate);

 if (i == random)

 {

         EntityArray[i].setXPath("Rafflewin", true);

         CHelper.trace("Raffle","i raffle "+i);

 }

}

 

Usaremos un evento condicional para mover hacia adelante en el flujo del proceso todos aquellos procesos que han sido aprobados.

 

EntityArray7

Crear un disparador para gestionar el premio

El disparador que iniciará el ganador del proceso deberá ser construido como se muestra en la siguiente imagen.

 

EntityArray8