
Picture somewhat related.
In the first post about personalization in portals we talked about the most common form of personalization, User Personalization. This is a manual action initiated by the user to tailor the experience on a site to their personal preferences. This is great but it does not leverage some of the inherent benefits of using portal technology with an ECM system like UCM.
So in this post we will talk about the 2nd kind of personalization in portals, Content Filtering Personalization, as well as outline a solution for doing this type of personalization in a JSR-168 standards based portlet consuming content from UCM.
Content Filtering personalization essentially does what it says, filters the content that a user can view. It endeavors to deliver content to an end user that is relevant to them based on attributes that are known about that particular user. It requires no interaction on the part of the user; the content is simply filtered based on a predefined set of rules. This is the most common form of personalization done from a portal and content management perspective.

Something like this.....
This type of personalization is surprisingly easy to accomplish and provides instant benefits to both the business and the end user. The end user gets instant access to content that they care about so they do not need to sift through a proverbial ocean of content. The business is able to deliver content that is targeted to users thereby delivering the message that they want a consumer to hear.
Users who log into a site (intranet or extranet) have certain attributes that are known about them. For example they may be a part of the HR department, or the Corporate Communications department, or they may have indicated on their profile that they are interested in information about gophers (Golden or otherwise).
Based on the predefined attributes we know about a user we can select the content that is relevant to them. But, How do I do that using the content in my UCM instance?, you ask. That is where our development on the Fishbowl Portlets comes in.
CONTENT FILTERING PERSONALIZATION IN A PORTAL USING UCM
The Fishbowl Portlets were developed to not only consume content from Oracle ECM but to also allow content filtering personalization via configuration of the portlets. The main design points that were considered when implementing personalization:
- Keep contribution simple, metadata tagging only
- Allow the personalization to be configured, not requiring a new deployment of the portlets
- Be able to pull the user attributes from a directory server (LDAP)
As we touched on above the user that is logged in has certain attributes known about them. The basis of content filtering personalization then becomes mapping those user attributes to content metadata. In Oracle ECM the easiest way to map a set of attribute values to content metadata fields is using search. This means that personalization of content boils down to building the correct query or choosing the correct content based on a user’s attributes.
Once again portlet preferences, part of the JSR-168 standard, play a part in the personalization scenario. We discussed their use in User Personalization but they can also be leveraged by an admin or designer or developer. Using them allows for different personalization to be used on multiple instances of the portlets. One of the preferences implemented was personalization script. Attaching script to each instance of the portlet post deployment allows for different queries to be built for different pages and content areas on the site without the need to redeploy the portlets.
To achieve runtime configuration and to enable query-building, Groovy was leveraged as the language to create personalization script. We chose Groovy due to its tight integration with Java, the ability for it to be dynamically executed, and ease of use for developers who are familiar with the Java language. The personalization process involves:
- doView() is called upon rendering the portlet
- Check to see if the portlet is configured for personalization, if so….
- Retrieve the user attributes technology’s user store or LDAP directly
- Initialize the GroovyShell and pass the attributes object (javax.naming.directory.Attributes)
- Execute the personalization script stored in the portlet preferences and return a query string or content ID
- Using CIS or RIDC, execute the query string or retrieve the content and render the results
A quick example of a script to pull back a different list of content based on a user’s location (ex: Minneapolis, Chicago, Atlanta).
import javax.naming.directory.Attribute;
Attribute locAttr = userAttributes.get("L");
String loc = (String)locAttr.get();
println("Location from User Attributes: "+loc);
String query = "dDocType `WebContent` xLocation `${loc}`";
return query;
Using this approach we leverage what UCM is good at (managing content and metadata) and leave the implementation of rendering the content at the presentation layer (the portal).
In the next installment of the series we will talk about an evolution of content filtering personalization which is called “Trend Analysis Personalization”. It helps us with the one major shortcoming of straight content filtering which is “How do we generate the user data that we are filtering on?”
November 27, 2011 at 9:18 am |
Done for you Traffic Review…
[...]Type of Personalization in Portals – Content Filtering Personalization « C4[...]…