<< Clic para mostrar Tabla de Contenidos >> 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.
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:
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;
}
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:
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:
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 |
Last Updated 1/26/2022 4:09:08 PM