There are various ways to implement the projects described in this project. They are documented at the Confluence Development Hub
.
Here is an overview of the variety of ways to implment new features.
List of Implementation Methods
Macros
These allow users to simply add small features that extend the page rendering functionality of Confluence. These can be as simple as a short macro that emits
<img src...>
Examples of features developed using user macros:
Plugins
Plugins interact with Confluence on a deeper level to extend it's functionality. They can hook into various event notifications within Confluence. They are written and installed as jar files. Confluence Module Types
documents the various kinds of plugins.
- List of Plugin Module Types
- Event Listener Plugins
- Event listener plugins can not veto an event that has occurred.
- List of events: http://docs.atlassian.com/com/atlassian/confluence/atlassian-confluence/latest/
- com.atlassian.confluence.event.events - Writing an event listener plugin module

- Event Listener Plugins
Types of events:
- [ClusterEventWrapper]
** - [ClusterPanicEvent]
** - [ConfigurationEvent]
** - [ConfigurationMigrationEvent]
** - [ConfluenceReadyEvent]
** - [ContentEvent]
- [AttachmentEvent]
- [BlogPostEvent]
- [CommentEvent]
- [MailEvent]
- [PageEvent]
- [PageCreateEvent], [PageRemoveEvent], [PageRestoreEvent], [PageTrashedEvent], [PageUpdateEvent], [PageViewEvent]
- [PersonalInformationEvent]
- [GroupEvent]
- [GroupCreateEvent], [GroupRemoveEvent]
- [ImportFinishedEvent]
- [LabelEvent]
- [LabelCreateEvent] On the creation of the first label to the target Content Entity Object.
- [LabelRemoveEvent] On the removal of the last label from the target Content Entity Object.
- [LabelAddEvent] On the addition of any label to the target Content Entity Object.
- [LabelDeleteEvent] On the deletion of any label from the target Content Entity Object.
- [LookAndFeelEvent]
- [ColourSchemeChangedEvent], [ThemeChangedEvent]
- [ReindexEvent]
- [ReindexFinishedEvent], [ReindexStartedEvent]
- [SearchEvent]
- [SearchPerformedEvent]
- [SecurityEvent]
- [LoginEvent], [LoginFailedEvent], [LogoutEvent]
- [SpaceEvent]
- [SpaceConvertEvent], [SpaceCreateEvent], [SpaceRemoveEvent], [SpaceUpdateEvent]
- [TemplateEvent]
- [TemplateRemoveEvent], [TemplateUpdateEvent]
- [UserEvent]
- [UserCreateEvent], [UserDeactivateEvent], [UserReactivateEvent], [UserRemoveEvent]
Changes To Confluence Codebase
These are possibly the most difficult to maintain. Since they involve the Confluence codebase, they'd have to be recompiled on each
new version of Confluence. Many Confluence installations may not be prepared to recompile the Confluence sources, or to merge various changes.
Plus there is chance of destabilizing Confluence, and making it more difficult to get support.
Filters
Filters are a method of externally manipulating the operation of Confluence. Since they are external, they may depend on the operating environment that Confluence is running in.
Examples of filters I have already successfully developed for my clients:
- IIS filtering layer that protects Confluence by limiting rapid access to the Confluence
- IIS filtering later to allow user and script limited access to the Confluence API
External programs
External programs can communicate with Confluence through it's remote API
. This external API allows programs to edit pages, create and modify users, create spaces, and other operations. It may not implement all the features available from the user interface of Confluence, for example, page permission restrictions.
This approach can be an especially good solution for clients that want to avoid modifying the stock distribution of Confluence.
Examples of external programs that I have successfully developed to interact with Confluence:
- watchdog automatic restart for Confluence under Windows.
- Windows utility to allow for command line, or GUI based, creation of new users
- XML site description based wiki space creator that enforces creation of certain "meta-info" pages for each space, and auto maintains a table of wiki spaces, creation dates, owners and admins, as well as emailing new space owners, their admins, and management, upon creation of each space.
- Twiki to Confluence converter which completely handles recreating all attachments, revision histories, and wiki markup conversions. Used to port an 80,000 page twiki to Confluence.