A few weeks ago I wrote about my great experience with Flex Builder 3.0 and Documentum. I recently had a little fun so I thought I would share the experience. I wanted to throw a pie chart of some Documentum data on a portal and was able to get it done in under thirty minutes. Remember I don’t code much any more so the fact that I could do it at all was as remarkable thing.
(Warning: this post contains a shameless plug for stuff I work on.)
I looked at a few open source tools and reporting toolkits but since I recently acquired the professional edition of Flex Builder I thought I’d try it. I had originally only used the basic edition but charts are in the Data Visualization package only available in the Professional. (a $500 difference in case your curious)
I used the pie chart example off of the Adobe Component Explorer to start with – very simple matter to remove the stuff I didn’t need but here is the fun part. Just where do you get the data? This is not really a Flex tutorial, but you have to know a little to get the idea.
Many Flex components are data aware in that you can bind them to a structure and they are self updating. In some examples they use an ArrayCollection object to hold the data.
I dropped an mx:PieChart onto a panel and assigned my ArrayCollection to the “dataProvider” property of the chart. (I’m not going to cover everything here)
You’ll notice that I call a function from the initialize property of the parent panel. The “caseTotalService.send()” is a method from an mx:HTTPService element that I bound to the data provider service. I’ll explain the service itself below.
The XML returned by the service is a simple structure containing the results of a DQL statement.
The service will return the XML stream and the result event is handled by the caseLoad() function. This populates the ArrayCollection.
Up until this point – Documentum hasn’t played a part. (shameless plug to follow)
I used a product from Armedia called Ligero. It is a content delivery server for Documentum that caches content on request as opposed to using a push model. In addition to caching, the application server will parse and compile desired content on delivery and execute functions from our Ligero tag library. The product was written essentially as a replacement for a part of the capability of the old RightSite product that Documentum retired. (yes – it even supports DMW_EXEC invoking dmbasic!)
There are a surpising number of customers who are unable to upgrade to D6 because they have applications dependent on the functions once supported by RightSite and they don’t have the budget to rewrite the content or downstream applications. Ligero is a lower cost option to retire these aging installs, upgrade their repositories and not change the content, removing a huge barrier to upgrade.
So – what does this have to do with Flex – I’m glad you asked.
In technology there are always 50 ways to do things. I am inherently lazy and want the least amount of work. Ordinarily you would have to write and deploy a JSP to an app server or write and deploy a web service to accomplish this. I just created the following file in webtop.
If you are old like me, the basic tags will look familiar-(DMW_REPEAT, DMW_SUBST, etc) We used those names so that users would not have to alter their legacy content – the new syntax is JSP with taglibs. We can run a conversion on legacy content so it will conform to namespace rules and the like. This can be either at run time or we can batch convert it if necessary for performance. I could have returned the data in JSON just as easily.
Side note:You might notice in the DQL that we are referencing aspects. The more I use them, the more I like them, but that is for another post.
I did a build in Flexbuilder and took the release output and dragged it into WebTop. I then used the same Ligero instance to serve the SWF. Other than setting a few string values and the colors (which are bad I know) Flex did all of the work, including the nifty pop-up thing. Start to finish – 30 minutes.
You can use your method of choice for getting the data and deploying the components, but the basics of putting together widgets like this chart in Flex are really straight forward – and dare I say fun.
I hope you don’t mind the plug – but I really had a good time doing this little app and that doesn’t happen much. We like the model so well – we’re actually building the administration and configuration tool for Ligero with it.