我打算注册一个事件监听器,监听Confluence wiki上为我的组织发生的任何内容更改,作为项目的一部分,并采取幕后操作,如重新索引数据到弹性搜索。我找到了从 - https://developer.atlassian.com/confdev/confluence-plugin-guide/confluence-plugin-module-types/event-listener-module/writing-an-event-listener-plugin-module
编写监听器的示例示例但我不确定如何将此解决方案与现有的Confluence服务集成,以便我开始获取事件?任何工作实例分享或引导这将是非常有用的。
答案 0 :(得分:0)
假设您正在使用Confluence Server,您需要在开发计算机上install the Atlassian SDK并创建Confluence add-on。
完成所有这些后,你应该有一个骨架Confluence附加组件。
接下来,您需要将事件监听器component
和eventPublisher
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(...))
更改为您感兴趣的活动,您应该准备好了。