Tuesday, November 17th 2009 | Ismael Ghalimi
With this post, I am starting a new series of articles on Intalio|Cloud, focusing on practical use cases. As I am in the process of migrating my personal Salesforce.com instance to Intalio|CRM (powered by Intalio|Cloud), I am discovering lots of features that I did not know about. Along the way, I am literally falling in love with this platform. Today, we’ll take a closer look at Intalio|Mashup.
One of the most useful mashups I ever developed is my Free/Busy calendar, which is available at freebusy.ghalimi.name. I introduced this project on this previous article. Since its release a year and a half ago, this little gadget saved me countless hours trying to get meetings scheduled with people.
This mashup is pretty simple. All it does is looking up events from my Salesforce.com account, producing an ICAL feed from them, and subscribing a public Google calendar to this feed. Nevertheless, this simple mashup could not be developed directly from Salesforce.com, and required the writing of 150 lines of PHP code hosted on a separate server. It also created somewhat of a security breach by requiring the storage of my Salesforce.com login credentials on a PHP page served by a public web server. Clearly, there must be an easier way of building such a simple mashup.
Here comes Intalio|Mashup, which is a component of Intalio|Cloud, which itself powers the Intalio|CRM application. Intalio|Mashup gives you the ability to visually combine pre-built components into very powerful mashups that can be published as web pages, web services, ATOM/RSS feeds, etc. The mashup I now use to publish my Free/Busy calendar only took 8 components, as illustrated on the following screenshot.
This mashup tool is available form the Developer view of Intalio|Cloud, alongside the application builder. On the left hand side, an extensive collection of standard mashup components are available, while custom components can be developed graphically or by writing code. On the top part, the canvas contains the mashup scenario itself, while the bottom part displays results of the mashup, at any point throughout its execution, in either text, tree, or grid fashion (very useful for debugging purposes).
As can be seen on the screenshot above, I am using a development version, because the very first mashup component used on the canvas (on the left hand side) does not even have an icon (bug already filed). Nevertheless, this is one of the most interesting components of the tool: it’s called XRM Reader, and it gives you access to the entire XML/Object-oriented database middleware (called XRM) that powers Intalio|Cloud and can be deployed on top of any relational database (like MySQL or Oracle). Using this mashup component, I can lookup my appointments and feed them to a For-Each component that parses them and retrieves just the information I need for creating a valid ICAL feed (start time and end time essentially).
One of the really nice things about this mashup tool is that it does not limit the developer to the set of standard mashup components offered out of the box. Instead, it lets the user build custom components whenever they are missing. For example, I needed a way to produce a text file instead of an XML document, and while Intalio|Mashup offers a few components for the manipulation of strings, it was originally designed to process XML fragments. That being said, using the Custom Operation component, I quickly built what I needed, writing nine lines of code that will look very familiar to anyone who has ever written XPath or XSLT code:
While I initially spent a few hours getting familiar with the tool, building this mashup from scratch should not take more than 30 minutes. In comparison, the original mashup written in PHP and using Salesforce.com’s relatively complex WSDL web services took a few days to write and debug. Furthermore, Intalio|Mashup is a tool that a less-technical user like myself can really be productive with, while I had to rely on professional software engineers to build the Salesforce.com mashup.
This is what I love about Intalio|Cloud!
Entry filed under: Cloud Computing