Confluence atlassian改变事件监听器

时间:2016-09-28 12:41:32

标签: confluence

我打算注册一个事件监听器,监听Confluence wiki上为我的组织发生的任何内容更改,作为项目的一部分,并采取幕后操作,如重新索引数据到弹性搜索。我找到了从 - https://developer.atlassian.com/confdev/confluence-plugin-guide/confluence-plugin-module-types/event-listener-module/writing-an-event-listener-plugin-module

编写监听器的示例示例

但我不确定如何将此解决方案与现有的Confluence服务集成,以便我开始获取事件?任何工作实例分享或引导这将是非常有用的。

1 个答案:

答案 0 :(得分:0)

假设您正在使用Confluence Server,您需要在开发计算机上install the Atlassian SDK并创建Confluence add-on

完成所有这些后,你应该有一个骨架Confluence附加组件。

接下来,您需要将事件监听器componenteventPublisher component-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(...))更改为您感兴趣的活动,您应该准备好了。