2016-09-28 4 views
0

Я планирую зарегистрировать прослушиватель событий, чтобы прослушивать любое изменение контента, происходящее в вики для моей организации как часть проекта, и предпринимать действия занавеса, такие как пересканирование данных в эластичный поиск. Я нашел образец примера, чтобы написать прослушиватель от - https://developer.atlassian.com/confdev/confluence-plugin-guide/confluence-plugin-module-types/event-listener-module/writing-an-event-listener-plugin-moduleConfluence atlassian change event listener

Но я не уверен, как интегрировать это решение с существующей услугой конфлюэнса, чтобы я начал получать события? Любой рабочий пример, который может поделиться или ведет к этому, будет действительно полезен.

Спасибо!

ответ

0

Предполагая, что вы используете сервер Confluence Server, вам понадобится install the Atlassian SDK на вашей машине разработки и создать Confluence add-on.

Сделав все это, у вас должно быть скелетное дополнение Confluence.

Далее, вам нужно добавить слушатель события component и eventPublishercomponent-import в файл atlassian-plugin.xml так:

<atlassian-plugin key="${project.groupId}.${project.artifactId}" name="${project.name}" plugins-version="2"> 
    <plugin-info> 
     <description>${project.description}</description> 
     <version>${project.version}</version> 
     <vendor name="${project.organization.name}" url="${project.organization.url}" /> 
    </plugin-info> 

    <component 
     key="scroll-versions-event-listener" 
     class="me.davidsimpson.confluence.addons.example.listener.ScrollVersionsPublishEventListener" 
     name="Scroll Versions Publish Event Listener" 
     > 
    </component> 

    <component-import key="eventPublisher" interface="com.atlassian.event.api.EventPublisher" /> 

</atlassian-plugin> 

Далее, вам нужно создать файл класса для слушателя событий. Вот отправная точка:

package me.davidsimpson.confluence.addons.example.listener; 

import com.atlassian.event.api.EventPublisher; 
import org.springframework.beans.factory.DisposableBean; 

public class ScrollVersionsPublishEventListener implements DisposableBean 
{ 
    protected final EventPublisher eventPublisher; 

    public ScrollVersionsPublishEventListener(EventPublisher eventPublisher) 
    { 
     this.eventPublisher = eventPublisher; 
     eventPublisher.register(this); 
    } 

    /** 
    * Unregister the listener if the plugin is uninstalled or disabled. 
    */ 
    public void destroy() throws Exception 
    { 
     eventPublisher.unregister(this); 
    } 

    @com.atlassian.event.api.EventListener 
    public void onVersionPublishEvent(Object event) { 

     String eventName = event.getClass().getCanonicalName(); // will work for other people's events, not just Atlassian's 

     // Spit out all events - just to prove the point 
     System.out.println(" ++ an event happened: " + eventName); 

     if (eventName.equals("com.k15t.scroll.platform.event.space.VersionPublishEvent")) { 
      System.out.println(" ++++ Found the right event "); 

      // Do your stuff here... 
     } 
    } 
} 

Обратите внимание, в этом примере, все события выводится на консоль, но мы проверка для конкретного нестандартного события в этом примере.

Изменить if (eventName.equals(...)) на интересующее вас мероприятие, и вы должны быть готовы к работе.

+0

Привет, возможно ли перерисовать страницу, если происходит определенное событие? – JayBee

+0

Просьба привести пример того, что вы имеете в виду. Вы имеете в виду какое-то событие javascript на стороне клиента? Или серверное событие Confluence? В нормальных событиях слияния не будет понятия о том, кто может открыть страницу в триггерное время. – dvdsmpsn