package org.jbpm.instantiation;
import java.io.Serializable;
import org.jbpm.JbpmConfiguration;
import org.jbpm.graph.def.ProcessDefinition;
/**
* <p>
* Factory to retrieve the Process {@link ClassLoader} which is then used to load delegation classes
* used by the process.
* </p>
* <p>
* Default is the build in {@link ProcessClassLoader}, which tries to load the classes from the jBPM
* database first.
* </p>
* <p>
* Can be configured by setting the property <code>jbpm.process.class.loader</code> in the
* configuration file to the class name of the custom class loader.
* </p>
* <p>
* Implementations should be serializable, as the {@link JbpmConfiguration} that references them is.
* </p>
*
* @author bernd.ruecker@camunda.com
*/
public interface ProcessClassLoaderFactory extends Serializable {
public ClassLoader getProcessClassLoader(ProcessDefinition processDefinition);
}