private Engine newEngine() throws ConfigurationException
{
		  EngineConfiguration config = null;
		  ConfigurationDescription configDescription = new ConfigurationDescription
		  (
				"taverna",
				"uk.ac.soton.itinnovation.freefluo.exts.taverna.TavernaScuflModelParser",
				"uk.ac.soton.itinnovation.freefluo.exts.taverna.TavernaDataHandler"
		  );

		  config = new EngineConfigurationImpl(configDescription, getClass().getClassLoader());

		  return  new EngineImpl(config);
}

public void Run_Engine(String wfFile, String inputFile) throws BadlyFormedDocumentException, ConfigurationException, ParsingException, JDOMException, IOException, UnknownWorkflowInstanceException, InvalidInputException, InterruptedException
{
	// Convert workflow document to String
 	File wf = new File(wfFile);
	SAXBuilder builder = new SAXBuilder();
	document = builder.build(wf);

	XMLOutputter outputter = new XMLOutputter();
	String workflow_string = outputter.outputString(document);

	// Create FreeFlwo engine
	Engine engine = newEngine();
	String flowId = engine.compile(workflow_string);

	// Set inputs
 	File wf = new File(inputFile);
	SAXBuilder builder = new SAXBuilder();
	Document inputDocument = builder.build(wf);

	DataHandler dataHandler = engine.getEngineConfiguration().getDataHandler();
	Map inputMap = dataHandler.parseDataDocument(inputDocument);

	engine.setInput(flowId, inputMap);

	// Launch workflow
	engine.run(flowId);

	while((engine.getStatus(flowId).compareToIgnoreCase("COMPLETE") != 0) && (engine.getStatus(flowId).compareToIgnoreCase("FAILED") != 0))
	{
		Thread.sleep(1000);
	}


	System.out.println(engine.getProgressReportXML(flowId));
	System.out.println(engine.getErrorMessage(flowId));

	Map[] getEntryFromFSSP_out = engine.getIntermediateResultsForProcessor(flowId, "getEntryFromFSSP");

	// Get Output
	Map outputMap = engine.getOutput(flowId);
	Document outputDocument = dataHandler.getDataDocument(outputMap);

	System.out.println(outputter.outputString(outputDocument));

	engine.destroy(flowId);
}