Project

General

Profile

1
package eu.dnetlib.msro.workflows.nodes;
2

    
3
import eu.dnetlib.msro.workflows.procs.Env;
4
import eu.dnetlib.msro.workflows.procs.Token;
5
import org.apache.commons.logging.Log;
6
import org.apache.commons.logging.LogFactory;
7

    
8
public abstract class SimpleJobNode extends ProcessNode {
9

    
10
	private static final Log log = LogFactory.getLog(SimpleJobNode.class);
11

    
12
	@Override
13
	public final void execute(final Token token) {
14

    
15
		try {
16
			log.debug("START NODE: " + getBeanName());
17
			beforeStart(token);
18
			final String arc = execute(token.getEnv());
19
			beforeCompleted(token);
20
			log.debug("END NODE (SUCCESS): " + getBeanName());
21

    
22
			token.setNextArc(arc);
23
			token.release();
24

    
25
		} catch (Throwable e) {
26
			log.error("got exception while executing workflow node", e);
27
			log.debug("END NODE (FAILED): " + getBeanName());
28
			beforeFailed(token);
29
			token.releaseAsFailed(e);
30
		}
31
	}
32

    
33
	abstract protected String execute(final Env env) throws Exception;
34

    
35
	protected void beforeStart(final Token token) {
36
		// For optional overwrites
37
	}
38

    
39
	protected void beforeCompleted(final Token token) {
40
		// For optional overwrites
41
	}
42

    
43
	protected void beforeFailed(final Token token) {
44
		// For optional overwrites
45
	}
46

    
47
}
(8-8/9)