Klassene i event-bussen er viktig hvis du vil at plugin-en skal reagere på spesielle hendelser i Opinio. For eksempel, når en respondent har gjort seg ferdig med en undersøkelse vil du at noe skal skje med dataene (som å sende en e-post). For å vite når respondenten er ferdig, trenger du å motta en beskjed om hendelsen.
For å motta denne beskjeden må plugin-en registrere seg selv på event-bussen. Det er flere busstyper og mange hendelsestyper på hver buss. Se com.objectplanet.survey.event.EventBusManager i plugin-dokumentasjonen.
Eksempler på busstyper:
BUS_TYPE_SURVEY - Buss for svar på spørreundersøkelser: håndterer hendelser i spørreundersøkelse-modulen. Eksempler på hendelsestyper er: DisplayQuestionEvent, NewRespondentEvent, RespondentCompleteEvent, ResponseEvent osv.
BUS_TYPE_SURVEY_MANAGEMENT - Buss for utforming av spørreundersøkelser: håndterer hendelser i administrasjonsmodulen. Når er ny undersøkelse opprettes blir f.eks. NewSurveyEvent avfyrt. Eksempler på hendelsestyper er: NewSurveyEvent, SurveyDeletedEvent, QuestionDeletedEvent osv.
BUS_TYPE_USER - Buss for brukerhendelser: håndterer hendelser i brukeradministreringen. Når en ny bruker blir opprettet, blir f.eks. NewUserEvent avfyrt. Eksempler på hendelsestyper er: NewUserEvent, PreUserDeleteEvent, UserDeletedEvent osv.
Det er mange addListener(**)-metoder i EventBusManager. Du kan registrere for å lytte på:
alle hendelser i systemet (hver og en) - bruk metoden addListener(IEventListener listener)
alle hendelser på en spesiell busstype - bruk metoden addListener(IEventListener listener, int busType)
spesielle hendelsestyper som sendes på den spesifike bussen - bruk metoden addListener(IEventListener listener, int busType, int eventType)
spesiell hendelsestype på en spesifik buss for en spesiell ressurs - bruk metoden addListener(IEventListener listener, int busType, int eventType, long resourceId)
VIKTIG: Prøv å registrere hendelser på så lavt nivå som mulig for å maksimere ytelsen.
Eksempel 1. Plugin-eksempel
Implementer interfacet com.objectplanet.survey.event.IEventListener.
I start()-metoden på plugin-en kan du registrere at den skal lytte på hendelser i administrasjonsmodulen:
public void start() {
EventBusManager eventMgr = EventBusManager.instance();
eventMgr.addListener(this, EventBusManager.BUS_TYPE_SURVEY_MANAGEMENT, EventBusManager. EVENT_TYPE_NEW_SURVEY);
}
Implementer metoden handleEvent() fra interfacet IEventListener, slik at hendelsene håndteres korrekt. For eksempel:
public void handleEvent(PluginBusEvent event) {
if (event instanceof NewSurveyEvent) {
NewSurveyEvent nsEvent = (NewSurveyEvent) event;
long surveyId = nsEvent.getSurveyId();
// Do something with the survey; send an email,
// call an external system etc.
....
}
}