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 이벤트 리스너

그러나이 솔루션을 기존의 합류 서비스와 통합하여 이벤트를 가져 오는 방법을 모르겠습니다. 이것에 대한 실질적인 예제 공유 나 리드는 정말 유용 할 것입니다.

감사합니다.

답변

0

Confluence 서버를 사용한다고 가정하면 개발 컴퓨터에서 install the Atlassian SDK이 필요하고 Confluence add-on을 생성해야합니다.

이 모든 작업을 완료하면 골격 Confluence 부가 기능이 있어야합니다.

다음, 당신은 다음처럼 atlassian-plugin.xml 파일에 이벤트 리스너 componenteventPublishercomponent-import을 추가해야합니다 :

<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

무슨 뜻인지 예를 들려주세요. 클라이언트 측 자바 스크립트 이벤트를 의미합니까? 아니면 서버 측 Confluence 이벤트입니까? 일반적인 Confluence 이벤트에는 트리거시 누가 페이지를 열 었는지에 대한 개념이 없습니다. – dvdsmpsn