1 package org
.argeo
.slc
.core
.execution
;
3 import java
.util
.ArrayList
;
6 import org
.apache
.commons
.logging
.Log
;
7 import org
.apache
.commons
.logging
.LogFactory
;
8 import org
.argeo
.slc
.execution
.ExecutionFlow
;
9 import org
.argeo
.slc
.execution
.ExecutionFlowDescriptor
;
10 import org
.argeo
.slc
.execution
.ExecutionModule
;
11 import org
.argeo
.slc
.execution
.ExecutionModuleDescriptor
;
12 import org
.argeo
.slc
.execution
.ExecutionModulesManager
;
13 import org
.argeo
.slc
.process
.RealizedFlow
;
14 import org
.argeo
.slc
.process
.SlcExecution
;
15 import org
.springframework
.util
.Assert
;
17 public class DefaultModulesManager
implements ExecutionModulesManager
{
18 private final static Log log
= LogFactory
19 .getLog(DefaultModulesManager
.class);
21 private List
<ExecutionModule
> executionModules
= new ArrayList
<ExecutionModule
>();
23 protected ExecutionModule
getExecutionModule(String moduleName
, String version
) {
24 for (ExecutionModule moduleT
: executionModules
) {
25 if (moduleT
.getName().equals(moduleName
)) {
26 // TODO: check version
33 public ExecutionModuleDescriptor
getExecutionModuleDescriptor(
34 String moduleName
, String version
) {
35 ExecutionModule module
= getExecutionModule(moduleName
, version
);
37 Assert
.notNull(module
);
39 return module
.getDescriptor();
42 public List
<ExecutionModule
> listExecutionModules() {
43 return executionModules
;
46 public void setExecutionModules(List
<ExecutionModule
> executionModules
) {
47 this.executionModules
= executionModules
;
50 public void process(SlcExecution slcExecution
) {
51 log
.info("SlcExecution " + slcExecution
);
53 for(RealizedFlow flow
: slcExecution
.getRealizedFlows()) {
54 ExecutionModule module
= getExecutionModule(flow
.getModuleName(),
55 flow
.getModuleVersion());
57 ExecutionContext executionContext
= new ExecutionContext();
58 executionContext
.addVariables(slcExecution
.getAttributes());
59 ExecutionThread thread
= new ExecutionThread(executionContext
, flow
.getFlowDescriptor(),
69 private class ExecutionThread
extends Thread
{
70 private final ExecutionFlowDescriptor executionFlowDescriptor
;
71 private final ExecutionContext executionContext
;
72 private final ExecutionModule executionModule
;
74 public ExecutionThread(ExecutionContext executionContext
,
75 ExecutionFlowDescriptor executionFlowDescriptor
,
76 ExecutionModule executionModule
) {
77 super("SLC Execution #" + executionContext
.getUuid());
78 this.executionFlowDescriptor
= executionFlowDescriptor
;
79 this.executionContext
= executionContext
;
80 this.executionModule
= executionModule
;
84 ExecutionContext
.registerExecutionContext(executionContext
);
86 executionModule
.execute(executionFlowDescriptor
);
87 } catch (Exception e
) {
88 log
.error("Execution " + executionContext
.getUuid()