You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ode.apache.org by rr...@apache.org on 2010/04/21 18:39:25 UTC

svn commit: r936389 [1/2] - in /ode/branches/APACHE_ODE_1.X: bpel-api/src/main/java/org/apache/ode/bpel/iapi/ bpel-epr/src/main/java/org/apache/ode/il/ bpel-runtime/src/main/java/org/apache/ode/bpel/engine/ bpel-runtime/src/main/java/org/apache/ode/bpe...

Author: rr
Date: Wed Apr 21 16:39:23 2010
New Revision: 936389

URL: http://svn.apache.org/viewvc?rev=936389&view=rev
Log:
ODE-626: Unpack details blob from ODE_JOB table

Added:
    ode/branches/APACHE_ODE_1.X/scheduler-simple/src/test/resources/log4j.properties   (with props)
    ode/branches/APACHE_ODE_1.X/scheduler-simple/src/test/resources/simplesched-hsql.sql   (with props)
Removed:
    ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/WorkEvent.java
Modified:
    ode/branches/APACHE_ODE_1.X/bpel-api/src/main/java/org/apache/ode/bpel/iapi/ProcessConf.java
    ode/branches/APACHE_ODE_1.X/bpel-api/src/main/java/org/apache/ode/bpel/iapi/Scheduler.java
    ode/branches/APACHE_ODE_1.X/bpel-epr/src/main/java/org/apache/ode/il/MockScheduler.java
    ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelEngineImpl.java
    ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelProcess.java
    ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelRuntimeContextImpl.java
    ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelServerImpl.java
    ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/DebuggerSupport.java
    ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/Messages.java
    ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/MyRoleMessageExchangeImpl.java
    ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/PartnerRoleMessageExchangeImpl.java
    ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/ProcessCleanUpRunnable.java
    ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/cron/CronScheduler.java
    ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/cron/RuntimeDataCleanupRunnable.java
    ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/cron/SystemSchedulesConfig.java
    ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/replayer/Replayer.java
    ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/replayer/ReplayerScheduler.java
    ode/branches/APACHE_ODE_1.X/bpel-runtime/src/test/java/org/apache/ode/bpel/engine/cron/CronSchedulerTest.java
    ode/branches/APACHE_ODE_1.X/bpel-runtime/src/test/java/org/apache/ode/bpel/runtime/MockBpelServer.java
    ode/branches/APACHE_ODE_1.X/bpel-store/src/main/java/org/apache/ode/store/ProcessConfImpl.java
    ode/branches/APACHE_ODE_1.X/dao-hibernate-db/src/main/sql/simplesched-derby.sql
    ode/branches/APACHE_ODE_1.X/dao-hibernate-db/src/main/sql/simplesched-firebird.sql
    ode/branches/APACHE_ODE_1.X/dao-hibernate-db/src/main/sql/simplesched-hsql.sql
    ode/branches/APACHE_ODE_1.X/dao-hibernate-db/src/main/sql/simplesched-mysql.sql
    ode/branches/APACHE_ODE_1.X/dao-hibernate-db/src/main/sql/simplesched-oracle.sql
    ode/branches/APACHE_ODE_1.X/dao-hibernate-db/src/main/sql/simplesched-postgres.sql
    ode/branches/APACHE_ODE_1.X/dao-hibernate-db/src/main/sql/simplesched-sqlserver.sql
    ode/branches/APACHE_ODE_1.X/dao-jpa-ojpa-derby/src/main/scripts/simplesched-derby.sql
    ode/branches/APACHE_ODE_1.X/dao-jpa-ojpa-derby/src/main/scripts/simplesched-mysql.sql
    ode/branches/APACHE_ODE_1.X/dao-jpa-ojpa-derby/src/main/scripts/simplesched-oracle.sql
    ode/branches/APACHE_ODE_1.X/scheduler-simple/src/main/java/org/apache/ode/scheduler/simple/DatabaseDelegate.java
    ode/branches/APACHE_ODE_1.X/scheduler-simple/src/main/java/org/apache/ode/scheduler/simple/JdbcDelegate.java
    ode/branches/APACHE_ODE_1.X/scheduler-simple/src/main/java/org/apache/ode/scheduler/simple/Job.java
    ode/branches/APACHE_ODE_1.X/scheduler-simple/src/main/java/org/apache/ode/scheduler/simple/SimpleScheduler.java
    ode/branches/APACHE_ODE_1.X/scheduler-simple/src/test/java/org/apache/ode/scheduler/simple/DelegateSupport.java
    ode/branches/APACHE_ODE_1.X/scheduler-simple/src/test/java/org/apache/ode/scheduler/simple/JdbcDelegateTest.java
    ode/branches/APACHE_ODE_1.X/scheduler-simple/src/test/java/org/apache/ode/scheduler/simple/RetriesTest.java
    ode/branches/APACHE_ODE_1.X/scheduler-simple/src/test/java/org/apache/ode/scheduler/simple/SimpleSchedulerTest.java

Modified: ode/branches/APACHE_ODE_1.X/bpel-api/src/main/java/org/apache/ode/bpel/iapi/ProcessConf.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-api/src/main/java/org/apache/ode/bpel/iapi/ProcessConf.java?rev=936389&r1=936388&r2=936389&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/bpel-api/src/main/java/org/apache/ode/bpel/iapi/ProcessConf.java (original)
+++ ode/branches/APACHE_ODE_1.X/bpel-api/src/main/java/org/apache/ode/bpel/iapi/ProcessConf.java Wed Apr 21 16:39:23 2010
@@ -33,6 +33,7 @@ import javax.xml.namespace.QName;
 
 import org.apache.ode.bpel.evt.BpelEvent;
 import org.apache.ode.bpel.o.OFailureHandling;
+import org.apache.ode.bpel.iapi.Scheduler.JobDetails;
 import org.apache.ode.utils.CronExpression;
 import org.w3c.dom.Element;
 import org.w3c.dom.Node;
@@ -214,7 +215,7 @@ public interface ProcessConf {
     public class CronJob {
         private CronExpression _cronExpression;
         
-        private final List<Map<String,Object>> runnableDetailList = new ArrayList<Map<String,Object>>();
+        private final List<JobDetails> runnableDetailList = new ArrayList<JobDetails>();
         
         public void setCronExpression(CronExpression _cronExpression) {
             this._cronExpression = _cronExpression;
@@ -224,7 +225,7 @@ public interface ProcessConf {
             return _cronExpression;
         }
         
-        public List<Map<String,Object>> getRunnableDetailList() {
+        public List<JobDetails> getRunnableDetailList() {
             return runnableDetailList;
         }
         
@@ -240,7 +241,7 @@ public interface ProcessConf {
         }
     }
     
-    public class CleanupInfo {
+    public class CleanupInfo implements java.io.Serializable {
         private List<String> _filters = new ArrayList<String>();
         
         private final Set<CLEANUP_CATEGORY> _categories = EnumSet.noneOf(CLEANUP_CATEGORY.class);

Modified: ode/branches/APACHE_ODE_1.X/bpel-api/src/main/java/org/apache/ode/bpel/iapi/Scheduler.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-api/src/main/java/org/apache/ode/bpel/iapi/Scheduler.java?rev=936389&r1=936388&r2=936389&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/bpel-api/src/main/java/org/apache/ode/bpel/iapi/Scheduler.java (original)
+++ ode/branches/APACHE_ODE_1.X/bpel-api/src/main/java/org/apache/ode/bpel/iapi/Scheduler.java Wed Apr 21 16:39:23 2010
@@ -26,6 +26,10 @@ import java.util.Map;
 import java.util.concurrent.Callable;
 import java.util.concurrent.Future;
 
+import javax.xml.namespace.QName;
+
+import org.apache.ode.bpel.common.CorrelationKeySet;
+
 /**
  * The BPEL scheduler.
  */
@@ -42,7 +46,7 @@ public interface Scheduler {
      * @param when when the job should run (<code>null</code> means now)
      * @return unique job identifier
      */
-    String schedulePersistedJob(Map<String,Object>jobDetail,Date when)
+    String schedulePersistedJob(JobDetails jobDetail,Date when)
             throws ContextException ;
 
 
@@ -66,13 +70,13 @@ public interface Scheduler {
      * @param when does the job should be executed?
      * @return unique (as far as the scheduler is concerned) job identifier
      */
-    String scheduleVolatileJob(boolean transacted, Map<String,Object> jobDetail, Date when) throws ContextException;
+    String scheduleVolatileJob(boolean transacted, JobDetails jobDetail, Date when) throws ContextException;
 
     /**
      * Schedule a volatile job for right now
      * @see #scheduleVolatileJob(boolean, java.util.Map, java.util.Date)
      */
-    String scheduleVolatileJob(boolean transacted, Map<String,Object> jobDetail) throws ContextException;
+    String scheduleVolatileJob(boolean transacted, JobDetails jobDetail) throws ContextException;
 
     /**
      * Make a good effort to cancel the job. If its already running no big
@@ -166,6 +170,105 @@ public interface Scheduler {
         void onScheduledJob(JobInfo jobInfo) throws JobProcessorException;
     }
 
+    public enum JobType {
+        TIMER, 
+        RESUME, 
+        INVOKE_INTERNAL, 
+        INVOKE_RESPONSE, 
+        MATCHER, 
+        INVOKE_CHECK
+    }
+    
+    public static class JobDetails {
+        public Long instanceId;
+        public String mexId;
+        public String processId;
+        public String type;
+        public String channel;
+        public String correlatorId;
+        public String correlationKeySet;
+        public Integer retryCount;
+        public Boolean inMem;
+        public Map<String, Object> detailsExt = new HashMap<String, Object>();
+        
+        public Boolean getInMem() {
+            return inMem == null ? false : inMem;
+        }
+        public void setInMem(Boolean inMem) {
+            this.inMem = inMem;
+        }
+        public String getMexId() {
+            return mexId;
+        }
+        public void setMexId(String mexId) {
+            this.mexId = mexId;
+        }
+        public QName getProcessId() {
+            return processId == null ? null : QName.valueOf(processId);
+        }
+        public void setProcessId(QName processId) {
+            this.processId = "" + processId;
+        }
+        public JobType getType() {
+            return JobType.valueOf(type);
+        }
+        public void setType(JobType type) {
+            this.type = type.toString();
+        }
+        public String getChannel() {
+            return channel;
+        }
+        public void setChannel(String channel) {
+            this.channel = channel;
+        }
+        public String getCorrelatorId() {
+            return correlatorId;
+        }
+        public void setCorrelatorId(String correlatorId) {
+            this.correlatorId = correlatorId;
+        }
+        public CorrelationKeySet getCorrelationKeySet() {
+            return new CorrelationKeySet(correlationKeySet);
+        }
+        public void setCorrelationKeySet(CorrelationKeySet correlationKeySet) {
+            this.correlationKeySet = correlationKeySet == null ? null : correlationKeySet.toCanonicalString();
+        }
+        public Integer getRetryCount() {
+            return retryCount == null ? 0 : retryCount;
+        }
+        public void setRetryCount(Integer retryCount) {
+            this.retryCount = retryCount;
+        }
+        public Long getInstanceId() {
+            return instanceId;
+        }
+        public void setInstanceId(Long instanceId) {
+            this.instanceId = instanceId;
+        }
+        public Map<String, Object> getDetailsExt() {
+            return detailsExt;
+        }
+        public void setDetailsExt(Map<String, Object> detailsExt) {
+            this.detailsExt = detailsExt;
+        }
+        
+        @Override
+        public String toString() {
+            return "JobDetails("
+            + " instanceId: " + instanceId
+            + " mexId: " + mexId
+            + " processId: " + processId
+            + " type: " + type
+            + " channel: " + channel
+            + " correlatorId: " + correlatorId
+            + " correlationKeySet: " + correlationKeySet
+            + " retryCount: " + retryCount
+            + " inMem: " + inMem
+            + " detailsExt: " + detailsExt
+            + ")";
+        }
+    }
+    
     /**
      * Wrapper containing information about a scheduled job.
      * @author mszefler
@@ -174,17 +277,16 @@ public interface Scheduler {
         private static final long serialVersionUID = 1L;
         public final String jobName;
         public final int retryCount;
-        public final Map<String,Object> jobDetail;
+        public final JobDetails jobDetail;
 
-        public JobInfo(String jobName, Map<String,Object>jobDetail, int retryCount) {
+        public JobInfo(String jobName, JobDetails jobDetail, int retryCount) {
             this.jobName = jobName;
             this.jobDetail = jobDetail;
             this.retryCount = retryCount;
         }
 
         public String toString() {
-            // Wrap in hashmap in case the underlying object has no toString method.
-            return jobName + "["+retryCount +"]: " + new HashMap<Object, Object>(jobDetail);
+            return jobName + "["+retryCount +"]: " + jobDetail;
         }
     }
 
@@ -208,7 +310,7 @@ public interface Scheduler {
     }
 
     public interface MapSerializableRunnable extends Runnable, Serializable {
-        void storeToDetailsMap(Map<String, Object> details);
-        void restoreFromDetailsMap(Map<String, Object> details);
+        void storeToDetails(JobDetails details);
+        void restoreFromDetails(JobDetails details);
     }
 }
\ No newline at end of file

Modified: ode/branches/APACHE_ODE_1.X/bpel-epr/src/main/java/org/apache/ode/il/MockScheduler.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-epr/src/main/java/org/apache/ode/il/MockScheduler.java?rev=936389&r1=936388&r2=936389&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/bpel-epr/src/main/java/org/apache/ode/il/MockScheduler.java (original)
+++ ode/branches/APACHE_ODE_1.X/bpel-epr/src/main/java/org/apache/ode/il/MockScheduler.java Wed Apr 21 16:39:23 2010
@@ -69,7 +69,7 @@ public class MockScheduler implements Sc
         }
     };
 
-    public String schedulePersistedJob(final Map<String, Object> detail, final Date date) throws ContextException {
+    public String schedulePersistedJob(final JobDetails detail, final Date date) throws ContextException {
         if (date != null) {
             return scheduleVolatileJob(true, detail, date);
         } else {
@@ -77,11 +77,11 @@ public class MockScheduler implements Sc
         }
     }
 
-    public String scheduleVolatileJob(boolean transacted, Map<String, Object> jobDetail) throws ContextException {
+    public String scheduleVolatileJob(boolean transacted, JobDetails jobDetail) throws ContextException {
         return scheduleVolatileJob(transacted, jobDetail, null);
     }
 
-    public String scheduleVolatileJob(final boolean transacted, final Map<String, Object> detail, final Date date) throws ContextException {
+    public String scheduleVolatileJob(final boolean transacted, final JobDetails detail, final Date date) throws ContextException {
         if (date != null) {
             registerSynchronizer(new Synchronizer() {
                 public void afterCompletion(boolean success) {
@@ -113,7 +113,7 @@ public class MockScheduler implements Sc
         }
     }
 
-    private void exec(boolean transacted, final Map<String, Object> detail) {
+    private void exec(boolean transacted, final JobDetails detail) {
         try {
             if (transacted) {
 
@@ -148,7 +148,7 @@ public class MockScheduler implements Sc
             });
             return null;
         } else {
-            return scheduleVolatileJob(true, new HashMap<String, Object>());
+            return scheduleVolatileJob(true, new JobDetails());
         }
     }
     

Modified: ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelEngineImpl.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelEngineImpl.java?rev=936389&r1=936388&r2=936389&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelEngineImpl.java (original)
+++ ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelEngineImpl.java Wed Apr 21 16:39:23 2010
@@ -52,7 +52,9 @@ import org.apache.ode.bpel.iapi.MessageE
 import org.apache.ode.bpel.iapi.MessageExchange.MessageExchangePattern;
 import org.apache.ode.bpel.iapi.MessageExchange.Status;
 import org.apache.ode.bpel.iapi.MyRoleMessageExchange.CorrelationStatus;
+import org.apache.ode.bpel.iapi.Scheduler.JobDetails;
 import org.apache.ode.bpel.iapi.Scheduler.JobInfo;
+import org.apache.ode.bpel.iapi.Scheduler.JobType;
 import org.apache.ode.bpel.intercept.InterceptorInvoker;
 import org.apache.ode.bpel.intercept.MessageExchangeInterceptor;
 import org.apache.ode.bpel.intercept.ProcessCountThrottler;
@@ -372,18 +374,18 @@ public class BpelEngineImpl implements B
     }
 
     public void onScheduledJob(Scheduler.JobInfo jobInfo) throws Scheduler.JobProcessorException {
-        final WorkEvent we = new WorkEvent(jobInfo.jobDetail);
+        final JobDetails we = jobInfo.jobDetail;
 
-        if( __log.isTraceEnabled() ) __log.trace("[JOB] onScheduledJob " + jobInfo + "" + we.getIID());
+        if( __log.isTraceEnabled() ) __log.trace("[JOB] onScheduledJob " + jobInfo + "" + we.getInstanceId());
         
         // We lock the instance to prevent concurrent transactions and prevent unnecessary rollbacks,
         // Note that we don't want to wait too long here to get our lock, since we are likely holding
         // on to scheduler's locks of various sorts.
         try {
-            _instanceLockManager.lock(we.getIID(), 1, TimeUnit.MICROSECONDS);
+            _instanceLockManager.lock(we.getInstanceId(), 1, TimeUnit.MICROSECONDS);
             _contexts.scheduler.registerSynchronizer(new Scheduler.Synchronizer() {
                 public void afterCompletion(boolean success) {
-                    _instanceLockManager.unlock(we.getIID());
+                    _instanceLockManager.unlock(we.getInstanceId());
                 }
                 public void beforeCompletion() { }
             });
@@ -392,7 +394,7 @@ public class BpelEngineImpl implements B
             __log.debug("Thread interrupted, job will be rescheduled: " + jobInfo);
             throw new Scheduler.JobProcessorException(true);
         } catch (org.apache.ode.bpel.engine.InstanceLockManager.TimeoutException e) {
-            __log.debug("Instance " + we.getIID() + " is busy, rescheduling job.");
+            __log.debug("Instance " + we.getInstanceId() + " is busy, rescheduling job.");
             throw new Scheduler.JobProcessorException(true);
         }
         // DONT PUT CODE HERE-need this method real tight in a try/catch block, we need to handle
@@ -405,11 +407,11 @@ public class BpelEngineImpl implements B
                 process = _activeProcesses.get(we.getProcessId());
             } else {
                 ProcessInstanceDAO instance;
-                if (we.isInMem()) instance = _contexts.inMemDao.getConnection().getInstance(we.getIID());
-                else instance = _contexts.dao.getConnection().getInstance(we.getIID());
+                if (we.getInMem()) instance = _contexts.inMemDao.getConnection().getInstance(we.getInstanceId());
+                else instance = _contexts.dao.getConnection().getInstance(we.getInstanceId());
 
                 if (instance == null) {
-                    __log.debug(__msgs.msgScheduledJobReferencesUnknownInstance(we.getIID()));
+                    __log.debug(__msgs.msgScheduledJobReferencesUnknownInstance(we.getInstanceId()));
                     // nothing we can do, this instance is not in the database, it will always fail, not 
                     // exactly an error since can occur in normal course of events.
                     return;
@@ -427,13 +429,13 @@ public class BpelEngineImpl implements B
             ClassLoader cl = Thread.currentThread().getContextClassLoader();
             try {
                 Thread.currentThread().setContextClassLoader(process._classLoader);            
-                if (we.getType().equals(WorkEvent.Type.INVOKE_CHECK)) {
-                    if (__log.isDebugEnabled()) __log.debug("handleWorkEvent: InvokeCheck event for mexid " + we.getMexId());
+                if (we.getType().equals(JobType.INVOKE_CHECK)) {
+                    if (__log.isDebugEnabled()) __log.debug("handleJobDetails: InvokeCheck event for mexid " + we.getMexId());
                
                     sendPartnerRoleFailure(we, MessageExchange.FailureType.COMMUNICATION_ERROR);
                     return;
-                } else if (we.getType().equals(WorkEvent.Type.INVOKE_INTERNAL)) {
-                    if (__log.isDebugEnabled()) __log.debug("handleWorkEvent: InvokeInternal event for mexid " + we.getMexId());
+                } else if (we.getType().equals(JobType.INVOKE_INTERNAL)) {
+                    if (__log.isDebugEnabled()) __log.debug("handleJobDetails: InvokeInternal event for mexid " + we.getMexId());
 
                     setMessageExchangeProcess(we.getMexId(), process.getProcessDAO());
                     MyRoleMessageExchangeImpl mex = (MyRoleMessageExchangeImpl) getMessageExchange(we.getMexId());
@@ -450,33 +452,33 @@ public class BpelEngineImpl implements B
                         }
                     }
                 }
-                process.handleWorkEvent(jobInfo.jobDetail);
+                process.handleJobDetails(jobInfo.jobDetail);
                 debuggingDelay();
             } finally {
                 Thread.currentThread().setContextClassLoader(cl);
             }
         } catch (BpelEngineException bee) {
-            __log.error(__msgs.msgScheduledJobFailed(we.getDetail()), bee);
+            __log.error(__msgs.msgScheduledJobFailed(we), bee);
             throw new Scheduler.JobProcessorException(bee, checkRetry(we));
         } catch (ContextException ce) {
-            __log.error(__msgs.msgScheduledJobFailed(we.getDetail()), ce);
+            __log.error(__msgs.msgScheduledJobFailed(we), ce);
             throw new Scheduler.JobProcessorException(ce, checkRetry(we));
         } catch (InvalidProcessException ipe) {
-            __log.error(__msgs.msgScheduledJobFailed(we.getDetail()), ipe);
+            __log.error(__msgs.msgScheduledJobFailed(we), ipe);
             sendMyRoleFault(process, we, ipe.getCauseCode());
         } catch (RuntimeException rte) {
-            __log.error(__msgs.msgScheduledJobFailed(we.getDetail()), rte);
+            __log.error(__msgs.msgScheduledJobFailed(we), rte);
             throw new Scheduler.JobProcessorException(rte, checkRetry(we));
         } catch (Throwable t) {
-            __log.error(__msgs.msgScheduledJobFailed(we.getDetail()), t);
+            __log.error(__msgs.msgScheduledJobFailed(we), t);
             throw new Scheduler.JobProcessorException(t, checkRetry(we));
         }
     }
 
-    private boolean checkRetry(WorkEvent we) {
+    private boolean checkRetry(JobDetails we) {
         // Only retry if the job is NOT in memory. Not that this does not guaranty that a retry will be scheduled.
         // Actually events are not retried if not persisted and the scheduler might choose to discard the event if it has been retried too many times.
-        return !we.isInMem();
+        return !we.getInMem();
     }
 
     /**
@@ -684,7 +686,7 @@ public class BpelEngineImpl implements B
         return false;
     }
 
-    public void sendMyRoleFault(BpelProcess process, WorkEvent we, int causeCode) {
+    public void sendMyRoleFault(BpelProcess process, JobDetails we, int causeCode) {
         MessageExchange mex = (MessageExchange) getMessageExchange(we.getMexId());
         if (!(mex instanceof MyRoleMessageExchange)) {
             return;
@@ -717,7 +719,7 @@ public class BpelEngineImpl implements B
                             && activeProcess.getConf().getType().equals(process.getConf().getType())) {
                         we.setProcessId(activeProcess._pid);
                         ((MyRoleMessageExchangeImpl) mex)._process = activeProcess;
-                        process.handleWorkEvent(we.getDetail());
+                        process.handleJobDetails(we);
                         return;
                     }
                 }
@@ -733,7 +735,7 @@ public class BpelEngineImpl implements B
         }
     }
     
-    private void sendPartnerRoleFailure(WorkEvent we, FailureType failureType) {
+    private void sendPartnerRoleFailure(JobDetails we, FailureType failureType) {
         MessageExchange mex = (MessageExchange) getMessageExchange(we.getMexId());
         if (mex instanceof PartnerRoleMessageExchange) {
             if (mex.getStatus() == MessageExchange.Status.ASYNC || mex.getStatus() == MessageExchange.Status.REQUEST) {

Modified: ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelProcess.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelProcess.java?rev=936389&r1=936388&r2=936389&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelProcess.java (original)
+++ ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelProcess.java Wed Apr 21 16:39:23 2010
@@ -55,6 +55,8 @@ import org.apache.ode.bpel.iapi.PartnerR
 import org.apache.ode.bpel.iapi.ProcessConf;
 import org.apache.ode.bpel.iapi.Scheduler;
 import org.apache.ode.bpel.iapi.ProcessConf.CLEANUP_CATEGORY;
+import org.apache.ode.bpel.iapi.Scheduler.JobDetails;
+import org.apache.ode.bpel.iapi.Scheduler.JobType;
 import org.apache.ode.bpel.intercept.InstanceCountThrottler;
 import org.apache.ode.bpel.intercept.InterceptorInvoker;
 import org.apache.ode.bpel.intercept.MessageExchangeInterceptor;
@@ -402,20 +404,20 @@ public class BpelProcess {
     }
 
     /**
-     * @see org.apache.ode.bpel.engine.BpelProcess#handleWorkEvent(java.util.Map<java.lang.String,java.lang.Object>)
+     * @see org.apache.ode.bpel.engine.BpelProcess#handleJobDetails(java.util.Map<java.lang.String,java.lang.Object>)
      */
-    public void handleWorkEvent(Map<String, Object> jobData) {
+    public void handleJobDetails(JobDetails jobData) {
         try {
             _hydrationLatch.latch(1);
             markused();
             if (__log.isDebugEnabled()) {
-                __log.debug(ObjectPrinter.stringifyMethodEnter("handleWorkEvent", new Object[] { "jobData", jobData }));
+                __log.debug(ObjectPrinter.stringifyMethodEnter("handleJobDetails", new Object[] { "jobData", jobData }));
             }
 
-            WorkEvent we = new WorkEvent(jobData);
+            JobDetails we = jobData;
 
             // Process level events
-            if (we.getType().equals(WorkEvent.Type.INVOKE_INTERNAL)) {
+            if (we.getType().equals(JobType.INVOKE_INTERNAL)) {
                 if (__log.isDebugEnabled()) {
                     __log.debug("InvokeInternal event for mexid " + we.getMexId());
                 }
@@ -423,10 +425,10 @@ public class BpelProcess {
                 invokeProcess(mex);
             } else {
                 // Instance level events
-                ProcessInstanceDAO procInstance = getProcessDAO().getInstance(we.getIID());
+                ProcessInstanceDAO procInstance = getProcessDAO().getInstance(we.getInstanceId());
                 if (procInstance == null) {
                     if (__log.isDebugEnabled()) {
-                        __log.debug("handleWorkEvent: no ProcessInstance found with iid " + we.getIID() + "; ignoring.");
+                        __log.debug("handleJobDetails: no ProcessInstance found with iid " + we.getInstanceId() + "; ignoring.");
                     }
                     return;
                 }
@@ -435,26 +437,26 @@ public class BpelProcess {
                 switch (we.getType()) {
                     case TIMER:
                         if (__log.isDebugEnabled()) {
-                            __log.debug("handleWorkEvent: TimerWork event for process instance " + processInstance);
+                            __log.debug("handleJobDetails: TimerWork event for process instance " + processInstance);
                         }
                         processInstance.timerEvent(we.getChannel());
                         break;
                     case RESUME:
                         if (__log.isDebugEnabled()) {
-                            __log.debug("handleWorkEvent: ResumeWork event for iid " + we.getIID());
+                            __log.debug("handleJobDetails: ResumeWork event for iid " + we.getInstanceId());
                         }
                         processInstance.execute();
                         break;
                     case INVOKE_RESPONSE:
                         if (__log.isDebugEnabled()) {
-                            __log.debug("InvokeResponse event for iid " + we.getIID());
+                            __log.debug("InvokeResponse event for iid " + we.getInstanceId());
                         }
                         processInstance.invocationResponse(we.getMexId(), we.getChannel());
                         processInstance.execute();
                         break;
                     case MATCHER:
                         if (__log.isDebugEnabled()) {
-                            __log.debug("Matcher event for iid " + we.getIID());
+                            __log.debug("Matcher event for iid " + we.getInstanceId());
                         }
                         if( procInstance.getState() == ProcessState.STATE_COMPLETED_OK 
                                 || procInstance.getState() == ProcessState.STATE_COMPLETED_WITH_FAULT ) {

Modified: ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelRuntimeContextImpl.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelRuntimeContextImpl.java?rev=936389&r1=936388&r2=936389&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelRuntimeContextImpl.java (original)
+++ ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelRuntimeContextImpl.java Wed Apr 21 16:39:23 2010
@@ -76,6 +76,8 @@ import org.apache.ode.bpel.iapi.MessageE
 import org.apache.ode.bpel.iapi.MessageExchange.Status;
 import org.apache.ode.bpel.iapi.ProcessConf.CLEANUP_CATEGORY;
 import org.apache.ode.bpel.iapi.ProcessConf.PartnerRoleConfig;
+import org.apache.ode.bpel.iapi.Scheduler.JobDetails;
+import org.apache.ode.bpel.iapi.Scheduler.JobType;
 import org.apache.ode.bpel.intercept.InterceptorInvoker;
 import org.apache.ode.bpel.memdao.ProcessInstanceDaoImpl;
 import org.apache.ode.bpel.o.OFailureHandling;
@@ -702,29 +704,29 @@ public class BpelRuntimeContextImpl impl
     }
 
     public void registerTimer(TimerResponseChannel timerChannel, Date timeToFire) {
-        WorkEvent we = new WorkEvent();
-        we.setIID(_dao.getInstanceId());
+        JobDetails we = new JobDetails();
+        we.setInstanceId(_dao.getInstanceId());
         we.setChannel(timerChannel.export());
-        we.setType(WorkEvent.Type.TIMER);
+        we.setType(JobType.TIMER);
         we.setInMem(_bpelProcess.isInMemory());
         if(_bpelProcess.isInMemory()){
-            _bpelProcess._engine._contexts.scheduler.scheduleVolatileJob(true, we.getDetail(), timeToFire);
+            _bpelProcess._engine._contexts.scheduler.scheduleVolatileJob(true, we, timeToFire);
         }else{
-            _bpelProcess._engine._contexts.scheduler.schedulePersistedJob(we.getDetail(), timeToFire);
+            _bpelProcess._engine._contexts.scheduler.schedulePersistedJob(we, timeToFire);
         }
     }
 
     private void scheduleCorrelatorMatcher(String correlatorId, CorrelationKeySet keySet) {
-        WorkEvent we = new WorkEvent();
-        we.setIID(_dao.getInstanceId());
-        we.setType(WorkEvent.Type.MATCHER);
+        JobDetails we = new JobDetails();
+        we.setInstanceId(_dao.getInstanceId());
+        we.setType(JobType.MATCHER);
         we.setCorrelatorId(correlatorId);
         we.setCorrelationKeySet(keySet);
         we.setInMem(_bpelProcess.isInMemory());
         if(_bpelProcess.isInMemory()){
-            _bpelProcess._engine._contexts.scheduler.scheduleVolatileJob(true, we.getDetail());
+            _bpelProcess._engine._contexts.scheduler.scheduleVolatileJob(true, we);
         }else{
-            _bpelProcess._engine._contexts.scheduler.schedulePersistedJob(we.getDetail(), null);
+            _bpelProcess._engine._contexts.scheduler.schedulePersistedJob(we, null);
         }
     }
 
@@ -915,16 +917,16 @@ public class BpelRuntimeContextImpl impl
         boolean isTwoWay = mex.getMessageExchangePattern() ==
                 org.apache.ode.bpel.iapi.MessageExchange.MessageExchangePattern.REQUEST_RESPONSE;
         if (!_bpelProcess.isInMemory() && isTwoWay) {
-            WorkEvent event = new WorkEvent();
+            JobDetails event = new JobDetails();
             event.setMexId(mex.getMessageExchangeId());
             event.setProcessId(_bpelProcess.getPID());
             event.setInMem(false);
-            event.setType(WorkEvent.Type.INVOKE_CHECK);
+            event.setType(JobType.INVOKE_CHECK);
             // use a greater timeout to make sure the check job does not get executed while the service invocation is still waiting for a response
             long timeout = getBpelProcess().getTimeout(partnerLink, p2p);
             if (__log.isDebugEnabled()) __log.debug("Creating invocation check event in "+timeout+"ms for mexid " + mex.getMessageExchangeId());
             Date future = new Date(System.currentTimeMillis() + timeout);
-            String jobId = _bpelProcess._engine._contexts.scheduler.schedulePersistedJob(event.getDetail(), future);
+            String jobId = _bpelProcess._engine._contexts.scheduler.schedulePersistedJob(event, future);
             mex.setProperty("invokeCheckJobId", jobId);
         }
     }
@@ -981,14 +983,14 @@ public class BpelRuntimeContextImpl impl
                 if (__log.isDebugEnabled())
                     __log.debug("MaxTime exceeded for instance # " + _iid);
                 try {
-                    WorkEvent we = new WorkEvent();
-                    we.setIID(_iid);
-                    we.setType(WorkEvent.Type.RESUME);
+                    JobDetails we = new JobDetails();
+                    we.setInstanceId(_iid);
+                    we.setType(JobType.RESUME);
                     we.setInMem(_bpelProcess.isInMemory());
                     if (_bpelProcess.isInMemory())
-                        _bpelProcess._engine._contexts.scheduler.scheduleVolatileJob(true, we.getDetail());
+                        _bpelProcess._engine._contexts.scheduler.scheduleVolatileJob(true, we);
                     else
-                        _bpelProcess._engine._contexts.scheduler.schedulePersistedJob(we.getDetail(), new Date());
+                        _bpelProcess._engine._contexts.scheduler.schedulePersistedJob(we, new Date());
                 } catch (ContextException e) {
                     __log.error("Failed to schedule resume task.", e);
                     throw new BpelEngineException(e);

Modified: ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelServerImpl.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelServerImpl.java?rev=936389&r1=936388&r2=936389&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelServerImpl.java (original)
+++ ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelServerImpl.java Wed Apr 21 16:39:23 2010
@@ -619,7 +619,7 @@ public class BpelServerImpl implements B
                 }
                 if( statusOfPriorTry == JOB_STATUS.COMPLETED ) {
                     resultsByJobId.remove(jobInfo.jobName);
-                    jobInfo.jobDetail.put("runnable_status", JOB_STATUS.COMPLETED);
+                    jobInfo.jobDetail.getDetailsExt().put("runnable_status", JOB_STATUS.COMPLETED);
                     return;
                 }
                 if( statusOfPriorTry == JOB_STATUS.PENDING || statusOfPriorTry == JOB_STATUS.FAILED ) {
@@ -633,8 +633,8 @@ public class BpelServerImpl implements B
                 _polledRunnableExec.submit(new Runnable() {
                     public void run() {
                         try {
-                            MapSerializableRunnable runnable = (MapSerializableRunnable)jobInfo.jobDetail.get("runnable");
-                            runnable.restoreFromDetailsMap(jobInfo.jobDetail);
+                            MapSerializableRunnable runnable = (MapSerializableRunnable)jobInfo.jobDetail.getDetailsExt().get("runnable");
+                            runnable.restoreFromDetails(jobInfo.jobDetail);
                             if( runnable instanceof ContextsAware ) {
                                 ((ContextsAware)runnable).setContexts(_contexts);
                             }
@@ -653,7 +653,7 @@ public class BpelServerImpl implements B
                 });
             }
             
-            jobInfo.jobDetail.put("runnable_status", JOB_STATUS.IN_PROGRESS);
+            jobInfo.jobDetail.getDetailsExt().put("runnable_status", JOB_STATUS.IN_PROGRESS);
             if( exceptionThrownOnPriorTry != null ) {
                 throw new Scheduler.JobProcessorException(exceptionThrownOnPriorTry, true);
             }

Modified: ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/DebuggerSupport.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/DebuggerSupport.java?rev=936389&r1=936388&r2=936389&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/DebuggerSupport.java (original)
+++ ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/DebuggerSupport.java Wed Apr 21 16:39:23 2010
@@ -21,6 +21,8 @@ package org.apache.ode.bpel.engine;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.ode.bpel.iapi.DebuggerContext;
+import org.apache.ode.bpel.iapi.Scheduler.JobDetails;
+import org.apache.ode.bpel.iapi.Scheduler.JobType;
 import org.apache.ode.bpel.bdi.breaks.Breakpoint;
 import org.apache.ode.bpel.common.ProcessState;
 import org.apache.ode.bpel.dao.BpelDAOConnection;
@@ -173,10 +175,10 @@ public class DebuggerSupport implements 
                         __log.debug("step(" + iid + ") adding step indicator to table.");
                         _step.add(iid);
 
-                        WorkEvent we = new WorkEvent();
-                        we.setIID(iid);
-                        we.setType(WorkEvent.Type.RESUME);
-                        _process._engine._contexts.scheduler.schedulePersistedJob(we.getDetail(), null);
+                        JobDetails we = new JobDetails();
+                        we.setInstanceId(iid);
+                        we.setType(JobType.RESUME);
+                        _process._engine._contexts.scheduler.schedulePersistedJob(we, null);
 
                         return true;
                     }
@@ -297,10 +299,10 @@ public class DebuggerSupport implements 
                         _process.saveEvent(evt, instance);
                         onEvent(evt);
 
-                        WorkEvent we = new WorkEvent();
-                        we.setType(WorkEvent.Type.RESUME);
-                        we.setIID(iid);
-                        _process._engine._contexts.scheduler.schedulePersistedJob(we.getDetail(), null);
+                        JobDetails we = new JobDetails();
+                        we.setType(JobType.RESUME);
+                        we.setInstanceId(iid);
+                        _process._engine._contexts.scheduler.schedulePersistedJob(we, null);
 
 
                         return true;

Modified: ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/Messages.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/Messages.java?rev=936389&r1=936388&r2=936389&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/Messages.java (original)
+++ ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/Messages.java Wed Apr 21 16:39:23 2010
@@ -18,6 +18,7 @@
  */
 package org.apache.ode.bpel.engine;
 
+import org.apache.ode.bpel.iapi.Scheduler.JobDetails;
 import org.apache.ode.utils.msg.MessageBundle;
 
 import javax.xml.namespace.QName;
@@ -186,7 +187,7 @@ public class Messages extends MessageBun
         return format("Error registering expression language \"" + expressionLanguageUri + "\" with properties " + properties);
     }
 
-    public String msgScheduledJobFailed(Map<String, Object> jobDetail) {
+    public String msgScheduledJobFailed(JobDetails jobDetail) {
         return format("Scheduled job failed; jobDetail={0}", jobDetail);
     }
 

Modified: ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/MyRoleMessageExchangeImpl.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/MyRoleMessageExchangeImpl.java?rev=936389&r1=936388&r2=936389&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/MyRoleMessageExchangeImpl.java (original)
+++ ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/MyRoleMessageExchangeImpl.java Wed Apr 21 16:39:23 2010
@@ -40,6 +40,8 @@ import org.apache.ode.bpel.iapi.MessageE
 import org.apache.ode.bpel.iapi.MyRoleMessageExchange;
 import org.apache.ode.bpel.iapi.Scheduler;
 import org.apache.ode.bpel.iapi.ProcessConf.CLEANUP_CATEGORY;
+import org.apache.ode.bpel.iapi.Scheduler.JobDetails;
+import org.apache.ode.bpel.iapi.Scheduler.JobType;
 import org.apache.ode.bpel.intercept.AbortMessageExchangeException;
 import org.apache.ode.bpel.intercept.FaultMessageExchangeException;
 import org.apache.ode.bpel.intercept.InterceptorInvoker;
@@ -132,8 +134,8 @@ public class MyRoleMessageExchangeImpl e
             return null;
         } else {
             // Schedule a new job for invocation
-            WorkEvent we = new WorkEvent();
-            we.setType(WorkEvent.Type.INVOKE_INTERNAL);
+            JobDetails we = new JobDetails();
+            we.setType(JobType.INVOKE_INTERNAL);
             we.setInMem(target.isInMemory());
             we.setProcessId(target.getPID());
             we.setMexId(getDAO().getMessageExchangeId());
@@ -147,11 +149,11 @@ public class MyRoleMessageExchangeImpl e
             Replayer replayer = Replayer.replayer.get();
             if (replayer == null) {
                 if (target.isInMemory())
-                    _engine._contexts.scheduler.scheduleVolatileJob(true, we.getDetail());
+                    _engine._contexts.scheduler.scheduleVolatileJob(true, we);
                 else
-                    _engine._contexts.scheduler.schedulePersistedJob(we.getDetail(), null);
+                    _engine._contexts.scheduler.schedulePersistedJob(we, null);
             } else {
-                replayer.scheduler.schedulePersistedJob(we.getDetail(), null);
+                replayer.scheduler.schedulePersistedJob(we, null);
             }
             return new ResponseFuture(getClientId());
         }

Modified: ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/PartnerRoleMessageExchangeImpl.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/PartnerRoleMessageExchangeImpl.java?rev=936389&r1=936388&r2=936389&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/PartnerRoleMessageExchangeImpl.java (original)
+++ ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/PartnerRoleMessageExchangeImpl.java Wed Apr 21 16:39:23 2010
@@ -22,13 +22,14 @@ package org.apache.ode.bpel.engine;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.ode.bpel.dao.MessageExchangeDAO;
-import org.apache.ode.bpel.engine.WorkEvent.Type;
 import org.apache.ode.bpel.engine.replayer.Replayer;
 import org.apache.ode.bpel.iapi.BpelEngineException;
 import org.apache.ode.bpel.iapi.EndpointReference;
 import org.apache.ode.bpel.iapi.Message;
 import org.apache.ode.bpel.iapi.PartnerRoleChannel;
 import org.apache.ode.bpel.iapi.PartnerRoleMessageExchange;
+import org.apache.ode.bpel.iapi.Scheduler.JobDetails;
+import org.apache.ode.bpel.iapi.Scheduler.JobType;
 import org.apache.ode.utils.DOMUtils;
 import org.w3c.dom.Element;
 
@@ -132,20 +133,20 @@ public class PartnerRoleMessageExchangeI
         if (LOG.isDebugEnabled()) {
             LOG.debug("create work event for mex=" + getMessageExchangeId());
         }
-        WorkEvent we = new WorkEvent();
-        we.setIID(getDAO().getInstance().getInstanceId());
-        we.setType(Type.INVOKE_RESPONSE);
+        JobDetails we = new JobDetails();
+        we.setInstanceId(getDAO().getInstance().getInstanceId());
+        we.setType(JobType.INVOKE_RESPONSE);
         we.setInMem(_engine._activeProcesses.get(getDAO().getProcess().getProcessId()).isInMemory());
         we.setChannel(getDAO().getChannel());
         we.setMexId(getDAO().getMessageExchangeId());
         Replayer replayer = Replayer.replayer.get();
         if (replayer == null) {
-            if (we.isInMem())
-                _engine._contexts.scheduler.scheduleVolatileJob(true, we.getDetail());
+            if (we.getInMem())
+                _engine._contexts.scheduler.scheduleVolatileJob(true, we);
             else
-                _engine._contexts.scheduler.schedulePersistedJob(we.getDetail(), null);
+                _engine._contexts.scheduler.schedulePersistedJob(we, null);
         } else {
-            replayer.scheduler.schedulePersistedJob(we.getDetail(), null);
+            replayer.scheduler.schedulePersistedJob(we, null);
         }
     }
 

Modified: ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/ProcessCleanUpRunnable.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/ProcessCleanUpRunnable.java?rev=936389&r1=936388&r2=936389&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/ProcessCleanUpRunnable.java (original)
+++ ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/ProcessCleanUpRunnable.java Wed Apr 21 16:39:23 2010
@@ -4,11 +4,14 @@ import java.io.Serializable;
 import java.util.Map;
 import java.util.concurrent.Callable;
 
+import javax.xml.namespace.QName;
+
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.ode.bpel.dao.DeferredProcessInstanceCleanable;
 import org.apache.ode.bpel.dao.ProcessDAO;
 import org.apache.ode.bpel.engine.BpelServerImpl.ContextsAware;
+import org.apache.ode.bpel.iapi.Scheduler.JobDetails;
 import org.apache.ode.bpel.iapi.Scheduler.MapSerializableRunnable;
 
 public class ProcessCleanUpRunnable implements MapSerializableRunnable, ContextsAware {
@@ -28,12 +31,12 @@ public class ProcessCleanUpRunnable impl
         _pid = pid;
     }
 
-    public void storeToDetailsMap(Map<String, Object> details) {
-        details.put("pid", _pid);
+    public void storeToDetails(JobDetails details) {
+        details.getDetailsExt().put("pid", _pid);
     }
     
-    public void restoreFromDetailsMap(Map<String, Object> details) {
-        _pid = (Serializable)details.get("pid");
+    public void restoreFromDetails(JobDetails details) {
+        _pid = (Serializable) details.getDetailsExt().get("pid");
     }
 
     public void setContexts(Contexts contexts) {
@@ -65,4 +68,4 @@ public class ProcessCleanUpRunnable impl
         }
         if(__log.isInfoEnabled()) __log.info("Deleted runtime data for old process: " + _pid + ".");
     }
-}
\ No newline at end of file
+}

Modified: ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/cron/CronScheduler.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/cron/CronScheduler.java?rev=936389&r1=936388&r2=936389&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/cron/CronScheduler.java (original)
+++ ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/cron/CronScheduler.java Wed Apr 21 16:39:23 2010
@@ -20,6 +20,7 @@ import org.apache.ode.bpel.engine.BpelSe
 import org.apache.ode.bpel.iapi.ClusterAware;
 import org.apache.ode.bpel.iapi.ProcessConf;
 import org.apache.ode.bpel.iapi.ProcessConf.CronJob;
+import org.apache.ode.bpel.iapi.Scheduler.JobDetails;
 import org.apache.ode.bpel.iapi.Scheduler.MapSerializableRunnable;
 import org.apache.ode.utils.CronExpression;
 
@@ -112,11 +113,11 @@ public class CronScheduler {
                 Runnable runnable = new Runnable() {
                     public void run() {
                         if( __log.isDebugEnabled() ) __log.debug("Running cron cleanup with details list size: " + job.getRunnableDetailList().size());
-                        for( Map<String, Object> details : job.getRunnableDetailList() ) {
+                        for( JobDetails details : job.getRunnableDetailList() ) {
                             try {
                                 // for each clean up for the scheduled time
                                 RuntimeDataCleanupRunnable cleanup = new RuntimeDataCleanupRunnable();
-                                cleanup.restoreFromDetailsMap(details);
+                                cleanup.restoreFromDetails(details);
                                 cleanup.setContexts(_contexts);
                                 cleanup.run();
                                 if( __log.isDebugEnabled() ) __log.debug("Finished running runtime data cleanup from a PROCESS CRON job: " + cleanup);
@@ -168,17 +169,17 @@ public class CronScheduler {
                     // for each different scheduled time
                     Runnable runnable = new Runnable() {
                         public void run() {
-                            for( Map<String, Object> details : job.getRunnableDetailList() ) {
+                            for( JobDetails details : job.getRunnableDetailList() ) {
                                 try {
                                     // for now, we have only runtime data cleanup cron job defined
                                     // for each clean up for the scheduled time
                                     RuntimeDataCleanupRunnable cleanup = new RuntimeDataCleanupRunnable();
                                     synchronized( _terminationListenersByPid ) {
                                         if( !_terminationListenersByPid.isEmpty() ) {
-                                            details.put("pidsToExclude", _terminationListenersByPid.keySet());
+                                            details.getDetailsExt().put("pidsToExclude", _terminationListenersByPid.keySet());
                                         }
                                     }
-                                    cleanup.restoreFromDetailsMap(details);
+                                    cleanup.restoreFromDetails(details);
                                     cleanup.setContexts(_contexts);
                                     cleanup.run();
                                     if( __log.isDebugEnabled() ) __log.debug("Finished running runtime data cleanup from a SYSTEM CRON job:" + cleanup);
@@ -197,7 +198,7 @@ public class CronScheduler {
     }
 
     public TerminationListener schedule(final CronExpression cronExpression, 
-            final Runnable runnable, final Map<String, Object> runnableDetails, 
+            final Runnable runnable, final JobDetails runnableDetails, 
             TerminationListener terminationListener) {
         if( _shuttingDown ) {
             __log.info("CRON Scheduler is being shut down. This new scheduling request is ignored.");
@@ -250,12 +251,12 @@ public class CronScheduler {
         private volatile boolean terminated = false;
         private Date nextScheduleTime;
         private Runnable runnable;
-        private Map<String, Object> runnableDetails;
+        private JobDetails runnableDetails;
         private CronExpression cronExpression;
         private TerminationListener terminationListener;
         
         public CronScheduledJob(Date nextScheduleTime,
-                Runnable runnable, Map<String, Object> runnableDetails,
+                Runnable runnable, JobDetails runnableDetails,
                 CronExpression cronExpression, TerminationListener terminationListener) {
             this.nextScheduleTime = nextScheduleTime;
             this.runnable = runnable;
@@ -277,7 +278,7 @@ public class CronScheduler {
                     nextScheduleTime.getTime() < System.currentTimeMillis() + TOLERABLE_SCHEDULE_DELAY) {
                     if( runnableDetails != null && 
                             runnable instanceof MapSerializableRunnable ) {
-                        ((MapSerializableRunnable)runnable).restoreFromDetailsMap(runnableDetails);
+                        ((MapSerializableRunnable)runnable).restoreFromDetails(runnableDetails);
                     }
                     if (runnable instanceof ContextsAware) {
                         ((ContextsAware) runnable).setContexts(_contexts);
@@ -306,4 +307,4 @@ public class CronScheduler {
             return terminationListener;
         }
     }
-}
\ No newline at end of file
+}

Modified: ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/cron/RuntimeDataCleanupRunnable.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/cron/RuntimeDataCleanupRunnable.java?rev=936389&r1=936388&r2=936389&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/cron/RuntimeDataCleanupRunnable.java (original)
+++ ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/cron/RuntimeDataCleanupRunnable.java Wed Apr 21 16:39:23 2010
@@ -1,5 +1,6 @@
 package org.apache.ode.bpel.engine.cron;
 
+import java.io.Serializable;
 import java.util.Map;
 import java.util.Set;
 import java.util.concurrent.Callable;
@@ -15,6 +16,7 @@ import org.apache.ode.bpel.engine.Contex
 import org.apache.ode.bpel.engine.BpelServerImpl.ContextsAware;
 import org.apache.ode.bpel.iapi.ProcessConf.CLEANUP_CATEGORY;
 import org.apache.ode.bpel.iapi.ProcessConf.CleanupInfo;
+import org.apache.ode.bpel.iapi.Scheduler.JobDetails;
 import org.apache.ode.bpel.iapi.Scheduler.MapSerializableRunnable;
 
 public class RuntimeDataCleanupRunnable implements MapSerializableRunnable, ContextsAware {
@@ -33,14 +35,14 @@ public class RuntimeDataCleanupRunnable 
     }
     
     @SuppressWarnings("unchecked")
-    public void restoreFromDetailsMap(Map<String, Object> details) {
-        _cleanupInfo = (CleanupInfo)details.get("cleanupInfo");
-        _transactionSize = (Integer)details.get("transactionSize");
-        _pid = (QName)details.get("pid");
-        _pidsToExclude = (Set<QName>)details.get("pidsToExclude");
+    public void restoreFromDetails(JobDetails details) {
+        _cleanupInfo = (CleanupInfo)details.getDetailsExt().get("cleanupInfo");
+        _transactionSize = (Integer)details.getDetailsExt().get("transactionSize");
+        _pid = (QName) details.getDetailsExt().get("pid");
+        _pidsToExclude = (Set<QName>)details.getDetailsExt().get("pidsToExclude");
     }
 
-    public void storeToDetailsMap(Map<String, Object> details) {
+    public void storeToDetails(JobDetails details) {
         // we don't serialize
     }
 

Modified: ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/cron/SystemSchedulesConfig.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/cron/SystemSchedulesConfig.java?rev=936389&r1=936388&r2=936389&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/cron/SystemSchedulesConfig.java (original)
+++ ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/cron/SystemSchedulesConfig.java Wed Apr 21 16:39:23 2010
@@ -15,6 +15,7 @@ import org.apache.ode.bpel.dd.TCleanup;
 import org.apache.ode.bpel.iapi.ContextException;
 import org.apache.ode.bpel.iapi.ProcessConf.CleanupInfo;
 import org.apache.ode.bpel.iapi.ProcessConf.CronJob;
+import org.apache.ode.bpel.iapi.Scheduler.JobDetails;
 import org.apache.ode.store.ProcessCleanupConfImpl;
 import org.apache.ode.utils.CronExpression;
 import org.apache.xmlbeans.XmlOptions;
@@ -64,9 +65,10 @@ public class SystemSchedulesConfig {
                         cleanupInfo.setFilters(aCleanup.getFilterList());
                         ProcessCleanupConfImpl.processACleanup(cleanupInfo.getCategories(), aCleanup.getCategoryList());
                         
-                        Map<String, Object> runnableDetails = new HashMap<String, Object>();
-                        runnableDetails.put("cleanupInfo", cleanupInfo);
-                        runnableDetails.put("transactionSize", 10);
+                        JobDetails runnableDetails = new JobDetails();
+                        
+                        runnableDetails.getDetailsExt().put("cleanupInfo", cleanupInfo);
+                        runnableDetails.getDetailsExt().put("transactionSize", 10);
                         job.getRunnableDetailList().add(runnableDetails);
                         __log.info("SYSTEM CRON configuration added a runtime data cleanup: " + runnableDetails);
                     }
@@ -100,4 +102,4 @@ public class SystemSchedulesConfig {
     
         return sd;
     }
-}
\ No newline at end of file
+}

Modified: ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/replayer/Replayer.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/replayer/Replayer.java?rev=936389&r1=936388&r2=936389&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/replayer/Replayer.java (original)
+++ ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/replayer/Replayer.java Wed Apr 21 16:39:23 2010
@@ -40,13 +40,14 @@ import org.apache.ode.bpel.engine.BpelEn
 import org.apache.ode.bpel.engine.BpelProcess;
 import org.apache.ode.bpel.engine.MyRoleMessageExchangeImpl;
 import org.apache.ode.bpel.engine.PartnerLinkMyRoleImpl;
-import org.apache.ode.bpel.engine.WorkEvent;
 import org.apache.ode.bpel.engine.PartnerLinkMyRoleImpl.RoutingInfo;
 import org.apache.ode.bpel.evt.CorrelationMatchEvent;
 import org.apache.ode.bpel.iapi.BpelEngine;
 import org.apache.ode.bpel.iapi.MyRoleMessageExchange;
 import org.apache.ode.bpel.iapi.MessageExchange.Status;
 import org.apache.ode.bpel.iapi.ProcessConf.CLEANUP_CATEGORY;
+import org.apache.ode.bpel.iapi.Scheduler.JobDetails;
+import org.apache.ode.bpel.iapi.Scheduler.JobType;
 import org.apache.ode.bpel.pmapi.CommunicationType;
 import org.apache.ode.bpel.pmapi.ExchangeType;
 import org.apache.ode.bpel.pmapi.FaultType;
@@ -222,10 +223,10 @@ public class Replayer {
         return null;
     }
     
-    public void handleWorkEvent(Map<String, Object> jobDetail, final Date when) {
-        WorkEvent we = new WorkEvent(jobDetail);
-        __log.debug("handleWorkEvent " + jobDetail + " " + when);
-        if (we.getType() == WorkEvent.Type.INVOKE_INTERNAL) {
+    public void handleJobDetails(JobDetails jobDetail, final Date when) {
+        JobDetails we = jobDetail;
+        __log.debug("handleJobDetails " + jobDetail + " " + when);
+        if (we.getType() == JobType.INVOKE_INTERNAL) {
             final BpelProcess p = engine._activeProcesses.get(we.getProcessId());
             final ProcessDAO processDAO = p.getProcessDAO();
             final MyRoleMessageExchangeImpl mex = (MyRoleMessageExchangeImpl) engine.getMessageExchange(we.getMexId());
@@ -270,9 +271,9 @@ public class Replayer {
                             return false;
                         }
                     });
-        } else if (we.getType() == WorkEvent.Type.INVOKE_RESPONSE) {
+        } else if (we.getType() == JobType.INVOKE_RESPONSE) {
             __log.debug("reply for live communication");
-            ReplayerContext ctx = findReplayedInstance(we.getIID());
+            ReplayerContext ctx = findReplayedInstance(we.getInstanceId());
             assert ctx != null;
             ctx.runtimeContext.invocationResponse(we.getMexId(), we.getChannel());
             ctx.runtimeContext.execute();

Modified: ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/replayer/ReplayerScheduler.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/replayer/ReplayerScheduler.java?rev=936389&r1=936388&r2=936389&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/replayer/ReplayerScheduler.java (original)
+++ ode/branches/APACHE_ODE_1.X/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/replayer/ReplayerScheduler.java Wed Apr 21 16:39:23 2010
@@ -129,12 +129,12 @@ public class ReplayerScheduler implement
         return null;
     }
 
-    public String schedulePersistedJob(final Map<String, Object> jobDetail, final Date when1) throws ContextException {
+    public String schedulePersistedJob(final JobDetails jobDetail, final Date when1) throws ContextException {
         final Date when = when1 == null ? currentTaskElement.get().when : when1;
         __log.debug("schedulePersistedJob " + jobDetail + " " + when, new Exception());
         scheduleReplayerJob(new Callable<Void>() {
             public Void call() throws Exception {
-                replayer.handleWorkEvent(jobDetail, when);
+                replayer.handleJobDetails(jobDetail, when);
                 return null;
             }
         }, when, null);
@@ -145,13 +145,13 @@ public class ReplayerScheduler implement
     public void setPolledRunnableProcesser(JobProcessor polledRunnableProcessor) {
     }
 
-    public String scheduleVolatileJob(boolean transacted, Map<String, Object> jobDetail, Date when) throws ContextException {
+    public String scheduleVolatileJob(boolean transacted, JobDetails jobDetail, Date when) throws ContextException {
         // TODO Auto-generated method stub
         __log.debug("scheduleVolatileJob");
         return null;
     }
 
-    public String scheduleVolatileJob(boolean transacted, Map<String, Object> jobDetail) throws ContextException {
+    public String scheduleVolatileJob(boolean transacted, JobDetails jobDetail) throws ContextException {
         // TODO Auto-generated method stub
         __log.debug("scheduleVolatileJob");
         return null;

Modified: ode/branches/APACHE_ODE_1.X/bpel-runtime/src/test/java/org/apache/ode/bpel/engine/cron/CronSchedulerTest.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-runtime/src/test/java/org/apache/ode/bpel/engine/cron/CronSchedulerTest.java?rev=936389&r1=936388&r2=936389&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/bpel-runtime/src/test/java/org/apache/ode/bpel/engine/cron/CronSchedulerTest.java (original)
+++ ode/branches/APACHE_ODE_1.X/bpel-runtime/src/test/java/org/apache/ode/bpel/engine/cron/CronSchedulerTest.java Wed Apr 21 16:39:23 2010
@@ -17,6 +17,7 @@ import org.apache.ode.bpel.engine.cron.R
 import org.apache.ode.bpel.iapi.Scheduler;
 import org.apache.ode.bpel.iapi.ProcessConf.CLEANUP_CATEGORY;
 import org.apache.ode.bpel.iapi.ProcessConf.CleanupInfo;
+import org.apache.ode.bpel.iapi.Scheduler.JobDetails;
 import org.apache.ode.daohib.bpel.BpelDAOConnectionImpl;
 import org.apache.ode.utils.CronExpression;
 import org.jmock.Mock;
@@ -71,14 +72,14 @@ public class CronSchedulerTest extends M
         CronExpression cronExpr = new CronExpression("* * * * * ?");
         RuntimeDataCleanupRunnable runnable = new RuntimeDataCleanupRunnable();
         
-        Map<String, Object> details = new HashMap<String, Object>();
-        details.put("pid", new QName("test"));
-        details.put("transactionSize", 10);
+        JobDetails details = new JobDetails();
+        details.setProcessId(new QName("test"));
+        details.getDetailsExt().put("transactionSize", 10);
         CleanupInfo cleanupInfo = new CleanupInfo();
         cleanupInfo.getFilters().add("a=b");
         cleanupInfo.getCategories().add(CLEANUP_CATEGORY.CORRELATIONS);
-        details.put("cleanupInfo", cleanupInfo);
-        runnable.restoreFromDetailsMap(details);
+        details.getDetailsExt().put("cleanupInfo", cleanupInfo);
+        runnable.restoreFromDetails(details);
         runnable.setContexts(contexts);
         
         NotifyingTerminationListener listener = new NotifyingTerminationListener();

Modified: ode/branches/APACHE_ODE_1.X/bpel-runtime/src/test/java/org/apache/ode/bpel/runtime/MockBpelServer.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-runtime/src/test/java/org/apache/ode/bpel/runtime/MockBpelServer.java?rev=936389&r1=936388&r2=936389&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/bpel-runtime/src/test/java/org/apache/ode/bpel/runtime/MockBpelServer.java (original)
+++ ode/branches/APACHE_ODE_1.X/bpel-runtime/src/test/java/org/apache/ode/bpel/runtime/MockBpelServer.java Wed Apr 21 16:39:23 2010
@@ -342,10 +342,10 @@ class MockBpelServer {
             _scheduler.setJobProcessor(server);
         }
 
-        public String schedulePersistedJob(Map<String,Object>jobDetail,Date when) throws ContextException {
+        public String schedulePersistedJob(JobDetails jobDetail,Date when) throws ContextException {
             String jobId = _scheduler.schedulePersistedJob(jobDetail, when);
             // Invocation checks get scheduled much later, we don't want (or need) to wait for them
-            if (!"INVOKE_CHECK".equals(jobDetail.get("type")))
+            if (jobDetail.getType() != JobType.INVOKE_CHECK)
                 _nextSchedule = when == null ?  System.currentTimeMillis() : when.getTime();
             return jobId;
         }
@@ -355,11 +355,11 @@ class MockBpelServer {
             return new GUID().toString();
         }
 
-        public String scheduleVolatileJob(boolean transacted, Map<String,Object> jobDetail) throws ContextException {
+        public String scheduleVolatileJob(boolean transacted, JobDetails jobDetail) throws ContextException {
             return scheduleVolatileJob(transacted, jobDetail, null);
         }
 
-        public String scheduleVolatileJob(boolean transacted, Map<String, Object> jobDetail, Date when) throws ContextException {
+        public String scheduleVolatileJob(boolean transacted, JobDetails jobDetail, Date when) throws ContextException {
             String jobId = _scheduler.scheduleVolatileJob(transacted, jobDetail, when);
             _nextSchedule = System.currentTimeMillis();
             return jobId;

Modified: ode/branches/APACHE_ODE_1.X/bpel-store/src/main/java/org/apache/ode/store/ProcessConfImpl.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/bpel-store/src/main/java/org/apache/ode/store/ProcessConfImpl.java?rev=936389&r1=936388&r2=936389&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/bpel-store/src/main/java/org/apache/ode/store/ProcessConfImpl.java (original)
+++ ode/branches/APACHE_ODE_1.X/bpel-store/src/main/java/org/apache/ode/store/ProcessConfImpl.java Wed Apr 21 16:39:23 2010
@@ -19,14 +19,23 @@
 package org.apache.ode.store;
 
 import java.io.File;
+import java.io.FileFilter;
 import java.io.FileInputStream;
 import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.io.InputStream;
-import java.io.FileFilter;
 import java.net.URI;
 import java.text.ParseException;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
 
 import javax.wsdl.Definition;
 import javax.xml.namespace.QName;
@@ -46,18 +55,18 @@ import org.apache.ode.bpel.dd.TService;
 import org.apache.ode.bpel.evt.BpelEvent;
 import org.apache.ode.bpel.iapi.ContextException;
 import org.apache.ode.bpel.iapi.Endpoint;
+import org.apache.ode.bpel.iapi.EndpointReference;
+import org.apache.ode.bpel.iapi.EndpointReferenceContext;
 import org.apache.ode.bpel.iapi.ProcessConf;
 import org.apache.ode.bpel.iapi.ProcessState;
-import org.apache.ode.bpel.iapi.EndpointReferenceContext;
-import org.apache.ode.bpel.iapi.EndpointReference;
-import org.apache.ode.bpel.iapi.ProcessConf.PartnerRoleConfig;
+import org.apache.ode.bpel.iapi.Scheduler.JobDetails;
 import org.apache.ode.bpel.o.OFailureHandling;
 import org.apache.ode.store.DeploymentUnitDir.CBPInfo;
+import org.apache.ode.utils.CollectionUtils;
 import org.apache.ode.utils.CronExpression;
 import org.apache.ode.utils.DOMUtils;
 import org.apache.ode.utils.HierarchicalProperties;
 import org.apache.ode.utils.WatchDog;
-import org.apache.ode.utils.CollectionUtils;
 import org.w3c.dom.Element;
 import org.w3c.dom.Node;
 
@@ -538,10 +547,10 @@ public class ProcessConfImpl implements 
                     cleanupInfo.setFilters(aCleanup.getFilterList());
                     ProcessCleanupConfImpl.processACleanup(cleanupInfo.getCategories(), aCleanup.getCategoryList());
                     
-                    Map<String, Object> runnableDetails = new HashMap<String, Object>();
-                    runnableDetails.put("cleanupInfo", cleanupInfo);
-                    runnableDetails.put("pid", _pid);
-                    runnableDetails.put("transactionSize", 10);
+                    JobDetails runnableDetails = new JobDetails();
+                    runnableDetails.getDetailsExt().put("cleanupInfo", cleanupInfo);
+                    runnableDetails.getDetailsExt().put("pid", _pid);
+                    runnableDetails.getDetailsExt().put("transactionSize", 10);
                     job.getRunnableDetailList().add(runnableDetails);
                 }
                 jobs.add(job);

Modified: ode/branches/APACHE_ODE_1.X/dao-hibernate-db/src/main/sql/simplesched-derby.sql
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/dao-hibernate-db/src/main/sql/simplesched-derby.sql?rev=936389&r1=936388&r2=936389&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/dao-hibernate-db/src/main/sql/simplesched-derby.sql (original)
+++ ode/branches/APACHE_ODE_1.X/dao-hibernate-db/src/main/sql/simplesched-derby.sql Wed Apr 21 16:39:23 2010
@@ -10,7 +10,18 @@ CREATE TABLE ode_job (
   nodeid char(64),
   scheduled int  NOT NULL DEFAULT 0,
   transacted int  NOT NULL DEFAULT 0,
-  details blob(4096),
+
+  instanceId BIGINT,
+  mexId varchar(255),
+  processId varchar(255),
+  type varchar(255),
+  channel varchar(255),
+  correlatorId varchar(255),
+  correlationKeySet varchar(255),
+  retryCount int,
+  inMem int,
+  detailsExt blob(4096),
+
   PRIMARY KEY(jobid));
 
 CREATE INDEX IDX_ODE_JOB_TS ON ode_job(ts);

Modified: ode/branches/APACHE_ODE_1.X/dao-hibernate-db/src/main/sql/simplesched-firebird.sql
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/dao-hibernate-db/src/main/sql/simplesched-firebird.sql?rev=936389&r1=936388&r2=936389&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/dao-hibernate-db/src/main/sql/simplesched-firebird.sql (original)
+++ ode/branches/APACHE_ODE_1.X/dao-hibernate-db/src/main/sql/simplesched-firebird.sql Wed Apr 21 16:39:23 2010
@@ -10,7 +10,18 @@ CREATE TABLE ode_job (
   nodeid char(64),
   scheduled int  NOT NULL DEFAULT 0,
   transacted int  NOT NULL DEFAULT 0,
-  details blob(4096),
+
+  instanceId BIGINT,
+  mexId varchar(255),
+  processId varchar(255),
+  type varchar(255),
+  channel varchar(255),
+  correlatorId varchar(255),
+  correlationKeySet varchar(255),
+  retryCount int,
+  inMem int,
+  detailsExt blob(4096),
+
   PRIMARY KEY(jobid));
 
 CREATE INDEX IDX_ODE_JOB_TS ON ode_job(ts);

Modified: ode/branches/APACHE_ODE_1.X/dao-hibernate-db/src/main/sql/simplesched-hsql.sql
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/dao-hibernate-db/src/main/sql/simplesched-hsql.sql?rev=936389&r1=936388&r2=936389&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/dao-hibernate-db/src/main/sql/simplesched-hsql.sql (original)
+++ ode/branches/APACHE_ODE_1.X/dao-hibernate-db/src/main/sql/simplesched-hsql.sql Wed Apr 21 16:39:23 2010
@@ -10,7 +10,18 @@ CREATE TABLE ode_job (
   nodeid char(64),
   scheduled int  NOT NULL DEFAULT 0,
   transacted int  NOT NULL DEFAULT 0,
-  details blob(4096),
+
+  instanceId BIGINT,
+  mexId varchar(255),
+  processId varchar(255),
+  type varchar(255),
+  channel varchar(255),
+  correlatorId varchar(255),
+  correlationKeySet varchar(255),
+  retryCount int,
+  inMem int,
+  detailsExt binary(4096),
+
   PRIMARY KEY(jobid));
 
 CREATE INDEX IDX_ODE_JOB_TS ON ode_job(ts);

Modified: ode/branches/APACHE_ODE_1.X/dao-hibernate-db/src/main/sql/simplesched-mysql.sql
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/dao-hibernate-db/src/main/sql/simplesched-mysql.sql?rev=936389&r1=936388&r2=936389&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/dao-hibernate-db/src/main/sql/simplesched-mysql.sql (original)
+++ ode/branches/APACHE_ODE_1.X/dao-hibernate-db/src/main/sql/simplesched-mysql.sql Wed Apr 21 16:39:23 2010
@@ -11,7 +11,18 @@ CREATE TABLE ODE_JOB (
   nodeid char(64)  NULL,
   scheduled int  NOT NULL DEFAULT 0,
   transacted int  NOT NULL DEFAULT 0,
-  details blob(4096)  NULL,
+
+  instanceId BIGINT,
+  mexId varchar(255),
+  processId varchar(255),
+  type varchar(255),
+  channel varchar(255),
+  correlatorId varchar(255),
+  correlationKeySet varchar(255),
+  retryCount int,
+  inMem int,
+  detailsExt blob(4096),
+
   PRIMARY KEY(jobid),
   INDEX IDX_ODE_JOB_TS(ts),
   INDEX IDX_ODE_JOB_NODEID(nodeid)

Modified: ode/branches/APACHE_ODE_1.X/dao-hibernate-db/src/main/sql/simplesched-oracle.sql
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/dao-hibernate-db/src/main/sql/simplesched-oracle.sql?rev=936389&r1=936388&r2=936389&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/dao-hibernate-db/src/main/sql/simplesched-oracle.sql (original)
+++ ode/branches/APACHE_ODE_1.X/dao-hibernate-db/src/main/sql/simplesched-oracle.sql Wed Apr 21 16:39:23 2010
@@ -4,13 +4,26 @@
 -- 
 -- 
 
+DROP TABLE ode_job;
+
 CREATE TABLE ode_job (
-  jobid CHAR(64)  NOT NULL DEFAULT '',
-  ts BIGINT  NOT NULL DEFAULT 0,
-  nodeid char(64),
-  scheduled int  NOT NULL DEFAULT 0,
-  transacted int  NOT NULL DEFAULT 0,
-  details blob(4096),
+  jobid VARCHAR(64)  NOT NULL,
+  ts number(37)  NOT NULL,
+  nodeid varchar(64),
+  scheduled int  NOT NULL,
+  transacted int  NOT NULL,
+  
+  instanceId number(37),
+  mexId varchar(255),
+  processId varchar(255),
+  type varchar(255),
+  channel varchar(255),
+  correlatorId varchar(255),
+  correlationKeySet varchar(255),
+  retryCount int,
+  inMem int,
+  detailsExt blob,
+
   PRIMARY KEY(jobid));
 
 CREATE INDEX IDX_ODE_JOB_TS ON ode_job(ts);

Modified: ode/branches/APACHE_ODE_1.X/dao-hibernate-db/src/main/sql/simplesched-postgres.sql
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/dao-hibernate-db/src/main/sql/simplesched-postgres.sql?rev=936389&r1=936388&r2=936389&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/dao-hibernate-db/src/main/sql/simplesched-postgres.sql (original)
+++ ode/branches/APACHE_ODE_1.X/dao-hibernate-db/src/main/sql/simplesched-postgres.sql Wed Apr 21 16:39:23 2010
@@ -10,7 +10,18 @@ CREATE TABLE ode_job (
   nodeid char(64),
   scheduled int  NOT NULL DEFAULT 0,
   transacted int  NOT NULL DEFAULT 0,
-  details blob(4096),
+
+  instanceId BIGINT,
+  mexId varchar(255),
+  processId varchar(255),
+  type varchar(255),
+  channel varchar(255),
+  correlatorId varchar(255),
+  correlationKeySet varchar(255),
+  retryCount int,
+  inMem int,
+  detailsExt blob(4096),
+
   PRIMARY KEY(jobid));
 
 CREATE INDEX IDX_ODE_JOB_TS ON ode_job(ts);

Modified: ode/branches/APACHE_ODE_1.X/dao-hibernate-db/src/main/sql/simplesched-sqlserver.sql
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/dao-hibernate-db/src/main/sql/simplesched-sqlserver.sql?rev=936389&r1=936388&r2=936389&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/dao-hibernate-db/src/main/sql/simplesched-sqlserver.sql (original)
+++ ode/branches/APACHE_ODE_1.X/dao-hibernate-db/src/main/sql/simplesched-sqlserver.sql Wed Apr 21 16:39:23 2010
@@ -10,7 +10,18 @@ CREATE TABLE ode_job (
   nodeid char(64),
   scheduled int  NOT NULL DEFAULT 0,
   transacted int  NOT NULL DEFAULT 0,
-  details blob(4096),
+
+  instanceId BIGINT,
+  mexId varchar(255),
+  processId varchar(255),
+  type varchar(255),
+  channel varchar(255),
+  correlatorId varchar(255),
+  correlationKeySet varchar(255),
+  retryCount int,
+  inMem int,
+  detailsExt blob(4096),
+
   PRIMARY KEY(jobid));
 
 CREATE INDEX IDX_ODE_JOB_TS ON ode_job(ts);

Modified: ode/branches/APACHE_ODE_1.X/dao-jpa-ojpa-derby/src/main/scripts/simplesched-derby.sql
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/dao-jpa-ojpa-derby/src/main/scripts/simplesched-derby.sql?rev=936389&r1=936388&r2=936389&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/dao-jpa-ojpa-derby/src/main/scripts/simplesched-derby.sql (original)
+++ ode/branches/APACHE_ODE_1.X/dao-jpa-ojpa-derby/src/main/scripts/simplesched-derby.sql Wed Apr 21 16:39:23 2010
@@ -10,7 +10,18 @@ CREATE TABLE ode_job (
   nodeid char(64),
   scheduled int  NOT NULL DEFAULT 0,
   transacted int  NOT NULL DEFAULT 0,
-  details blob(4096),
+
+  instanceId BIGINT,
+  mexId varchar(255),
+  processId varchar(255),
+  type varchar(255),
+  channel varchar(255),
+  correlatorId varchar(255),
+  correlationKeySet varchar(255),
+  retryCount int,
+  inMem int,
+  detailsExt blob(4096),
+
   PRIMARY KEY(jobid));
 
 CREATE INDEX IDX_ODE_JOB_TS ON ode_job(ts);

Modified: ode/branches/APACHE_ODE_1.X/dao-jpa-ojpa-derby/src/main/scripts/simplesched-mysql.sql
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/dao-jpa-ojpa-derby/src/main/scripts/simplesched-mysql.sql?rev=936389&r1=936388&r2=936389&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/dao-jpa-ojpa-derby/src/main/scripts/simplesched-mysql.sql (original)
+++ ode/branches/APACHE_ODE_1.X/dao-jpa-ojpa-derby/src/main/scripts/simplesched-mysql.sql Wed Apr 21 16:39:23 2010
@@ -11,7 +11,18 @@ CREATE TABLE ODE_JOB (
   nodeid char(64)  NULL,
   scheduled int  NOT NULL DEFAULT 0,
   transacted int  NOT NULL DEFAULT 0,
-  details blob(4096)  NULL,
+
+  instanceId BIGINT,
+  mexId varchar(255),
+  processId varchar(255),
+  type varchar(255),
+  channel varchar(255),
+  correlatorId varchar(255),
+  correlationKeySet varchar(255),
+  retryCount int,
+  inMem int,
+  detailsExt blob(4096),
+
   PRIMARY KEY(jobid),
   INDEX IDX_ODE_JOB_TS(ts),
   INDEX IDX_ODE_JOB_NODEID(nodeid)

Modified: ode/branches/APACHE_ODE_1.X/dao-jpa-ojpa-derby/src/main/scripts/simplesched-oracle.sql
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/dao-jpa-ojpa-derby/src/main/scripts/simplesched-oracle.sql?rev=936389&r1=936388&r2=936389&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/dao-jpa-ojpa-derby/src/main/scripts/simplesched-oracle.sql (original)
+++ ode/branches/APACHE_ODE_1.X/dao-jpa-ojpa-derby/src/main/scripts/simplesched-oracle.sql Wed Apr 21 16:39:23 2010
@@ -1,4 +1,30 @@
-CREATE TABLE ODE_JOB (jobid varchar2(64 char) DEFAULT '' NOT NULL, ts number(19,0) DEFAULT 0 NOT NULL, nodeid varchar2(64 char) NULL, scheduled number(12,0) DEFAULT 0 NOT NULL, transacted number(12,0) DEFAULT 0 NOT NULL, details BLOB, PRIMARY KEY(jobid));
+-- Apache ODE - SimpleScheduler Database Schema
+-- 
+-- Apache Derby scripts by Maciej Szefler.
+-- 
+-- 
+
+DROP TABLE ode_job;
+
+CREATE TABLE ode_job (
+  jobid VARCHAR(64)  NOT NULL,
+  ts number(37)  NOT NULL,
+  nodeid varchar(64),
+  scheduled int  NOT NULL,
+  transacted int  NOT NULL,
+  
+  instanceId number(37),
+  mexId varchar(255),
+  processId varchar(255),
+  type varchar(255),
+  channel varchar(255),
+  correlatorId varchar(255),
+  correlationKeySet varchar(255),
+  retryCount int,
+  inMem int,
+  detailsExt blob,
+
+  PRIMARY KEY(jobid));
 
 CREATE INDEX IDX_ODE_JOB_TS ON ode_job(ts);
 CREATE INDEX IDX_ODE_JOB_NODEID ON ode_job(nodeid);

Modified: ode/branches/APACHE_ODE_1.X/scheduler-simple/src/main/java/org/apache/ode/scheduler/simple/DatabaseDelegate.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/scheduler-simple/src/main/java/org/apache/ode/scheduler/simple/DatabaseDelegate.java?rev=936389&r1=936388&r2=936389&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/scheduler-simple/src/main/java/org/apache/ode/scheduler/simple/DatabaseDelegate.java (original)
+++ ode/branches/APACHE_ODE_1.X/scheduler-simple/src/main/java/org/apache/ode/scheduler/simple/DatabaseDelegate.java Wed Apr 21 16:39:23 2010
@@ -38,7 +38,7 @@ public interface DatabaseDelegate {
     boolean insertJob(Job job, String nodeId, boolean loaded) throws DatabaseException ;
 
     /**
-     * Update the job in the database (only updates timestamp and details)
+     * Update the job in the database (only updates timestamp and retryCount)
      *
      * @param job the job
      * @throws DatabaseException in case of error