package pl.net.bluesoft.rnd.processtool;
import org.hibernate.SessionFactory;
import pl.net.bluesoft.rnd.processtool.model.config.ProcessDefinitionConfig;
import pl.net.bluesoft.rnd.processtool.model.config.ProcessQueueConfig;
import pl.net.bluesoft.rnd.processtool.plugins.ProcessToolRegistry;
import java.io.InputStream;
/**
* @author tlipski@bluesoft.net.pl
*/
public interface ProcessToolContextFactory {
<T> T withProcessToolContext(ReturningProcessToolContextCallback<T> callback);
<T> T withExistingOrNewContext(ReturningProcessToolContextCallback<T> callback);
ProcessToolRegistry getRegistry();
void deployOrUpdateProcessDefinition(final InputStream bpmStream,
final ProcessDefinitionConfig cfg,
final ProcessQueueConfig[] queues,
final InputStream imageStream,
final InputStream logoStream);
void deployOrUpdateProcessDefinition(InputStream jpdlStream,
InputStream processToolConfigStream,
InputStream queueConfigStream,
final InputStream imageStream,
final InputStream logoStream);
// void deployOrUpdateProcessDefinition(InputStream jpdlStream,
// InputStream processToolConfigStream,
// InputStream queueConfigStream,
// InputStream logoStream);
void updateSessionFactory(SessionFactory sf);
}