You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ode.apache.org by mi...@apache.org on 2009/11/19 22:32:50 UTC
svn commit: r882307 - 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/replayer/
bpel-runtime/src/test/java/org/apache/ode/...
Author: midon
Date: Thu Nov 19 21:32:50 2009
New Revision: 882307
URL: http://svn.apache.org/viewvc?rev=882307&view=rev
Log:
add a method to schedule volatile jobs at a given date
Modified:
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/replayer/ReplayerScheduler.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/scheduler-simple/src/main/java/org/apache/ode/scheduler/simple/SimpleScheduler.java
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=882307&r1=882306&r2=882307&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 Thu Nov 19 21:32:50 2009
@@ -61,9 +61,17 @@
* jobs scheduled from a transactional context should be scheduled
* regardless of whether the transaction commits.
*
+ * @param transacted should the job be executed in a transaction?
* @param jobDetail information about the job
+ * @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;
+
+ /**
+ * 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;
/**
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=882307&r1=882306&r2=882307&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 Thu Nov 19 21:32:50 2009
@@ -71,59 +71,66 @@
public String schedulePersistedJob(final Map<String, Object> detail, final Date date) throws ContextException {
if (date != null) {
+ return scheduleVolatileJob(true, detail, date);
+ } else {
+ return scheduleVolatileJob(true, detail);
+ }
+ }
+
+ public String scheduleVolatileJob(boolean transacted, Map<String, Object> jobDetail) throws ContextException {
+ return scheduleVolatileJob(transacted, jobDetail, null);
+ }
+
+ public String scheduleVolatileJob(final boolean transacted, final Map<String, Object> detail, final Date date) throws ContextException {
+ if (date != null) {
registerSynchronizer(new Synchronizer() {
public void afterCompletion(boolean success) {
if (!success) return;
_timer.schedule(new TimerTask() {
@SuppressWarnings("unchecked")
public void run() {
- try {
- execIsolatedTransaction(new Callable() {
- public Object call() throws Exception {
- JobInfo ji = new JobInfo("volatileJob", detail, 0);
- doExecute(ji);
- return null;
- }
- });
- } catch (Exception e) {
- throw new ContextException("Failure when scheduling a new volatile job.", e);
- }
+ exec(transacted, detail);
}
}, date);
}
- public void beforeCompletion() { }
+
+ public void beforeCompletion() {
+ }
});
return null;
} else {
- return scheduleVolatileJob(true, detail);
+ registerSynchronizer(new Synchronizer() {
+ @SuppressWarnings("unchecked")
+ public void afterCompletion(boolean success) {
+ if (!success) return;
+ exec(transacted, detail);
+ }
+
+ public void beforeCompletion() {
+ }
+ });
+ return null;
}
}
- public String scheduleVolatileJob(final boolean transacted, final Map<String, Object> detail) throws ContextException {
- registerSynchronizer(new Synchronizer() {
- @SuppressWarnings("unchecked")
- public void afterCompletion(boolean success) {
- if (!success) return;
- try {
- if (transacted) {
- execIsolatedTransaction(new Callable() {
- public Object call() throws Exception {
- JobInfo ji = new JobInfo("volatileJob", detail, 0);
- doExecute(ji);
- return null;
- }
- });
- } else {
+ private void exec(boolean transacted, final Map<String, Object> detail) {
+ try {
+ if (transacted) {
+
+ execIsolatedTransaction(new Callable() {
+ public Object call() throws Exception {
JobInfo ji = new JobInfo("volatileJob", detail, 0);
doExecute(ji);
+ return null;
}
- } catch (Exception e) {
- throw new ContextException("Failure when starting a new volatile job.", e);
- }
+ });
+ } else {
+ JobInfo ji = new JobInfo("volatileJob", detail, 0);
+ doExecute(ji);
}
- public void beforeCompletion() { }
- });
- return null;
+ } catch (Exception e) {
+ throw new ContextException("Failure when scheduling a new volatile job.", e);
+ }
}
public String scheduleMapSerializableRunnable(final MapSerializableRunnable runnable, final Date when) throws ContextException {
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=882307&r1=882306&r2=882307&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 Thu Nov 19 21:32:50 2009
@@ -117,6 +117,10 @@
return null;
}
+ public String scheduleVolatileJob(boolean transacted, Map<String, Object> jobDetail, Date when) throws ContextException {
+ return null;
+ }
+
public String scheduleVolatileJob(boolean transacted, Map<String, Object> jobDetail) throws ContextException {
return null;
}
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=882307&r1=882306&r2=882307&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 Thu Nov 19 21:32:50 2009
@@ -300,9 +300,13 @@
runnable.run();
return new GUID().toString();
}
-
+
public String scheduleVolatileJob(boolean transacted, Map<String,Object> jobDetail) throws ContextException {
- String jobId = _scheduler.scheduleVolatileJob(transacted, jobDetail);
+ return scheduleVolatileJob(transacted, jobDetail, null);
+ }
+
+ public String scheduleVolatileJob(boolean transacted, Map<String, Object> jobDetail, Date when) throws ContextException {
+ String jobId = _scheduler.scheduleVolatileJob(transacted, jobDetail, when);
_nextSchedule = System.currentTimeMillis();
return jobId;
}
Modified: ode/branches/APACHE_ODE_1.X/scheduler-simple/src/main/java/org/apache/ode/scheduler/simple/SimpleScheduler.java
URL: http://svn.apache.org/viewvc/ode/branches/APACHE_ODE_1.X/scheduler-simple/src/main/java/org/apache/ode/scheduler/simple/SimpleScheduler.java?rev=882307&r1=882306&r2=882307&view=diff
==============================================================================
--- ode/branches/APACHE_ODE_1.X/scheduler-simple/src/main/java/org/apache/ode/scheduler/simple/SimpleScheduler.java (original)
+++ ode/branches/APACHE_ODE_1.X/scheduler-simple/src/main/java/org/apache/ode/scheduler/simple/SimpleScheduler.java Thu Nov 19 21:32:50 2009
@@ -378,7 +378,14 @@
}
public String scheduleVolatileJob(boolean transacted, Map<String, Object> jobDetail) throws ContextException {
- Job job = new Job(System.currentTimeMillis(), transacted, jobDetail);
+ return scheduleVolatileJob(transacted, jobDetail, null);
+ }
+
+ public String scheduleVolatileJob(boolean transacted, Map<String, Object> jobDetail, Date when) throws ContextException {
+ long ctime = System.currentTimeMillis();
+ if (when == null)
+ when = new Date(ctime);
+ Job job = new Job(when.getTime(), transacted, jobDetail);
job.persisted = false;
addTodoOnCommit(job);
return job.toString();