XWiki Platform Development Framework
- XWiki platform services
- Access control
- Authentication
- Cache
- Component service
- Configuration
- Document service
- Document annotation service
- Document real-time collaborative editing service
- Document translation management
- Event bus
- Extensions
- Forms
- Import
- Jobs
- Export
- Localization
- Logging
- Mail service
- Notification
- Rendering
- REST service
- Query / search service
- Scheduler
- Scripting
- Storage
- User and group service
- User interface service
- Metrics
- Links
- Comparison with other frameworks
- Various notes
XWiki platform services
The XWiki platform services are listed below in alphabetical order.
Access control
This service controls the permission for a given user (including an unauthenticated user) to perform a given action on a given XWiki Platform resource. Supported actions by default are in particular the following: admin, delete, edit, program, register, script, view.
References:
Authentication
XWiki platform supports several authentication mechanism including authentication based on: forms, the basicauth protocol, social login protocols, LDAP, ActiveDirectory, Kerberos.
References:
- Reference page: Authentication
- XWiki Trusted authentication framework
- Javadoc
Cache
References:
Component service
XWiki platform hinges on a set of components. XWiki platform defines some simple Component interfaces that can then be bound on any existing Component Manager such as Guice, OSGi, CDI (JSR299). In the future, XWiki platform will probably adopt a standard solution in JavaSE once it's available and mature enough. The XWiki component service exposes several features including the ability to declare Component interfaces, implementations and dependencies via Java annotations, the ability to have Singleton Components and Per-lookup Components, to define a Hint to separate different Components implementations implementing the same Component interface and several other key component aspects described on the XWiki Component Module documentation page.
References:
Configuration
This service allows each module to create a dedicated configuration via an interface named <optional prefix><module name>Configuration (e.g. RenderingConfiguration, IconTransformationConfiguration, etc). Each module creates an implementation of that interface, named Default<optional prefix><module name>Configuration (e.g. DefaultRenderingConfiguration). The interface implementation uses one of the ConfigurationSource components provided by this Configuration module. These ConfigurationSource implementations are bound to sources where to get configuration data from: properties file, xwiki documents, etc.
References:
Document service
XWiki platform provides a rich document model consisting of DOM static blocks, scripted blocks and macros. This allows for document inclusion (transclusion) and dynamic documents.
On top of this document model, XWiki platforms comes with an annotation service and a collaborative real-time service editing.
References:
- Javadoc
- packages 'com.xpn.xwiki.doc.*' - See also:
Document annotation service
This service allows to add collaboratively annotations to XWiki document object nodes (XDOM).
References:
Document real-time collaborative editing service
Real-time editing.
References:
Document translation management
Event bus
XWiki platform supports observation events and it's possible to do some action when a change occurs in the platform. The platform comes with a set of events and event listeners, and new events and event listeners can be defined. Event listeners can be created either in Groovy, Java, or a combination of content and scripts.
References:
- XWiki Observation Module
- XWiki Event Stream Module
- Tutorial on how to write and XWiki event listener
- Javadoc
- See also: Scripting service
Extensions
- Depdendency management
- Upgrade
References:
Forms
Beside the XWiki document model described above, XWiki platform provides a built-in mechanism for dealing with structured data and for presenting this data in view or edit forms via templates.
References:
Import
- Filter stream
- Office importer
See also:
References:
- XWiki BatchImport extension
- XWiki Office importer
- XWiki Filter Stream
Jobs
The Job service makes it easy to allow two ways communication with a task executed in a background thread. An XWiki platform minimal job provides: progress information, live log, a Java bean based question/answer system, and can be extended as long as the client of the API know the extended interface.
References:
Export
FilterStream module
See also:
References:
Localization
Localization here refers to translation. This Component allows applications and components (or any Java code in general) to be translated into different languages.
References:
Logging
References:
Mail service
The XWiki Platorm mail service allows to send multipart mails, to embed images in HTML emails, to use mail templates, to send mails to list of users, a list of groups and a list of individual addresses (with ability to exclude users, groups and emails), ensuring that recipients don't get duplicate mails. The service supports asynchronous mail sending.
References:
Notification
References:
Rendering
References:
REST service
References:
Query / search service
- Relational
- Full-text
References:
Scheduler
Scripting
References:
Storage
- Core data model
- Versioning
References:
User and group service
References:
User interface service
- Skin
- Theme
- Keyboard shortcuts
- User interface extension points
References:
Metrics
- SLOC of xwiki-commons and xwiki-platform, + number of classes
Links
Comparison with other frameworks
- XWiki Platform versus Django
- XWIki Platform versus ExpressJS
- XWiki Platform versus Jahia
- XWiki Platform versus Jalios
- XWiki Platform versus Jupyter
- XWiki Platform versus Sinatra
Various notes
- Stars and reviews
- Django has nearly 50k GitHub stars
- ExpressJS has nearly 50k GitHub stars
- Possibly not easy for newcomers to differentiate between xwiki-platform as a framework and xwiki as a product