Wiki source code of XWiki Architecture

Version 4.3 by Vincent Massol on 2015/04/20

Show last authors
1 {{box cssClass="floatinginfobox" title="**Contents**"}}
2 {{toc/}}
3 {{/box}}
4
5 = General Architecture =
6
7 * XWiki is a webapp that is deployed into a [[Servlet Container>>http://en.wikipedia.org/wiki/Web_container]].
8 * XWiki is made of [[Extensions>>extensions:Extension.WebHome]].
9 * Some Extensions are Core Extensions and they are required for XWiki to execute properly.
10 * Other Extensions can be installed into a running XWiki installation to provide additional features.
11 * The [[Extension Manager>>extensions:Extension.Extension Manager Application]] is a Core Extension that allows installing, upgrading or removing other Extensions.
12 * An XWiki runtime is thus made of Core Extensions + non-Core ones.
13 * A set of Extensions working together to achieve a goal is called a Flavor.
14 * XWiki Enterprise is a generic Flavor that allow users to collaboratively author content. In the near future, several other Flavors will be available.
15 * There are 2 types of Extensions:
16 ** Extensions containing wiki pages. They are packaged as XAR files (a ZIP file with some metadata).
17 ** Extensions containing Java classes. They are packaged as JAR files.
18 * An Extension can depend on other Extensions. A Flavor is itself a top level Extension that depends on several other Extensions.
19
20 The full list of available Extensions can be seen on the [[Extensions Wiki>>extensions:Extension.WebHome]].
21
22 = Integrating XWiki =
23
24 There are two options for integrating XWiki into your environment:
25 * Accessing your environment (other software for example) from XWiki and displaying information inside XWiki's UI. This can be achieved by [[scripting>>platform:DevGuide.Scripting]] inside Wiki pages or by developing Java code. See also the following [[Integration Extensions>>extensions:Main.Tags||queryString="?do=viewTag&tag=integration"]].
26 * Access XWiki's content (wiki pages, user data, etc) from other software by accessing XWiki remotely using [[REST APIs>>platform:Features.XWikiRESTfulAPI]] (It's also possible to use [[XMLRPC>>platform:Features.XMLRPC]] or {{scm path="xwiki-platform-core/xwiki-platform-gwt/xwiki-platform-gwt-api/src/main/java/com/xpn/xwiki/gwt/api/server/XWikiServiceImpl.java"}}GWT{{/scm}}).
27
28 = Extending XWiki =
29
30 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>>extensions:Extension.WebHome]].
31
32 However if there's no Extension for what you wish to achieve, here are main options:
33 * Use [[scripts>>platform:DevGuide.Scripting]] in wiki pages and access all APIs made available by other Extensions. This allows you to develop Applications in your wiki. Make sure to check the [[FAQ Tutorial>>platform:DevGuide.FAQTutorial]] which shows how to do this.
34 * Develop some Java code to make available [[Java APIs>>platform:DevGuide.API]] which can then be accessed from wiki pages using Scripting. [[XWiki uses a Component-approach to develop Java code>>platform:DevGuide.WritingComponents]].
35 * [[Create some Macros>>platform:DevGuide.WritingMacros]] to use in your wiki pages.
36 * [[Create new Skins>>platform:DevGuide.Skins]] or modify existing one to match your needs.
37 * [[Create or modify Skin Themes>>extensions:Extension.Flamingo Theme Application]].
38 * Use [[Skin Extensions>>platform:DevGuide.SkinExtensionsTutorial]] to customize the CSS or JavaScript used to display wiki pages.
39 * Configure what is displayed in various locations of the screen by contributing content for existing [[UI Extension Points>>platform:ExtensionPoint.WebHome]].
40
41 Check the [[Developer Guide>>platform:DevGuide.WebHome]] to learn about all this and more.

Get Connected