package ee.telekom.workflow.graph.node.activity;
import ee.telekom.workflow.graph.Environment;
import ee.telekom.workflow.graph.GraphEngine;
import ee.telekom.workflow.graph.Token;
import ee.telekom.workflow.graph.node.AbstractNode;
/**
* Activity executing a given {@link Script}. The script is executed synchronously.
*/
public class ScriptActivity extends AbstractNode{
private Script script;
public ScriptActivity( int id, Script script ){
this( id, null, script );
}
public ScriptActivity( int id, String name, Script script ){
super( id, name );
this.script = script;
}
public Script getScript() {
return script;
}
@Override
public void execute( GraphEngine engine, Token token ){
script.execute( token.getInstance().getEnvironment() );
engine.complete( token, null );
}
@Override
public void cancel( GraphEngine engine, Token token ){
// Tokens cannot "wait" at this kind of node since the execution
// is synchronous. Hence, no "cancel" action is required.
}
@Override
public void store( Environment environment, Object result ){
// This type of node does not produce a result
}
public static interface Script{
void execute( Environment environment );
}
}