Xwiki


        AboutMe      MyCurrentLocation     Blog      GuestBook     Story of a Techie cum fighter in the Real World     HOME

What is XWIKI?

XWiki is a Java-based wiki and runs on a Servlet Container such as Tomcat, Jetty, JBoss, WebLogic, WebSphere, etc. It also uses a relational database to store its content. It can run on almost any database (HSQL, MySQL, etc) but XWiki and the database need to be setup correctly.

There are 2 solutions when installing XWiki:

o    Use the Standalone distribution which already packages a Servlet Container (Jetty) and a database (HSQL). This is the recommended option for first time XWiki users and for users who wish to quickly try out XWiki.

o    Use the WAR distribution and configure both your container and your database to work with it.

XWiki Enterprise is a second generation Wiki engine, features professional features like Wiki, Blog, Comments, User Rights, LDAP Authentication, PDF Export.

XWiki Enterprise also includes an advanced form and scripting engine which makes it an ideal development environment for constructing data-based intranet applications. It has powerful extensibility features, supports scripting, plugins and is based on a highly modular architecture. The scripting engine allows to access a powerful API for accessing the XWiki repository in read and write mode.

The following PDF illustrates the Steps  for installation of the Standalone Distribution which uses the Servlet Container Jetty and HSQL database.

XWiki-Installation.pdf 

<!-- ===================DEVELOPMENT TOPICS =================-->

  •  XWIKI Data Model
  • XWIKI Scripting
  • XWIKI Tutorials
  • XWIKI API Guide
  • Internationalizing Applications
  • Creating Plugins
  • Best Practices 

 Reference Documentation : XWIKI API Reference , XWIKI Architecture and Database schema

OpenSource Projects on which XWIKI is based on:

  • Hibernate
  • DBCP
  • JRCS : This is for the versioning of documents and attachments.
  • Struts
  • Velocity : To handle views and allow programming inside the Wiki Documents(http://velocity.apache.org/)
  • OSCache : For the caching of Documents
  • No specific dependence on any Servlet Container

<!-- ==================== Architecture ====================--> 

 <!--=================Important Stuff ===============-->

Entry point of objects in Pages are

$doc      : Current Document

$wiki      : xwiki main object

$current : current context

$request   : current request object

$response  : current response object

Objects , classes and meta-classes are the core of the meta design system in XWiki .

Xwiki integrates both velocity and groovy scripting . These two mechanisms allow you to  create complex web applications at the Xwiki page without the need for compiling code or deploying software components.In Short you can use velocity and groovy syntax in addition to wiki and HTML Syntax.

XWiki Velocity API :

(http://velocity.apache.org/engine/releases/velocity-1.5/user-guide.html) .

The programmers of the XWiki core have gathered objects of various types and placed them in the Velocity context. These objects, and their methods and properties, are accessible via template elements called references and effectively form an API for XWiki.

You can access in your velocity script to :
• The current document: $doc
• The Context of the request: $context
• the request object: $request
• the XWiki Object: $xwiki

Open Questions: 

How to use HQL to query the Xwiki Database?

How to include a velocity page into Another Page ?

XWiki Groovy API:

Must Read Groovy Stuff:

http://www-128.ibm.com/developerworks/java/library/j-alj08034.html

http://www-128.ibm.com/developerworks/java/library/j-pg02155/

http://www.stelligent.com/content/view/44/71/

Velocity HQL Query :

Xwiki allows users to access documents and objects with hql queries in velocity scripts .See this link for HQL Syntax. http://www.hibernate.org/hib_docs/reference/en/html/queryhql.html


Xwiki API Reference :

Xwiki's APIs are the objects and properties you can access directly from your documents using a scripting language(either velocity or groovy).