The topic “sharing content across organizations” has been discussed for a while. You can refer to forums entries like
Ideas for sharing content across organizations
Proposal: sharing tags and assets in organization hierarchy
Main challenges are, but not limited,
- Security on content
- Scope of sharing
In 6.0, it introduces a group called Shared Global - the content in a group Shared Global would be visible across organizations and communities. This is good feature. But this feature did not provide real capability - sharing content in organization hierarchy or sharing content across groups.
It is too big to discuss on how to share any content like Web Content, Wiki articles, Blogs entries, Forum messages, Bookmarks entries, calendar entries, Image gallery images, document library documents, etc. Thus, this article will introduce proposals on sharing content - Knowledge base – across groups. Especially, it will discuss how to share content -Knowledge base – across any groups (developed in plugins SDK). If these approaches were really good, they could be applied on any content of the portal core, too.
Introduction
What’s knowledge base or knowledge management (KM)? The portlet Knowledge Base allows authoring articles and organize them in a hierarchy of navigable categories. It leverages Web Content articles, structures, and templates; allows rating on articles; allows commenting on articles; allows adding hierarchy of categories; allows adding tags on articles; exports articles to PDF and other formats; supports workflow; allows adding custom attributes (called custom fields); supports indexing and advanced search; allows using rule engine; etc.
Most importantly the portlet Knowledge Base supports import of a semantic mark-up language for technical documentation called DocBook. DocBook enables its users to create document content in a presentation-neutral form that captures the logical structure of the content; that content can then be published in a variety of formats, like HTML, XHTML, EPUB, and PDF, without requiring users to make any changes to the source. Refer to http://www.docbook.org/.
In general, the portlet Knowledge Base provides two pieces inside: Articles – managing knowledge base articles - and Article Aggregator - publishing knowledge base articles.
Abstracted from the book: Liferay Portal 6 Enterprise Intranets (coming out soon)
Schemes - sharing knowledge base articles across groups
In brief, we proposed four sharing knowledge scheme.
- Sharing knowledge articles across groups (organization, communities, my community) by specific permission SHARE – called shared-by-permission.
- Sharing knowledge articles by organization hierarchy - called shared-by-organization-hierarchy.
- Sharing knowledge articles across groups (organization, communities, my community) by membership - called shared-by-membership.
- Sharing knowledge articles across groups (organization, communities, my community) by ownership - called shared-by-subscription.
Scheme shared-by-permission
Knowledge base articles could be shared by assigning permission SHARE. How to achieve this?
First, define permission action SHARE on model com.liferay.kb.knowledgebase.model.KBArticle in default.xml as follows.
<action-key>SHARED_ARTICLE</action-key>
Then, set a property for shared articles by permission across groups.
## shared articles by permission across groups (organizations, communities, my community).
## The permission SHARE is available only if kb.shared.articles.by.permission is set to true.
kb.shared.articles.by.permission=true
##Nothing shared by permission if this property is set to false.
# kb.shared.articles.by.permission=false
Scheme shared-by-organization-hierarchy
Knowledge base articles could be shared by organization hierarchy. How to achieve this?
First, define a property kb.shared.articles.by.organization.hierarchy.enabled. To enable this feature, set it to true. To disable this feature, set it to false.
## shared articles by organization hierarchy
kb.shared.articles.by.organization.hierarchy.enabled=true
Then, specify sharing approaches. Sharing approaches would be top-down or bottom-up.
## Shared articles in organization hierarchy.
## Sharing approaches: top-down, bottom-up
## The property kb.shared.articles.in.organization.hierarchy will be loaded
## only if kb.shared.articles.by.organization.hierarchy.enabled is set to true.
## Supposed that there are organizations Level 0, Level 1 and Level 2, Level 0 is parent of Level 1 and Level 2 is child of level 1.
## Using approach bottom-up, the user Level2User, a member of Level 2, would be able to see all articles in Level 0 and Level 1 as shared articles in Level 2; the user Level1User, a member of Level 1, would be able to see all articles in Level 0 as shared articles in Level 1.
kb.shared.articles.in.organization.hierarchy=bottom-up
## Using approach top-down, the user Level0User, a member of Level 0, would be able to see all articles in Level 1 and Level 2 as shared articles in Level 0; the user Level1User, a member of Level 1, would be able to see all articles in Level 2 as shared articles in Level 1.
## kb.shared.articles.in.organization.hierarchy=top-down
Scheme shared-by-membership
Knowledge base articles could be shared by membership. How to achieve this?
## Enable shared by membership
## Supposed that the end user is a member of groups (organizations or communities) G1 and G2, in My Community the end user should be able to see all approved articles of groups G1 and G2 as shared articles.
kb.shared.by.membership.enabled=true
Scheme shared-by-subscription
Knowledge base articles could be shared by subscription. How to achieve this?
Supposed that the end user is a member of groups (organizations or communities) G1 and G2, the end user has subscribed a set of Knowledge base articles in any groups like G1 and G2. Now when the end user clicks on “My Subscription” in any group (organization, community or my community), the end user would be able to see all subscriptions, either as shared articles or as normal articles.
## enable all subscriptions for current user
kb.all.subscriptions.enabled=true
Prototype – an implementation
Environment: Liferay portal 5.2.5 – EE 5.2 SP1; Knowledge base portlet. It would be easy to upgrade to 6.0.
Share articles by permission SHARE.

Display shared articles in current group as well as normal articles of current group.

Share articles by organization hierarchy

Share articles by membership – show all articles from groups which current user is a group member in My Community.

Share articles by subscription - all subscriptions for current user

Summary
As you can see, content - knowledge base articles - can be shared by permissions, organization hierarchy, membership and ownership. And sharing content knowledge schemes across groups are configurable. That is, you would be able to configure them according to your own requirements. By the way, these approaches would be helpful for sharing any content across groups in the portal instance, like Web Content, Wiki articles, Blogs entries, Forum messages, Bookmarks entries, calendar entries, Image gallery images, document library documents, etc.
Last but not least, I'd like to send special thanks to Peter Shin, Julio Camarero, Jorge Ferrer, Bruno Farache, Robert Chen and Frank Yu who did an amazing job to make Knowledge base portlets a reality. Also to everyone else that helped during development and providing feedback.

