12.2. Instancia del proceso
Las instancias de procesos se persisten como entidades
ProcessInstanceInfo, las cuales persisten el estado de una instancia de proceso en tiempo de ejecución y almacenan los siguientes datos:
Tabla 12.2.
| Campo | Descripción | Nullable |
|---|---|---|
|
instanceid
|
llave primaria
|
falso
|
|
lastmodificationdate
|
última vez guardado en el almacén de datos
|
N/A
|
|
lastreaddate
|
última lectura desde el almacén de datos
|
N/A
|
|
processid
|
El ID del proceso sobre el cual se basa la instancia
|
falso
|
|
processinstancebytearray
|
grupo de datos binario con estado de instancia del proceso( blob binario)
|
falso
|
|
startdate
|
Fecha de inicio de la instancia del proceso
| |
|
optlock
|
número de la versión utilizado para bloquear el valor para el bloqueo optimista
| |
|
estado
|
Estado de la instancia del proceso
|
falso
|
ProcessInstanceInfo tiene una relación 1:N con la entidad EventTypes.
La entidad
EventTypes contiene los siguientes datos:
Tabla 12.3.
| Campo | Descripción | Nullable |
|---|---|---|
|
instanceid
|
referencia a la instancia de proceso (llave foránea a la
processinstanceinfo)
|
falso
|
|
elemento
|
campo de texto relacionado a un evento por el cual ha pasado una instancia de proceso
| |
Soporte de bloqueo pesimista
El mecanismo de bloqueo predeterminado para la persistencia de procesos es optimista. With multi-thread high concurrency to the same process instance, this locking strategy can result in bad performance.
Con el lanzamiento de la versión 6.1de Red Hat JBoss BPM Suite, esto se puede cambiar en tiempo de ejecución para permitirle al usuario el establecer el bloqueo proceso por proceso y permtir que sea pessimista (el cambio se puede realizar a nivel de sesión KIE o también a nivel del gestor en tiempo de ejecución y no solo a nivel del proceso).
Para hacer que un proceso use un bloqueo pesimista, haga esto en el entorno del tiempo de ejecución:
import org.kie.api.runtime.Environment; import org.kie.api.runtime.EnvironmentName; import org.kie.api.runtime.manager.RuntimeManager; import org.kie.api.runtime.manager.RuntimeManagerFactory; ... // here env is an instance of org.kie.api.runtime.Environment env.set(EnvironmentName.USE_PESSIMISTIC_LOCKING, true); // now create your Runtime Manager using this enviornment RuntimeManager manager = RuntimeManagerFactory.Factory.get().newPerRequestRuntimeManager(environment);