Chapitre 14. Journalisation


Le mécanisme de journalisation vous permet de stocker des informations sur l'exécution d'une instance de processus. Il est fourni par un listener spécial qui écoute le moteur de processus pour être à l'affut de tout événement pertinent à journaliser, de façon à ce que l'information puisse être stockée séparémment de l'information non journlaisée dans une base de données intégrée (h2) ou dans une source de données connectée qui utilise JPA ou Hibernate.
Le module jbpm-audit fournit le listener de l'événement et vous permet également de stocker des informations liées aux processus directement dans une base de données en utilisant JPA ou Hibernate. Les données des entités suivantes sont stockées comme suit :
  • Instance de processus processinstancelog
  • Instance d'élément nodeinstancelog
  • Instance de variable variableinstancelog
Expand
Tableau 14.1. Champs de la table de ProcessInstanceLog
ChampDescriptionNullable
id
La clé primaire de l'entité de journalisation
Non
end_date
La date de fin de l'instance du processus
Oui
processid
Le nom (id) du processus sous-jacent
Oui
processinstanceid
L'id de l'instance du processus
Non
start_date
La date de démarrage de l'instance du processus
Oui
status
Le statut de l'instance du processus
Oui
parentProcessInstanceId
L'id d'instance de processus de l'instance de processus parent si tel est le cas
Oui
résultat
Le résultat de l'instance de processus (comme des information de fin de processus, comme un code d'erreur)
Oui
Expand
Tableau 14.2. Champs de la table de NodeInstanceLog
ChampDescriptionNullable
id
La clé primaire de l'entité de journalisation
Non
log_date
La date de l'événement
Oui
nodeid
L'id du noeud de l'élément de processus sous-jacent
Oui
nodeinstanceid
L'id de l'instance de noeud
Oui
nodename
Le nom du noeud sous-jacent
Oui
processid
L'id du processus sous-jacent
Oui
processinstanceid
L'id de l'instance de processus parente
Non
type
Le type d'événement (0 = enter event, 1 = exit event)
Non
Expand
Tableau 14.3. Les champs de la table de VariableInstanceLog
ChampDescriptionNullable
id
La clé primaire de l'entité de journalisation
Non
log_date
La date de l'événement
Oui
processid
Le nom (id) du processus sous-jacent
Oui
processinstanceid
L'id de l'instance du processus
Non
value
La valeur de la variable au moment de la journalisation
Oui
variableid
La variable est définie dans la définition du processus
Oui
variableinstanceid
l'id de l'instance de la variable
Oui
résultat
Le résultat de l'instance de processus (comme des information de fin de processus, comme un code d'erreur)
Oui
Si nécessaire, définir votre propre modèle d'informations personnalisé et utiliser les listeners d'événement de processus pour extraire l'information.

14.1. Journalisation des événements dans la base de données

Pour journaliser un événement qui a lieu pendant le runtime d'une instance de processus, une instance d'élément, ou une instance de variable, vous devez procéder ainsi :
  1. Mapper les classes de journalisation dans la source de données, de façon à ce que la source de données présentée accepte les entrées de journalisation. Dans Red Hat JBoss EAP, éditez les propriétés de sources de données dans le fichier persistence.xml.

    Exemple 14.1. Les classes ProcessInstanceLog, NodeInstanceLog et VariableInstanceLog activées pour processInstanceDS

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <persistence  version="1.0"  xsi:schemaLocation=
        "http://java.sun.com/xml/ns/persistence
         http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd
         http://java.sun.com/xml/ns/persistence/orm
         http://java.sun.com/xml/ns/persistence/orm_1_0.xsd"
      xmlns:orm="http://java.sun.com/xml/ns/persistence/orm"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xmlns="http://java.sun.com/xml/ns/persistence">
    
      <persistence-unit name="org.jbpm.persistence.jpa">
        <provider>org.hibernate.ejb.HibernatePersistence</provider>
        <jta-data-source>jdbc/processInstanceDS</jta-data-source>
        <class>org.drools.persistence.info.SessionInfo</class>
        <class>org.jbpm.persistence.processinstance.ProcessInstanceInfo</class>
        <class>org.drools.persistence.info.WorkItemInfo</class>
        <class>org.jbpm.process.audit.ProcessInstanceLog</class>
        <class>org.jbpm.process.audit.NodeInstanceLog</class>
        <class>org.jbpm.process.audit.VariableInstanceLog</class>
    
        <properties>
          <property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect"/>
          <property name="hibernate.max_fetch_depth" value="3"/>
          <property name="hibernate.hbm2ddl.auto" value="update"/>
          <property name="hibernate.show_sql" value="true"/>
          <property name="hibernate.transaction.manager_lookup_class"
                    value="org.hibernate.transaction.BTMTransactionManagerLookup"/>
        </properties>
      </persistence-unit>
    </persistence>
    
    Copy to Clipboard Toggle word wrap
  2. Enregistrer in logger dans votre session Kie.

    Exemple 14.2. Importer les loggers

    import org.jbpm.process.audit.AuditLogService;
    import org.jbpm.process.audit.AuditLoggerFactory;
    import org.jbpm.process.audit.AuditLoggerFactory.Type;
    import org.jbpm.process.audit.JPAAuditLogService;
    ...
    
    Copy to Clipboard Toggle word wrap

    Exemple 14.3. Enregistrer un logger dans une session Kie

    @PersistenceUnit(unitName = PERSISTENCE_UNIT_NAME)
      private EntityManagerFactory emf;
    
      private AuditLogService auditLogService;
    @PostConstruct
      public void configure() {
      
      auditLogService = new JPAAuditLogService(emf);
      ((JPAAuditLogService) auditLogService).setPersistenceUnitName(PERSISTENCE_UNIT_NAME);
      
      if( emf == null ) { 
      ((JPAAuditLogService) auditLogService).setPersistenceUnitName(PERSISTENCE_UNIT_NAME);
      }
      
      RuntimeEngine runtime = singletonManager.getRuntimeEngine(EmptyContext.get());
      KieSession ksession = runtime.getKieSession();
      AuditLoggerFactory.newInstance(Type.JPA, ksession, null);
    
      }
    
    Copy to Clipboard Toggle word wrap
  3. En option, appeler la méthode addFilter sur le logger pour filtrer les informations inutiles. Seules les informations acceptées par tous les filtres apparaissent dans la base de données.
  4. Les classes de logger peuvent être visualisées dans la vue d'auditing :
    <dependency>
    	<groupId>org.jbpm</groupId>
    	<artifactId>jbpm-audit</artifactId>
    	<version>6.0.1.Final</version>
    </dependency>
    
    Copy to Clipboard Toggle word wrap
Retour au début
Red Hat logoGithubredditYoutubeTwitter

Apprendre

Essayez, achetez et vendez

Communautés

À propos de la documentation Red Hat

Nous aidons les utilisateurs de Red Hat à innover et à atteindre leurs objectifs grâce à nos produits et services avec un contenu auquel ils peuvent faire confiance. Découvrez nos récentes mises à jour.

Rendre l’open source plus inclusif

Red Hat s'engage à remplacer le langage problématique dans notre code, notre documentation et nos propriétés Web. Pour plus de détails, consultez le Blog Red Hat.

À propos de Red Hat

Nous proposons des solutions renforcées qui facilitent le travail des entreprises sur plusieurs plates-formes et environnements, du centre de données central à la périphérie du réseau.

Theme

© 2025 Red Hat