70 lines
1.8 KiB
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;
|
|
}
|
|
|
|
}
|