package pl.net.bluesoft.rnd.processtool;
import static pl.net.bluesoft.util.lang.FormatUtil.nvl;
import java.util.Map;
import org.hibernate.Session;
import pl.net.bluesoft.rnd.processtool.bpm.ProcessToolBpmConstants;
import pl.net.bluesoft.rnd.processtool.bpm.ProcessToolSessionFactory;
import pl.net.bluesoft.rnd.processtool.dao.ProcessDefinitionDAO;
import pl.net.bluesoft.rnd.processtool.dao.ProcessDictionaryDAO;
import pl.net.bluesoft.rnd.processtool.dao.ProcessInstanceDAO;
import pl.net.bluesoft.rnd.processtool.dao.ProcessInstanceFilterDAO;
import pl.net.bluesoft.rnd.processtool.dao.ProcessInstanceSimpleAttributeDAO;
import pl.net.bluesoft.rnd.processtool.dao.ProcessStateActionDAO;
import pl.net.bluesoft.rnd.processtool.dao.UserDataDAO;
import pl.net.bluesoft.rnd.processtool.dao.UserProcessQueueDAO;
import pl.net.bluesoft.rnd.processtool.dao.UserSubstitutionDAO;
import pl.net.bluesoft.rnd.processtool.dict.ProcessDictionaryRegistry;
import pl.net.bluesoft.rnd.processtool.hibernate.HibernateTransactionCallback;
import pl.net.bluesoft.rnd.processtool.model.ProcessInstance;
import pl.net.bluesoft.rnd.processtool.model.UserData;
import pl.net.bluesoft.rnd.processtool.plugins.ProcessToolRegistry;
import pl.net.bluesoft.rnd.processtool.userqueues.IUserProcessQueueManager;
import pl.net.bluesoft.util.eventbus.EventBusManager;
/**
* @author tlipski@bluesoft.net.pl
*/
public interface ProcessToolContext extends ProcessToolBpmConstants
{
/** Get the user process queues manager */
IUserProcessQueueManager getUserProcessQueueManager();
ProcessDictionaryRegistry getProcessDictionaryRegistry();
ProcessToolRegistry getRegistry();
ProcessInstanceDAO getProcessInstanceDAO();
UserProcessQueueDAO getUserProcessQueueDAO();
ProcessInstanceFilterDAO getProcessInstanceFilterDAO();
ProcessDictionaryDAO getProcessDictionaryDAO();
Session getHibernateSession();
UserDataDAO getUserDataDAO();
UserSubstitutionDAO getUserSubstitutionDAO();
ProcessInstanceSimpleAttributeDAO getProcessInstanceSimpleAttributeDAO();
ProcessStateActionDAO getProcessStateActionDAO();
ProcessToolSessionFactory getProcessToolSessionFactory();
ProcessDefinitionDAO getProcessDefinitionDAO();
EventBusManager getEventBusManager();
String getSetting(String key);
void setSetting(String key, String value);
String getAutowiredProperty(String key);
void setAutowiredProperty(String key, String value);
long getNextValue(String processDefinitionName, String sequenceName);
long getNextValue(ProcessInstance processInstance, String sequenceName);
long getNextValue(String sequenceName);
UserData getAutoUser();
void close();
void updateContext(ProcessInstance processInstance);
void addTransactionCallback(HibernateTransactionCallback callback);
public boolean isActive();
public Map<String, Object> getBpmVariables(ProcessInstance pi);
public Object getBpmVariable(ProcessInstance pi, String variableName);
public static class Util {
private static ThreadLocal<ProcessToolContext> current = new ThreadLocal<ProcessToolContext>();
public static synchronized void setThreadProcessToolContext(ProcessToolContext ctx) {
current.set(ctx);
}
public static ProcessToolContext getThreadProcessToolContext() {
return current.get();
}
public static synchronized void removeThreadProcessToolContext() {
current.remove();
}
/**
* The default implementation checks for several system properties, than defaults to current working directory.
* The home directory is used to establish location of osgi-plugins, felix cache and other directories.
*/
public static String getHomePath() {
return nvl(
System.getProperty("aperte.workflow.home"),
System.getProperty("liferay.home"),
System.getProperty("catalina.home"),
""
);
}
}
}