Archive for the ‘Stellent’ Category

jQuery and UCM – Client Side Ajax UCM Interaction

June 11, 2010

The web is evolving, and users are wanting better interaction with their apps within the web browser.  This means faster site loads and action feedback to the user and not a browser loading a page.

Bex recently posted about his jQuery plugin to UCM to make service calls, and I thought I’d share something that I whipped up a few months back that has been an internal project of mine.  I think it’s about time it saw the light of day and help give more options to the web developers of the world.

My prototype is a javascript service wrapper javascript object, called fb.js, creates several util functions to help aid the execution of service calls with a max of 1 line of IdocScript on your site.

The first thing to do is to set the url for the ajax call.  The preferred method is to override the variable in fb.js that holds all of this.  Do this by defining this line in your javascript file.

fb.vars.cgiRoot = "<$HttpCgiRoot$>";

Now we can build out our function.  Each function takes 2 parameters objects, a callbacks object and a parameters object.  The callbacks object has the hooks into the 5 events jQuery ajax method gives you.  These are, beforeSend, success, failure, complete, and error.  By defining functions in the callback object, you can hook into any event and change you page very easily.

For example:

var callbacks = new Object();
callsbacks.beforeSendFunction = function(){alert("about to ping server")};
callbacks.successFunction = function(responseText){
alert(responseText.LocalData.StatusMessage);
};

The second object is the parameters object.  This one is as easy as passing in parameters as you would for service calls.  For example :

var parameters = new Object();
parameters.IdcService = "MY_CUSTOM_SERVICE";
parameters.MyCustomParameter = "VariableValueHere";
parameters.IsJson = "1";

Now we can execute the service.

fb.util.executeService(callsbacks, parameters);

Now the real power comes when you want to start interpreting result sets.  you can use a method I created to get back a 2D array object that contains the row and then the item.  An example of this would be.

var callbacks = new Object();
callbacks.successFunction = function(responseText){
var contentItem = fb.util.returnResultSetObject(responseText, "DOC_INFO");
alert(contentItem[0]["dDocTitle"]);
alert(contentItem[0]["xComments"]);
};
var parameters = new Object();
parameters.dDocName = "ID_10000";
fb.util.getDocInfoByName(callbacks, parameters);

This can also be applied to search results to loop and create your table.

var callbacks = new Object();
callbacks = fb.defaultCallbacks(callbacks);
callbacks.successFunction() = function(responseText){
var searchObj = fb.util.returnResultSetObject(responseText, "SearchResults");
for (var i = 0; i < searchObj.length; i++){
var htmlString = "tr td" + searchObj[i]['dDocName'] + "/td td" + searchObj[i]['dDocTitle'] + "/td td" + searchObj[i]['dDocAuthor'] + "/td /tr";
$("#resultsTable > tbody:last").append(htmlString);
}
};
var parameters = new Object();
parameters.pageCount = "4";
parameters.resultCount = "50";
parameters.QueryText = "Press Release";
parameters = fb.defaultParameters(parameters);
fb.util.getSearchResults(callbacks, parameters);

Now, you may be saying at this point that this is a lot to define to execute the method.  That is why I have started some functions in the main js file called “fb.defaultParameters(parameters)” and “fb.defaultCallbacks(callbacks)”.  By passing in your objects to these methods before you run your service, it will fill in the blanks, so to speak, with default parameters needed to execute the function.

Because I have defined the GET_SEARCH_RESULTS service call within my default parameters, I know there are certain required parameters that need to passed before I execute the service.  These are, QueryText, startRow, endRow, resultCount and others.  I also decided that, I don’t really want to deal with start and end row, so I decided that when I pass in the pageNumber parameter, I calculate the start and end row based off of either the default resultCount parameter set in fb.vars or the one passed into the function.  This can be seen in the above method where I create the table rows.

I currently have 3 predefined for you to use with the ability to add execute any service you want.


fb.util.pingServer(callbacks);

fb.util.getSearchResults(callbacks, parameters);

fb.util.docInfoByName(callbacks, parameters);

with the master execute service function being


fb.util.executeService(callbacks, parameters);

What I have done is allow you to hook into as many events that you want with the ajax functions, but also incorporate a “defaultFunctions” and “defaultParameters” functions that will assume and fill in parameters that may have been missed or not necessary to keep defining.

For your viewing pleasure, I have set up a prototype site that is Mobile device friendly using 100% javascript hosted on a 10gR3 content server.  Keep in mind that this has not be polished, but a POC of what you can do with the proper execute service javascript wrapper calling the shots.

Please visit http://www.fishbowlsolutions.com/mobile for the example.

How To: Adding an external database AJAX lookup to a UCM checkin form

May 28, 2010

A topic that comes up quite frequently on the OTN and intradoc_users forums as well as in discussions with some of our customers is “How do I add custom functionality to the checkin page?”  This usually revolves around an integration with an external database  to lookup values for metadata in order to keep the systems in sync or relate the items in some way.  Since I’ve done similar customizations on several occasions I figured why not pull some of that code together for a little How To article.

Some of the UCM development concepts that will be touched on in this post:

  • Custom Components
  • Custom Services
  • Database Providers
  • Custom Query Resources
  • Custom Java Service Handlers
  • MergeInclude
  • Resource Includes

By the end of this post you should have a working lookup to an external database on your checkin page.

(more…)

The Changing Face of Enterprise Content Management

May 17, 2010

Content management systems are increasingly becoming back end “black box” content stores. This trend towards commoditization puts a decreasing importance on the system and an increasing importance on the ways in which the system capabilities are surfaced. There are several trends that I have observed and continue to see manifest though customer interactions, blog chatter and market awareness.

I am seeing a resurgence in portal fronted web applications. The difference between these and the all-or-nothing portals that were popular 5-10 years ago is that these that leverage rich ECM capabilities on the back end to provide versioning, document libraries, digital asset management, conversion, transcoding, workflow and other “rich” ECM features.

I am seeing WCM systems that are splitting into two camps -
1. Rich WCM that is fully integrated with and takes advantage of sophisticated ECM capabilities
2. Light-Weight WCM that is more like free public blogging software that is quick, cheap and easy but lacking sophistication of top-end systems.

I am seeing “in application” ECM capabilities surface in back-office and process applications like PeopleSoft, JD Edwards and Siebel. It is noted that EMC/Documentum’s recent announcement about their change of direction alludes powerfully toward a deeper relationship with SAP.

I am also seeing something of a retrenchment in the pure-play content management space. Basic capabilities are being re-discovered, often to the exclusion of other, more advanced features. This seems to be due, in part, to three factors:

  1. The SharePoint effect: basic content management catching on with the average worker rather than just the content management professional.
  2. The rise of niche web 2.0 capabilities in the office setting that do one thing well: for example Yammer does micro-blogging in the enterprise well but is disconnected from other information management strategies
  3. The continued consolidation of software and features from the big enterprise vendors: Oracle boasts massive storage capacity and ingestion speeds when their ECM system is combined with RAC database clusters, Exadata machines, SUN servers etc.

(more…)

Webinar: The Keys to Enterprise Information Management Success and Savings

March 15, 2010

Title: Enterprise Information Management Bootcamp: The Keys to Success and Savings

Time: 12-1:30 p.m. CT

Date: Thursday, April 1, 2010

Register: https://www2.gotomeeting.com/register/573604027

Industry trends and experts are all pointing to Enterprise Information Management as the key consideration for evolving organizations.

 

 

During this webinar you will:

  • Get ripped as we address key information management considerations for 2010
  • Build organizational endurance as we outline how to achieve web content management (WCM) success
  • Become a leader as you bring back a firm understanding of how to automate your contract management process to save money

Find more information on our upcoming events HERE.

CMSWire’s Take on “Oracle + Sun: What it Means for Content Management”

February 23, 2010

CMSWire’s Irina Guseva recently published an article on what the Oracle + Sun deals means for the Content Management industry.

The article reviewed the predicted effects on Middleware and Content Management, Portal Technologies, Collaboration and Office Productivity, Java, the Database market, and Cloud Computing. You can find the original article at: http://www.cmswire.com/cms/enterprise-cms/oracle-sun-what-it-means-for-content-management-006561.php

Their conclusion on the combined effects indicates stability and comfort, “Some predictable changes aside, and with widespread M&As and industry consolidation, from what we see it’s nothing more than business as usual.”

We think business as usual is a great thing. Not only is the platform already an industry leading solution, with the proven path Oracle has  been on it will continue to be an industry-leading platform.

Combine the fact that the platform stays stable with the huge advantage of owning JAVA, the portal, integration and hardware appliance expertise that SUN brings and you have the makings of a 100% complete system that is ready and able to scale to global enterprise levels.

Specific to the Middleware and Content Management technologies Irina states, “And why it’s still early, we think that Sun’s integration may bolster Oracle’s position in the content management market…”

We agree.

If you have already invested in this platform, this is good news for you.  Your ECM system will continue to evolve  to include different types of platform technologies allowing you to leverage the enterprise architecture investment’s you have already made, while providing money and time saving infrastructure,  rationalization and consolidation opportunities.

If you’re on the fence about enterprise content management and collaboration systems, this is good news for you too.  The industry as a whole will continue to evolve increasing the separation between the industry leaders and those lagging behind.  Consolidation means more power will be available, better and tighter integrations with other systems (e.g. ERP, CRM, HCM) and a consistent way to re-use rather than re-create or re-discover information.  All of this means time and cost savings for you.

Fishbowl will continue to help those who are thinking about or have invested in Oracle UCM to extend that investment and solve their business problems. We are not in the business of just selling technology or a bag of parts. We sell solutions; whether around migrations, internal or external websites, integrations, process automation and much more, we have the expertise to deliver faster and for less.