Iterar usando expresiones

<< Clic para mostrar Tabla de Contenidos >>

Navegación:  Bizagi Studio > Asistente de Procesos > Reglas de Negocio > Ejemplos de reglas de negocio > Colecciones y entidades paramétricas >

Iterar usando expresiones

Introducción

En las expresiones tipo scripting, usted puede iterar elementos como colecciones o entidades de parámetros utilizando diferentes funciones. Este artículo explica la sintaxis que debe usar para iterar diferentes elementos en Bizagi. Todas las funciones que puede usar para iterar elementos en Bizagi pueden devolver tres tipos de objetos: Array List Bizagi, ArraysLists y Arrays. Esta sección describe la sintaxis para iterar cada tipo.

 

Array Lists Bizagi

Un Array List  de Bizagi es un tipo de objeto similar a una colección, que contiene toda la información del objeto iterado. Las siguientes funciones devuelven listas de matrices de Bizagi:

 

GetValuesAsCollection

Me.getXPath("entity-list('','')", parameters)

Me.getXPath(“CollectionXpath”)

<CollectionXpath>

 

Si declara una variable como un tipo de objeto, puede obtener la fila i-ésima de la lista de matriz y el valor de una columna particular de esa fila de la siguiente manera:

 

1.Declare un objeto que contenga toda la tabla como BizagiArrayList.

2.Declarar un objeto para obtener la fila i-ésima (esto es opcional)

3.Obtenga el valor de la fila i-ésima en una columna específica.

 

Aquí hay un ejemplo usando la función entity-list:

 

//Declare a variable that contains an array list with the whole table

var parameters = new FilterParameters();

parameters.AddParameter("@Parameter", <Entity.Parameter>);

var BizagiArrayListObject = Me.getXPath("entity-list('EntityName','Filter')",parameters);

//Iterate

for (var i = 0; i < BizagiArrayListObject.size(); i++){

 //Get the object that contains the row

 var RowObject = BizagiArrayListObject.get(i);

 //Get the value of a column of that row

 var Value = RowObject.getXPath("Attribute");

}

 

El siguiente gráfico muestra que puede obtener en cada objeto en el ejemplo anterior:

 

Iterations1

 

Lo que debe cambiar es cómo define el objeto Bizagi ArrayList con las diferentes funciones. La iteración sigue siendo con la misma sintaxis.

 

Consideraciones

La lista de entidades no se puede usar en trabajos de usuario o eventos de inicio

Hay una consideración con la función entity-list. Esta función está contenida por el objeto Me; sin embargo, el objeto Me está relacionado con un elemento de trabajo, lo que significa que se debe crear una instancia de un caso y un elemento BPMN.

Cuando usa expresiones al salir de Start Events o en User Jobs, no hay ningún elemento de trabajo asociado porque no se ha creado un caso. Por lo tanto, no se puede utilizar ninguna función del objeto Me.

Si necesita iterar una entidad en cualquiera de esos escenarios, debe usar la función GetEntitylist.

 

var Entity = CEntityManager.GetEntity("EntityName").GetEntityList("","Filter","","");

for(var Counter=0; Counter< Entity.Length;Counter++)

{

      //Get the attribute value of the record

        var Value= Entity[Counter].Attributes["AttributeOfTheEntity"].Value;

}

 

Array Lists

Algunas otras funciones devuelven array lists. La forma en que se iteran es diferente de las array list Bizagi. Ahora debe indexar el registro i-ésimo usando corchetes [ ] después del nombre del objeto que contiene el arrayList. Estos son algunos ejemplos de funciones que devuelven ArrayLists:

 

Me.Assignees

CHelper.getUsersForPosition

CHelper.getAssignedWorkItems

 

Aquí encuentra un ejemplo usando la función Me.Assignee:

var ArrayObject= Me.Assignees;

for (var i = 0; i < ArrayListObject.count; i++){

 //Get the object that contains the row

 ArrayObjectRow = ObjectWithAssignee[i];

 //Get the value of a column of that row (e.g. Boss Id)

 ArrayObjectValue = RowObject[i].BossId;

}

El siguiente gráfico muestra que puede obtener en cada objeto en el ejemplo anterior:

 

Iterations2

Arrays

Finalmente, hay pocas funciones que devuelven un objeto de tipo Array. Al igual que en otros lenguajes de programación, las matrices se repiten de manera diferente porque las matrices se consideran datos estáticos, lo que significa que el tamaño es fijo. Estos son algunos ejemplos de funciones que devuelven Array:

 

CEntityManager.GetEntityListWithParameters

CEntityManager.GetEntity

 

Aquí hay un ejemplo de una función que devuelve un array:

 

var ArrayObject = CEntityManager.GetEntity("EntityName").GetEntityListWithParameters("",FilterParameters);

for(var Counter=0; Counter< ArrayObject.Length; Counter++)

{

      //Get the attribute value of the record

        var Value= ArrayObject[Counter].Attributes["Attribute"].Value;

}

 

El siguiente gráfico muestra que puede obtener en cada objeto en el ejemplo anterior:

 

Iterations3

La siguiente tabla resume cómo puede iterar los diferentes elementos usando expresiones en Bizagi:

 

Tipo de Objecto

Iteración

Como obtener el tamaño

Ejemplos

Bizagi Array List

Object.get(i).getXPath("Attribute")

Object.size()

GetValuesAsCollection

Me.getXPath(“entity-list(‘’,’’)",parameters)

Me.getXPath(“CollectionXpath”)

<CollectionXpath>

Array List

Object[i].Attribute

Object.count

Me.Assignees

CHelper.getUsersForPosition

CHelper.getAssignedWorkItems

Array

Object[i].Attributes["Attribute"].Value

Object.Length

CEntityManager.GetEntityListWithParameters

CEntityManager.GetEntity