Features of OpenCms
Based on Java / XML
OpenCms is written entirely in Java and uses standard servlet technology. Therefore it can easily be integrated in existing Hard- and Software environments, especially if Java is already used for other purposes. The OpenCms page contents are stored in XML files, all logic is handled in Java/JSP templates.
Easy Installation
Installation of OpenCms is done with the integrated HTML setup wizard. It requires an environment with a servlet container like Tomcat and a supported database, e.g. MySQL or Oracle. The setup wizard will take you through some simple steps where you select options and provide details about your environment. Provided you have already set up the environment, the installation of OpenCms usually takes less than 10 minutes.
Browser-enabled work environment
The OpenCms work environment (the so called "Workplace") is fully browser based. The OpenCms software is installed on a web server, users access the system from any location with their web browser. Security restrictions can block out users from unwanted network areas.
Asset Management
Images and other binary download files can be managed in galleries to avoid data redundancies and provide easy handling of media assets. OpenCms supports the import of almost all common file types. The galleries can be quickly accessed by drag and drop from the WYSIWYG editor. You can manage multiple galleries and set variable access rights to any of them.
Integrated user management and permission system
Access to all contents controlled by OpenCms is optionally restricted by an elaborate user and access permission management system. This guarantees controlled access to protected areas and allows easy creation of non-public areas (e.g. extranet sites). Every resource in OpenCms has an owner, an associated user group and specific access permissions (divided into read, write and visible) that can be assigned to the owner, the group and all others.
Project based publishing
The OpenCms integrated project mechanism provides a typical work environment with offline "work" and online "live" system on the same server. All content is maintained in projects. The number of projects is unlimited. Changes to the contents can be reviewed and approved and thoroughly tested before the project is published. You can also undo all unpublished changes (new/changed/deleted pages) and define access and publishing rules in a project.
Workflow and Task Management
OpenCms features powerful mechanisms for workflow management. A "4-eyes" workflow is always active for content creation because of the integrated project mechanism with "online" and "offline" projects. Additionally, tasks can be created in the Workflow view for different groups, priority levels, due dates, preferred users with various notification options. Depending on the selected notification options, emails are automatically sent to either the preferred user or all users that are assigned to a group as soon as a new task has been added to the project. Each stage of the task's life is recorded to ensure that the workflow remains transparent.
WYSIWYG editor
Editing pages is easy with OpenCms, a built-in WYSIWYG editor(*) allows you to edit pages similar to popular office applications. No HTML knowledge is required to edit a page, yet an integrated source code editor allows experts to exert full control over the HTML source. With the help of the WYSIWYG editor, pages with "unstructured content" and complex layouts can be easily created. Insert images or links to downloads from galleries with drag & drop, create complex tables with the table wizard and add links with the link dialog or from the external link gallery. Additionally, OpenCms supports the creation of custom "structured content" with the integrated module mechanism.
Internationalization support
OpenCms fully supports Unicode (UTF-8) as a setup option and thus can nativly handle contents in international character sets, e.g in eastern European or Asian languages.
Versioning of content
All contents are fully versioned in OpenCms. The history function of the Workplace enables you to track which changes were made when and by whom. All of the previous versions are archived and can be restored, enabling you to access older versions at any time.
Template mechanism
OpenCms supports various template mechanisms. We recommend using standard JSP to create templates. The OpenCms template mechanisms use dynamic page rendering and allow a strict separation of XML based content and template dependent layout. Using OpenCms templates, it becomes easy to enforce a consistent corporate website design.
JSP integration
The JSP integration in OpenCms allows easy and standards based creation of dynamic functionality. JSPs are managed in the OpenCms Workplace like all other contents. Moreover, JSP based templates allow you to separate XML based content and a highly dynamic layout of your pages. The main features of the OpenCms JSP integration are:
- Supports WYSIWYG editable pages which use JSP templates
- Use the same JSP template for editable pages and interactive forms
- JSP Taglib for common OpenCms tasks
- JSP API to directly access OpenCms functionality
- Separate online and offline versions of the same JSP
- Optional output streaming on a per-page basis
- Optional static export of JSP
Multi-Language
The OpenCms Workplace supports multiple languages. English and German are part of the core distribution, other translations are available as separate OpenCms modules. It is easy to translate OpenCms to other languages by simply adding other language modules.
Online-Help System
An optional context based online-help is available as a separate OpenCms module (com.opencms.help). The context based help provides inexperienced OpenCms users an easy way to learn the functions of the system.
Dynamic and static content publishing
OpenCms is fully database driven. Usually the managed website will be generated dynamically from the database. To guarantee high performance for dynamic sites OpenCms comes with an extensive caching mechanism. If you require a static version of your website or parts of your website, OpenCms also allows for static export of selected resources that are then delivered directly by a web server. This is highly useful for non-dynamic file types like images of binary files. You can choose for every resource if it is delivered dynamically by OpenCms, or delivered directly by the web server from a static export. OpenCms will automatically keep the links intact between dynamic and static content.
Personalization
OpenCms enables you to build highly personalized websites. Each access to a resource in OpenCms is always done with the permissions of an identified user, in case of public sites the user is at last identified as "Guest". It's possible to set up protected extranet areas or whole sites that require login. After login a user is clearly identified with his user name. The integrated user and session management allows you to create complex personalized applications based on standard JSP technology.
Caching system
OpenCms provides cache mechanisms to optionally cache dynamically created pages or page variations to decrease the number of database queries at runtime. The FlexCache is a new cache implementation for OpenCms introduced with OpenCms 5.0 which requires no programming and can greatly increase the runtime performance of your Website. Each page variation has its own caching space in the FlexCache. The first time a page is requested, it's rendered output will be stored as a variation in the FlexCache. More than one variation can be stored for each page in the FlexCache, e.g. a personalized element might have a variation for each user, a news displaying element might have a variation for each news that should be displayed etc. All following calls for a variation will be delivered directly from the cache without database access.
Module mechanism for extensions
OpenCms features an integrated module mechanism that allows convenient bundling of contents or functionality for deployment on other machines. The OpenCms module API also allows to plug in custom content definition items for "structured content", for example for News messages, as extensions to the OpenCms Workplace. In contrast to the "unstructured content" that is created with the WYSIWYG editor, these content items can be deployed in multiple channels and displayed on various pages in different list or detail formats. Content items are often used for contents like "News", "Job Offerings", "Store Locations" (**) etc. Like all OpenCms managed resources, content items are edited "offline" and have to be published before becoming available to the public.
Security/SSL support
OpenCms allows you to secure all or parts of the website with strong encryption by leveraging the common https protocol available on most modern web servers. Any resource can be marked as https-only. OpenCms will then deliver this resource only if it is requested though a secure https connection. The system will automatically update the links in your content to switch from a public to a secure area and back. This way you can build secure forms and other content and manage these together with your public contents in the same interface.
Scheduling system
OpenCms features an integrated scheduling system. With this system it is possible to invoke a custom action periodically or after a specific time. Such custom actions can include automatic publishing of pages, removing of expired content or more complex functionality like triggering a periodic news feed input. The management of the scheduled actions is similar to the well known "cron" program available on most UNIX systems.
Synchronization mechanism
The synchronization mechanism can be used to synchronize files from the database of OpenCms to the server file system. This feature is most useful in development environments. It speeds up the development cycle because you can modify resources on your server file system with your favorite application or editor and update the file in the file system of OpenCms with the press of a button.
Import / export of content
OpenCms can export portions of, or the complete contents, of it's content repository. The exported resources will be written to a database independed XML based format and bundled in a common ZIP file. Additional meta information like properties or access permissions are also exported. Exported resources can be imported again into another system, even if this runs on a different database then the original server. With this mechanism it is also possible to archive snapshots of the website or to deploy content from one system to another.
Application server integration / EJB support
Running OpenCms in a J2EE application server environment (e.g. BEA Weblogic) provides facilities for making use of distributed object architectures, particularly with regard to Enterprise JavaBeans technology. Using these techniques, processes behind the web site may be structured and distributed in a component oriented way. Presentation and business logic can be developed strictly separated, according to the four-tier architecture described in the J2EE Application Model. OpenCms takes care of the presentation of the data, using the integrated JSP template engine for creating the general website layout, while the generation of the content data is relocated to EJBs.
Search engine support
Using the OpenCms module mechanism various full text search engines can be plugged into OpenCms. With a full text search engine like for example the Open Source search engine ht://dig it is possible to generate multiple search indices for different languages and/or content areas of a website. With additional software available as Open Source or commercial packages, it is also possible to search document types like PDF, MS Word or EXCEL files stored in the OpenCms content repository.
Clustering for load balancing and failover
To ensure the availability of a website even in the case of hardware failure, or to handle websites with high load, the OpenCms installation can be clustered on several server machines. Common hardware solutions like for example CISCO local director are are required for such an installation. Some code must be written to enable a load balancing / failover cluster with OpenCms, a pre-build module for this function is available from Alkacon Software (**).
Meta information (properties)
Various properties can be attached to every resource in the OpenCms content repository in order to store individual meta information. Depending on the installation, these properties can for example control the appearance of a template, select which content channels are displayed on a page, or provide optimized information for search engines. The value of a property can easily be changed by the user, provided he has the required permissions. Custom properties and functions can easily be added, e.g. for attaching target addresses to email forms.
CmsShell
A command line based CmsShell gives full script access to all resources in OpenCms. The shell can be driven in a "classic mode" or in an enhanced JavaScript mode. It can be used to set up a new system without the setup wizard and for automating recurring activities such as database export for backup.
(*) WYSIWYG editor currently available on Microsoft IE on Windows only, no additional software required, source code editor available for all browsers