package pl.net.bluesoft.rnd.pt.ext.deadline;
import pl.net.bluesoft.rnd.processtool.bpm.BpmEvent;
import pl.net.bluesoft.rnd.processtool.bpm.BpmEvent.Type;
import pl.net.bluesoft.util.eventbus.EventListener;
import java.util.Properties;
import java.util.logging.Level;
import java.util.logging.Logger;
public class DeadlineActivator extends AbstractPluginActivator implements EventListener<BpmEvent> {
private DeadlineEngine engine;
private Logger logger = Logger.getLogger(DeadlineActivator.class.getName());
@Override
protected void init() throws Exception {
Properties pluginProperties = loadProperties("plugin.properties");
engine = new DeadlineEngine(registry, pluginProperties);
engine.init();
registry.getEventBusManager().subscribe(BpmEvent.class, this);
}
@Override
protected void destroy() throws Exception {
registry.getEventBusManager().unsubscribe(BpmEvent.class, this);
engine.destroy();
}
@Override
public void onEvent(BpmEvent event) {
try {
engine.onProcessStateChange(event.getTask(), event.getProcessInstance(), event.getEventType() == Type.NEW_PROCESS);
} catch (Throwable t) {
logger.log(Level.WARNING, "Exception while processing deadline event " + event.toString(), t);
}
}
}