Archive for the ‘Web 2.0’ 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.

Marvel and Oracle – Success and the unsung heroes

May 24, 2010

Iron Man 2

You have probably seen the Iron Man 2 trailers and maybe even the movie by now.

If you have been paying attention you may have seen the Larry Ellison cameo in the movie.  If you haven’t been paying attention then let me tell you that Oracle and Marvel have been doing a nicely successful business together for some time.  And they have not been shy about telling everyone about it.  Marvel has been a long time Oracle customer, successfully using many different parts of the Oracle technology stack including Oracle Enterprise Content Management.

But for all the ads, for all the bally-hoo around the movie(s), around the Larry-as-Stark comparisons, around the general coolness that goes with a company that creates super heroes, their IT success comes from a number of factors.

oracle and marvel ad

oracle and marvel ad

1) They have an executive management and core IT team who champion the IT projects, technology as well as the human processes that are necessary to effectively use the software and keep operations running at maximum efficiency.

2) They have the vision to take advantage of what the Oracle platform offers, especially as it pertains to interoperability of all the parts.

3) They rely on experts like Fishbowl Solutions to work with their teams to take their vision, combine it with the technology and produce success.  Here’s what they recently said about working with us: “Working with [the people] at Fishbowl is always a pleasure. [They] respond very quickly and the solutions are right on target with what we need.”

Want to know more?  Send us an email

Facebook Privacy Concerns Highlight Enterprise 2.0 Benefits

May 21, 2010

by alphadesigner via Flicker http://www.flickr.com/photos/alphadesigner/2430144441/sizes/o/

The recent flare-ups over Facebook’s privacy policies (or lack thereof) has made me think again about the issue of anonymity in the workplace where Enterprise 2.0 technology and collaboration is concerned.  I thought, read, and research deeply back more than a year ago saying workplace anonymity will kill you.   But the topic does not go away.  Just this month, Steve Radick wrote about the topic and concluded that there is no write and wrong answer.  I still disagree  – there is a right answer and the answer is still anonymity in your organization and on your E20 tools will kill you.

The corollary of this is that workplace privacy will kill you.  Let me be clear.  I am not suggesting that the HR department should air all dirty laundry or even some of it.  Rather I am talking about “privacy” or anonymity on social and collaborative E20 platforms, tools and technologies inside the boundaries of the organization.

(more…)

What do your customers say about you?

May 18, 2010

Customers have a voice.  They used to tell their friends and family members what they thought of you, your company, your product.

Now they tell the world.  Literally.

We want our customers to be just as excited about our solutions as these guys are about Chicken Sandwiches.  What makes this great is not the video production value (though the music is very well done). It is the passion which comes through the video.  These guys cared enough to create good music and a humorous music video to go along with it.

It is not gimmicky. It is just sincere. That is what makes it viral and watch worthy.

What do your customers say about you?  What are you doing to make them care enough to create a video about what you do?

You should care, now that everyone can hear them.

“Food” for thought.

Three Common Mistakes in Pursuit of Enterprise 2.0 and the Next Generation Workplace – Part 3

May 7, 2010

The pursuit of the Enterprise 2.0 utopia promised, described and promoted across the web has attracted the committed, the curious and the cautious. As we move further up the adoption curve the amount of success as well as failures increase. This is the second in a short, three part series about the common mistakes in Enterprise 2.0 strategies and how to avoid them.

The three common mistakes of E20 are:
1. Technology treated as an ends rather than a means.
2. IT as leading the business rather than supporting the business.
3. Information architecture that is walled and gated when there is no good reason for it to be that way.

Let’s continue to take these one by one.
Mistake 3. Information architecture that is walled and gated

Despite the previous caricature of “BSTech”, many specialized web and enterprise 2.0 systems are very good at what they do. Those that are suffer from another, more insidious problem. When BSTech is well made and highly utilized it produces lots of sequestered information. This yields a somewhat counter-intuitive result. The enterprise becomes a victim of its own success. More use and more adoption produces more, good information. But as that information becomes more desirable, its ability to 1) be found and 2) be accessed is decreased.

walled and gated garden

Content “walled gardens” are the individual information stores of separate systems. All organizations have them. Very few are required for legal, regulatory or intellectual property reasons. Most exist because nearly every system comes with one. CRM data is stored in the CRM system. Web analytics reports are stored in the analytics system. Accounts Payable information is stored in the AP system. Content is in the CMS. Let’s be honest for a moment. There would be no market for SOA systems, enterprise search and integration platforms if systems could natively share information with each other. So this is a reality of the world in which we live. But isn’t all the information the Organization’s information? Ask yourself this: if the system-imposed information sequestering was not there, might I be able to access information that is highly relevant to me that I am otherwise allowed to see ? It is because of a fractured enterprise information architecture that many employees are prevented from accessing highly relevant content. So they are left either re-inventing the information, jumping through efficiency-killing access request hoops, or lobbing requests for “something you think might help” to other people who have no stake or incentive in helping.

For all the vaunted benefits of a network effect where BSTechnology is concerned, the benefits only accrue only when there is actually a (…wait for it…) network. Lots of user adoption is not the ticket to success. It is a part of the success formula, but it is not complete by itself. Unfortunately, the focus for many in the enterprise 2.0 and next generation workplace discussions has been on user adoption. Make no mistake, adoption is necessary to success but it is not sufficient. So if network effects (which state that the value of the system grows the more it is used) require a network, then the concept of a host of walled gardens and sequestered information stores is fundamentally antithetical to enterprise 2.0 technology goals.

Facebook Social Network Slice - Billy Cripe via Facebook

Facebook Social Network Slice - Billy Cripe via Facebook

Social networks require that people use them, engage with others through them and share ideas with them. If all the ideas and users have to be created within the system in order to use it, they would suffer. So we see social tools for the business able to integrate with corporate Identity management (e.g. LDAP and Active Directory) systems. The ability to hyperlink to other content is among the most basic of expectations. The advantage of Portals would be substantially diminished if your portal server could only bring together pages, code and content that were created within that portal server. Enterprise content management systems that only allow specific, invited people to consume content that would otherwise be available for a much wider audience are fundamentally flawed. This is because those kinds of systems put artificial constraints and limits on the network – the ability to connect, access and consume information. They create many walled gardens of information. Admittedly they often do a great job of creating that content. It is rich, desirable, relevant and usable. But it is not available to the network. It is available only to those few who were originally invited into the walled garden. The organization suffers as a result.

So what is an organization to do?

Answer to Mistake 3. Except where required for legal, regulatory or intellectual property purposes, consolidate your information stores. Now before the IT readers have a heart attack, understand this: consolidation does not necessarily mean migration into a single physical system. Consolidation means bringing content and information into a single logical (not necessarily physical) information hub. The aforementioned SOA capabilities, enterprise search indexes, and integration APIs are wonderful tools (means – not ends!) with which to get a handle on organizational knowledge. This is a critical step in preventing enterprise 2.0 goals from becoming merely department 2.0 realities.

Once IT has a handle on the information out there, they can start to help bring it together in meaningful and predictive ways. What makes a meaningful way? Look at the solution to mistake 2: focusing on the business problem, the stake holder, and crafting a solution to that problem is what makes a solution meaningful. Composite applications are one way to do this. Compositing simply means bringing two or more different things together. Think of it this way: today we can bring together people in a social network. That social network, whether your Facebook profile or LinkedIn group or Fishbowl’s CollabPoint team is treated as a single entity. It is the team, the friends list, the group. That group is a composite of many different bits of information that combine to create something all together different and exciting and useful. Composite business applications are very similar.

Think of the customer care process. It is made up of many smaller processes, applications, tools and technology. Before they are customers they are prospects.

    They may have attended an event, or sent you an email or visited your store (responding to a media based ad like a blog or your website or a television commercial – 1).
    Some contact was made (phone, email, in person visit – 2).
    They were probably added to a marketing list (excel or database or list – 3).
    Eventually they responded to some invitation and received a visit from sales (sales tracking or CRM system – 4).
    They became a “lead”. Sales has its own processes of presentation, demonstration, test-drives, samples etc (scheduling system, calendar, technology demo system – 5).
    Eventually the lead becomes a deal and the contact becomes a customer (conversion of lead to customer or migration into a new Sales Automation system and Entry created in an Accounts Payable system – 6 and 7).

The technology used up to this point was probably a combination of 7 or more separate systems. And the “process” has not even advanced to the invoicing, collections, support, call center and ERP (for restocking etc.) systems.

Is it any wonder that the drive and call for process efficiency and system compositing is growing? Any compositing, any combination of any of these steps in the process yields efficiency and delivers additional revenue (or cuts cost). When portals are used to not just show side-by-side glimpses of still separate systems but rather to bring together information from separate systems into a single content object efficiency is gained. When ECM systems are used to house a single piece of content that can be delivered to several different systems without copying, speed and intelligence are boosted. When support and call center complaints are trend-mapped and delivered to product management problems can be spotted and handled early – before they get out of control. When the sales force is proactively given access to the marketing team’s campaign materials rather than only giving it to them if and when they ask, better messaging and coordination can take place. This provides mutual reinforcement of the overall message or campaign you are delivering and adds credibility through consistency. It means that each sales rep can tap into the collective power of the marketing team and all the trend and market research they’ve done rather than spending precious cycles trying to discover what the next big thing is going to be.

These are just examples of how the next generation workplace ought to function. I’m interested in your stories of where you have seen or are starting to see these kinds of incremental successes. Add your thoughts below.