I will move it to Attic "soon" though. I guess Shark will stay as it was (in 
Attic now)

Jacques

From: <adri...@apache.org>
Author: adrianc
Date: Sat Aug  4 22:40:58 2012
New Revision: 1369503

URL: http://svn.apache.org/viewvc?rev=1369503&view=rev
Log:
Updated Workflow component to compile with Job Scheduler changes.

Modified:
   
ofbiz/trunk/specialpurpose/workflow/src/org/ofbiz/workflow/WorkflowEngine.java
   
ofbiz/trunk/specialpurpose/workflow/src/org/ofbiz/workflow/client/StartActivityJob.java

Modified: 
ofbiz/trunk/specialpurpose/workflow/src/org/ofbiz/workflow/WorkflowEngine.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/workflow/src/org/ofbiz/workflow/WorkflowEngine.java?rev=1369503&r1=1369502&r2=1369503&view=diff
==============================================================================
--- 
ofbiz/trunk/specialpurpose/workflow/src/org/ofbiz/workflow/WorkflowEngine.java 
(original)
+++ 
ofbiz/trunk/specialpurpose/workflow/src/org/ofbiz/workflow/WorkflowEngine.java 
Sat Aug  4 22:40:58 2012
@@ -18,12 +18,12 @@
 
*******************************************************************************/
package org.ofbiz.workflow;

-import java.util.Date;
import java.util.List;
import java.util.Locale;
import java.util.Map;

import javax.transaction.Transaction;
+
import org.ofbiz.base.util.Debug;
import org.ofbiz.base.util.StringUtil;
import org.ofbiz.base.util.UtilDateTime;
@@ -39,6 +39,7 @@ import org.ofbiz.service.ModelService;
import org.ofbiz.service.ServiceDispatcher;
import org.ofbiz.service.engine.AbstractEngine;
import org.ofbiz.service.job.AbstractJob;
+import org.ofbiz.service.job.InvalidJobException;
import org.ofbiz.service.job.Job;
import org.ofbiz.service.job.JobManagerException;

@@ -283,27 +284,28 @@ public class WorkflowEngine extends Abst
}

/** Workflow Runner class runs inside its own thread using the Scheduler API */
-@SuppressWarnings("serial")
class WorkflowRunner extends AbstractJob {

+    public static final String module = WorkflowRunner.class.getName();
+
    GenericRequester requester;
    WfProcess process;
    String startActivityId;
+    private final long runtime = System.currentTimeMillis();

    WorkflowRunner(WfProcess process, GenericRequester requester, String 
startActivityId) {
        super(process.toString() + "." + System.currentTimeMillis(), 
process.toString());
        this.process = process;
        this.requester = requester;
        this.startActivityId = startActivityId;
-        runtime = new Date().getTime();
-    }
-
-    protected void finish() {
-        runtime = -1;
    }

    @Override
-    public void exec() {
+    public void exec() throws InvalidJobException {
+        if (currentState != State.QUEUED) {
+            throw new InvalidJobException("Illegal state change");
+        }
+        currentState = State.RUNNING;
        try {
            if (startActivityId != null)
                process.start(startActivityId);
@@ -314,7 +316,17 @@ class WorkflowRunner extends AbstractJob
            if (requester != null)
                requester.receiveResult(null);
        }
-        finish();
+        currentState = State.FINISHED;
+    }
+
+    @Override
+    public long getRuntime() {
+        return runtime;
+    }
+
+    @Override
+    public boolean isValid() {
+        return currentState == State.CREATED;
    }
}


Modified: 
ofbiz/trunk/specialpurpose/workflow/src/org/ofbiz/workflow/client/StartActivityJob.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/workflow/src/org/ofbiz/workflow/client/StartActivityJob.java?rev=1369503&r1=1369502&r2=1369503&view=diff
==============================================================================
--- 
ofbiz/trunk/specialpurpose/workflow/src/org/ofbiz/workflow/client/StartActivityJob.java
 (original)
+++ 
ofbiz/trunk/specialpurpose/workflow/src/org/ofbiz/workflow/client/StartActivityJob.java
 Sat Aug  4 22:40:58 2012
@@ -18,24 +18,24 @@
 
*******************************************************************************/
package org.ofbiz.workflow.client;

-import java.util.Date;
import java.util.HashMap;

import org.ofbiz.base.util.Debug;
import org.ofbiz.service.GenericRequester;
import org.ofbiz.service.job.AbstractJob;
+import org.ofbiz.service.job.InvalidJobException;
import org.ofbiz.workflow.WfActivity;

/**
 * Workflow Client API - Start Activity Async-Job
 */
-@SuppressWarnings("serial")
public class StartActivityJob extends AbstractJob {

    public static final String module = StartActivityJob.class.getName();

    protected WfActivity activity = null;
    protected GenericRequester requester = null;
+    private final long runtime = System.currentTimeMillis();

    public StartActivityJob(WfActivity activity) {
        this(activity, null);
@@ -45,19 +45,15 @@ public class StartActivityJob extends Ab
        super(activity.toString() + "." + System.currentTimeMillis(), 
activity.toString());
        this.activity = activity;
        this.requester = requester;
-        runtime = new Date().getTime();
        if (Debug.verboseOn()) Debug.logVerbose("Created new StartActivityJob : 
" + activity, module);
    }

-    protected void finish() {
-        runtime = -1;
-    }
-
-    /**
-     * @see org.ofbiz.service.job.Job#exec()
-     */
    @Override
-    public void exec() {
+    public void exec() throws InvalidJobException {
+        if (currentState != State.QUEUED) {
+            throw new InvalidJobException("Illegal state change");
+        }
+        currentState = State.RUNNING;
        try {
            Debug.logVerbose("Executing job now : " + activity, module);
            activity.activate();
@@ -68,6 +64,16 @@ public class StartActivityJob extends Ab
            if (requester != null)
                requester.receiveThrowable(e);
        }
-        finish();
+        currentState = State.FINISHED;
+    }
+
+    @Override
+    public long getRuntime() {
+        return runtime;
+    }
+
+    @Override
+    public boolean isValid() {
+        return currentState == State.CREATED;
    }
}


Reply via email to