This software is OSI Certified Open Source Software. OSI Certified is a certification mark of the Open Source Initiative.
The license (Mozilla version 1.0) can be read at the MMBase site. See http://www.mmbase.org/license
Table of Contents
MMBase is a general purpose object oriented content management system, which is implemented in Java. In its object orientation MMBase provides an Object Relation Mapping (ORM), that has much in common with Hybernate
The main difference between Hybernate and MMBase is the way relations are treated. In MMBase relations are objects as well, this is not the case in Hybernate. To give an example: the relation between a team and an member can have a relation to a role object. In this way roles of members in a team can be added, changed and removed whenever needed. In Hybernate using an object to categorise relations is not possible.
The main difference between a webserver like Apache and an application server is that an application server is capable of executing server-side functionality like programs written in Java. The application servers on which MMBase can be plugged in have to support Java and Java Server Pages.
This document provides an overview of the MMBase architecture. Each component in the architecture is described. Suggestions for further reading are given. The MMBase architecture can be subdivided into the following layers.
Database Access
MMBase Core
Security
Bridge
Plugins
Components and the Component Framework
Applications and Contributions
At the end of this document the two main applications build on top of MMBase will be discussed: Didactor, the Electronic Learning Environment, and the CMS Container, an out-of-the-box portal implementation for enterprise content management that complies with the JSR 168 portal standard.
MMBase is connected to a database via the JDBC interface. MMBase 1.6 supports the following relational databases.
Informix
PostgreSQL
MySQL
HSQL
Oracle
DB2
A number of features of the MMBase Database layer are:
Database transparency
Ones you've created a database and connected it to MMBase, MMBase will do the rest for you. It will take care of the creation of tables and will generate and take care of link tables. So the only SQL statements which you have to learn to being able to work with MMBase are: creating a database, making a backup of a database, restoring a database and dropping a database.
Automatic index generation
When MMBase fills your database with tables it automatically creates indices for columns, which are known to be frequently used in database queries. This will guarantee that the database layer operates in an efficient way right from the start.i
[TO DO: what do we have to say about Query and Storage? ]
MMBase is an object oriented content management system. Content is stored in objects. Objects can be connected to other objects by relations. These relations are also objects, which can also contain content. Next to containing content, objects can also have functionality. E.g. the image object has the functionality to convert and scale images. The MMBase Core provides the mapping from the relational database layer to the object oriented layer. It is capable of:
configuring objects and relations.
MMBase objects are configured by XML-configuration files called builders. These builders describe the fields an object has and its functionality. The field names for use in the Graphical User Interfaces can be stored in multiple languages to make your MMBase implementation ready for use in different languages. After a builder is placed in the MMBase installation, the corresponding table in the database is automatically created. To learn more about using builders check out the Administrators/MMBase Builder Configuration documentation . In the MMBase standard builders document under the Templaters and Designers section you can find info on the builders shipped with the MMBase release.
creating objects and relations.
When an object, or node, is created the functionality added to the object can dictate that some action has to be taken. E.g. an email which is stored in MMBase is posted.
The creations of relations is a four-step procedure:
Create a builder with the fields that are necessary in the relation.
Add the relation to the list of relation definitions (RelDef)
Enter the source-relation-destination information into the list of relations types (TypeRel)
Create relations.
See the document on relations in the Information Analysts section for more information on this topic.
updating objects and relations.
MMBase contains observers that listen to changes in objects and relations. When a change occurs, an observer can carry out some appropriate actions. Most observers are used to keep the MMBase caches up to date. Examples of such MMBase caches are the cache with converted images and the query cache.
retrieving objects and relations.
When retrieving information from the database, MMBase will store the results of the database queries for future use. This cache functionality helps to speed up performance. Next to caches for database queries, MMBase also contains a cache for storing converted images for future use. These caches are totally transparent.
[TO DO: write document on Transactions and Multicast.]
MMBase offers an elaborated security layer for authorization and authentication. Authorization tells what a user is allowed to do. Authentication tells how a user can log on to an MMBase website. The security models available in MMBase 1.6 are:
Cloud Security
MMBaseusers are administrated in the MMBase object cloud. This security model offers a basic ranking system in Anonymous, Users and Admin.
An advantage of the Cloud Security are that you can do your user administration via the webinterface and that you are able to integrate the MMBase users into your object model.
Context Security
MMBase users are administrated in XML-configuration files on the file system. Users are part of Groups and Ranks. Each object in MMBase belongs to a context. The Context Security model offers an fine-grained mechanisms to specify rights of users and groups in different contexts. The model provides the possibility to define basic workflow schemes.
The Context Security is especially fit if the rights of users has to be specified on object level or if you need basic workflow functionality. A drawback of the context security model is that the user administration can not be carried out via the web interface, but one has to use the XML-configuration files.
Context Cloud Security
The Context Cloud Security provides the same functionality as the Context Security. In contrast to the Context Security, the Context Cloud security stores the authentication and authorization information in the object cloud.
The Context Security is especially fit if the rights of users has to be specified on object level or if you need basic workflow functionality. A drawback of the context security model is that the user administration can not be carried out via the web interface, but one has to use the XML-configuration files.
Basic Security
Provides the basic login functionality, where users are administrated in an file on the file system.
This security model should only be used in combination with MMBase releases before version 1.5, that operate on basis of SHTML.
No security
Although trivial, it is sometimes handy to have an MMBase installation with no authentication, no authorization or no security at all. It won't come as a surprise that MMBase supports this functionality.
To learn more about security see the The MMBase Security Framework, Installing and using Context Security, Installing and using Cloud Security in the Administrator section.
The MMBase Connection Interface handles the requests from the MMBase Plugins and passes them to the Security layer. See the Bridge (MMCI) API documentation under Templaters and Designers for more information on this topic.
There exist a growing list of plugins which add functionality to the MMBase Core. The most important plugins are listed below.
Taglib
The taglib provides a set of tags which facilitate communication between MMBase and JSP-templates. See the MMBase taglib reference and the Creating webpages with the MMBase Tag Library in the Templaters and Designers section.
One widely used tool build with the taglib are the JSP-editors for MMBase. With MMBase 1.6 to versions of the JSP-editors are included \mmeditors\jsp and \mmexamples\jsp\my_editors .
Dove
Dove facilitates communication between MMBase and XML-files. You can use Dove to build dynamic MMBase websites based on XML and XSLT. See the Dove XML API under the section developers to learn more about this topic.
An important application that uses Dove are the MMBase editwizards. The editwizards let you create task-oriented user-friendly forms, which can be a big help for editors in working with MMBase. See the Editwizards documentation under the Templaters and Designers section for more information on creating and using editwizard forms.
R-MMCI
The Remote MMBase Cloud Interface makes it possible to communicate with different MMBase installation at the same time. This powerful plugin makes it possible to share and exchange data between MMBase installations irrespective of their location. See the Remote MMBase Cloud Interface under the section Developers to find out more.
XML-importer
The XML-importer can be used to import data from XML-files into MMBase. The XML-importer provides intelligent Find and Merge scenario's. More information can be found in the XML Importer (TCP 2.0) documentation in the Developers section.
Application tool
With the MMBase application tool the objects and relations used in an MMBase installation can be specified in XML and data from an application can be exported to or imported from XML. Most of the times data model or object model is used to denote the specification of the objects and relations present in an installation. In MMBase also the term object cloud is used. For more information on this tool see the Information Analysts section in the MMBase documentation. The object model for use by the Application tool can be generated by UML2MMBase and MMBase2UML. http://mmapps.sourceforge.net/
Editwizards
The editwizards provide the functionality to define forms to edit the MMBase object cloud. Editors who do not frequently use MMBase might get lost in their MMBase object cloud, when using the default JSP editors to enter or change content, With the editwizards it is possible to build task oriented forms, which guide editors through their work. See the editwizard userguide and reference manual in the templaters section for more information on the editwizards.
An application is a website or functionality that is build on top of MMBase. An application uses the plugins mentioned in the previous sections or accesses the MMBase bridge directly via the API. The MMBase distribution provides a number of example applications. See the link at the end of this paragraph. Lets have a look at the MyNews application as an example. The object model of the MyNews application can be found in application/mynews/config/MyNews.xml. The definition of the objects and relations used in MyNews.xml can be found in application/mynews/config/MyNews/builders. The application/mynews/config/MyNews/ directory itself contains some sample data that is imported when the application is installed. The templates that use the taglib plugin to show the newsitems in the website can be found in the application/mynews/templates directory. http://cvs.mmbase.org/viewcvs/applications/
A contribution is much the same as an application, The only real difference is that an application is maintained by the MMBase community and is an official part of the MMBase distribution, whereas a contribution is maintained by a third party. Use the link at the end of the paragraph to get an overview over the contributions. At the end of this document two of the main contributions will be described: Didactor and the CMS Container. http://cvs.mmbase.org/viewcvs/contributions/
With the upcoming release 1.9 of MMBase the component framework will become available. The component framework adds component based development to MMBase. To integrate an already available component into a website in the MMBase releases prior to 1.9, you had to: (a) change all urls generated by the component to make sure all necessary information was posted to the right page, (b) change the layout of component so that the layout fits the layout of the website and (c) write code to let other components know a new component is integrated, so they can respond to its presence.
By using the component framework a component can be integrated without the need to make a change to it. For more information see the documentation on the component framework in the backend developers section of the documentation.
Didactor is an e-Learning software platform (ELO) that is build on top of MMBase. With an ELO educational content can be provided to students together with all necessary tooling to follow courses online, make assessments and develop competencies. http://en.wikipedia.org/wiki/E-learning
A special feature of Didactor is that it uses the MMBase treepart / leafpart functionality. By this default functionality can be adjusted on each desired level by just placing files. Didactor already makes use of an early version of the MMBase component framework and it contains the following components:
address
list of contacts for use with Didactor email and agenda
agenda
allows students to make individual, workgroup and class appointments
aselect
authentication based on the Surfnet authentication application
assessment
students defines goals and problems, and by means of self-assesments works on these problems. The self-assessments are reviewed by a coach.
chat
online consultations of colleagues and coaches
cms, cmshelp, portal, portalpages
basic cms functionality to add webpages as an introduction to non-students
compentence, PEP
helps students in specifying and developing the competences in their personal education plan
drm
digital right management on images and attachments
education
contains the educational content stored in educations, learnblocks and learnobjects
every student, coach and teach can have a didactor email account
faq
frequently asked questions
forum mmbob
students can discuss topics in class and educations related forums
isbo, report
import of student data from XML, including reports on imports carried out
metadata
metadata standards and related rule sets can be specified by the administrator. Installation scripts for the metadata standard developed by the Ruud de Moor Centrum of the Open University are available (LOM compliant)
news
news for students and teachers
all educational content can be downloaded as PDF
portfolio
lets students create a public / non-public portfolio
proactivemail
email notification system to update students on tasks at hand
progress, reports
keeps track of the login time of students, courses followed and scores on tests and assessments
projectgroup
workgroup functionality like sharing documents
redspider
SOAP connector for use with the Novell redspider e-directory
register
lets visitors register as students
scorm
importer for scorm packages
search
search on education content in Didactor
sources
functionality to share links to external websites
versioning
provides functionality to restore prior versions of pieces of educational content
virtual classroom
lets students and coaches collaborate in an online classroom environment
workspace
gives students the ability to organise their individual content
The sources of Didactor can be found at: http://cvs.mmbase.org/viewcvs/contributions/didactor2/
The binairy distribution can be downloaded from: https://sourceforge.net/projects/didactor/
The CMS Container is a portal engine for enterprise content management, which complies with the JSR 168 portal standard. The CMS Container can be run in a single webapp mode where every change in the content is visible on the website immediately. Or it can be run in a mode where two webapps are used: one for editing content and one for showing the content on the website. On the editing or staging webapp the pages can be previewed before the content is published to the live webapp. The functionality of the CMS Container is split in two parts: the modules and the portlets. The portlets provide the functionality for the website. The modules provide the functionality for the editor environment. For more information on the CMS Container see: http://www.cmscontainer.org/
Below the present list of CMS Container modules is shown.
See also: http://cvs.mmbase.org/viewcvs/contributions/CMSContainer_Modules/
directreaction
this module allows users to make reactions on a piece of content, thereby generating user generated content
egemmail
This module is the export tool of articles for use in egemmail.
favorites
gives visitors the ability to save and view favorite pages
knownvisitor
authorisation on the basis of LDAP, Active Directory, NTLM
language-redirect
redirects users to a specific page based on the language setting of their browser
linkvalidator
checks for dead hyperlinks in the content
luceus
the search engine for the CMS Container, based on the open source search solution Lucene
messageoftheday
used for setting a message of the day in the editorial environment
pagewizard
provides wizard functionality for the creation of pages
rating
visitors can give a rating to a contentelement, average ratings as one to five stars.
rss
lets editors configure the rss feeds provided by the website, can also be used for business-to-business feeds
static download
this module uses the WGET tool zip download the (live) site and offer it to the user in a zip archive
tasks
manage manual and automatic created tasks and notifications for users.
versioning
saves previous versions of contentelements and allows them to be restored
workflow
2 or 3 step workflow using the edit, checked and published stages for content elements
Below the portlets of the CMS Container are listed.
See also: http://cvs.mmbase.org/viewcvs/contributions/CMSContainer_Portlets/
cmsc/portlets
the article / news / people overview portlet
banner
schedule and measures clicks for banners on the website
calendar
overview of events
dynamicforms
form generator
ecard
ecard functionality where images grouped in categories are shown and can be sended as ecard
email alerts
the visitors of the website can subscribe to changes on articles on a page. The editors have editwizards by which they can configure the texts of the emails.
gallery
photo gallery
guestbook
lets visitors leave their message in the guestbook
maileditors
visitors can email a notification to the website editors
mailfriend
email a friend functionality
playlist
lets visitors compose playlist based on audio fragments and streams
poll
adds a printing option to articles
search
the portlet that renders the luceus search functionality on the website
teaser
simple banner functionality without scheduling and click statistics
This is part of the MMBase documentation.
For questions and remarks about this documentation mail to: [email protected]