An example: Knowledge base management
What's a knowledge base? According to Business Dictionary (refer to http://www.businessdictionary.com/definition/knowledge-base.html), a knowledge base is defined as:
"Organized repository of knowledge (in a computer system or an organization) consisting of concepts, data, objectives, requirements, rules, and specifications. Its form depends on whether it supports an (1) artificial intelligence or expert system-based retrieval, or (2) human-based retrieval. In the first case, it takes the form of data, design constructs, couplings, and linkages incorporated in software. In the second case, it takes the form of physical documents and textual information."
How to implement a knowledge base in the portal? A knowledge base could be implemented as a set of portlets plus hooks with the following major requirements. Of course, you can add your specific requirements in knowledge base management (KB).
Modeling knowledge base as articles plus article templates, article comments, private messages, contacts, and tasks
Versioning and authoring articles, and organizing them in a hierarchy of navigable and scope-able articles
Supporting multiple languages on title, content, and description of articles
Ability to lock and unlock articles
Supporting look-ahead typing in articles search
Supporting caching, asynchronous threads, indexing, and advanced search
Representing knowledge base management as a set of JSR-286 portlets, for example, Admin, Private Messaging, Contacts, Tasks, Docs Viewer, Aggregator, Display, Search, and List; and supporting inter-portlet communication (IPC events and public render parameters) among portlets Aggregator, Display and List; and leveraging different portlet bridges such as Struts 2, JSF 2, Spring 3 MVC, Wicket, and so on
Leveraging dynamic data list and dynamic data mapping to build dynamic document types and meta-data sets
Leveraging dynamic query APIs and custom SQL
Adding permission checker on articles
Ability to add attachments and images to articles
Ability to add asset links, asset ratings, and asset view counts
Ability to add asset comments to articles and votes on comments
Ability to add hierarchy of asset categories
Ability to add asset tags to articles
Ability to add RSS feeds and to subscribe to articles
Ability to add polls on articles
Exporting and converting articles to PDF and other formats
Supporting configurable workflow
Ability to add custom attributes (called custom fields)
Ability to archive (import and export) and to remotely publish articles
Allowing use of auditing, rule engine (Drools), and reporting engine (JasperReports)
Ability to import a semantic mark-up language for technical documentation called DocBook, referring to http://www.docbook.org
Providing web services for knowledge base articles
Providing JSON services for knowledge base articles
Providing RESTful services for knowledge base articles
Integrating CAPTCHA or reCAPTCHA with knowledge base articles
Applying JavaScript such as jQuery and mash-ups when building portlets
Supporting asset rendering in the Asset Publisher portlet
Integrating social activity and social equity
Ability to apply portal core and other features to knowledge base articles
This book is going to show you how to develop portal systems via a real example—knowledge base management. By the end of this book, you will be familiar with major portal features, be able to apply them to knowledge base articles, and implement the aforementioned requirements as well. Of course, you will know the portal in-depth from a systems development viewpoint, and moreover, on top of Liferay Portal, you will be able to cook your own favorite dishes quickly and concisely.