[jboss-svn-commits] JBL Code SVN: r21541 - in labs/jbossrules/trunk/drools-process: drools-bam and 10 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Thu Aug 14 08:54:49 EDT 2008


Author: KrisVerlaenen
Date: 2008-08-14 08:54:49 -0400 (Thu, 14 Aug 2008)
New Revision: 21541

Added:
   labs/jbossrules/trunk/drools-process/drools-bam/
   labs/jbossrules/trunk/drools-process/drools-bam/src/
   labs/jbossrules/trunk/drools-process/drools-bam/src/main/
   labs/jbossrules/trunk/drools-process/drools-bam/src/main/java/
   labs/jbossrules/trunk/drools-process/drools-bam/src/main/java/org/
   labs/jbossrules/trunk/drools-process/drools-bam/src/main/java/org/drools/
   labs/jbossrules/trunk/drools-process/drools-bam/src/main/java/org/drools/process/
   labs/jbossrules/trunk/drools-process/drools-bam/src/main/java/org/drools/process/audit/
   labs/jbossrules/trunk/drools-process/drools-bam/src/main/java/org/drools/process/audit/HibernateUtil.java
   labs/jbossrules/trunk/drools-process/drools-bam/src/main/java/org/drools/process/audit/ProcessInstanceDbLog.java
   labs/jbossrules/trunk/drools-process/drools-bam/src/main/java/org/drools/process/audit/ProcessInstanceLog.java
   labs/jbossrules/trunk/drools-process/drools-bam/src/main/java/org/drools/process/audit/WorkingMemoryDbLogger.java
   labs/jbossrules/trunk/drools-process/drools-bam/src/main/resources/
   labs/jbossrules/trunk/drools-process/drools-bam/src/main/resources/AuditLog.hbm.xml
   labs/jbossrules/trunk/drools-process/drools-bam/src/main/resources/hibernate.cfg.xml
   labs/jbossrules/trunk/drools-process/drools-bam/src/test/
   labs/jbossrules/trunk/drools-process/drools-bam/src/test/java/
   labs/jbossrules/trunk/drools-process/drools-bam/src/test/resources/
   labs/jbossrules/trunk/drools-process/drools-bam/src/test/resources/log4j.properties
Log:
- added db event persister

Added: labs/jbossrules/trunk/drools-process/drools-bam/src/main/java/org/drools/process/audit/HibernateUtil.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bam/src/main/java/org/drools/process/audit/HibernateUtil.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-bam/src/main/java/org/drools/process/audit/HibernateUtil.java	2008-08-14 12:54:49 UTC (rev 21541)
@@ -0,0 +1,23 @@
+package org.drools.process.audit;
+
+import org.hibernate.SessionFactory;
+import org.hibernate.cfg.Configuration;
+
+public class HibernateUtil {
+
+    private static final SessionFactory sessionFactory;
+
+    static {
+        try {
+            sessionFactory = new Configuration().configure().buildSessionFactory();
+        } catch (Throwable ex) {
+            System.err.println("Initial SessionFactory creation failed." + ex);
+            throw new ExceptionInInitializerError(ex);
+        }
+    }
+
+    public static SessionFactory getSessionFactory() {
+        return sessionFactory;
+    }
+
+}

Added: labs/jbossrules/trunk/drools-process/drools-bam/src/main/java/org/drools/process/audit/ProcessInstanceDbLog.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bam/src/main/java/org/drools/process/audit/ProcessInstanceDbLog.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-bam/src/main/java/org/drools/process/audit/ProcessInstanceDbLog.java	2008-08-14 12:54:49 UTC (rev 21541)
@@ -0,0 +1,27 @@
+package org.drools.process.audit;
+
+import java.util.List;
+
+import org.hibernate.Session;
+
+public class ProcessInstanceDbLog {
+    
+    public static List<ProcessInstanceLog> findProcessInstances() {
+        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
+        session.beginTransaction();
+        List result = session.createQuery("from ProcessInstanceLog").list();
+        session.getTransaction().commit();
+        return result;
+    }
+
+    public static List<ProcessInstanceLog> findProcessInstances(String processId) {
+        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
+        session.beginTransaction();
+        List result = session.createQuery(
+            "from ProcessInstanceLog as log where log.processId = ?")
+                .setString(0, processId).list();
+        session.getTransaction().commit();
+        return result;
+    }
+
+}

Added: labs/jbossrules/trunk/drools-process/drools-bam/src/main/java/org/drools/process/audit/ProcessInstanceLog.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bam/src/main/java/org/drools/process/audit/ProcessInstanceLog.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-bam/src/main/java/org/drools/process/audit/ProcessInstanceLog.java	2008-08-14 12:54:49 UTC (rev 21541)
@@ -0,0 +1,57 @@
+package org.drools.process.audit;
+
+import java.util.Date;
+
+public class ProcessInstanceLog {
+    
+    private long processInstanceId;
+    private String processId;
+    private Date start;
+    private Date end;
+    
+    ProcessInstanceLog() {
+    }
+    
+    public ProcessInstanceLog(long processInstanceId, String processId) {
+        setProcessInstanceId(processInstanceId);
+        setProcessId(processId);
+        setStart(new Date());
+    }
+    
+    public long getProcessInstanceId() {
+        return processInstanceId;
+    }
+    
+    private void setProcessInstanceId(long processInstanceId) {
+        this.processInstanceId = processInstanceId;
+    }
+    
+    public String getProcessId() {
+        return processId;
+    }
+    
+    public void setProcessId(String processId) {
+        this.processId = processId;
+    }
+    
+    public Date getStart() {
+        return start;
+    }
+    
+    public void setStart(Date start) {
+        this.start = start;
+    }
+    
+    public Date getEnd() {
+        return end;
+    }
+    
+    public void setEnd(Date end) {
+        this.end = end;
+    }
+    
+    public String toString() {
+        return "Process '" + processId + "' [" + processInstanceId + "]";
+    }
+    
+}

Added: labs/jbossrules/trunk/drools-process/drools-bam/src/main/java/org/drools/process/audit/WorkingMemoryDbLogger.java
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bam/src/main/java/org/drools/process/audit/WorkingMemoryDbLogger.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-bam/src/main/java/org/drools/process/audit/WorkingMemoryDbLogger.java	2008-08-14 12:54:49 UTC (rev 21541)
@@ -0,0 +1,48 @@
+package org.drools.process.audit;
+
+import java.util.Date;
+
+import org.drools.WorkingMemory;
+import org.drools.audit.WorkingMemoryLogger;
+import org.drools.audit.event.LogEvent;
+import org.drools.audit.event.RuleFlowLogEvent;
+import org.hibernate.Session;
+
+public class WorkingMemoryDbLogger extends WorkingMemoryLogger {
+    
+    public WorkingMemoryDbLogger(WorkingMemory workingMemory) {
+        super(workingMemory);
+    }
+
+    public void logEventCreated(LogEvent logEvent) {
+        switch (logEvent.getType()) {
+            case LogEvent.BEFORE_RULEFLOW_CREATED:
+                RuleFlowLogEvent event = (RuleFlowLogEvent) logEvent;
+                addLog(event.getProcessInstanceId(), event.getProcessId());
+                break;
+            case LogEvent.AFTER_RULEFLOW_COMPLETED:
+                event = (RuleFlowLogEvent) logEvent;
+                updateLog(event.getProcessInstanceId());
+                break;
+            default:
+                // ignore all other events
+        }
+    }
+
+    private void addLog(long processInstanceId, String processId) {
+        ProcessInstanceLog log = new ProcessInstanceLog(processInstanceId, processId);
+        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
+        session.beginTransaction();
+        session.save(log);
+        session.getTransaction().commit();
+    }
+    
+    private void updateLog(long processInstanceId) {
+        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
+        session.beginTransaction();
+        ProcessInstanceLog log = (ProcessInstanceLog) session.load(ProcessInstanceLog.class, processInstanceId);
+        log.setEnd(new Date());
+        session.update(log);
+        session.getTransaction().commit();
+    }
+}

Added: labs/jbossrules/trunk/drools-process/drools-bam/src/main/resources/AuditLog.hbm.xml
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bam/src/main/resources/AuditLog.hbm.xml	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-bam/src/main/resources/AuditLog.hbm.xml	2008-08-14 12:54:49 UTC (rev 21541)
@@ -0,0 +1,17 @@
+<?xml version="1.0"?>
+<!DOCTYPE hibernate-mapping PUBLIC
+        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
+        "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
+
+<hibernate-mapping>
+
+	<class name="org.drools.process.audit.ProcessInstanceLog" >
+        <id name="processInstanceId">
+            <generator class="native"/>
+        </id>
+        <property name="processId"/>
+        <property name="start" type="timestamp" column="START_DATE"/>
+        <property name="end" type="timestamp" column="END_DATE"/>
+    </class>
+
+</hibernate-mapping>
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-process/drools-bam/src/main/resources/hibernate.cfg.xml
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bam/src/main/resources/hibernate.cfg.xml	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-bam/src/main/resources/hibernate.cfg.xml	2008-08-14 12:54:49 UTC (rev 21541)
@@ -0,0 +1,38 @@
+<?xml version='1.0' encoding='utf-8'?>
+<!DOCTYPE hibernate-configuration PUBLIC
+        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
+        "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
+
+<hibernate-configuration>
+
+    <session-factory>
+
+        <!-- Database connection settings -->
+        <property name="connection.driver_class">org.hsqldb.jdbcDriver</property>
+        <property name="connection.url">jdbc:hsqldb:hsql://localhost</property>
+        <property name="connection.username">sa</property>
+        <property name="connection.password"></property>
+
+        <!-- JDBC connection pool (use the built-in) -->
+        <property name="connection.pool_size">1</property>
+
+        <!-- SQL dialect -->
+        <property name="dialect">org.hibernate.dialect.HSQLDialect</property>
+
+        <!-- Enable Hibernate's automatic session context management -->
+        <property name="current_session_context_class">thread</property>
+
+        <!-- Disable the second-level cache  -->
+        <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
+
+        <!-- Echo all executed SQL to stdout -->
+        <property name="show_sql">false</property>
+
+        <!-- Drop and re-create the database schema on startup -->
+        <property name="hbm2ddl.auto">create</property>
+
+        <mapping resource="AuditLog.hbm.xml"/>
+
+    </session-factory>
+
+</hibernate-configuration>
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-process/drools-bam/src/test/resources/log4j.properties
===================================================================
--- labs/jbossrules/trunk/drools-process/drools-bam/src/test/resources/log4j.properties	                        (rev 0)
+++ labs/jbossrules/trunk/drools-process/drools-bam/src/test/resources/log4j.properties	2008-08-14 12:54:49 UTC (rev 21541)
@@ -0,0 +1,47 @@
+### direct log messages to stdout ###
+log4j.appender.stdout=org.apache.log4j.ConsoleAppender
+log4j.appender.stdout.Target=System.out
+log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
+log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
+
+### direct messages to file hibernate.log ###
+#log4j.appender.file=org.apache.log4j.FileAppender
+#log4j.appender.file.File=hibernate.log
+#log4j.appender.file.layout=org.apache.log4j.PatternLayout
+#log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
+
+### set log levels - for more verbose logging change 'info' to 'debug' ###
+
+log4j.rootLogger=warn, stdout
+
+#log4j.logger.org.hibernate=info
+#log4j.logger.org.hibernate=debug
+
+### log HQL query parser activity
+#log4j.logger.org.hibernate.hql.ast.AST=debug
+
+### log just the SQL
+#log4j.logger.org.hibernate.SQL=debug
+
+### log JDBC bind parameters ###
+#log4j.logger.org.hibernate.type=info
+#log4j.logger.org.hibernate.type=debug
+
+### log schema export/update ###
+#log4j.logger.org.hibernate.tool.hbm2ddl=debug
+
+### log HQL parse trees
+#log4j.logger.org.hibernate.hql=debug
+
+### log cache activity ###
+#log4j.logger.org.hibernate.cache=debug
+
+### log transaction activity
+#log4j.logger.org.hibernate.transaction=debug
+
+### log JDBC resource acquisition
+#log4j.logger.org.hibernate.jdbc=debug
+
+### enable the following line if you want to track down connection ###
+### leakages when using DriverManagerConnectionProvider ###
+#log4j.logger.org.hibernate.connection.DriverManagerConnectionProvider=trace




More information about the jboss-svn-commits mailing list