Wiki source code of Architecture
Version 9.3 by Vincent Massol on 2017/09/05
Hide last authors
author | version | line-number | content |
---|---|---|---|
![]() |
4.2 | 1 | {{box cssClass="floatinginfobox" title="**Contents**"}} |
2 | {{toc/}} | ||
3 | {{/box}} | ||
4 | |||
![]() |
6.1 | 5 | = What is XWiki? = |
![]() |
5.1 | 6 | |
![]() |
9.3 | 7 | XWiki is a [[Second Generation Wiki>>platform:Main.SecondGenerationWiki]] and as such it's a full-fledged wiki but it's also a **runtime platform for developing collaborative web applications**. It's very versatile and you can modify any part of the XWiki runtime to match your requirements. |
![]() |
5.1 | 8 | |
![]() |
6.3 | 9 | = General Architecture = |
![]() |
1.1 | 10 | |
![]() |
6.1 | 11 | Architecture Concepts: |
![]() |
8.1 | 12 | |
![]() |
1.1 | 13 | * XWiki is a webapp that is deployed into a [[Servlet Container>>http://en.wikipedia.org/wiki/Web_container]]. |
![]() |
1.2 | 14 | * XWiki is made of [[Extensions>>extensions:Extension.WebHome]]. |
![]() |
1.1 | 15 | * Some Extensions are Core Extensions and they are required for XWiki to execute properly. |
16 | * Other Extensions can be installed into a running XWiki installation to provide additional features. | ||
17 | * The [[Extension Manager>>extensions:Extension.Extension Manager Application]] is a Core Extension that allows installing, upgrading or removing other Extensions. | ||
18 | * An XWiki runtime is thus made of Core Extensions + non-Core ones. | ||
19 | * A set of Extensions working together to achieve a goal is called a Flavor. | ||
![]() |
9.1 | 20 | * XWiki Standard is a generic Flavor that allow users to collaboratively author content. In the near future, several other Flavors will be available. |
![]() |
7.1 | 21 | * There are 2 types of Extensions (and it's possible to extends Extension Manager to support other kinds): |
![]() |
1.1 | 22 | ** Extensions containing wiki pages. They are packaged as XAR files (a ZIP file with some metadata). |
23 | ** Extensions containing Java classes. They are packaged as JAR files. | ||
24 | * An Extension can depend on other Extensions. A Flavor is itself a top level Extension that depends on several other Extensions. | ||
25 | |||
26 | The full list of available Extensions can be seen on the [[Extensions Wiki>>extensions:Extension.WebHome]]. | ||
27 | |||
28 | = Integrating XWiki = | ||
29 | |||
![]() |
2.1 | 30 | There are two options for integrating XWiki into your environment: |
![]() |
8.1 | 31 | |
![]() |
7.4 | 32 | * 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"]]. |
![]() |
7.3 | 33 | * 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>>extensions:Extension.XML-RPC Integration]] 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}}). |
![]() |
1.1 | 34 | |
35 | = Extending XWiki = | ||
36 | |||
![]() |
3.1 | 37 | 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]]. |
![]() |
2.1 | 38 | |
![]() |
3.1 | 39 | However if there's no Extension for what you wish to achieve, here are main options: |
![]() |
8.1 | 40 | |
![]() |
3.1 | 41 | * 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. |
![]() |
5.1 | 42 | * 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]]. It's also possible to override any existing XWiki Component with your own implementation, thus changing the default behavior of whatever portion of XWiki that you wish. |
![]() |
3.1 | 43 | * [[Create some Macros>>platform:DevGuide.WritingMacros]] to use in your wiki pages. |
44 | * [[Create new Skins>>platform:DevGuide.Skins]] or modify existing one to match your needs. | ||
45 | * [[Create or modify Skin Themes>>extensions:Extension.Flamingo Theme Application]]. | ||
46 | * Use [[Skin Extensions>>platform:DevGuide.SkinExtensionsTutorial]] to customize the CSS or JavaScript used to display wiki pages. | ||
47 | * Configure what is displayed in various locations of the screen by contributing content for existing [[UI Extension Points>>platform:ExtensionPoint.WebHome]]. | ||
48 | |||
![]() |
4.1 | 49 | Check the [[Developer Guide>>platform:DevGuide.WebHome]] to learn about all this and more. |