dnet-applications/libs/dnet-wf-service/src/main/java/eu/dnetlib/manager/wf/nodes/LaunchWorkflowJobNode.java

70 lines
1.8 KiB
Java

package eu.dnetlib.manager.wf.nodes;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.annotation.Autowired;
import eu.dnetlib.manager.wf.workflows.procs.ProcessAware;
import eu.dnetlib.manager.wf.workflows.procs.ProcessRegistry;
import eu.dnetlib.manager.wf.workflows.procs.Token;
import eu.dnetlib.manager.wf.workflows.procs.WorkflowExecutor;
import eu.dnetlib.manager.wf.workflows.procs.WorkflowProcess;
/**
* Created by michele on 18/11/15.
*/
public class LaunchWorkflowJobNode extends ProcessNode implements ProcessAware {
private static final Log log = LogFactory.getLog(LaunchWorkflowJobNode.class);
private String wfInstanceId;
@Autowired
private WorkflowExecutor executor;
@Autowired
private ProcessRegistry processRegistry;
private WorkflowProcess process;
@Override
public final void execute(final Token token) {
try {
final String procId = executor.startWorkflowInstance(getWfInstanceId(), process.getWfInstanceId(), (proc) -> {
log.debug("Child workflow has been completed successfully");
token.release();
}, (proc) -> {
log.error("Child workflow is failed");
token.releaseAsFailed("Child workflow is failed");
});
if (log.isDebugEnabled()) {
log.debug("The child workflow [instance: " + getWfInstanceId() + "] is starting with procId: " + procId);
}
setProgressMessage("Launched sub workflow, proc: " + procId);
} catch (
final Throwable e) {
log.error("got exception while launching child workflow", e);
token.releaseAsFailed(e);
}
}
public String getWfInstanceId() {
return wfInstanceId;
}
public void setWfInstanceId(final String wfInstanceId) {
this.wfInstanceId = wfInstanceId;
}
@Override
public void setProcess(final WorkflowProcess process) {
this.process = process;
}
}