Oracle UCM Content Folios

A few weeks ago, in a somewhat underwhelming fashion, Oracle released their Content Folios component as a non descript patch to the UCM Content Server.  Folios, which has been under development for some time, allows users to create groupings of items in the content server as a new content item.  I first learned about the project early last year and have been anxiously awaiting it’s release ever since.  Last Monday out at OpenWorld I finally got my first introduction when it was demoed during the digital asset management session.  Now that I am back I wanted download and set up Folios for myself and here’s what I found.

First off, it’s a pretty easy install.  I was actually setting up a new Content Server instance and since the patch, it’s now been added as an initial install option.  Even still I’ve going through the documentation and there does not appear to be any prerequisites or anything too tricky other then uploading and enabling a component.  Once installed a “New Folio” prompt can be found in the “Content Management” menu.

Simple or Advanced 

Folios appear to come in two flavors Simple and Advanced.  Simple Folios are a list-view type grouping, where items which are already checked in to the content server can be grouped via a search interface.  Advanced Folios provide a greater amount of flexibility allowing for a heretical structure, items to be checked in directly, property editing, a snazzier interface and probably some other features I haven’t discovered yet.  Simple Folios can easily be converted in to advanced, but so far as I can tell, advanced cannot become simple.

Creating a Folio

Folio Tree View Screen Shot

For my first go, I decided to create an advanced folio, which would consist of a group of common UCM PDF documents.  Right away I discovered something cool in the ability to create “nodes” or what I might call sub-folders in the Folio.  So for my UCM documents I setup three nodes to categorise my docs; Content Server, Content Conversion Server and Folios.  Right clicking on the nodes presents options to insert new items via check in, items from search or to insert a hyperlink.  Using the check in option, I inserted several UCM docs off my desktop.  Even though they were checked in by inserting them directly in to the Folio, the Folio only keeps pointers to content, so very cleverly all of my checked in docs also became new items int he repository. 

Also of note was that I found you could add a Folio to another Folio, the affect of which appears to be similar to having added a node.  Basically the “sub-folio” becomes sub grouping in the greater group.

Folio Templates

Under the administration menu,  Folio users will find an option to create a Folio template.  Folio templates are a lot like what they sound like, templates which future Folios may be based on.  Creating a template allows you to define what types of content, how much content and what way content can be added to the Folio.  Once created, templates are stored in the repository, much like actual Folios or any other content item, and behave similarly to an XML schema template(further review will reveal they are not though).  Users have the option to base their new Folio on a template in the first step of the “New Folio” process.

Folio Node Elements

Renderers

In the actions menu of the Folio interface I found a list of “Renderers”, which appear to allow on-demand ”publishing” of the Folio to various formats.  By default there are three renderers, XML, Zip and PDF.  For my UCM documentation Folio, I was able to render a ZIP version which returned a Zip containing all my PDFs in the node(now folder) based folder structure I put together along with XML documents containing each PDFS meta-data.  The PDF renderer(which actually threw an error with my advanced Folio but did work on a simple version), will create essentially a “compound document” by appending all the PDFs in the Folio together.  The XML renderer returns an XML version of the Folio, displaying meta-data for the content items.

At OpenWorld they demoed a renderer which created a complete PowerPoint presentation out of several single slide PowerPoint files.  I am not sure if or where that renderer is available.  As I understood it at the time, the PowerPoint renderer was a sample, how-to example.  Renderers appear to be an area of potential future expansion for Folios both from Oracle and hopefully other third parties.  A little bit of component investigation reveals that all renderers are registered to the CpdRegisteredRenderers table, making it a potentially straightforward process to create a new renderer in a component which also merges to CpdRegisteredRenderers.

Many Potential Uses

There are quite a few uses for Folios and I think it’s going to take some time to flush them all out.  Nearly every CMS implementation I’ve been involved with has had requirements related to grouping content together, making this a very exciting new feature to Oracle’s UCM suite.  Right off the bat, there’s a clearly uses in grouping technical documents, similar to what I’ve done in this example with the UCM documentation.  Using the PDF renderer, you could imagine a “create your own document” service where users can assembly the individual managed documents they need in to a single, complete PDF.  Another option might be to use Folios to manage multi-lingual content, relating the different language versions of a document all together.

Posted in Content Management, Folios, Oracle | 2 Comments

OpenWorld – Wednesday

Wednesday at OpenWorld was the slowest for me in terms of sessions.  There was one UCM session related to building an image repository later in the afternoon, but some scheduling kept me from attending.  Instead, in the morning, I had the opportunity to attend “Foundations of Social Networking with Oracle WebCenter”, which was a very exciting demo of Oracle’s new portal application / framework.

The session demoed WebCenter 11g, so many of the features demonstrated aren’t actual out yet.  That said, they seem to have a very good idea of what organizations are looking for beyond just a standard intranet / extranet.  The session focused on how to leverage the WebCenter “Spaces” module(11g only) to create personal and community mini-sites to facilitate collaboration and ofster social networks.  The usual Web / Enterprise 2.0 suspects were shown; blogs, wikis, message boards, messaging and personal profile pages all made an appearance.  I am very excited about WebCenter, but haven’t worked with it yet, so it’s tough for me to have a solid opinion on it.  It’s full of features and also shows a great deal of flexibility in integrating with different systems and technologies(we hear the Content Server JSR-170 connector is due out soon).  I’m going to set up a test instance in the next few days and start playing with it some, so check back for updates.

Later in the day, we were down at Oracle’s meet and greet demo area where some of the Enterprise Search folks took some time to walk me through their product.  It’s officially called Secure Enterprise Search(SES) and it’s standalone application which is designed to live in its own environment, providing search functionality across the organization internally and potentially externally too.  They call it secure because the results can be tailored to the user, based on their rights or the resource they are attempting to access.  Applications “publish” content to SES via a connector, either one from Oracle or one based on an Oracle sample framework project.  

I believe Content Server’s connector for SES is out now or at least coming out very soon.  Yesterday’s post highlighted the RSS Crawler component which is a critical piece of the Content Server/SES integration.  The one other thing I noted about SES, was that the price pointed seemed to be pretty reasonable when compared to some of the other competitors in the space.  My experience with licensing is pretty limited to a couple of the major vendors so I’m definitely not the expert in that area(among othersJ).  Based on my informal chat though, Oracle does seem to have a competitive price associated with SES.

Later in the evening Oracle threw just an amazing party / concert.  I haven’t really gotten in to the social aspects of the trip, but I have to mention what a great time I had last night.  Had a chance to catch both “The Smithereens” and Lenny Kravitz.  Billy Joel was on another stage in addition to several other popular bands.  Just a very good time and nice way to close out the conference.

OpenWorld officially closes out Thursday afternoon but instead of visiting sessions today, I’ve been on a plane all day heading back to Virginia, making this my last post from OpenWorld.

Posted in Content Management, OpenWorld, Oracle, Search, WebCenter | Leave a comment

OpenWorld – Tuesday

Tuesday was another fun day here at OpenWorld in San Francisco.  First session of the day was the UCM product roadmap, which appeared to be pretty consistent with what we’ve seen since Stellent was acquired by Oracle.  There were a couple items of interest though:

1.  Content DB is not going away.  Content DB was Oracle’s content management system prior to the Stellent acquisition.  I personally don’t have much experience with it, but understood it to be very good at storing large amounts of content.  Beyond that though, I’m not sure where it’s strengths and weaknesses are.  With Stellent Content Server being brought in to the fold, I think we all expected Content DB to sort of fade away, instead they seem to be positioning it as a platform for archiving historical content.

2.  Heard more about leveraging integrations with the other applications in the Fusion Middleware stack, specifically Oracle’s Real Time Decisioning(RTD) application, which is part of their BI application.  This is really about the most exciting thing I’ve heard since I’ve been here and is just a super cool idea.  RTD is very good at determining what they call the “Next Best Activity”, meaning what is the next best thing you can do or show this user.  They’re hoping to tie this to the content server, so that you can identify areas on a web page which will dynamically determine what the next best piece of content is to show the current user based on their previous behavior and profile.  Sort of a super-charged personalization engine.

Later in the afternoon I attended the “50 Ways to Integrate with Oracle Universal Content Server” session.  For anyone who attended Cresendo last February, it was pretty much the same session with a couple new items in the 50 ways list, like integrating with Oracle WebCenter(I wonder what they removed?).  Interesting stuff and a nice look at how flexible the content server’s architecture is, but what was very cool was that they talked about a new component called RSS Crawler. 

The concept behind the crawler is to provide the ability to output a snapshot of all the content in your server to a XML file out on the file system.  This is a very good thing, because it should make integrating with external, third party, enterprise search applications much easier.  I have a little bit of personal experience with this, integrating Content Server with Endeca’s search platform, and only wish this component was out a year earlier.

Posted in Content Management, OpenWorld, Oracle | Leave a comment

OpenWorld – Monday

Very fun stuff so far here at OpenWorld.  Not too much to report from Sunday evening, basically the standard kick off stuff.  Monday though was the start of sessions and when we started seeing what the former Stellent folks had been working on.

Some of the highlights so far:

1. There is a new web-based Site Studio editor coming out in the next few months to replace the existing activex one.  Personally this was huge for me as the IE only aspect of the existing editor has always been a pain point with some of my clients who prefer macs.  In general the editor was pretty slick.  It appears as a pop-up when you click the in-context edit button and has a tabbed interface allowing you to contribute content on one tab and update metadata on the other.  They’ve also added some additional validation which can be configured to require specific standards compliance when contributing.

 2. The WCMA project appears to now be called Open WCM and it looks to be very cool.  Not much of a demo this time, but more of an architectural discussion.  The concept is to allow web content management delivery on any platform, using any language..hence the open part.  In addition they also would like to take the content server out of the delivery environment, moving to more of a hybrid publishing model, which can be consumed by your web app.

 3. During the digital asset management session, we got a nice demo of what you can do with the Folios component that was released just last week.  Folios is very, very cool new feature which allows you to relate several content items together and have them become an additional new item in the system.  You’re new folio then can be associated with metadata, sent through workflow for approvals or, depending on the formats, published as a compound document.

Also very cool are some of ideas on how they plan on integrating Content Server with the other application in the Fusion Middleware stack.  There seems to be a big focus on delivering personalized, targeted content using Seibel profiles and Oracle’s Real Time decisioning application(part of the BI suite).  All of that is just conjecture at this point, but still very cool to hear they were working on it.

Posted in Content Management, OpenWorld, Site Studio, Stellent | Leave a comment

Script.aculo.us / Prototype Update

Script.aculo.us has a released a new version of it’s popular Javascript framework.  They are now on version 1.8, but most importantly they bundle a new Prototype version, 1.6.

From what I read in the change log, Script.aculo.us has added some pretty cool features, but what I am most excited about is that Prototype 1.6 includes a JSON parser which was not available in the previous version.

I’ve updated the Oracle / Stellent Content Server script.aculo.us component available on this site.

Feel free to download it here:

Script.aculo.us Component for Oracle / Stellent Content Server

Posted in Javascript, Oracle, Stellent | Leave a comment

Heading to OpenWorld

This weekend I am heading back to San Francisco to attend Oracle’s annual OpenWorld conference.  I’m pretty excited because this will be my first interaction with some of the Stellent folks since their last conference, Cresendo, in February.  Back in February Stellent was acquired, but still not wrapped in to the Oracle fold.  There were quite a few questions about the direction of the product line as well as where it would fit in the Oracle stack.  Everything we heard then indicated things would be the same or better under Oracle, and so far we’ve seen nothing to contradict those statements, but this conference will be my first opportunity to see where Oracle is taking the product and what direction they see for the future.

Some of the big questions I hope to find out are:

1.  What happened to WCMA? It stood for Web Content Management for Applications(I think) and was supposed to be the next generation of Site Studio.  They demoed what they had so far at the kick off event at Cresendo and it looked insanely cool.  Supposably it would work with .NET, JSP, etc and most importantly provided true in-line editing.  Meaning no more heavy-duty, IE only, editors.  Since then I haven’t heard anything about it(though I haven’t really followed up on it either).  I hope to find they are still working on it and are closer to a release.

2.  How will Content Server and WebCenter fit together?  WebCenter is Oracle’s pretty cool new portal or portal framework.  It runs on their app server and has a ridiculous list of cool features: Blogs, Wikis, Messageboards, VOIP integration(what?, why?, how??), Messaging Integration, etc.  The current version uses Oracle’s old content management package, Content DB as it’s content repository, but it’s begging to be linked up with Stellent.  It’s pretty clear that coupling the two apps is the plan of the future, if not the present, but I would love to see some examples.

3. What is the future for Content Server?  This is kind of a cope-out catch all question, but you have to wonder what direction the product is headed now that Oracle has been sailing the ship for a few months.  Content Server was a pretty good product when they bought the company, so it’s sort of tough to just point out the weaknesses and say fix that.  There are a lot of areas you could see them exploring; Search,  Security, Social Networking all seem to be major priorities right now.  Will they be hitting them all or is there an immediate need?  Also there are a wide variety of uses for Content Server, from records management to document management to digital asset management to web content management.  Even though they all fall under content management, is there one area that happens to be a higher priority then another, perhaps due to profit or because is fills an existing need in the Oracle stack?

Those are some of the big questions I have heading out to San Francisco.  I feel pretty confident I’ll get answers to them and probably bring back a couple new ones.  It’s going to be a busy week, but starting Monday I hope to start posting a daily log of what I’m seeing while I’m out there.  It should be a great time though and I hope to meet some of you out there.

Posted in Content Management | Leave a comment

IDOC Developer Interface for Stellent / Oracle Content Server

I’ve been a little busy the past few weeks and that’s kept me from posting new stuff on the blog.  This past weekend though I traveled to California for a wedding, leaving me 10 or so hours of time in the air to work on a new Stellent / Oracle component I’ve been thinking about for a little while.

The component adds an admin-accessible interface for developing and executing IDOC Script.  Users can enter their script in to the very simple editor(just a textarea) and then execute it.  The resulting HTML is displayed in another area below the script editor.  Where I think it gets a little cooler though, is that it also outputs all local values created in the binder as well all resultset values in to windows-like box areas off to the side.  In addition you can also run the script as another user in the system to test out permissions and security. (NOTE: nice for development but probably bad for production so please be careful where you deploy this).

You essentially get a pretty clear view of what’s occurring with your script, but without restarting the server, saving a resource file or even refreshing a page.  The interface uses AJAX calls to execute the script and the parse the response.  The result is a responsive interface and what I think is a smooth experience…no jumping around to different windows or adding output variables to check values.

IDOC Developer Screen Shot

Screen shot of how a doc info script might look using the interface.

The app leverages the script.aculo.us/prototype javascript frameworks to handle the AJAX callbacks as well as the parsing and rendering of the data in the windows.  From an application architecture perspective, I basically added an admin only service called RUN_DEV_IDOC, which in turn calls a custom service handler class.  That class then creates and calls a new “stub” service to open up “clean” data binder and pager merger objects under the account of the requested user.  After that the IDOC script is executed, the results are returned and the data binder is parsed for local data and result sets.  All of that data is then wrapped in XML and dropped back in to the RUN_DEV_IDOC’s as a local data field.  The server then sends the response back to the page, where it’s parsed using javascript and used to create the output on the page.

My sort of grandiose idea on the plane was to create an editor with breakpoints, variable inspecting and watches.  I still may come back to that with a later updated version, but unfortunately the level of effort on that was a little more than two cross country trips.  Still this was a pretty fun app to work on and I personally look at it as unfinished, so check back in a few weeks and hopefully I’ll be able to add more to it.  Also if you have any ideas, I would love to hear them.

Feel free to download the component here:

IDOC Developer Interface

You will also need the script.aculo.us framework, which I’ve already wrapped in a component and can be downloaded here:

Script.aculo.us Component for Oracle/Stellent   

Posted in IDOC, Oracle, Stellent | 1 Comment

YUI Pop Up Preview Component

I’ve been meaning to put this component together for some time. Whenever I look for a document or even a revision of a document in Stellent, I usually use the (HTML) dynamic conversion link as sort of a preview button to see if I have what I’m looking for. The only problem is that the dynamic conversion link takes you to the output’s page requiring you to hit the browser’s back button to get back to the search results or content information pages. What I’ve been looking for is a little pop up window to appear over those pages letting me preview the dynamic conversion’s results.

This sample project utilizes the YUI library to create that pop up as well as to provide a “slide” effect seen when the pop up appears and disappears. I was hoping to use a variety of YUI features, but unfortunately this example turned out to be extremely simple. It uses a similar “Panel” object to the one used in the Security Overrides example, however as you’ll see from this project it does not make any Connection Manager based AJAX calls like that one does.

Continue reading

Posted in Dynamic Converter, IDOC, Javascript, Oracle, Stellent, YUI | 1 Comment

Security Overrides Component – Introduction

I believe that IDOC script gets a bad rap.  On more then one occasion I have witnessed eyes roll when we began explaining how the Stellent scripting language can be used during an implementation.  It’s a natural reaction as most developers would probably rather work in a more mainstream language then learning some new proprietary, sort of ”cold-fusion” looking one.  And while I’m sure there are quite a few implementations done with 100% IDOC-based customizations, my personal preference is to use Java/JSP as the primary languge, with use of IDOC for presentation and configuration scripting.  In this ancillary role I’ve grown quite an affinity for the IDOC and as I’ll demonstrate in the example component(Security Overrides), try to IDOC-enable my Java-based components and customizations.

The concept behind the example component, Security Overrides, is an IDOC enabled version of the Security Filter example, which is part of Stellent’s HowToComponents Bundle.  Stellent’s SecurityFilter component is an example of how to use the alterUserCredentials filter to change the rights of a user during a specific service request.  The primary example is the BlackHole check in example which grants everyone write access when checking in an item using the Black Hole service.

Creating security filters or overrides with the alterUserCredentials can be a tricky proposition.  Depending on your implementation, you’re basically altering the behavior of the content server with no real visible indication that it’s being done.  In addition the alterUserCredentials filter is called with every service call, so it’s a great place to cause a performance problem with inefficient code, or just by adding multiple security filter components.

So how does the Security Overrides component and more importantly IDOC help the situation?  The component creates a central, administrator controlled, interface for creating and managing overrides. What’s more, each service configured has an IDOC script prompt, which is used in the final decisioning of whether to apply the override or not.  For example if an administrator desired to only allow the “sysadmin” account access to the providers page, they would configure an override  that removed all permissions for the “GET_ALL_PROVIDERS” service.  In the IDOC prompt script would be added to evaluate the dUser variable, ensuring it was the “sysadmin” account.

The beautiful thing here is that because the component is processing IDOC for it’s final decsioning logic, the override becomes extremely simple to alter as well as include addtional actions down the road if desired.  And as you’ll see in the code, creating a component which can support IDOC scripting takes very little additional work.

In addition to integrating IDOC scripting in a Java-based component, the component also demonstrates:

  • Creating an installation filter, which creates a database table after start up
  • Working with the YUI library to create a model, pop-up form as well as creating and handling AJAX requests
  • The run-time creation and altering of environment variables
  • Customizing the Stellent / Oracle interface

As you might have guessed from the word “Introduction” in the title, I plan on making the review of this component a multi-part series, rather then one long post.  The component along with it’s source code will be available for download here.

I should also mention that Oracle has a fully supported component available for download which has some of the same features as this one.  It’s called the “Need to Know” component and if you are considering using my example in a production system, please take a look at their component first.

Security Overrides Component for Stellent / Oracle

Posted in IDOC, Java, Javascript, Oracle, Stellent | Leave a comment