
As I started developing the core of the "platform" I realized that I had undertaken a huge task, a task I was not sure I could finish in any short amount of time. This caused me some angst but I figured that I would just have to move on, doing my best to develop my way out of an impossible situation. Not a fun position to be in.
Then, sometime around the end of December, a buddy of mine pointed me in the direction of a product called
Presto, developed by the company
JackBe. I thought that I had stumbled into my own brain on the web!
Keep in mind that the concept I was working on was that the platform would map gadgets together in such a way that we could dynamically generate them with ease, rapidly prototyping processes to see how they worked. In effect, the gadgets would be web services and the thing the platform would create would be a
mashup.
As I said, I had envisioned something similar to
PopFly, the ability to visually create
mashups and then do something meaningful with them in our efforts to prototype processes. Presto is this and so much more.
First and foremost, Presto has a beautiful visual
mashup maker called Wires. In Wires, you drag services from a palette onto your canvas and connect them. You can also drag in actions, blocks that allow you to do something with the results of other services. So, in the basic example I worked with, you have two
RSS feeds. You can take the data from each feed and "merge" them (where merge is an action block) so that you effectively have one
RSS feed from two. Then, you can add a filter (another action) which can take a dynamic input. In this way, you can create very complex
mashups from some very basic building blocks.
If the complexity of Wires is not enough for you, however, they have a markup language for creating
mashups called
EMML. What you do in Wires is distilled down to
EMML, but Wires doesn't offer the full capabilities of
EMML (which is not to say that Wires is not fully featured, there are just some rather tricky things you can do with
EMML that you can't do with Wires as they don't have a visual representation).
What's even cooler, and something that spoke to a need we had, is that each
mashup is published as a service itself. So, you can include
mashups in other
mashups! The modularity is great.
But, you might be asking, how do you get the services in so that you can use them from the palette?
Well, Presto has a "Service Explorer" which allows you to import services from wherever they may be and "publish" them in the Presto server. However, there's a little more to it than that. Presto comes complete with a user authentication system that can be standalone or hook into
LDAP or AD. When I import a service, I can assign rights to it, and only those in the appropriate groups can even see the service, or any
mashup in which the service exists. You can also assign rights to
mashups themselves.
So, that gave us the mashing capability that we've been looking for, but the goodies in this bag didn't end there!
What we have up to this point is a unique view of the data, but no visualization of the data. Enter the
mashlet!
A
mashlet is a view of the
mashup in a portable and embeddable package. It is created in JavaScript. Once you've created a
mashup, you can attach a
mashlet to it so that others can see what the
mashup provides. There are 5
prebuilt mashlet types:
RSS; grid; chart; Yahoo Map; and XML. If your data fits into any of these predefined views, creating a
mashlet is as simple as selecting the
mashup or service, selecting the view, then publishing it. If you need a more complex view of your data you can create a mashlet by hand. The process for creating a mashlet by hand is rather well thought out and not all that hard to grasp.
Once a
mashlet is published you can do one of several things with it.
The
mashlets are served up from the Presto server in much the same way that any JavaScript object is. Right out of the gate, you can view a
mashlet standalone, if you so choose. However, the real fun comes when you realize that you can embed
mashlets into any HTML page you wish by simply including a script tag. You can also embed them in a
MediaWiki,
NetVibes or as a
GoogleGadget. You can't ask for more flexibility. From what I understand, there are more embeddable objects coming, including things such as
JSR-168
portlets.
So, from our perspective, Presto offers us 3 incredible capabilities: the ability to capture services from across the web; the ability to create
mashups in an easy and visual manner; and the capability to add a face to the services and
mashups we create, then embed that face wherever we need.
We've committed to Presto as the core of our platform and it puts us months, if not years, ahead of where we were.