<< Clic para mostrar Tabla de Contenidos >> Usar entidades Runtime en reglas de negocio |
Introducción
Las entidades Runtime contienen información de sólo lectura relacionada con los datos internos de los casos y procesos de Bizagi. Las entidades Runtime se crean de forma predeterminada en cada proyecto; no se pueden crear entidades adicionales ni agregar o modificar sus atributos.
La información de las entidades Runtime se puede consultar a través de reglas de negocio, y puede ser utilizada exclusivamente dentro de las actividades del proceso.
Dado que las entidades Runtime requieren el contexto de un caso para recuperar información, no están disponibles en objetos globales como reglas de Entidad o reglas de librería.
El punto de partida de la navegación XPath para llegar a los atributos y colecciones disponibles es <Case>. La navegación de estas entidades funciona igual que los Xpaths en la entidad de proceso.
Consideraciones
•Los atributos de las entidades Runtime son de solo lectura y se presentan al mismo nivel que la entidad de proceso al abrir el modelo de datos. Si una regla de negocio intenta escribir valores sobre cualquiera de ellos, se presentará un mensaje de error en tiempo de ejecución.
•La navegación a través de Xpath para todas las entidades Runtime y sus atributos se realiza desde su entidad raíz <Case>
•Todas las colecciones se retornan un Array List de Bizagi. Estas se pueden filtrar y navegar para obtener los datos requeridos.
•Se admiten las funciones de XPath. Por ejemplo, <max ()>, <count ()>, <min)>, etc.
•Las entidades Runtime se pueden utilizar con la función entity-list: Me.getXPath ("entity-list ('CaseInfo', '')");
Se ofrece un ejemplo al final del artículo en el que se obtiene el mismo resultado mediante el uso de Xpaths regulares o una lista de entidades.
•Debido a su naturaleza, Me.setXPath, CHelper.setAttrib y la configuración de valores directamente a través de Xpath no son compatibles. Estas entidades son de solo lectura.
•Las funciones de Xpath que modifican las colecciones no se pueden utilizar, ya que cambian la estructura de las entidades. Funciones como attachCollectionItem, deleteAllCollectionItem, detachAllCollectionItem y newCollectionItem.
•La función CHelper.getEntityAttrib no admite colecciones de entidades Runtime.
Construyendo XPaths para las entidades Runtime
Teniendo en cuenta el modelo de datos que se presenta a continuación, la entidad Case, es la entidad principal para la navegación y se muestra en azul. Las relaciones de uno-a-muchos son rojas y las relaciones de muchos-a-muchos son verdes.
Podemos construir Xpaths de la siguiente manera:
XPaths simples
•Número del caso: <Case.CaseNumber>
•Nombre para mostrar del proceso: <Case.ProcessDisplayName>
•Nombre completo del creador del caso: <Case.CreatorUser.fullName>
As Creator user is related to WFUser table, all the WFUser attributes are available through Xpath, such as email, delegate, language, boss, and so on.
Como el usuario creador del caso está relacionado con la tabla WFUser, todos los atributos WFUser, como correo electrónico, delegado, idioma, jefe, etc., están disponibles a través de Xpath.
Xpaths de colección
•Nombre completo de todas las actividades creadas en el proceso: <Case.Activities.ActivityName>
Esta información se devuelve en forma de un Array List de Bizagi.
Un ejemplo del arreglo retornado puede ser: [Solicitar licencia de vacaciones, Aprobar solicitud]
•Nombre completo de todos los participantes del caso: <Case.Activities.Performer.fullName>
Esta información se devuelve en forma de un Array List de Bizagi.
El arreglo retornado puede ser: [John Doe, Sarah Brown]
•Tipos de asignaciones por las que ha pasado el caso: <Case.Activities.PerformerHistory.AllocationType>
Esta información se devuelve en forma de un Array List de Bizagi con el tipo de asignación por actividad. Así, cada actividad se registra más de una vez.
El arreglo retornado puede ser: [Candidate, BestCandidate, Assignee, Candidate, BestCandidate, Assignee]
•Lista de Participantes, considerando cada tipo de Asignación: <Case.Activities.PerformerHistory.IdAllocationPerformer.fullName>
Esta información se devuelve en forma de un Array List de Bizagi con nombres repetidos, dada la estructura de la entidad.
El arreglo retornado puede ser: [John Doe, John Doe, John Doe, Sarah Brown, Sarah Brown, Sarah Brown]
Ejemplo
El siguiente ejemplo muestra dos formas en las que se puede obtener la misma información.
Ambas opciones retornan la misma información: el estado por el que ha pasado un caso.
Navegando por entity-list
var parameters = new FilterParameters();
parameters.AddParameter("@idcase", Me.Case.Id);
var BizagiArrayListObject = Me.getXPath("entity-list('BA_CaseStatusHistory','IdCase =@idcase')",parameters);
for (var i = 0; i < BizagiArrayListObject.size(); i++){
var RowObject = BizagiArrayListObject.get(i);
var Value = RowObject.getXPath("CaseStatus");
}
Navegando usando Xpath
var Cases = <Case.CaseStatusHistory.CaseStatus>;
for (var j = 0; j < Cases.size(); j++){
var RowObject2 = Cases.get(j);
}
Ejemplo 2
El siguiente código obtiene el nombre de la tarea actual, basándose en las entidades Runtime:
var idworkitem = Me.Id;
var CurrentActivity = Me.getXPath("Case.Activities[IdActivity=" + idworkitem + "]");
CurrentActivity.getXPath("ActivityName");
Ejemplo 3
El siguiente código obtiene el identificador del primer usuario asignado a la tarea actual, utilizando las entidades Runtime:
var idworkitem = Me.Id;
var CurrentActivity = Me.getXPath("Case.Activities[IdActivity=" + idworkitem + "]");
var user = CurrentActivity.getXPath("Performer").get(0);
user.getXPath("idUser");
Last Updated 1/26/2022 4:08:26 PM