<< Clic para mostrar Tabla de Contenidos >> Elemento Iterate over Fact |
Introducción
Iterate over Fact permite realizar iteraciones (o ciclos) sobre una relación uno-a-muchos SOLAMENTE cuando la relación no puede ser accedida directamente a través del modelo de datos utilizando un XPath.
Es posible acceder a cada registro de la colección de forma individual para llevar a cabo operaciones, por ejemplo modificar sus valores, tomar los valores para realizar cálculo, validaciones, etc.
La colección que se recorre puede ser filtrada para solo tener acceso a registros específicos.
¿Qué se debe hacer en Bizagi?
1. Cree una expresión de script.
2. Declare las siguientes variables:
- Una variable para guardar la colección
- Una variable para guardar cada registro individualmente a medida que se recorre la colección.
- Una variable contador para controlar el ciclo.
3. Utilizando un elemento de expresión asigne la colección deseada a la primera variable.
4. Incluya el elemento Iterate over Fact: Defina una entidad, la relación (es la relación entre la entidad y la relación de los muchos) y la llave (es el identificador que toma el registro de la entidad para identificar los registros de la colección).
5. Dentro del ciclo de la iteración incluya un elemento de expresión para realizar los cálculos.
6. Guarde la regla.
Ejemplo
Imagine un colegio que está organizado todas las actividades del inicio del nuevo año escolar.
Bizagi le permite al departamento administrativo incluir, como entidades paramétricas, la información para el nuevo año, por ejemplo, lista de útiles escolares, los cursos que tiene el colegio, los profesores con sus respectivas materias y cursos que dictan, etc.
El siguiente es el modelo de datos del proceso. Note que cada profesor es creado en la entidad WFUser. Se asume que cada profesor solamente dicta una materia pero puede dictar en varios cursos.
El objetivo principal del proceso Regresar al Colegio es tener a la mano toda la información necesaria de un curso de modo que pueda ser entregada fácilmente a los padres y estudiantes.
El proceso tiene dos actividades: una para ingresar la información del curso y otra para mostrar e imprimir la información.
Vamos a utilizar el elemento Iterate over Fact para recorrer los profesores y asignarlos a un curso determinado. Recuerde que esta información está guardada en la entidad del sistema WFUser, por lo cual, no se tiene un XPath específico al comienzo del caso para conocer cuales profesores deben ser asignados. La información debe ser buscada y almacenada en el modelo de datos del caso.
1. Cree una regla Al Entrar de la actividad donde se muestra la información.
2. Declare las siguientes variables:
•Grade: El curso solicitado.
•AddTeacher: Variable para incluir cada profesor al XPath del caso.
•Teachers: Variable que guarda la información de todos los profesores en la WFUser.
•Counter: Variable para controlar el ciclo.
•TeachersLength: El tamaño de la colección Teachers.
•IdUser: Variable para guardar la llave de acceso a la WFUser.
•GradesToIterate: Variable que accede a cada registro individualmente.
3. Utilizando un elemento de expresión para recuperar la colección y almacenarlo en la variable de colección Teachers.
Guarde el tamaño de la colección y el grado en las variables respectivas.
//Elimine todos los elementos de la colección para iniciar de cero.
Me.removeRelation("Backtoschool.Teachers",true);
//Guarde los profesores encontrados de la WFUser en la variable Teachers.
var parameters = new FilterParameters();
parameters.AddParameter("@IsTeacher", true);
Teachers = Me.getXPath("entity-list('WFUser', 'IsTeacher=@IsTeacher')",parameters);
//Guarde el tamaño de la colección Teachers en la variable TeachersLength
TeachersLength = Teachers.size();
//Guarde el curso del caso en una variable.
Grade=<Backtoschool.Grade.Id>;
4. Agregue un elemento For para recorrer la entidad WFUser y obtenga el idUser (llave) que será utilizado en el elemento Iterate over Fact.
5. En el elemento For se obtiene el idUser.
6. Incluya los siguientes elementos en el elemento Iterate over Fact.
- La variable para la iteración: GradesToIterate
- La entidad: WFuser
- La relación : Grades
- La llave: idUser (es el identificador que toma el registro de la entidad para identificar los registros de la colección)
5. Incluya en el ciclo un elemento de expresión para realizar algunos cálculos.
//Compare el curso de cada profesor con el curso del caso.
var idGrade = GradesToIterate.SurrogateKeyValue;
if(idGrade==Grade)
{
//Agregue un nuevo elemento (registro) a la colección Backtoschool- Teacher collection. (relación uno a muchos).
AddTeacher = Me.newCollectionItem("Backtoschool.Teachers");
//Asigne el valor del Id de la WFuser al nuevo registro.
AddTeacher.setXPath("Teacher",idUser);
}
En la regla se compara el curso de cada profesor con el curso del caso. Si el curso coincide, el profesor dicta en el curso seleccionado por lo que se debe agregar a la colección del caso Teachers.
6. Guarde la regla.
Last Updated 1/26/2022 3:58:32 PM