/*
* *************************************************************************************
* Copyright (C) 2008 EsperTech, Inc. All rights reserved. *
* http://esper.codehaus.org *
* http://www.espertech.com *
* ---------------------------------------------------------------------------------- *
* The software in this package is published under the terms of the GPL license *
* a copy of which has been included with this distribution in the license.txt file. *
* *************************************************************************************
*/
package com.espertech.esper.client.dataflow;
import java.util.Map;
/**
* Data flow runtime for instantiating data flows.
*/
public interface EPDataFlowRuntime {
/**
* Returns a descriptor for the given data flow, or null if the data flow has not been declared.
* @param dataFlowName data flow name
* @return data flow descriptor
*/
public EPDataFlowDescriptor getDataFlow(String dataFlowName);
/**
* Returns the names of all declared data flows.
* @return data flow names
*/
public String[] getDataFlows();
/**
* Instantiate a data flow.
* @param dataFlowName name of data flow to instantiate
* @return data flow instance
* @throws EPDataFlowInstantiationException when the instantiation failed
*/
public EPDataFlowInstance instantiate(String dataFlowName) throws EPDataFlowInstantiationException;
/**
* Instantiate a data flow, with options.
* @param dataFlowName name of data flow to instantiate
* @param options populate options to control parameterization, instantiation etc.
* @return data flow instance
* @throws EPDataFlowInstantiationException when the instantiation failed
*/
public EPDataFlowInstance instantiate(String dataFlowName, EPDataFlowInstantiationOptions options) throws EPDataFlowInstantiationException;
/**
* Save an existing data flow configuration (data flow name and its options) for later retrieval.
* @param dataflowConfigName configuration name to save, must be unique
* @param dataFlowName data flow name
* @param options options object
* @throws EPDataFlowAlreadyExistsException if the configuration name is already used
* @throws EPDataFlowNotFoundException if the data flow by this name does not exist
*/
public void saveConfiguration(String dataflowConfigName, String dataFlowName, EPDataFlowInstantiationOptions options) throws EPDataFlowAlreadyExistsException, EPDataFlowNotFoundException;
/**
* Returns the names of a saved data flow configurations.
* @return data flow configuration names
*/
public String[] getSavedConfigurations();
/**
* Returns a saved dataflow configuration or null if it is not found.
* @param configurationName name to find
* @return data flow configuration
*/
public EPDataFlowSavedConfiguration getSavedConfiguration(String configurationName);
/**
* Instantiate a data flow from a saved configuration.
* @param configurationName configuration name
* @return instance
* @throws EPDataFlowInstantiationException if the configuration name could not be found
*/
public EPDataFlowInstance instantiateSavedConfiguration(String configurationName) throws EPDataFlowInstantiationException;
/**
* Remove a previously saved data flow configuration.
* @param configurationName to remove
* @return indicator whether found and removed
*/
public boolean removeSavedConfiguration(String configurationName);
/**
* Save an existing instance with the runtime, for later retrieval.
* @param instanceName name to use to save, must be unique among currently saved instances
* @param instance saved
* @throws EPDataFlowAlreadyExistsException if an instance by this name already exists
*/
public void saveInstance(String instanceName, EPDataFlowInstance instance) throws EPDataFlowAlreadyExistsException;
/**
* Returns the instance names of a saved data flow instances.
* @return data flow instance names
*/
public String[] getSavedInstances();
/**
* Returns a specific saved data flow instance, or null if it has not been found
* @param instanceName to look for
* @return instance
*/
public EPDataFlowInstance getSavedInstance(String instanceName);
/**
* Remove an instance previously saved.
* @param instanceName to be removed
* @return indicator whether found or not
*/
public boolean removeSavedInstance(String instanceName);
}