We apologize for untranslated text, you can use the Google Translation button to get an automatic translation of the web page in the language of your choice.

JCMS 7: principal new features and associated plugins

1. Collaborative spaces

1.1 Collaborative space plugin

The collaborative space plugin is a key feature of collaborative working using JCMS. It has been completely redesigned to make it even easier to use and administrable from the front-office.

A new wizard is provided to create a collaborative space in just a few clicks. After entering the name and description of the space and its access policy (public or private), you choose a model then invite members to join this new space. If you have sufficient rights, the space is created and becomes operational immediately. Otherwise, an opening request is submitted to a workflow; once this is accepted, the space is created and you are informed by e-mail.

Fig. 1. The new wizard used to create a collaborative space in three simple steps.

The space's administrator manages the participating users. He can choose different registration policies: unrestricted, subject to validation, or managed exclusively by the administrator. He can also send invitations.

Fig. 2. Simple administrator interface used to manage members of a collaborative space.

A collaborative space is always created using a model that defines its component services. These may be basic services (latest content, workflows, glossary, etc.) and services provided by different JCMS plugins (calendar, member activity, wiki, documentary management, suggestion boxes, etc.).

Fig. 3. The administrator selects the services to be made available in the space.

Finally, an administrator can configure his space (public/private access, registration mode, etc.), define the page layout and skin (bar type, colors, etc.).

Fig. 4. Collaborative space configuration interface

1.2 Calendar

1.2.1 Calendar portlet

All the calendar functions are now in the calendar plugin. The interfaces have been modernized and redesigned to make them easier to use. The calendar portlet's detailed view interface is used to create events, move them by simple drag/drop, filter and perform searches.

Fig. 5. The new calendar portlet.

1.2.2 Calendar events

Events are edited in a multi-step form that appears in a modal window.

Fig. 6. The form used to add an event.

Calendar events have been enriched. You can now associate an event with a place, resources and documents. You can define events lasting the whole day, private/public events, even repetitive events such as "every Monday from 14:00 to 15:00" (exceptions can be defined).

Fig. 7. The new display template for calendar events.

1.2.3 Event resources

Resources of various types can now be reserved for events: meeting room, video projector, vehicle, teleconference system, and the like. The Event Resource type enables an event with a simple structure to be created rapidly (title, characteristics, location and photo). If necessary, sub-types can be defined. Each resource has its own calendar that identifies its availability.

Fig. 8. Resource planning.

Once an event is created, each participant receives an invitation by e-mail. He will be added to the list of confirmed participants if he accepts.

1.2.4 Event planning

The event planning service is rather like the online service "doodle.com" which proposes an original way of fixing a meeting date between several people. The meeting organizer proposes dates and selects participants. Each participant receives an e-mail asking them to state their availability for each date. Once everyone has replied, the organizer selects the best meeting date, which triggers the automatic creation of the calendar event. The participants are then informed of this date.

Ongoing scheduling of events is visible in the calendars. A portlet is provided to see all plannings rapidly to see how they are progressing.

Fig. 9. The event scheduling service used to find a meeting date for several people.

1.3 Wiki

The Wiki plugin is a very simple collaborative editing system that can be used within a collaborative space. JCMS 7 gives more flexibility to authors using Wiki input fields.

When a Wiki page includes many content items, it is generally organized into sections. The author can now edit the content of a given section – directly on the page – simply by clicking the associated edit icon. The editing field then replaces the chosen section.

In previous versions, the preview function opened a new window to show the formatted text. To avoid opening and closing this window, the author can now switch to preview mode; the editing field is then replaced by the formatted text. The editing field reappears when he clicks the preview icon again.

When editing, the author enjoys auto-completion functions, which means he can rapidly insert a link to a data item such as another Wiki page, a document, a member profile, and so on. He can also use the menu to insert processing tags such as content, figures, video player, or one of the new tags available (image gallery, search results, portlet, etc.). Finally, images inserted in Wiki pages can be resized simply by entering the required width or height.

Fig. 10. Example of wiki editing by section with insertion of a link to a member (note the auto-completion feature).

.

1.4 Publication follower

As a complement to existing notifications functions, JCMS 7 proposes a new system for tracking publication updates. By clicking the icon , a member interested in changes made to a given content item will receive an e-mail after each modification. He will also be informed of new reviews or comments.

Fig. 11. Publication follower enables users to be informed every time a content item is modified.

1.5 Project tracking (Gantt chart)

The Gantt plugin provides a project management system in the form of a Gantt chart. This is not intended to replace sophisticated project management applications such as Microsoft Project (although it can import and export projects in Microsoft Project format). It just provides some essential information for monitoring the progress of small projects.

A My Projects portlet is used to access projects already created and to create new ones. A wizard is provided to start new projects and define all the aspects to be monitored.

Fig. 12. The Gantt project creation wizard.

Once a project is created, you can define tasks and the members associated with these tasks and their assignment rates. Tasks can be decomposed into sub-tasks and can be dependent on other tasks. The project display template shows the tasks tree structure and the schedule as a Gantt chart.

Fig. 13. Example of project monitoring.

Project participants can enter the time they have spent on each task. And it is possible to consult the occupation of all the participants and the global project advancement.

Fig. 14. Display of the occupation rate of each participant.

1.6 Hierarchical spaces

The Hierarchical Spaces plugin has been integrated natively in JCMS 7. A workspace administrator can create sub-workspaces that can in turn be decomposed into sub-spaces.

The former workspace selection method has been improved. If a user belongs to more than 20 spaces (this is parameter-defined via the hierarchical-ws.menu-limit property), the space selection interface is no longer a menu with the list of spaces, but now a modal window with a predictive input field to designate the chosen space and list the last spaces visited.

Fig. 15. The space selection interface adapts to the number of spaces to which the user belongs.

2. Conversation spaces

The Conversation spaces plugin brings a new conversational dimension to JCMS. It provides a vehicle for contacts and interactivity between people interested in specific subjects. In a sense the conversation space is the successor of the traditional forum. This plugin presently supports two types of conversation space: suggestion box and collaborative FAQ.

A conversation space is managed by one or several animators. It is also possible to assign an expert group. Users start a discussion on a precise subject, often an idea or a question. The other members can participate at several levels, by posting reactions, answers and remarks or by voting. These votes help identify the most interesting ideas, the most relevant questions and the best answers. In this manner, the members help to enhance the value of the information.

Fig. 16. A Collaborative FAQ home page.

2.1 Suggestion boxes

Suggestion box can be created to allow participants to post ideas. To each idea they attach a description that may contain media (documents, images, video), categories, keywords (tags). Other members vote for or against each idea and post their reactions. They can also vote for or against the reactions of other members and make clarifying remarks about ideas and reactions. Finally, the space's animators manage the life cycle of ideas by means of statuses (idea accepted, planned, implemented, etc.).

Fig. 17. Example of conversation around an idea.

2.2 Collaborative FAQ

In a Collaborative FAQ members post questions. Like the ideas in a suggestion box, questions are categorized and accompanied by a description and keywords. Members vote on the relevance of the question and post answers. They can also vote on the answers of other members. By default, every answer earns its author a parameter-defined number of points (one point by default). Finally, the initiator of a question (or the animator) can decide which of the answers is the best.

Fig. 18. Example of interchanges concerning a specific question.

2.3 Points system

In order to motivate participants and enhance the conviviality of conversation spaces, each space uses a parameter-defined points system.

Participants can earn points:

  • when people vote on their questions, ideas, answers and reactions;
  • every answer in a FAQ space earns its author one point (by default);
  • if an answer to a question is chosen as the best one, the person who posted this answer earns 2 points (by default).

In each case, the number of points is parameter-defined.

The points earned by each member are specific to each conversation space: they are displayed alongside the member's photo and in his/her profile.

Fig. 19. A member's profile page showing the points he has earned.

2.4 Dashboards

The home page of each conversation space displays its best contributors, experts and animators.

Fig. 20. List of the best contributors, experts and animators.

A member's profile shows statistics on his participation in conversation spaces, the members who are involved and the people whose conversations he is monitoring.

Fig. 21. Profile of a conversation space member.

Space animators have a dashboard showing membership and activity statistics.

Fig. 22. A conversation space (FAQ) dashboard.

2.5 Notifications

Notifications are sent by e-mail as a means of ensuring the participants' reactivity. By default, every contributor receives notifications about interchanges in which he is involved. In each space, he can also ask to be notified of new conversations.

2.6 Security

The conversation spaces are JCMS content types and as such they benefit from all the access controls provided by JCMS. This means it is possible to restrict access to a conversation space to a particular group.

On spaces open to the public, an alert system can be set up to enable users to report inappropriate content to the animators. After 3 alerts, this content transferred into a moderation workflow.

Finally, animators have complete power over conversation spaces: they can edit and delete contributions as they like.

2.7 Integration with other JCMS plugins

2.7.1 Jalios ESN (Enterprise Social Network)

The conversation space plugin adds a "Conversations tab" in the ESN profile of a member. This tab lists all the conversation spaces in which he participates.

Fig. 23. The list of conversation spaces in which a member participates

2.7.2 Collaborative space plugin

Via a conversation space portlet, it is possible to add suggestion boxes and FAQ spaces as services in a collaborative space. If this space is private, all the content of the conversation spaces will be private as well.

2.7.3 Desktop plugin

The conversation space portlet can also be placed on a member's personalized desktop. In this case, it lists the latest conversations in all the spaces in which the member participates. It can be used to ask a new question or publish a new idea rapidly.

Fig. 24. The conversation space portlet lists the latest ideas and questions in the user's spaces.

2.7.4 iPhone plugin

This plugin makes conversation spaces accessible via an iPhone or Android smartphone. The interface enables remote participation (consult, vote, contribute) in all the user's spaces (see section 5.2.3).

 

3. Documentary management

All JCMS versions had rich documentary functions (upload, edit, lock, workflow, etc.). JCMS 7 brings several technical and functional enhancements.

3.1 DB Documents

In previous versions of JCMS, all documentary management was based on the "Document" data type. A document contains metadata associated with the file (title, author, categories, rights, etc.) and the file access path. The file is stored in a tree structure managed by JCMS and designed to hold large volumes of documents. The documents are stored in JStore storage, which makes them very fast to access, but limits the volume to a few hundred thousand documents.

JCMS 7 pushes back this limit and now enables millions of documents to be managed. To do this it introduces a new data type – "DBDocument" – which stores the metadata associated with the file in the JCMS "JcmsDB" database. The files are still stored in the original tree structure.

Functionally "DBDocument" items have essentially the same functionalities as "Document" items:

  • Metadata
    • title, description, author, creation date, modification date, etc.
    • categorization
    • major and minor versions
    • access rights
  • Reader tracking
  • Historization of versions
  • Indexing and multi-criteria searches
  • Workflow
  • Locking
  • WebDAV editing
  • Editing using the Microsoft Office add-in
  • OpenAPI access

The limits on DBDocuments are the same as for all publications stored in JcmsDB (see section 7.1).

Note that the two types Document and DBDocument can coexist.

3.2 Multiple uploads

JCMS 7 comes with a new file upload interface. This allows several files to be selected for uploading at the same time. With some browsers it is possible to select the files by drag/drop (see the list of compatible browsers).

A progress bar shows the progress of uploads.

Fig. 25. New file upload interface.

3.3 Image editor

JCMS 7 comes with an image editor that can crop and rotate images. After making modifications, you can choose to update the original image (this is possible only in JPEG format) or save a new image.

Fig. 26. The image editor can crop and rotate images.

3.4 Document sizes

The Data Report interface present in workspaces has a new "Documents" tab that lists the sizes of all the files of each document type (PDF, Word, Excel, etc.) present in this space. This function is also available in the Admin Area to see the weight of the files in an entire JCMS system. The figures displayed do not include the associated files (thumbnail, PDF, SWF, etc.) nor archived earlier versions.

Fig. 27. The "Documents" tab in the dashboard shows the total size of document types in the workspace.

3.5 Locking

In order to avoid concurrent modifications, JCMS enables a document being edited to be locked. Unlike the locks on other content types, they are not only for information: they actually prevent editing of the document. Only workspaces administrators and Main Administrators can force the unlocking of these locks.

These locks are used when editing with WebDAV or the Microsoft Office add-in. Since locking and unlocking can be frequent, these locks are now stored in JcmsDB.

The list of the locked documents can be seen in the Documents tab of the workspace dashboard.

3.6 File processing and indexing

JCMS 7 integrated natively a file management system that can trigger actions when files are uploaded to JCMS. This functionality, previously provided by the file processor plugin, was used by several functions such as PDF conversion and file import. These functions are no longer dependent of this plugin. Moreover, the file processor plugin is no longer usable in JCMS 7 and has been replaced by the Document Indexer plugin.

It is also possible to use this system to supervise other folders in which files arrive. For example, the Import Document plugin and Kofax plugin (document capture) do this.

Fig. 28. The File Processor interface used to supervise file statuses.

3.7 Document Viewer

The Document Viewer plugin adds a viewer to leaf through documents in document display pages. The viewer does not display the actual document, but rather a version converted into SWF. This conversion is made by calling an external utility program such as "pdf2swf" (in this case, only PDF files can be displayed). To be able to view documents in other formats (MS Word, Excel, PowerPoint), you must install the PDF Converter plugin.

Thanks to the viewer, it is no longer necessary to open documents using their original application. Also, by default, JCMS is configured such that you are redirected to a page of a document when you click a document link, rather than triggering its download. However, this behavior can be modified using the file-document.default-detail-view property.

Fig. 29. The Document Viewer enables a document to be viewed directly in the page.

4. Personalized desktop

The Personalized Desktop plugin gives each member a personal portal page in which he can choose the services he wants to use. These services take the form of portlets available on the site (RSS feeds, calendar, directory, conversation, tasks, bookmarks, etc.).

The new version of the plugin enables any service to be seen in an enlarged view. It then occupies the entire space of the desktop, in which case the portlet's full template is used instead of its box template.

4.1 RSS feeds

RSS feeds are an essential feature of many personal desktops. The new feed engine used by JCMS 7 is more robust for poorly formatted feeds, and it supports both Atom and RSS feeds. The RSS portlet allows an enlarged view in addition to the view in boxes to browse incoming articles. Finally, JCMS grays articles already consulted to make it easier to spot new ones.

Fig. 30. RSS feeds can be seen enlarged in the personal desktop.

4.2 Microsoft Exchange

The Exchange plugin provides 5 portlets that enable Microsoft Exchange messaging tools (e-mail, contacts, events, tasks) to be integrated in a personalized desktop, or in fact in any other part of the site.

The latest version of this plugin is now compatible with Microsoft Exchange 2007 and 2010 thanks to the use of Exchange Web Services. Compatibility with Exchange 2003 is still assured via the SyncEx connector. Regardless of the Exchange version used, the plugin provides a portlet that enables the OWA (Outlook Web Access) service to be integrated in a desktop while allowing single sign-on.

Fig. 31. An Outlook Web Access portlet in a personalized desktop.

4.3 Lotus Notes

The Lotus Notes plugin, in the same manner as the Exchange plugin, enables access to five IBM Lotus Notes messaging services from a personalized desktop: e-mail, contacts, events, tasks and notepad. The plugin supports searching in a Notes bases and import of a Notes base. Two sets of portlets can be used to display these services.

4.3.1 iNotes portlets

These portlets insert iNotes Web Access services in the personalized desktop while allowing single sign-on. It is possible to use either a single portlet containing all the services (e-mail, events, tasks, etc.) or one portlet for each service.

Fig. 32. iNotes portlet in a personalized desktop.

4.3.2 Lotus Note portlet

These portlets provide information on each service (e-mail, events, tasks, etc.) by interacting with the Domino server via the Jalios Notes Agent. This agent is supplied with the plugin and must be installed and configured on the Domino server.

Fig. 33. Lotus Notes portlet in a personalized desktop.

4.3.3 Searching

The Lotus Notes plugin enables textual searches to be extended to include Notes bases, once these have been declared. You must have the necessary rights to search in these bases. The search requires the presence of the Jalios Notes Agent in the Domino server.

Fig. 34. Searching can be extended to include Lotus Notes bases.

The results found in Notes bases are marked by an icon . If a mapping has been defined with a JCMS type, they can be consulted directly in the JCMS portal, otherwise they will be displayed in the Lotus Notes web interface.

Fig. 35. Results of a search in Lotus Notes bases.

4.3.4 Importing a Notes base

The plugin provides a function to import the entire content of a Lotus Notes base into JCMS. First, you must define a mapping between Lotus Notes documents and JCMS content types. For simple cases this mapping can be done via properties. For more complex cases, it is possible to define a Java class (NotesImportHandler) to handle the mapping.

Fig. 36. Importing a Lotus Notes base into JCMS.

5. iPhone plugin

The iPhone plugin makes all the services of a JCMS intranet accessible to iPhone and Android smartphone users.

This is a web application, not a native application, so the user has no installation to do. Nevertheless, a special effort has been made to give this application the behavior and reactivity of a native application.

This plugin provides a set of basic services and can accept the services of several other JCMS plugins.

5.1 Basic services

5.1.1 Authentication and home page

It is necessary to be authenticated to get access to a site via a smartphone. The plugin has a user authentication interface adapted to the screen size. After authentication, a home page appears listing all the accessible services (this reflects the installed plugins and the user's rights).

Fig. 37. The authentication screen and the home page showing a list of services.

5.1.2 Searching

The search interface enables searching in all the content on the JCMS site for which the member has read rights.

Fig. 38. The search interface.

5.1.3 Content display

The display is adapted to the size of the smartphone screen. For documents, links open the file and the PDF version if it exists. The display is extensible. For example, the DB Comment plugin adds the ability to put comments on publications.

Fig. 39. Display of a content item and a document.

5.1.4 Workflow

With the Workflow service you can validate the content and forms submitted to you and on which you are working.

Fig. 40. The workflow service is used to validate content and forms.

5.1.5 Administration

The administration service is restricted to Main Administrators. It gives them site supervision information: statuses, event logs, etc.

Fig. 41. The administration interface shows information about site operation.

5.2 Additional services

5.2.1 Directory

The Directory plugin allows you to search in the directory of members and contacts. Each person's page contains his personal information, including clickable contact details (phone numbers, SMS number, e-mail address, postal address) and additional points of entry. For example, the ESN plugin adds a link to a member's activity.

Fig. 42. A directory search and display of a member's profile.

5.2.2 Calendar

The Calendar plugin allows you to see your upcoming appointments.

Fig. 43. The calendar lists the next events in which the member will participate.

5.2.3 Conversation spaces

The Conversation Space plugin provides complete access to the collaborative FAQs and suggestion boxes. You can consult the latest conversations, react, vote, answer, propose new ideas and pose questions.

Fig. 44. Conversation spaces.

5.2.4 Jalios ESN (Enterprise Social Network)

Jalios ESN provides services to monitor the status of the members of your relational network, consult their activities and update their status.

Fig. 45. Monitoring of a network of contacts and its activity.

5.2.5 Task management

The Tasks plugin adds a service to consult and manage lists of tasks (add, change, delete).

Fig. 46. Task management.

5.2.6 Personalized Desktop plugin

The Personalized Desktop plugin allows you to receive on your smartphone all the RSS feeds arriving on your personalized personalized desktop.

Fig. 47. Reading RSS feeds.

6. Administration and operation

6.1 Access Control List (ACL)

JCMS 7 has a new feature called the Access Control List (ACL) to control access to the site's advanced functions. ACL does not replace the data rights system (publications, categories, workspaces, etc.), but it completes it by making it possible to decide who has access to the technical and functional administration functions.

Access Control Lists do not radically change the role of the Administrator who still has complete access to all the site's functions. On the other hand, they enable him to delegate the management of parts of the site to identified users. For example, he could give certain functional users responsibility for managing user accounts and give other more technical users access to site supervision functions.

The general principle is to define access control lists each of which gives access only a specific set of functions. Each ACL is then associated with a group whose members are then all covered by the ACL.

In order to make ACLs as easy as possible to manage, the functions proposed are grouped in a tree structure. Giving access to a particular level also gives access to all the lower levels. All the Admin Area and workspace administration functions can be assigned. When a member has access to a particular Admin Area function, he can access this space and use this function, but he does not see any of the other functions to which he does not have access.

Fig. 48. The functions covered by ACLs are organized in a tree structure.

An audit function is provided to display all the accesses of a member or group. Inversely, it is also possible to see all the members having access to a given function.

Fig. 49. The ACL management interface can be used to audit the access rights of groups and members.

The ACL system is extensible in that each plugin can add its own functions covered by ACLs. For example, the collaborative space plugin can be used to assign to an ACL the right to create a new collaborative space.

6.2 Deployment script

JCMS 7 introduces a new deployment system that replaces the DeployManager. This system can be used only with the JCMS sites running on a Unix or Windows 2008 server. Sites running on Windows 2003 can continue to use the DeployManager.

This system is based on a new organization of the webapp in which the application files are physically separated from the data files. These two spaces are linked by means of symbolic links. The files are grouped in the three following folders:

  • WEB-INF/data: contains (among other things) the Store, properties, logs, statistics, etc.;
  • upload: contains all files uploaded to the site;
  • archives: contains all archived publications.

Fig. 50. New organization of webapp files for the deployment script.

Unlike DeployManager that deployed only changes (updates), the new deployment script deploys a complete webapp archive (WAR file). This simplifies deployment both for the development team, which simply provides the webapp to be deployed, and for operators who can now deploy a webapp by a single command line instruction.

For more details, see the JCMS 7 Installation and Operation Manual that describes this new deployment procedure in detail.

6.3 Access statistics export

JCMS has always provided some site usage statistics, but these were fairly basic: number of visitors, most-visited contents, most sought keywords, etc. These are too limited for some users, particularly if they need to cross-compare several criteria or make analyses over long periods. JCMS 7 provides a function to export complete access information (date, member, publications consulted, etc.) to allow them to be analyzed externally by specialized tools.

When using the export function you can specify a particular period and workspace to export. By default, the export is in CSV or XML format, but other formats can be supported.

Since an export can take some time in cases of voluminous data, the processing is done in background. The requester receives an e-mail when the export is done.

Fig. 51. Statistics export interface.

7. JcmsDB

7.1 Enrichment of DB Publications

Since version 6, JCMS employs a hybrid storage system using the "JStore" and a relational database "JcmsDB". The JStore allows very high-speed access and enables management of a richly structured object graph. JcmsDB is intended for voluminous, more peripheral data and data subject to frequent updates.

JCMS 7 removes several functional limitations on publications stored in JcmsDB:

  • Volume: JCMS 7 is designed to manage several million DB Publications while maintaining good performance, notably during the searches.
  • Categorization: DB Publications can be categorized, although there are some limits:
    • No refinement on the current category for query/foreach portlets that display DB Publications;
    • No refinement by contextual categories;
    • Explorer portlet: no multicategorization.
  • Historization and version: all changes on a DB Publication can be historized. Each modification can be marked as major or minor. You can consult all the versions of a DB Publication, make comparisons and even return to an earlier version. Since the historization of versions can involve very large data volumes in the database, it is activated only on demand for each type of publication. In the standard configuration, only the DBDocument type is historized.
  • Track Readers: reader tracking can be activated for DB Publications, as can sorting by number of readers.
  • RightPolicyFilter: DB Publications can be subject to RightPolicyFilter dynamic access control (canBeReadBy() method). However, since this control can affect performance, developers must state for which type of query this control must be made (callCanBeRead() method). For example, a RightPolicyFilter operating on the Comment type must not impact searches on DB Documents.

JCMS 7 is designed to provide an acceptable response time even with queries involving large numbers of publications. In order to allow use of JCMS advanced search functions (hybrid and multi-criteria searches, paginated searches, dynamic rights, etc.), the search engine gives priority to response time rather than the exhaustiveness of the results. If a search is interrupted before it completes, the icon (i) indicates that the results are partial. Several properties can be set to control the search algorithm.

Property

Default Value

Role

dbpub.search.category.exact

False

False: usual JCMS behavior.
True: a search with categories will be in exact category mode (better performance).

dbpub.search.auth-group.parents (empty) Can be used to define the parent groups to check for read right control. By default, all the groups of the member are used. By choosing only some parent groups (ids) to check, you improve the search performance.

dbpub.search.max-pub

100000

If a paginated search involving dynamic rights concerns more data than the value set by this property, the search is interrupted.

dbpub.search.fulltext.hits.timeout

5 seconds

During a textual search, if the search for results takes longer than the time set by this property, the search is interrupted.

dbpub.search.scroll.timeout

5 seconds

During a textual search, if scrolling of the results takes longer than the time set by this property, the search is interrupted.

dbpub.search.scroll.pagesize

1000

Page pre-loading size during scrolling of the results in a paginated search.

dbpub.search.row-id-set.max

500

Maximum buffer size used when loading data

identifiers in batches.

 

7.2 Second-level cache

To increase the performance of searches and queries submitted to JcmsDB, JCMS 7 integrates EHCache, a second-level cache system for Hibernate. JCMS 7 has been adapted for make this system compatible with the use of JSync.

Hibernate manages a first cache level in which it stores the objects that were loaded during a Hibernate session. On the other hand, if a given object is also used in a second session, Hibernate triggers an SQL query again to load it.

The second-level cache manages access to the objects between different Hibernate sessions, thereby improving performance by avoiding reloading of objects previously used.

EHCache also caches SQL queries and their results. In this way, when a query already made is submitted again, EHCache finds the associated results. Caution, however! These are the results of the SQL query, not objects returned by Hibernate. Therefore if this query concerns the loading of objects, these must be loaded separately. The second-level cache also acts at this moment. The query cache is particularly useful for memorizing the results of projections, typically counting queries (count(*)). For a paginated search, JCMS makes two queries: a first counting query to know the total number of results and a second query to load the set of results. Thanks to the query cache, these queries will be processed very rapidly, triggering SQL queries only on the first access.

On the other hand, these two caches must be invalidated when the content of the tables evolves. EHCache handles these invalidations within a JCMS instance. But in a replicated architecture with JSync, each JCMS replica must trigger invalidations of the caches when a data item in the base has been modified on another replica. To enable this, JCMS 7 uses a listening system (DBListener) on writes in the base which triggers these calls on each of the replicas.

JCMS 7 provides a standard configuration for EHCache, but it is possible to change the default values defined in the file WEB-INF/classes/ehcache.xml.

7.3 Declaration via a Data Source

The JcmsDB database is usually declared by stating a JDBC URL, a login and a password. To complement of this type of declaration, JCMS 7 allows JcmsDB to be declared via a Data Source.

A Data Source is defined in the application server and associated with a JNDI path of the type java:comp/env/jdbc/jcmsdb. Using a Data Source makes it possible to mask from JCMS the details of the database connection and also to create advanced configurations proposed by the application server, for example a connection pool. For this reason, the c3p0 connection pool supplied with JCMS is disabled when JcmsDB is declared via a Data Source.

Fig. 52. Declaration of JcmsDB access via a Data Source.

7.4 DB2 support

In addition to support of the PostgreSQL, MySQL, Oracle, SQLServer and Derby relational database management systems, JCMS 7 supports the IBM DB2 9.7 RDBMS. For performance reasons, the recommended size of the database pages is 32 KB.

7.5 UTF-8 and SQLServer

JCMS 7 enhances multilingual support when SQLServer is used. The new Hibernate dialect for SQLServer uses column types adapted to the management of UTF-8 encoded characters.

8. Ergonomics

JCMS 7 has been given a new graphic style and ergonomics that will continue on future versions. This first restyled version includes new man-machine interface components, portal page improvements and revamped back-office interfaces.

8.1 New components

8.1.1 Modal forms

Version 6 of JCMS introduced modal windows (sometimes also called "lightboxes" or "pop-ins"). Their purpose is to attract the attention of the user while not changing his browsing context.

JCMS 7 now employs modal windows for forms that must be input in the front-office, for example to input calendar events, to open collaborative spaces, to add a contact in the directory or to update his status.

When the form includes many fields, these are grouped in steps; the form is filled progressively and logically. For example, when adding an event in a calendar, the event's general attributes are input in the first stage (title, dates, place, etc.), then the participants in the second stage, then the resources to be reserved and the associated documents, and finally advanced options such as the event's recurrence. The fields being optional from the second stage, the input can be abandoned at this point.

Fig. 53. Forms in a modal window preserve the browsing context and can be composed of several steps.

8.1.2 Item box

In JCMS, many portlets list a set of results and allow users who have sufficient rights to edit or add new ones. In order to improve the usability in such boxes, their presentation has been reviewed and harmonized. These boxes have options: they can include tabs, mini-icons for editing or the editing icon with the contextual menu, etc. They can display for each item a small information bubble (e.g. the number of proposals for an ongoing event scheduling, the last modification date of a Wiki page, etc.).

jcms7-itembox

Fig. 54. Examples of item boxes.

8.1.3 Information cards

We would frequently like to get additional information about items appearing in a page. For example, the ESN social network indicates that a member has added a document, will participate in a meeting, has added a contact, etc. But to know more (What is the document about? Where will the meeting take place? Which company does this contact belong to?), we formerly had to go to the associated page. Now with JCMS 7, when you move the mouse pointer over the link, a small card appears showing such additional information.

Fig. 55. A document information card.

The cards are specific to each data type (member, publication) and can be refined by sub-type (document, event, etc.) and even according to the browsing context. In a conversation space, for example, a member's card displays not only his contact details but also his level of participation (animator, expert, points earned, number of questions/ideas, answers/reactions, etc.).

Fig. 56. A member's information card in a conversation space.

8.1.4 Assisted input of links

JCMS 7 provides a more practical input method for link-type fields. This concerns category fields, links on publications, links on members, links on groups, etc. You start by typing in a text field a member's name, the required link title, and so on. JCMS then proposes the corresponding links in a list and you choose the one you need. To aid this choice in the case of members, their photos are displayed.

Fig. 57. Assisted input of links (here a Member field).

In the case of categories, if the category you enter does not exist, but you have the right to create categories in this branch, then you can add one. This new input mode gives users the equivalent of the tags we find in web 2.0 services like Flickr, Delicious and Facebook, while enjoying the richness of categories (uniqueness, displacement, multi-language, query, caddy, etc.)

This principle is used in conversation spaces, for example.

Fig. 58. Creating categories on the fly.

8.1.5 Auto-completion pagination

JCMS systematically provides the auto-completion feature in category and link fields. By default, the list of suggestions is limited to 10. Sometimes this is not enough; the item sought is further down the list. JCMS 7 resolves this problem through a simplified pagination (next/previous) system in auto-completions.

Fig. 59. The auto-completion function enhanced by a paginated list of suggestions.

8.1.6 Thumbnail rendering

Several earlier JCMS versions included an automatic image resizing system used in many functions, such as the preview of an image, document, video, web page, member photo of variable size, etc.

The resizing algorithm has been revamped to enhance the quality of the images produced.

Fig. 60. The resizing algorithm produces better quality images.

This change makes it possible to iconize (16x16) member photos while preserving reasonable rendering. Even at this very small size, photos can help to identify people rapidly.

Fig. 61. The new resizing algorithm can iconize photos.

JCMS 7 can also resize images on the server side simply by adding the following parameters to the image's URL:

  • "w" with the required width,
  • "h" with the required height.

8.2 Portal

8.2.1 Ajax-Refresh

Since version 6, JCMS proposes Ajax-Refresh. This is a framework that simplifies the use of Ajax technology for partial refreshing of pages. During Ajax requests, the JSPs invoked generally need access to contextual information calculated during the initial treatment of the page (e.g. current portal, current category, etc.). In previous versions this information was stored in the user's J2EE session, which is generally set to 30 minutes in application servers. Consequently, if the user makes an Ajax-Refresh request after this period, for example to go to another page in a paginated list, a message appeared saying that the page had to be reloaded.

JCMS 7 avoids this problem, since all the information necessary for processing the Ajax-Refresh request is now memorized in the initial page. This is sent again in response to each Ajax-Refresh request. Even if the J2EE session has expired, JCMS can still reconstitute the context of the initial request and perform the required treatment.

Note however that this is valid only for requests triggered via the Ajax-Refresh API, but not for Ajax requests using another API such as JSON (e.g. category tree opening).

8.2.2 CSS fields for portlet skins

All portlets supporting a skin (PortletSkinnable) now have a new field used to indicate the CSS Classes to apply to the DIV tag containing this skin. The field also serves to add behaviors to the portlet.

8.2.3 Deferred loading

All JCMS 7 portlets can be configured for deferred loading, also known as lazy loading. A portlet configured in this way will be loaded only after the entire portal page has been rendered. You can therefore start reading the page content while the portlet carries out its processing and returns the result.

This is particularly useful for portlets that have to perform long processes or ones that interact with external services whose response time cannot be foreseen. Thanks to deferred loading, these portlets no longer delay the rendering of the page.

To configure a portlet for deferred loading, just indicate ajax-lazy in the CSS Classes field of the portlet's Skin tab.

Fig. 62. Portlets with the ajax-lazy class have the advantage of deferred loading.

In order to avoid a jumping effect on the page when the portlet content appears, the portlet can send immediately a static view with an indication that the information is being recovered, then the deferred loading triggers. When the portlet's final content arrives, it replaces this "waiting" content, which avoids the portlets located beneath being shifted downwards.

8.2.4 Periodic loading

JCMS 7 portlets can also be configured to refresh themselves regularly without the user having to ask. This is obviously useful for portlets whose content changes very frequently, for example a one displaying ESN activity or a supervision portlet monitoring the room temperature or an external process, etc.

To configure a portlet for periodic loading, just indicate ajax-periodical-N in the CSS Classes field of the portlet's Skin tab, setting N to the refresh frequency in seconds. For example, ajax-periodical-60 means "refresh every minute".

Fig. 63. Portlets with the ajax-periodical class have the advantage of periodic loading.

9. Additional features

9.1 Users

There are some user management changes:

  • Group names are multilingual;
  • DBMembers can contribute any content type and have access to back-offices;
  • All workspaces have a default group. Following version upgrades, the old spaces receive as their default group their group with the least writer rights;
  • The Main Administrator is no longer considered to belong to all the workspaces: he must now be explicitly attached to them.

9.2 Development

9.2.1 File handling

JCMS 7 provides natively an API for handling incoming files. This API can be used to monitor a folder and trigger a process every time a file is added to this folder (or its sub-folders). In the standard configuration, JCMS 7 supervises the "upload/docs" folder. This means that plugins can ask to be notified of file changes very simply.

9.2.2 Satellite files

JCMS 7 introduces the notion of satellite files. When a contributor uploads a file, a whole series of satellite files can be produced around this initial file:

  • The file containing the text to index;
  • Preview images of various dimensions;
  • The PDF file if the PDF Converter plugin is installed;
  • The SWF file if the Document Viewer plugin is installed.

The satellite files are deleted every time the document is modified or deleted.

By default, the satellite files are files having the same prefix as the document to which they relate. For example, the files report.doc.pdf and report.doc.swf are satellite files of report.doc.

It is possible to declare other regular expressions of association by means of the properties prefixed by "file-document.associated-files".

9.2.3 ProcessExecutor

The ProcessExecutor class simplifies and unifies the way in which external processes are executed. It enables the standard output of the process to be captured easily. An execution timeout can be defined to ensure a process is stopped if takes more than the timeout period to complete. The default timeout is 10 minutes.

Example:

ProcessExecutor executor = new ProcessExecutor("/bin/echo", "Hello World!");
executor.setCaptureOutput(true);

ProcessExecutionResult result = executor.execute();
assertEquals(0, result.getExitValue());
assertFalse(result.hasTimedOut());
assertEquals("Hello World!", result.getStdout().trim());
assertEquals("", result.getStderr());

9.2.4 PersonalizedMailMessage

The PersonalizedMailMessage class is used to send a personalized e-mail very easily to a group of users. The sending can be synchronous or asynchronous, in a separate thread, in order not to block the rest of the process.

Example:

PersonalizedMailMessage mail = new PersonalizedMailMessage() {
public String getOrigin() {
return "MyCustomNotification";
}
public String getSubject(Member mbr) {
return "A personal mail for " + mbr;
};
public String getContentText(Member mbr) {
return mbr.getFriendlyName() + ",\n\nThis is a personal mail for you...\n";
}
};
mail.sendInThread(myMemberSet);

9.2.5 Site name in CSS class

The site name (channel.name) is systematically put in the CSS classes of the body tag of all pages generated with doEmptyHeader.jsp. This makes it very easy to overwrite any CSS definitions of JCMS or one of its plugins.

10. New certifications

JCMS 7 is certified with new information system components:

  • Operating Systems:
    • Windows 2008
  • Application servers:
    • IBM WebSphere 7
    • Oracle WebLogic 10.3
  • Databases:
    • IBM DB2
    • Oracle 11g2
  • Messaging and office suites:
    • Microsoft Exchange 2010
    • Microsoft Office 2010
    • Lotus Domino (v7 or later)

For more details on the platforms for which JCMS 7 is certified, see the Installation and Operation Manual.

Finally, the pre-release versions of the browsers Internet Explorer 9 and Firefox 4 have been successfully tested. These will be certified for a future JCMS version once they are available in a stable version.

In brief...

JCMS 7 is a major release incorporating a raft of functional enhancements: collaborative working, documentary management, personalized desktop, portal, and much more. Important changes have been made to the JCMS technical kernel and to existing plugins. New plugins have been added, including conversation spaces, project tracking, document viewer, and access via smartphones. Important technical enhancements have greatly expanded the data volume handling capacity and extended the range of available JCMS components. Finally, JCMS 7 becomes even more open to the enterprise information system: it now supports DB2, Office 2010, Exchange 2010 and Lotus Notes.

Subject
Products
Published

3/24/11

Writer
  • Olivier Dedieu