X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=runtime%2Forg.argeo.slc.core%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fslc%2Fcore%2Fruntime%2FDefaultAgent.java;h=3220e910f2557957733372fa4ef766e6da51a44a;hb=a181e3d059185a9dc108e81f38c66f48f4e4aac8;hp=ca230856f4f2103f3288dfacf49cd52edb52d382;hpb=e9e32f3294118e8289ca21034a7bd799ec91048d;p=gpl%2Fargeo-slc.git diff --git a/runtime/org.argeo.slc.core/src/main/java/org/argeo/slc/core/runtime/DefaultAgent.java b/runtime/org.argeo.slc.core/src/main/java/org/argeo/slc/core/runtime/DefaultAgent.java index ca230856f..3220e910f 100644 --- a/runtime/org.argeo.slc.core/src/main/java/org/argeo/slc/core/runtime/DefaultAgent.java +++ b/runtime/org.argeo.slc.core/src/main/java/org/argeo/slc/core/runtime/DefaultAgent.java @@ -22,8 +22,10 @@ import java.util.List; import java.util.UUID; import org.argeo.slc.SlcException; +import org.argeo.slc.core.execution.ProcessThread; import org.argeo.slc.execution.ExecutionModuleDescriptor; import org.argeo.slc.execution.ExecutionModulesManager; +import org.argeo.slc.execution.ExecutionProcess; import org.argeo.slc.process.SlcExecution; import org.argeo.slc.runtime.SlcAgent; import org.argeo.slc.runtime.SlcAgentDescriptor; @@ -61,8 +63,25 @@ public class DefaultAgent implements SlcAgent { /* * SLC AGENT */ - public void runSlcExecution(final SlcExecution slcExecution) { - modulesManager.process(slcExecution); + public void runSlcExecution(SlcExecution slcExecution) { + process(slcExecution); + } + + public void process(ExecutionProcess process) { + ProcessThread processThread = createProcessThread(modulesManager, + process); + processThread.start(); + } + + /** Creates the thread which will coordinate the execution for this agent. */ + protected ProcessThread createProcessThread( + ExecutionModulesManager modulesManager, ExecutionProcess process) { + if (!(process instanceof SlcExecution)) + throw new SlcException("Unsupported process type " + + process.getClass()); + ProcessThread processThread = new ProcessThread(modulesManager, + (SlcExecution) process); + return processThread; } public ExecutionModuleDescriptor getExecutionModuleDescriptor(