12.2. Instance de processus
Les instances de processus sont persistées en tant qu'entités
ProcessInstanceInfo, qui persistent l'état d'une instance de processus en cours d'exécution et qui stockent les données suivantes :
Tableau 12.2.
| Champ | Description | Nullable |
|---|---|---|
|
instanceid
|
Clé primaire
|
false
|
|
lastmodificationdate
|
dernière sauvegarde dans le store de données
|
N/A
|
|
lastreaddate
|
dernière lecture dans le store de données
|
N/A
|
|
processid
|
ID du processus sur lequel l'instance est basée
|
false
|
|
processinstancebytearray
|
jeu de données binaire avec état d'instance de processus (blob binaire)
|
false
|
|
startdate
|
Date de démarrage de l'instance de processus
| |
|
optlock
|
numéro de version utilisée comme valeur de verrouillage pour le verrouillage optimiste
| |
|
état
|
État d'instance de processus
|
false
|
ProcessInstanceInfo possède une relation 1:N avec l'entité EventTypes.
L'entité
EventTypes contient les données suivantes :
Tableau 12.3.
| Champ | Description | Nullable |
|---|---|---|
|
instanceid
|
référence à l'instance de processus (clé étrangère de
processinstanceinfo)
|
false
|
|
élément
|
champ de texte lié à un événement subi par une instance de processus
| |
Support du verrouillage pessimiste
Le mécanisme de vérrouillage de persistance des processus par défaut est optimiste. Avec une haute simultanéité multi-thread pour une même instance de processus, cette stratégie de verrouillage peut entraîner de mauvaises performances.
Avec la sortie de la version 6.1 de Red Hat JBoss BPM Suite, cela peut être modifié pendant l'exécution pour permettre à l'utilisateur de définir le verrouillage sur la base d'un processus à la fois, et lui permettre d'être pessimiste (la modification peut être faite au niveau session KIE ou Runtime Manager et pas seulement au niveau du processus).
Pour configurer un processus qui puisse utiliser le verrouillage pessimiste, procédez ainsi dans un environnement de runtime :
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);