Capítulo 14. Registro em Log


O mecanismo de registro em log permite que você armazene informações sobre a execução de uma instância de processo. Ele é fornecido por um ouvinte de eventos especial que ouve o Mecanismo de Processos para qualquer evento relevante a ser registrado em log. Assim, as informações podem ser armazenadas separadamente de outras informações sem log no banco de dados interno do servidor (h2) ou em uma fonte de dados conectada usando JPA ou Hibernate.
O módulo jbpm-audit fornece o ouvinte de eventos e também permite que você armazene diretamente informações relacionadas ao processo em um banco de dados usando JPA ou Hibernate. Os dados das entidades abaixo são armazenados, como a seguir:
  • Instância de processo, como processinstancelog
  • Instância de elemento, como nodeinstancelog
  • Instância de variável, como variableinstancelog
Expand
Tabela 14.1. Campos da Tabela ProcessInstanceLog
CampoDescriçãoAnulável
id
Chave primária da entidade de log
Não
end_date
Data de término da instância do processo
Sim
processid
Nome (id) do processo subjacente
Sim
processinstanceid
Id da instância do processo
Não
start_date
Data de início da instância do processo
Sim
status
Status da instância do processo
Sim
parentProcessInstanceId
Id da instância do processo da instância do processo pai, caso aplicável
Sim
outcome
Resultado da instância do processo (detalhes sobre a conclusão do processo, como código de erro)
Sim
Expand
Tabela 14.2. Campos da Tabela NodeInstanceLog
CampoDescriçãoAnulável
id
Chave primária da entidade de log
Não
log_date
Data do evento
Sim
nodeid
Id do nó do elemento de processo subjacente
Sim
nodeinstanceid
Id da instância do nó
Sim
nodename
Nome do nó subjacente
Sim
processid
Id do processo subjacente
Sim
processinstanceid
Id da instância do processo pai
Não
type
Tipo de evento (0 = evento de entrada, 1 = evento de saída)
Não
Expand
Tabela 14.3. Campos da Tabela VariableInstanceLog
CampoDescriçãoAnulável
id
Chave primária da entidade de log
Não
log_date
Data do evento
Sim
processid
Nome (id) do processo subjacente
Sim
processinstanceid
Id da instância do processo
Não
value
Valor da variável na hora do log
Sim
variableid
Id da variável estabelecida na definição do processo
Sim
variableinstanceid
Id da instância da variável
Sim
outcome
Resultado da instância do processo (detalhes sobre a conclusão do processo, como código de erro)
Sim
Se necessário, defina seu próprio modelo de dados das informações personalizadas e use os ouvintes de eventos do processo para extrair as informações.

14.1. Registrando Eventos no Log do Banco de Dados

Para registrar um evento que ocorre durante o tempo de execução em uma instância de processo, uma instância de elemento ou uma instância de variável, siga as instruções a seguir:
  1. Mapeie as classes de log na fonte de dados para que a fonte de dados fornecida aceite as entradas de log. No Red Hat JBoss EAP, edite as propriedades da fonte de dados no arquivo persistence.xml.

    Exemplo 14.1. Classes ProcessInstanceLog, NodeInstanceLog e VariableInstanceLog habilitadas por 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. Registre um agente na sua Sessão Kie.

    Exemplo 14.2. Importando os Agentes

    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

    Exemplo 14.3. Registrando um Agente a uma Sessão 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. Facultativamente, chame o método addFilter no agente para remover as informações irrelevantes. Apenas as informações aceitas por todos os filtros aparecem no banco de dados.
  4. As classes do agente podem ser exibidas no Modo de Exibição de Auditoria:
    <dependency>
    	<groupId>org.jbpm</groupId>
    	<artifactId>jbpm-audit</artifactId>
    	<version>6.0.1.Final</version>
    </dependency>
    
    Copy to Clipboard Toggle word wrap
Voltar ao topo
Red Hat logoGithubredditYoutubeTwitter

Aprender

Experimente, compre e venda

Comunidades

Sobre a documentação da Red Hat

Ajudamos os usuários da Red Hat a inovar e atingir seus objetivos com nossos produtos e serviços com conteúdo em que podem confiar. Explore nossas atualizações recentes.

Tornando o open source mais inclusivo

A Red Hat está comprometida em substituir a linguagem problemática em nosso código, documentação e propriedades da web. Para mais detalhes veja o Blog da Red Hat.

Sobre a Red Hat

Fornecemos soluções robustas que facilitam o trabalho das empresas em plataformas e ambientes, desde o data center principal até a borda da rede.

Theme

© 2025 Red Hat