71 lines
1.9 KiB
Java
71 lines
1.9 KiB
Java
package eu.dnetlib.manager.wf.workflows.procs;
|
|
|
|
import java.time.LocalDateTime;
|
|
import java.time.format.DateTimeFormatter;
|
|
import java.util.HashMap;
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
|
|
import org.apache.commons.logging.Log;
|
|
import org.apache.commons.logging.LogFactory;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.stereotype.Component;
|
|
|
|
import eu.dnetlib.errors.WorkflowManagerException;
|
|
import eu.dnetlib.manager.wf.model.GraphNode;
|
|
import eu.dnetlib.manager.wf.model.WorkflowInstance;
|
|
import eu.dnetlib.manager.wf.workflows.graph.GraphLoader;
|
|
import eu.dnetlib.manager.wf.workflows.util.ProcessCallback;
|
|
|
|
@Component
|
|
public class ProcessFactory {
|
|
|
|
private static final Log log = LogFactory.getLog(ProcessFactory.class);
|
|
|
|
private String oldGeneratedId = "";
|
|
|
|
private final DateTimeFormatter processIdFormatter = DateTimeFormatter.ofPattern("yyyyMMdd_HHmmss_S");
|
|
|
|
@Autowired
|
|
private GraphLoader graphLoader;
|
|
|
|
public WorkflowProcess newProcess(final String wfId,
|
|
final String wfName,
|
|
final String wfFamily,
|
|
final List<GraphNode> graph,
|
|
final WorkflowInstance instance,
|
|
final ProcessCallback processCallback,
|
|
final String parent) throws WorkflowManagerException {
|
|
|
|
final Map<String, String> globalParams = new HashMap<>();
|
|
globalParams.putAll(instance.getSystemParams());
|
|
globalParams.putAll(instance.getUserParams());
|
|
|
|
return new WorkflowProcess(generateProcessId(),
|
|
wfName,
|
|
wfFamily,
|
|
instance.getDsId(),
|
|
instance.getDsName(),
|
|
instance.getApiId(),
|
|
graphLoader.loadGraph(graph, globalParams),
|
|
instance.getPriority(),
|
|
wfId,
|
|
instance.getId(),
|
|
globalParams,
|
|
processCallback, parent);
|
|
|
|
}
|
|
|
|
private synchronized String generateProcessId() {
|
|
String id = "";
|
|
do {
|
|
id = "wf_" + LocalDateTime.now().format(processIdFormatter);
|
|
log.info("Generated processID " + id);
|
|
} while (id.equals(oldGeneratedId));
|
|
|
|
oldGeneratedId = id;
|
|
|
|
return id;
|
|
}
|
|
}
|