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. 

ChampDescriptionNullable
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. 

ChampDescriptionNullable
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);