XWiki Architecture

Version 5.1 by Vincent Massol on 2015/04/20

Concept

XWiki is a Second Generation Wiki and as such it's a runtime platform for developing collaborative web applications.

General Architecture

 

  • XWiki is a webapp that is deployed into a Servlet Container.
  • XWiki is made of Extensions.
  • Some Extensions are Core Extensions and they are required for XWiki to execute properly.
  • Other Extensions can be installed into a running XWiki installation to provide additional features.
  • The Extension Manager is a Core Extension that allows installing, upgrading or removing other Extensions.
  • An XWiki runtime is thus made of Core Extensions + non-Core ones.
  • A set of Extensions working together to achieve a goal is called a Flavor.
  • XWiki Enterprise is a generic Flavor that allow users to collaboratively author content. In the near future, several other Flavors will be available.
  • There are 2 types of Extensions:
    • Extensions containing wiki pages. They are packaged as XAR files (a ZIP file with some metadata).
    • Extensions containing Java classes. They are packaged as JAR files.
  • An Extension can depend on other Extensions. A Flavor is itself a top level Extension that depends on several other Extensions.

The full list of available Extensions can be seen on the Extensions Wiki.

Integrating XWiki

There are two options for integrating XWiki into your environment:

  • Accessing your environment (other software for example) from XWiki and displaying information inside XWiki's UI. This can be achieved by scripting inside Wiki pages or by developing Java code. See also the following Integration Extensions.
  • Access XWiki's content (wiki pages, user data, etc) from other software by accessing XWiki remotely using REST APIs (It's also possible to use XMLRPC or GWT).

Extending XWiki

XWiki being a development platform for web applications there are plenty of ways to extend XWiki. The most obvious one is to look for an Extension and install it.

However if there's no Extension for what you wish to achieve, here are main options:

Check the Developer Guide to learn about all this and more.

Tags:
   

Get Connected