[jbpm-commits] JBoss JBPM SVN: r2269 - in projects/jbpm-spec/trunk/modules/ri: src/main/java/org/jboss/bpm/ri/client and 5 other directories.

do-not-reply at jboss.org do-not-reply at jboss.org
Wed Sep 17 09:23:25 EDT 2008


Author: thomas.diesler at jboss.com
Date: 2008-09-17 09:23:25 -0400 (Wed, 17 Sep 2008)
New Revision: 2269

Added:
   projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/client/HibernatePersistenceService.java
   projects/jbpm-spec/trunk/modules/ri/src/main/resources/hibernate.cfg.mysql.xml
   projects/jbpm-spec/trunk/modules/ri/src/test/java/org/jboss/bpm/client/
   projects/jbpm-spec/trunk/modules/ri/src/test/java/org/jboss/bpm/client/PersistenceServiceTest.java
Modified:
   projects/jbpm-spec/trunk/modules/ri/pom.xml
   projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/client/ExecutionManagerImpl.java
   projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/client/ProcessManagerImpl.java
   projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/AbstractElementImpl.java
   projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/ProcessImpl.java
   projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/StartEventImpl.java
   projects/jbpm-spec/trunk/modules/ri/src/test/resources/jbpm-beans.xml
Log:
Persistence simple save,load,delete

Modified: projects/jbpm-spec/trunk/modules/ri/pom.xml
===================================================================
--- projects/jbpm-spec/trunk/modules/ri/pom.xml	2008-09-17 08:08:02 UTC (rev 2268)
+++ projects/jbpm-spec/trunk/modules/ri/pom.xml	2008-09-17 13:23:25 UTC (rev 2269)
@@ -1,17 +1,18 @@
 <?xml version="1.0" encoding="UTF-8"?>
 
-<!-- ====================================================================== -->
-<!--                                                                        -->
-<!--  JBoss, the OpenSource J2EE webOS                                      -->
-<!--                                                                        -->
-<!--  Distributable under LGPL license.                                     -->
-<!--  See terms of license at http://www.gnu.org.                           -->
-<!--                                                                        -->
-<!-- ====================================================================== -->
+  <!-- ====================================================================== -->
+  <!--                                                                        -->
+  <!--  JBoss, the OpenSource J2EE webOS                                      -->
+  <!--                                                                        -->
+  <!--  Distributable under LGPL license.                                     -->
+  <!--  See terms of license at http://www.gnu.org.                           -->
+  <!--                                                                        -->
+  <!-- ====================================================================== -->
 
-<!-- $Id$ 
+  <!-- $Id$ 
 -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <name>jBPM Spec - RI</name>
   <groupId>org.jbpm.spec</groupId>
@@ -26,6 +27,48 @@
     <relativePath>../../pom.xml</relativePath>
   </parent>
 
+  <!-- Properties -->
+  <properties>
+    <hibernate.version>3.2.6.ga</hibernate.version>
+    <hibernate.annotations.version>3.3.1.GA</hibernate.annotations.version>
+    <hibernate.validator.version>3.0.0.ga</hibernate.validator.version>
+    <hsqldb.version>1.8.0.7</hsqldb.version>
+    <mysql.connector.version>5.1.6</mysql.connector.version>
+  </properties>
+
+  <!-- DependencyManagement -->
+  <dependencyManagement>
+    <dependencies>
+      <dependency>
+        <groupId>hsqldb</groupId>
+        <artifactId>hsqldb</artifactId>
+        <version>${hsqldb.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.hibernate</groupId>
+        <artifactId>hibernate</artifactId>
+        <version>${hibernate.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.hibernate</groupId>
+        <artifactId>hibernate-annotations</artifactId>
+        <version>${hibernate.annotations.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.hibernate</groupId>
+        <artifactId>hibernate-validator</artifactId>
+        <version>${hibernate.validator.version}</version>
+      </dependency>
+
+      <!-- Database Driver Versions  -->
+      <dependency>
+        <groupId>mysql</groupId>
+        <artifactId>mysql-connector-java</artifactId>
+        <version>${mysql.connector.version}</version>
+      </dependency>
+    </dependencies>
+  </dependencyManagement>
+
   <!-- Dependencies -->
   <dependencies>
     <dependency>
@@ -38,5 +81,87 @@
       <groupId>org.mvel</groupId>
       <artifactId>mvel</artifactId>
     </dependency>
+    <dependency>
+      <groupId>org.hibernate</groupId>
+      <artifactId>hibernate</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.hibernate</groupId>
+      <artifactId>hibernate-annotations</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.hibernate</groupId>
+      <artifactId>hibernate-validator</artifactId>
+    </dependency>
   </dependencies>
+
+  <!-- Profiles -->
+  <profiles>
+
+    <!-- 
+      Name:  no-database
+      Descr: Setup the default database   
+    -->
+    <profile>
+      <id>no-database</id>
+      <activation>
+        <property>
+          <name>!database</name>
+        </property>
+      </activation>
+      <properties>
+        <database>hsqldb</database>
+      </properties>
+      <dependencies>
+        <dependency>
+          <groupId>hsqldb</groupId>
+          <artifactId>hsqldb</artifactId>
+          <scope>test</scope>
+        </dependency>
+      </dependencies>
+    </profile>
+
+    <!-- 
+      Name:  hsqldb
+      Descr: Hypersonic Database Setup   
+    -->
+    <profile>
+      <id>hsqldb</id>
+      <activation>
+        <property>
+          <name>database</name>
+          <value>hsqldb</value>
+        </property>
+      </activation>
+      <dependencies>
+        <dependency>
+          <groupId>hsqldb</groupId>
+          <artifactId>hsqldb</artifactId>
+          <scope>test</scope>
+        </dependency>
+      </dependencies>
+    </profile>
+
+    <!-- 
+      Name:  mysql
+      Descr: MySQL Database Setup   
+    -->
+    <profile>
+      <id>mysql</id>
+      <activation>
+        <property>
+          <name>database</name>
+          <value>mysql</value>
+        </property>
+      </activation>
+      <dependencies>
+        <dependency>
+          <groupId>mysql</groupId>
+          <artifactId>mysql-connector-java</artifactId>
+          <scope>test</scope>
+        </dependency>
+      </dependencies>
+    </profile>
+
+  </profiles>
 </project>
\ No newline at end of file

Modified: projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/client/ExecutionManagerImpl.java
===================================================================
--- projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/client/ExecutionManagerImpl.java	2008-09-17 08:08:02 UTC (rev 2268)
+++ projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/client/ExecutionManagerImpl.java	2008-09-17 13:23:25 UTC (rev 2269)
@@ -24,6 +24,7 @@
 // $Id$
 
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 import javax.management.ObjectName;
@@ -258,7 +259,12 @@
   private StartEvent getNoneStartEvent(Process proc)
   {
     StartEvent start = null;
-    for (StartEvent aux : proc.getFlowObjects(StartEvent.class))
+    
+    List<StartEvent> startEvents = proc.getFlowObjects(StartEvent.class);
+    if (startEvents.size() == 0)
+      throw new InvalidProcessException("Process does not have a start event");
+      
+    for (StartEvent aux : startEvents)
     {
       if (aux.getTrigger().size() == 0)
       {

Added: projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/client/HibernatePersistenceService.java
===================================================================
--- projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/client/HibernatePersistenceService.java	                        (rev 0)
+++ projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/client/HibernatePersistenceService.java	2008-09-17 13:23:25 UTC (rev 2269)
@@ -0,0 +1,124 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.bpm.ri.client;
+
+// $Id$
+
+import javax.management.ObjectName;
+
+import org.hibernate.Hibernate;
+import org.hibernate.ObjectNotFoundException;
+import org.hibernate.SessionFactory;
+import org.hibernate.Transaction;
+import org.hibernate.cfg.AnnotationConfiguration;
+import org.hibernate.classic.Session;
+import org.jboss.bpm.ProcessNotFoundException;
+import org.jboss.bpm.client.PersistenceService;
+import org.jboss.bpm.model.Process;
+import org.jboss.bpm.ri.model.impl.AbstractElementImpl;
+import org.jboss.bpm.ri.model.impl.ProcessImpl;
+import org.jboss.bpm.ri.model.impl.SupportingElementImpl;
+
+/**
+ * A Hibernate based persistence service for a process.
+ * 
+ * @author thomas.diesler at jboss.com
+ * @since 17-Sep-2008
+ */
+public class HibernatePersistenceService implements PersistenceService
+{
+  private String hibernateConfig;
+  private SessionFactory sessionFactory;
+
+  public void setHibernateConfig(String hibernateConfig)
+  {
+    this.hibernateConfig = hibernateConfig;
+  }
+
+  public void saveProcess(Process proc)
+  {
+    Session session = getSessionFactory().openSession();
+    Transaction tx = session.beginTransaction();
+    try
+    {
+      session.saveOrUpdate(proc);
+      tx.commit();
+    }
+    finally
+    {
+      session.close();
+    }
+  }
+
+  public Process loadProcess(ObjectName procID)
+  {
+    Process proc = null;
+    Session session = getSessionFactory().openSession();
+    try
+    {
+      String key = procID.getKeyProperty("id");
+      proc = (Process)session.load(ProcessImpl.class, key);
+      Hibernate.initialize(proc);
+    }
+    catch (ObjectNotFoundException ex)
+    {
+      throw new ProcessNotFoundException("Cannot find process: " + procID);
+    }
+    finally
+    {
+      session.close();
+    }
+    return proc;
+  }
+  
+  public void deleteProcess(Process proc)
+  {
+    Session session = getSessionFactory().openSession();
+    Transaction tx = session.beginTransaction();
+    try
+    {
+      session.delete(proc);
+      tx.commit();
+    }
+    finally
+    {
+      session.close();
+    }
+  }
+
+  private SessionFactory getSessionFactory()
+  {
+    if (sessionFactory == null)
+    {
+      AnnotationConfiguration anConfig = new AnnotationConfiguration();
+      for(Class clazz : ProcessImpl.class.getClasses())
+      {
+        System.out.println(clazz);
+      }
+      anConfig.addAnnotatedClass(ProcessImpl.class);
+      anConfig.addAnnotatedClass(SupportingElementImpl.class);
+      anConfig.addAnnotatedClass(AbstractElementImpl.class);
+      sessionFactory = anConfig.configure(hibernateConfig).buildSessionFactory();
+    }
+    return sessionFactory;
+  }
+}


Property changes on: projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/client/HibernatePersistenceService.java
___________________________________________________________________
Name: svn:keywords
   + Id Revision
Name: svn:eol-style
   + LF

Modified: projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/client/ProcessManagerImpl.java
===================================================================
--- projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/client/ProcessManagerImpl.java	2008-09-17 08:08:02 UTC (rev 2268)
+++ projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/client/ProcessManagerImpl.java	2008-09-17 13:23:25 UTC (rev 2269)
@@ -25,11 +25,15 @@
 
 import java.util.Map;
 
+import javax.management.ObjectName;
+
 import org.jboss.bpm.InvalidProcessException;
 import org.jboss.bpm.client.DialectHandler;
 import org.jboss.bpm.client.DialectRegistry;
+import org.jboss.bpm.client.PersistenceService;
 import org.jboss.bpm.client.ProcessManager;
 import org.jboss.bpm.model.Process;
+import org.jboss.bpm.model.Process.ProcessStatus;
 import org.jboss.bpm.ri.model.impl.ProcessImpl;
 
 /**
@@ -40,6 +44,9 @@
  */
 public class ProcessManagerImpl extends ProcessManager
 {
+  // The persistence service
+  protected PersistenceService persistenceService;
+  
   public void setDialectHandlers(Map<String, DialectHandler> dialectHandlers)
   {
     this.dialectHandlers = dialectHandlers;
@@ -50,6 +57,11 @@
     this.dialectRegistry = dialectRegistry;
   }
 
+  public void setPersistenceService(PersistenceService persistenceService)
+  {
+    this.persistenceService = persistenceService;
+  }
+
   @Override
   public Process registerProcess(Process proc)
   {
@@ -80,4 +92,35 @@
     procImpl.unregister(procImpl);
     super.unregisterProcess(procImpl.getID());
   }
+
+  public void saveProcess(Process proc)
+  {
+    assertPersistenceService();
+    persistenceService.saveProcess(proc);
+  }
+
+  public Process loadProcess(ObjectName procID)
+  {
+    assertPersistenceService();
+    return persistenceService.loadProcess(procID);
+  }
+
+  public void deleteProcess(Process proc)
+  {
+    assertPersistenceService();
+    
+    ProcessStatus state = proc.getProcessStatus();
+    if (state == ProcessStatus.Active || state == ProcessStatus.Completing)
+      throw new IllegalStateException("Cannot a process that in state: " + state);
+    
+    unregisterProcess(proc.getID());
+    
+    persistenceService.deleteProcess(proc);
+  }
+
+  private void assertPersistenceService()
+  {
+    if (persistenceService == null)
+      throw new IllegalStateException("No persistence service registered");
+  }
 }

Modified: projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/AbstractElementImpl.java
===================================================================
--- projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/AbstractElementImpl.java	2008-09-17 08:08:02 UTC (rev 2268)
+++ projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/AbstractElementImpl.java	2008-09-17 13:23:25 UTC (rev 2269)
@@ -24,9 +24,12 @@
 //$Id$
 
 import javax.management.ObjectName;
+import javax.persistence.Column;
+import javax.persistence.Id;
 
 import org.jboss.bpm.model.AbstractElement;
 import org.jboss.bpm.model.Process;
+import org.jboss.util.id.UID;
 
 /**
  * The parrent of all Elements
@@ -41,7 +44,26 @@
   
   // The cached ID
   protected transient ObjectName id;
+  // The persistent key
+  private transient String key;
   
+  public AbstractElementImpl()
+  {
+    this.key = new UID().toString();
+  }
+
+  @Id
+  @Column(name = "id")
+  public String getKey()
+  {
+    return key;
+  }
+
+  public void setKey(String key)
+  {
+    this.key = key;
+  }
+
   /**
    * Get the ID of this element
    */

Modified: projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/ProcessImpl.java
===================================================================
--- projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/ProcessImpl.java	2008-09-17 08:08:02 UTC (rev 2268)
+++ projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/ProcessImpl.java	2008-09-17 13:23:25 UTC (rev 2269)
@@ -32,6 +32,12 @@
 import java.util.List;
 
 import javax.management.ObjectName;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.Inheritance;
+import javax.persistence.Table;
+import javax.persistence.Transient;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -52,7 +58,6 @@
 import org.jboss.bpm.model.Property;
 import org.jboss.bpm.model.StartEvent;
 import org.jboss.bpm.runtime.Attachments;
-import org.jboss.util.id.UID;
 
 /**
  * A Process is any Activity performed within a company or organization.
@@ -60,6 +65,8 @@
  * @author thomas.diesler at jboss.com
  * @since 08-Jul-2008
  */
+ at Entity
+ at Table(name = "JBPM_PROCESS")
 public class ProcessImpl extends SupportingElementImpl implements Process, MutablePropertySupport
 {
   // provide logging
@@ -80,30 +87,50 @@
   // the status of the process
   private ProcessStatus status = ProcessStatus.None;
   // The possible exception that caused the process to abort
-  private RuntimeException runtimeException;
+  private transient RuntimeException runtimeException;
 
+  public ProcessImpl(String name)
+  {
+    this.name = name;
+  }
+
+  // Persistence ctor
+  protected ProcessImpl()
+  {
+  }
+
+  @Id
+  @Column(name = "id")
   @Override
+  public String getKey()
+  {
+    return super.getKey();
+  }
+
+  @Override
+  @Transient
   public ObjectName getID()
   {
     if (id == null)
     {
       StringBuilder str = new StringBuilder(Constants.ID_DOMAIN + ":");
-      str.append("type=Process,name=" + getName() + ",id=" + new UID());
+      str.append("type=Process,name=" + getName() + ",id=" + getKey());
       id = ObjectNameFactory.create(str.toString());
     }
     return id;
   }
-  
-  public ProcessImpl(String name)
-  {
-    this.name = name;
-  }
 
   public String getName()
   {
     return name;
   }
 
+  public void setName(String name)
+  {
+    this.name = name;
+  }
+
+  @Transient
   public List<Assignment> getAssignments()
   {
     return Collections.unmodifiableList(assignments);
@@ -114,22 +141,26 @@
     this.assignments.add(assignment);
   }
 
+  @Transient
   public List<InputSet> getInputSets()
   {
     throw new NotImplementedException("JBPM-1644", "Process InputSets");
   }
 
+  @Transient
   public List<OutputSet> getOutputSets()
   {
     throw new NotImplementedException("JBPM-1645", "Process OutputSets");
   }
 
+  @Transient
   public List<String> getPerformers()
   {
     throw new NotImplementedException("JBPM-1646", "Process Performers");
   }
 
-  public Process.ProcessType getProcessType()
+  @Transient
+  public ProcessType getProcessType()
   {
     throw new NotImplementedException("JBPM-1647", "Process Type");
   }
@@ -156,11 +187,13 @@
     return prop != null ? prop.getValue(clazz) : null;
   }
 
+  @Transient
   public List<Property> getProperties()
   {
     return Collections.unmodifiableList(props);
   }
 
+  @Transient
   public List<String> getPropertyNames()
   {
     List<String> names = new ArrayList<String>();
@@ -181,6 +214,7 @@
     flowObjects.add(flowObject);
   }
 
+  @Transient
   public RuntimeException getRuntimeException()
   {
     return runtimeException;
@@ -192,14 +226,6 @@
     setProcessStatus(ProcessStatus.Aborted);
   }
 
-  public List<FlowObject> getFlowObjects()
-  {
-    if (status == ProcessStatus.None)
-      return flowObjects;
-
-    return Collections.unmodifiableList(flowObjects);
-  }
-
   public ObjectName startProcess()
   {
     return startProcessInternal(null);
@@ -216,7 +242,7 @@
     em.startProcess(this, att);
     return getID();
   }
-  
+
   public void resetProcess()
   {
     log.debug("Reset process: " + this);
@@ -250,6 +276,15 @@
     return em.waitForEnd(this, timeout);
   }
 
+  @Transient
+  public List<FlowObject> getFlowObjects()
+  {
+    if (status == ProcessStatus.None)
+      return flowObjects;
+
+    return Collections.unmodifiableList(flowObjects);
+  }
+
   public FlowObject getFlowObject(String name)
   {
     if (name == null)
@@ -289,6 +324,7 @@
     this.status = status;
   }
 
+  @Transient
   public List<Message> getMessages()
   {
     return Collections.unmodifiableList(messages);
@@ -311,7 +347,7 @@
     }
     return null;
   }
-  
+
   public ProcessImpl makeDeepCopy() throws Exception
   {
     ByteArrayOutputStream baos = new ByteArrayOutputStream();
@@ -387,7 +423,7 @@
     }
     super.destroy(proc);
   }
-  
+
   protected void initializeMessageRef(Message msgRef)
   {
     String msgName = msgRef.getName();

Modified: projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/StartEventImpl.java
===================================================================
--- projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/StartEventImpl.java	2008-09-17 08:08:02 UTC (rev 2268)
+++ projects/jbpm-spec/trunk/modules/ri/src/main/java/org/jboss/bpm/ri/model/impl/StartEventImpl.java	2008-09-17 13:23:25 UTC (rev 2269)
@@ -28,6 +28,8 @@
 import java.util.List;
 
 import javax.management.ObjectName;
+import javax.persistence.Entity;
+import javax.persistence.Table;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -57,6 +59,8 @@
  * @author thomas.diesler at jboss.com
  * @since 08-Jul-2008
  */
+ at Entity
+ at Table(name = "JBPM_START_EVENT")
 public class StartEventImpl extends EventImpl implements StartEvent, SingleOutFlowSetterSupport
 {
   // provide logging

Added: projects/jbpm-spec/trunk/modules/ri/src/main/resources/hibernate.cfg.mysql.xml
===================================================================
--- projects/jbpm-spec/trunk/modules/ri/src/main/resources/hibernate.cfg.mysql.xml	                        (rev 0)
+++ projects/jbpm-spec/trunk/modules/ri/src/main/resources/hibernate.cfg.mysql.xml	2008-09-17 13:23:25 UTC (rev 2269)
@@ -0,0 +1,33 @@
+<?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>
+  
+      <property name="hibernate.dialect">org.hibernate.dialect.MySQLInnoDBDialect</property>
+  
+      <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
+      <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/jbpmspec</property>
+      <property name="hibernate.connection.username">jbpmspec</property>
+      <property name="hibernate.connection.password"></property>
+      <property name="hibernate.query.substitutions">true 1, false 0</property>
+  
+      <!-- ################################### -->
+      <!-- # common settings                 # -->
+      <!-- ################################### -->
+  
+      <!-- Automatic schema creation -->
+      <property name="hibernate.hbm2ddl.auto">create-drop</property>
+  
+      <!-- Simple memory-only cache -->
+      <property name="hibernate.cache.provider_class">org.hibernate.cache.HashtableCacheProvider</property>
+  
+      <!-- logging properties --> 
+      <property name="hibernate.format_sql">true</property>
+      <property name="hibernate.use_sql_comments">true</property>
+  
+  </session-factory>
+</hibernate-configuration>


Property changes on: projects/jbpm-spec/trunk/modules/ri/src/main/resources/hibernate.cfg.mysql.xml
___________________________________________________________________
Name: svn:keywords
   + Id Revision
Name: svn:eol-style
   + LF

Added: projects/jbpm-spec/trunk/modules/ri/src/test/java/org/jboss/bpm/client/PersistenceServiceTest.java
===================================================================
--- projects/jbpm-spec/trunk/modules/ri/src/test/java/org/jboss/bpm/client/PersistenceServiceTest.java	                        (rev 0)
+++ projects/jbpm-spec/trunk/modules/ri/src/test/java/org/jboss/bpm/client/PersistenceServiceTest.java	2008-09-17 13:23:25 UTC (rev 2269)
@@ -0,0 +1,104 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.bpm.client;
+
+// $Id$
+
+import javax.management.ObjectName;
+
+import org.jboss.bpm.ProcessNotFoundException;
+import org.jboss.bpm.model.Process;
+import org.jboss.bpm.model.ProcessBuilder;
+import org.jboss.bpm.model.ProcessBuilderFactory;
+import org.jboss.bpm.test.DefaultEngineTestCase;
+
+/**
+ * Test the ExecutionManager
+ * 
+ * @author thomas.diesler at jboss.com
+ * @since 08-Jul-2008
+ */
+public class PersistenceServiceTest extends DefaultEngineTestCase
+{
+  /**
+   * Test save, load, delete of a trivial process
+   */
+  public void testSaveLoadDelete() throws Exception
+  {
+    ProcessManager pm = ProcessManager.locateProcessManager();
+
+    // Save the process
+    Process proc = getProcess();
+    pm.saveProcess(proc);
+
+    // Load the process
+    ObjectName procID = proc.getID();
+    Process procLoad = pm.loadProcess(procID);
+    assertEquals("Loaded process name equals", proc.getName(), procLoad.getName());
+
+    // Delete the process
+    pm.deleteProcess(proc);
+    try
+    {
+      pm.loadProcess(procID);
+      fail("ProcessNotFoundException expected");
+    }
+    catch (ProcessNotFoundException ex)
+    {
+      // expected
+    }
+  }
+
+  /**
+   * Test execution of a loaded process
+   */
+  public void _testStartLoaded() throws Exception
+  {
+    ProcessManager pm = ProcessManager.locateProcessManager();
+
+    // Save the process
+    Process proc = getProcess();
+    pm.saveProcess(proc);
+    try
+    {
+      // Load the process
+      proc = pm.loadProcess(proc.getID());
+      
+      // Start the process
+      proc.startProcess();
+      proc.waitForEnd();
+    }
+    finally
+    {
+      // Delete the process
+      pm.deleteProcess(proc);
+    }
+  }
+  
+  private Process getProcess()
+  {
+    ProcessBuilder procBuilder = ProcessBuilderFactory.newInstance().newProcessBuilder();
+    procBuilder.addProcess(getName()).addStartEvent("Start").addSequenceFlow("Task");
+    procBuilder.addTask("Task").addSequenceFlow("End").addEndEvent("End");
+    return procBuilder.getProcess();
+  }
+}


Property changes on: projects/jbpm-spec/trunk/modules/ri/src/test/java/org/jboss/bpm/client/PersistenceServiceTest.java
___________________________________________________________________
Name: svn:keywords
   + Id Revision
Name: svn:eol-style
   + LF

Modified: projects/jbpm-spec/trunk/modules/ri/src/test/resources/jbpm-beans.xml
===================================================================
--- projects/jbpm-spec/trunk/modules/ri/src/test/resources/jbpm-beans.xml	2008-09-17 08:08:02 UTC (rev 2268)
+++ projects/jbpm-spec/trunk/modules/ri/src/test/resources/jbpm-beans.xml	2008-09-17 13:23:25 UTC (rev 2269)
@@ -23,6 +23,7 @@
   <!-- The ProcessManager -->
   <bean name="jBPMProcessManager" class="org.jboss.bpm.ri.client.ProcessManagerImpl">
     <property name="dialectRegistry"><inject bean="jBPMDialectRegistry"/></property>
+    <property name="persistenceService"><inject bean="jBPMPersistenceService"/></property>
     <property name="dialectHandlers">
       <map keyClass="java.lang.String" valueClass="org.jboss.bpm.client.DialectHandler">
       </map>
@@ -41,4 +42,9 @@
     </property>
   </bean>
   
+  <!-- The PersistenceService -->
+  <bean name="jBPMPersistenceService" class="org.jboss.bpm.ri.client.HibernatePersistenceService">
+    <property name="hibernateConfig">hibernate.cfg.mysql.xml</property>
+  </bean>
+  
 </deployment>




More information about the jbpm-commits mailing list