Cool and Refreshing RIDC

Refreshing new RIDCIt’s been out for a little over a year, but I wanted to throw a quick post out about RIDC as I’ve recently started using it and I’m really very, very pleased with my experiences.  RIDC stands for Remote IntraDoc Client and it’s an API used in remote Java applications to connect to UCM.  It’s effectively a replacement for CIS(Content Integration Suite) and in a strange bit of computer irony it’s better because it smaller and does a lot less.

Where’s the Document Object?

The problem with CIS was that as a design it was, forgive me, a little weird.  It’s not that it didn’t work, it actually worked pretty well in most situations, but there were a couple of oddities.

  • It  has what you might call and easy-to-use command pattern that hid underyling service calls from the application.  So for instance you would call if you wanted to make a DOC_INFO service call, you’d call the getDocumentInformationAPI method.  Not the end of the world, but also not really an intuative API for UCM.  I think the reason was that this pattern fit much better in Java web app and so it was designed a little more for that rather than as just a standard Java API.
  • Because you’re working with strict objects, it makes it sort of tough to call new services, like Site Studio ones, directly.  There is a work around, which involves using what’s called the administrative API(sort of the base API for the whole thing).  Typically I’ve  just used this for all my calls,(and incidentally it would then look a lot like RIDC code), but looking at all of CIS, it just seems like you needed a lot of different classes to do really the same thing, make service calls.
  • If you crack open the CIS jar, you’ll find that there’s a slightly loco version of Spring in there(based on 1.5 I think) along with a modified classloader.  I’ve only run in to issues in one location(you know who you are), but with all that extra code in there, I’ve always been hesitant to use it with other Spring versions for fear of class conflicts.
  • Inside of UCM there’s already a Java API called the jspserver.jar.  It’s about 5-6 classes total, allows you to call any service, uses objects that look and acts very much like normal Content Server objects.  I’ve based all my remote API’s on it(.NET and ActionScript)..it was such a simple and elegant design, I always wondered why the CIS people never talked to the jspserver people.  Well that’s pretty much what RIDC is.

And here’s some code.

Since code samples always make for exciting reading, lets jump right in with some examples.

Here’s the example included in the CIS developer manual for how to make a DOC_INFO call.

//get the active API
SCSActiveAPI activeAPI = m_cisApplication.getUCPMAPI().getActiveAPI();

//create a document object
ISCSDocumentID documentID = (ISCSDocumentID) m_cisApplication.getUCPMAPI().createObject(ISCSDocumentID.class);

//set the dID
documentID.setDocumentID("10");

//make the call, get the doc response
ISCSDocumentInformationResponse docResponse = activeAPI.getDocumentInformationAPI ().getDocumentInformationByID(m_context, documentID);

//and there's the content
ISCSContent content = docResponse.getDocNode();

What do you think?  Granted I copied the CIS example out of the doc and it’s not a prefect one-to-one comparison to the RDIC one I’m about to show you(designed for a web environment where the connection is already established), but doesn’t that seem like a lot of casting and nested objects?  I know I’m complaining about code looking too complicated, but seriously try to explain that to someone.  It really just doesn’t even look like UCM.

Take a look at the same call with RIDC…..way simpler, and I think if you understand UCM at all, it follows a rather intuitive flow. If you’ve done any Java component development, you’re learning curve should be near nil.

//create the client manager
IdcClientManager idcClientManager = new IdcClientManager();

//and then create a client to the content server
IntradocClient client = (IntradocClient)idcClientManager.createClient("idc://localhost:4444");

//create a binder object
DataBinder binder = client.createBinder();

//add our service values
binder.putLocal("IdcService","DOC_INFO");
binder.putLocal("dID","10");

//and make the call...too easy.
ServiceResponse response = client.sendRequest(new IdcContext("sysadmin"), binder);

CIS vs RIDCBinders, putLocal methods and clients…everything you’d expect in a remote API.  You can call any service; custom ones and new ones added via components like Site Studio and other Oracle add-ons are all there.  I haven’t opened up RDIC yet, but check out how much smaller the new API is vs it’s older sibling.

I’m not going to rush out and re-factor all of my CIS-based applications, I can solidly say I’ve moved on for future projects.  I have a couple of portal examples forthcoming and hope to have some RIDC in there, so check back soon.

Posted in Java, Oracle | 2 Comments

Manifesto on Content Management in Portals and Applications

What is the best way to integrate a content management system with a portal, or for that matter what if you want to “content-enable” a separate application?  There are a number of different approaches and depending on the portal, the application or the content management system any of them might be correct for the situation.  I find however that there are a number of fundamental rules that should be followed when evaluating an approach.

Who Are You Working For?

Before we talk about the details, we need to understand why we are doing what we’re doing.  For me that starts out with defining who we’re doing what for.  So when implementing a web content managment system, even one without an external integration requirement, who is the primary customer?  If you’re thinking the end users or consumers of the site, you’re wrong.  End users are of course important, but as an implementor the primary customer is actually the content contributors.  The often overlook contributor is the first person that should be considered with every requirement or approach.  The reason of course is that a content management implementation is not about implementing a web site, it’s about implementing a tool that allows content contributors to implement and manage a web site.

So what are we looking for in a good contributor-oriented approach?

  1. The process should be as simple and straightforward as possible.  Obviously that’s a subjective statement; one person’s simple could also be Lotus Notes.  Contributors vary in skill level and functionality differs with requirements; what we’re striving for though is not necessarily a process that is so simple a child could do it, but one which allows contributors to work as easily and efficiently as possible.
  2. Contributors should not need outside assistance or coordination with other groups to contribute content and post it to the site(portal/ external application).  This is a huge no no.  If the contributors need to call developers to move content or have it appear on the site, there’s a huge obstacle to adoption in the way.  Unfortunately this is often one of the first compromises that often happen when integrating with an external application.
  3. The basic features of web contribution should be available; images, hyperlinks and basic formatting(bold, underline, italic, bullets, etc) are going to be expected. If have the discussion forums out there support indenting..you’re probably going to need that feature too.
  4. Contributors should feel confident that they cannot break their site.  Ideally this means they should not have access to tools or formatting which can break the look and feel of the site.  Workflows should be used to provide an approval process.  We’re looking to empower contributors and ironically nothing breeds creativity like boundaries.  If they feel like they can do no harm, they are more likely to take advantage of the tool.

If you look through that list what you’ll find are some pretty basic requirements for any web content management system.  Every CMS from the Drupal to UCM to Ektron has those basic features and then some, but what if we surface that content through a portal or another application?  How many features will contributors loose right off the bat?

Checklist?  Checkmate…

To sum up what we’re trying to do, the overall the goal is to encourage content contribution by empowering contributors. That’s a goal in every CMS project, but when an external portal/application is included we also need to provide the fundamental contribution features of a CMS in that remote portal or application.

That doesn’t mean just editing text in the portal either.  Contribution is not just about a bunch of words, it’s also about images and tying all that information together with links.  Contributors do not care if it’s a portal, a content management system, a custom site or a magic flashy box.  There are certain fundamental features that are expected and there will be dissatisfaction and lack of adoption if they are not there.  It’s not the contributors faults either…their customers(the end users) have come to expect images and links in what they read.  If it’s boring, hard-to-follow content, why bother reading it?  And if no one is reading it, why keep contributing it?  And then of course what good was that expensive content management project, if no one is going to contribute?

How do we know if we have a good strategy though?  There are a couple of questions I’ve put together which I think help assess a strategy and at the very least identify it’s strengths and weaknesses.

1.  Describe the process for adding and/or editing a page in the integrated environment.  Can the contributor do it on their own(ignoring any workflow)?  Do they need access more than one system to post a single page of content?  If they can’t(do it on their own) or they have to(access more than one system), you might want to head back to the drawing table.  Those are enthusiasm killers for contributors.

2.  How will images be contributed and delivered? Images can be a major pain.  If you’re contributing them in a WYSIWYG editor, typically they head to the CMS or an external repository.  References to images in content need to be preserved, re-written or proxied.  What path will you take and and why?

3.  How will links between pages work? This is usually the question that sends us back to the drawing board.  If you are surfacing content from a CMS on to a portal, how do you link to another page on the portal while using the CMS’s editor?  Relative links are sometimes an options, as are tokens.  It’s important to have a solid approach though as when you are referencing items in two different systems things can get very confusing quickly leaving the site with many broken links.

Even though we’re dealing with some fundamental features, believe it or not once you introduce that separate application very few implementations would get an A+ on all three areas.  At work we’ve taken over some less than successful projects and the #1 problem is not that the site or portal don’t deliver content well, it’s that no one can effectively contribute.  It’s only three general questions to drive a discussion, but I’ve found them to be a very effective check list for separating good ideas from bad ones.

Manifesto or Just Manifest?

The goal of this post is to set up and explain my mindset and strategy for several integration examples on how to approach a portal integration with a CMS(ok they are all UCM/WebCenter examples).  In looking at some of the planned posts, it was clear that they might not makes all that much sense without setting the stage first.

Posted in Content Management | Tagged | Leave a comment

New blogs to check out

IronworksIronworks, the company I work for, has set up a couple of blogs for our technical and design teams.  I’ve added some links my blogroll, but also wanted to put a little post out there about them.

They’ve been up for a couple of weeks and I think the content so far has been excellent.  I know all of the folks who are posting and they really are a very sharp group.  In addition to UCM, there should be some really good .NET and Sharepoint stuff posted.

Under the hood is the technical blog, lots of code and frameworks.  I *think* most of the UCM/Content Management stuff will be found here over all.  Some of you might know Aaron Romaine from OpenWorlds past.  He joined our team a few months ago and has dropped a couple UCM articles out there.

Under the Hood

Fit and Finish is the designers, information architects and front end developer blog.  Just looking at the most recent posts though, it looks like there also a good amount of technical information here too.

So give them a read.  I’ll be double posting some of my stuff over there in the coming days.

Posted in Content Management | Leave a comment

Cloudy days for UCM?

I heard a great idea at work a few weeks ago from my boss and it’s been on my TODO list for some time to try out.  The idea was to run UCM on an Amazon EC2 instance.  For those unfamiliar, EC2(also known as the Elastic Compute Cloud) allows users to run a virtualized instance of a wide variety of operation systems on Amazon’s cloud(also known as their enormous pile of servers scattered across the planet).  Seeing as EC2 essentially starts up and lets you run a virtual machine, I theorized that this little test wouldn’t be too tough.  A good experiment to get us back to blogging.  After all it’s just a couple of installs right?

Fedora the Explorer

When you start out creating a new blank instance, Amazon provides several templates to start with.  As you can see from the list though they all appear to be either Fedora or Windows(towards the bottom).Screen shot of the basic instance setup I’m not sure of your experiences, but as far as the elements of a UCM instance(Web server, UCM and the database) go, the database can be the trickiest of all of them.  And also for me to consider this a complete install, I really wanted to have Oracle Text Search running, which requires an 11G database.

I am pretty sure that a Windows VM would have worked for all of this, but it’s more expensive per hour and if I’m honest it felt a bit like cope out since it’s so much easier to work with.  I really wanted this to all run on a Linux box, so rather than take the easy road I decided to give the Fedora install a shot.

Unfortunately Amazon Fedora template my not have been the best choice to begin with.  I’m sure I would have gotten it at some point, but the workarounds combined with the oddities of Amazon’s template kept sending me down some rabbit holes.  It was a lovely Sunday afternoon, surely there’s a better Linux instance for this little proof of concept than Fedora?

So I cheated

It turns out that besides Windows or even Fedora, there is a much, much better option.  And after an hour or so of dealing with my Fedora issues I decided to use a very clever tool to research the best way to do this install.Google

Oracle, as I soon discovered, is already way ahead of me in setting up their database in the cloud.  There’s a whole bunch of documents about the subject, a FAQ page, a wiki and most importantly several machine images anyone with an EC2 account can use.

You’ll find the Oracle images on the community tab when you create a new instance in the AWS console.  There are a bunch, but if you search for Oracle, you’ll find what you’re looking for.

Oracle images

When you SSH in for the first time, a script runs that will takes you through the DB setup and configuration.  The script seemed a bit light, so I think the VM might really be just intended for demo purposes.  Anyone familiar with the near innumerable number of options in a DB install will find this a bit light.  For folks like myself though who’d rather get on with other things than ASM backup configurations…it’s just about perfect.

How much does a Gazillion processor licenses for Oracle cost?

For a very long time Oracle didn’t really allow customers to licence by virtual procssor.  Organizations who planned on running on virtual machines had to purchase a license for every processor on the host system(the exception being IBM PowerVM as you can isolate processors to an lpar).  That policy, at least towards some vendors like Amazon has changed

For the purposes of licensing Oracle programs in the Cloud environment, customers are required to count each virtual core as equivalent to a physical core. This policy applies to all programs available on a processor metric.

When I saw that right off the first thing I thought when I started down the road of running UCM on an Amazon VM was “Great! pay for one processor license and then run it on the cloud across thousands of servers.  Silly Oracle how could they not have seen that huge loop hole”.  Yeah…not so much.

The thing is that Amazon commoditizes it’s processor power into things called compute units.  Virtual processors are then made up of these compute units.

One EC2 Compute Unit provides the equivalent CPU capacity of a 1.0-1.2 GHz 2007 Opteron or 2007 Xeon processor

So even though you’re running on the cloud, you’re supososably isolated off to your own little share of the processing power.  Besides IO, what’s really the advantage then?  If the processors or the same(or worse really) than anything you’d bring on house, why bother?  Well all is not lost..there definitly are still some serious advantages from a licensing perspective

  1. According to the Oracle doc a virtual core is equivalent to a physical core.  Though my little sample VM had only one virtual core with one compute unit, there are a number of hosting packages where virtual cores house as much as 3.25 compute units.
  2. Have you tried to purchase a server with one processor lately?  They just aren’t available, even the single processor servers have 2-4 cores.  With Amazon you could run a cluster of four one processor servers and get exactly what you want.
  3. UCM is notoriously light and efficient; even more so now that verity is out of it.  Over and over again it’s continually made me look like a genius during load tests on hardware I wouldn’t run this blog on.  I think one of my next posts will be on where I think the real UCM sizing should be.  I just don’t see it needing a ton of processor power.  IO perhaps, which you should have a lot of, but not processor.

In addition to all of that, there should be a huge savings for you from the hosting perspective.  Frankly if you’re budgeting for UCM implementation and planning to run it on Amazon, hosting is effectively free.  To run the current instance I have out there right now, it will cost me $227.50 per year.  For the most expensive instance possible (64bit, 32gb of ram, 13 virtual cores), it would cost $6370 annually.  Bandwidth is even more comically cheap: $.15 per GB for the first 10 Terrabytes, after that it drops to $.11 per GB for the next 40 and so on.

Well can we see it?

I’m going to leave my virtual machine up for a bit.  If you email me I’ll give you the link to take a look…I’m not sure if it still counts as a developer license if I post the URL publicly.

So far there’s no content other than Site Studio; I think I’m going to set up a quick site and run some tests for that follow up post on scaling.  Check back and I’ll share the results.

Posted in Amazon, Content Management, Database, Oracle, cloud | 2 Comments

Now I have to use JDeveloper

I got a pretty big surprise this morning when I read about Oracle’s acquisition of Sun.  All I have to say is wow…double wow really.  I know Sun has Solaris and Glassfish and a bunch of other fun stuff, but really Sun=Java and Java is one of (if not the) most prevelant programming languages used through out the world.

Java

There was of course some excitement for Solaris, but really it’s pretty clear that Java was the buy:

Java is one of the computer industry’s best-known brands and most widely deployed technologies, and it is the most important software Oracle has ever acquired. Oracle Fusion Middleware, Oracle’s fastest growing business, is built on top of Sun’s Java language and software. Oracle can now ensure continued innovation and investment in Java technology for the benefit of customers and the Java community.

Oracle really isn’t just a database company any more.  They really haven’t been that for some time, but now they are a software company that also sells a database.  The fact is that they now own the language and ultimately the platform of which many of the best selling enterprise applications are built on.  That fact would actually be a little more interesting to think about if they had not already purchased  all of the best selling enterprise applications already.

Who’s Next

I really know nothing about who or what Oracle wants to acquire(in fact I don’t think I could know less), but how much sense does Red Hat make?  Red Hat is just about the gold standard in Linux distros(I don’t want to hear it Ubuntu fans, I’m talking servers), plus they get the last real application server out there that doesn’t have “sphere” in the name and they, like Sun, are major, major proponents of open source technologies.

It’s really crazy…Java.com will be an Oracle site….wow…double wow.

Posted in Java, Oracle | Leave a comment

Presenting at AIIM

Next week I (and one of my great clients Molly) will be doing a presentation at the AIIM Expo in Philadelphia, PA. 

Our session is called “5 Rules to Optimize Your Website for SEO, ROI, and New Site Creation” and is scheduled for 2:30, Tuesday March 31 in room 113A.  You’ll have to attend to find out what the five rules are, but from a high level we’ll be delving in to some of the concepts that can make a large scale enterprise web content management implementation be successful.

If you’re looking for a preview.  Molly and I did a webinar with Oracle for their “Thriving through Expansion” series a few weeks ago.  It’s available for download here.  The password is Oracle1(I hope I’m not giving away a secret with that).

I’ll be at AIIM both Tuesday and Wednesday, so if anyone would like to meet up, please shoot me an email.  I’ll also probably start twittering again(something that only seems to happen at conferences).

Hope to see some of you there.

Posted in AIIM, Oracle | Leave a comment

New New Look

Ok so the theme has changed again.  The old blue one was a bit depressing and the “new” one was buggy…welcome to the new new one.  Hope you like it.

Posted in Content Management | 3 Comments

Blog On

It’s been a really, really long time since I’ve posted anything and I feel pretty bad about it. I had a little dialog going a couple months ago from OpenWorld, but other than that I’ve not really posted anything of significance for some time. The problem was that I was pretty busy at work and felt bad about spending extra time on Oracle blog posts when I could have been doing actual Oracle work. So alas I’ve been a bit heads down most of the year, but now my workload has lightened a bit and I feel very good about a fresh year of blogging.

So what have you been working on?

The past couple months have been very fun technology-wise. I’ve actually recived a good amount of interest around the .NET API from a number of clients and even put together several Site Studio/ASP.NET demos. The integration of the two is a little tricky, but you can get the full editor functionality out on an ASP.NET form. This was all prior to the SS 10GR4 release as well, which from my initial tinkering provides quite a few new services around editing and preview(all of which are undocumented, so you have to look at the services file in the component for the list).

I’ve also been doing some work with ALUI…now known as WCI(Web Center Interaction).  ALUI is really my favorite of the Oracle portals(though that could be how often I’ve been running in to it as of late).  From what we’re hearing in Oracle circles UCM will provide content management to all of the WebCenter portals, but the feeling is that ALUI will provide the most functionality and seems to be the one all the demos are being run on.  Please note that I could be totally off on that assessment as Oracle tends to use the word “WebCenter” as a catchall phrase for every product, so it often gets confusing about what product you’re talking about.

It’s a bit of a hobbie but I’ve also been writing some ISAPI and Apache filters.  Most of my projects have been URL-rewriters, which is about the simplest thing you can do in a filter, but I really find them fun to code.  Unless you’re working with IIS7 writing a filter for either web server requires some C code, which is not a language I work in very often.  Really the only thing I do in C is code web security filters for UCM which is really all based on a sample project that takes all the trickery out of the task.  I’ll probably post a couple of my samples soon even though they’re not exactly content management related.  

Plans for ’09

Despite the bad economy and there’s actually a lot to be excited about when it comes to content management and more specifically Oracle.  I’m not sure how R&D budgets are being affected by the downturn, but it’s pretty clear Oracle had quite a few items in the pipe before things started slowing down.  All of that said, here are some of things I’m hoping to write about this year.

1. Oracle’s recent release of Site Studio 10g4 will have some major benefits and changes to how we approach and when we can do when implementing a WCM project.  I’ve been working with some of it’s new features now for the past week or so and I’m already really, really impressed with what it can do.

2. The hodgepodge of Portals and applications all labeled “WebCenter”.  Most of my portal related posts have to do with capabilities and theory, but nothing all that tangible.  I’ll hopefully be release some samples soon.

3. CMIS.  I haven’t heard a lot about it lately, but it’s still out out there.  Last I checked there hasn’t been much of an update though Alfresco did release a connector for their CMS.

4. More .NET….There’s a lot of interest in anything UCM and .NET.

Ok that’s it.  Thanks to everyone who sent me a “where are you” email, hopefully there won’t be any more extended blogging breaks.

Posted in Content Management | 1 Comment

OpenWorld Close Out

I’ve been back from San Francisco for a couple days now.  It was a great trip, which unfortunatly for the blog, became more and more work related throughout the visit.  The first couple of days focused near entirely on the new things Oracle was doing, and the last couple were mostly focused on partner-type stuff.  Fun for me, but boring for the blog.  Despite not writing for a couple of days, I did want to wrap up my trip and see if any of my questions are answered from my orginal pre-trip post a week ago.

The Questions

Open WCM – Word on the street is that it’s close, very close actually.  In fact I think they may just be waiting for a release date.  When I arrived actually I heard it was not being demoed, but then shortly before leaving I found out it actually was on the demo grounds…doh!

ALUI – When I headed out to OpenWorld what I was hearing was that ALUi would be bundled with UCM.  That unfortunatly is not true.  There is however now a WebCenter suite, which when purchased, has licnesing for ALUI as well as a stripped down version of UCM.  The interesting thing though is that with the WebCenter suite you actually get your choice of portal; WebCenter, ALUI, WebLogic…doesn’t matter the suite gives you licensing for all of them. 

Though I like and have been mostly interested in ALUI, if there was one BEA product that Oracle seemed most interested in, it would have to be Ensamble.  Ensamble came up in just about every session I attended, in addition to the off the cuff discussions in the demo grounds and end of day activities.

My questions around WebCenter were really answered by the ALUI question.  WebCenter is still a portal, however now all the BEA portals(as well as some of the other products) can be licensed as part of the WebCenter suite.  Oracle has plans for all the portals, but strategically it’s WebCenter that they want to lead with long term.

Billy’s book – Got a copy…Got two actually as well as catching thier presentation, which was the best of the conference in my opinion.  I’ll be giving it a read and a review in the next few weeks so check back for that.

Conclusions

I really had a great time out at OpenWorld.  I had a great chance to meet many of you who I normally only talk to online as well as learn a thing or two about what those clever UCM folks are planning for the next year.

Posted in Content Management, OpenWorld | 1 Comment