dnet-applications/libs/dnet-wf-service/src/main/java/eu/dnetlib/manager/wf/workflows/procs/WorkflowProcess.java

259 lines
5.2 KiB
Java

package eu.dnetlib.manager.wf.workflows.procs;
import java.time.LocalDateTime;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.CopyOnWriteArrayList;
import org.apache.commons.lang3.math.NumberUtils;
import eu.dnetlib.manager.wf.workflows.graph.Graph;
import eu.dnetlib.manager.wf.workflows.util.ProcessCallback;
/**
* Created by michele on 19/11/15.
*/
public class WorkflowProcess implements Comparable<WorkflowProcess> {
private final String id;
private final String name;
private final String family;
private String dsId;
private String dsName;
private String dsInterface;
private final Graph graph;
private final ProcessCallback callback;
private final int priority;
private final Env env;
private final List<Token> tokens = new CopyOnWriteArrayList<>();
private LocalDateTime lastActivityDate;
private Status status;
private LocalDateTime startDate = LocalDateTime.MIN;
private LocalDateTime endDate = LocalDateTime.MIN;
private final String wfId;
private final String wfInstanceId;
private Map<String, List<Token>> pausedJoinNodeTokens = new HashMap<>();
private Map<String, String> globalParams;
private String error;
private String errorStacktrace;
private Map<String, String> outputParams = new HashMap<>();
private String parentProfileId;
public WorkflowProcess(
final String id,
final String name,
final String family,
final String dsId,
final String dsName,
final String dsInterface,
final Graph graph,
final int priority,
final String wfId,
final String wfInstanceId,
final Map<String, String> globalParams,
final ProcessCallback callback,
final String parentProfileId) {
this.id = id;
this.name = name;
this.family = family;
this.dsId = dsId;
this.dsName = dsName;
this.dsInterface = dsInterface;
this.graph = graph;
this.priority = priority;
this.callback = callback;
this.status = Status.CREATED;
this.env = new Env();
this.wfId = wfId;
this.wfInstanceId = wfInstanceId;
this.globalParams = globalParams;
this.lastActivityDate = LocalDateTime.now();
this.parentProfileId = parentProfileId;
}
public void setParentProfileId(final String parentProfileId) {
this.parentProfileId = parentProfileId;
}
public String getDsId() {
return dsId;
}
public void setDsId(final String dsId) {
this.dsId = dsId;
}
public String getDsName() {
return dsName;
}
public void setDsName(final String dsName) {
this.dsName = dsName;
}
public String getDsInterface() {
return dsInterface;
}
public void setDsInterface(final String dsInterface) {
this.dsInterface = dsInterface;
}
public Map<String, List<Token>> getPausedJoinNodeTokens() {
return pausedJoinNodeTokens;
}
public void setPausedJoinNodeTokens(final Map<String, List<Token>> pausedJoinNodeTokens) {
this.pausedJoinNodeTokens = pausedJoinNodeTokens;
}
public String getId() {
return id;
}
public String getName() {
return name;
}
public Env getEnv() {
return env;
}
public Status getStatus() {
return status;
}
public void setStatus(final Status status) {
this.status = status;
}
public Graph getGraph() {
return graph;
}
public List<Token> getTokens() {
return tokens;
}
public void kill() {
setStatus(Status.KILLED);
}
public ProcessCallback getCallback() {
return callback;
}
public int getPriority() {
return priority;
}
public boolean isTerminated() {
switch (status) {
case SUCCESS:
case FAILURE:
case KILLED:
return true;
default:
return false;
}
}
public LocalDateTime getLastActivityDate() {
return lastActivityDate;
}
public void setLastActivityDate(final LocalDateTime lastActivityDate) {
this.lastActivityDate = lastActivityDate;
}
@Override
public String toString() {
return String.format("[process id='%s' name='%s']", id, name);
}
@Override
public int compareTo(final WorkflowProcess wp) {
return NumberUtils.compare(getPriority(), wp.getPriority());
}
public Map<String, String> getGlobalParams() {
return globalParams;
}
public void setGlobalParams(final Map<String, String> globalParams) {
this.globalParams = globalParams;
}
public String getFamily() {
return family;
}
public String getWfId() {
return wfId;
}
public String getWfInstanceId() {
return wfInstanceId;
}
public void setStartDate(final LocalDateTime startDate) {
this.startDate = startDate;
}
public void setEndDate(final LocalDateTime endDate) {
this.endDate = endDate;
}
public LocalDateTime getStartDate() {
return startDate;
}
public LocalDateTime getEndDate() {
return endDate;
}
public enum Status {
CREATED,
EXECUTING,
SUCCESS,
FAILURE,
KILLED;
}
public enum StartMode {
AUTO,
MANUAL,
DISABLED
}
public String getError() {
return error;
}
public void setError(final String error) {
this.error = error;
}
public String getErrorStacktrace() {
return errorStacktrace;
}
public void setErrorStacktrace(final String errorStacktrace) {
this.errorStacktrace = errorStacktrace;
}
public void setOutputParams(final Map<String, String> outputParams) {
this.outputParams = outputParams;
}
public Map<String, String> getOutputParams() {
return outputParams;
}
public String getParentProfileId() {
return parentProfileId;
}
}