Category: XML

The lingua franca of the Internet.

Finally got my Cocoon Documentum Transformer fully functional this evening thanks to the good folks at the Cocoon Users Mailing List. My problem was that the Documentum xDQL query was returning a full XML document. When I tried to parse that, the extra startDocument and endDocument calls were causing the runtime exception (archived mailing list thread).

Now that I have my transformer working, I can configure any number of XML docs I want, each with any number of xDQL queries against any docbase my server can see. This is real handy because there are times when you want to run the same query against multiple docbases. I’ve currently got the pipeline configured to style the query results using a generic xDQL-to-HTML stylesheet, but now that I’ve got everything working, the sky is the limit. Here are some ideas…

Documentum admin portal

Go to one page and see very quickly what the status is of key metrics across all Documentum servers, docbases, and environments (Dev, QA, Prod). This is easily done using Cocoon’s aggregation of my styled query results. If I really wanted to get fancy I could use the Cocoon portal framework and create an honest-to-goodness portal with multiple users and profiles (different users might want to monitor different things on different docbases) as well as security.

But, at some point, this thing starts to approach the out-of-the-box Documentum Administrator client and I’m definitely not up for reinventing that wheel. So, this one is a lower priority.

Documentum RSS alerts

Create one or more RSS feeds that will syndicate alerts for things in the environment that need attention. To do this, I’ll add another transformation in my pipeline that will apply business logic to the query results and format “alerts” as XML. I will then add an alert-XML-to-RSS stylesheet. (I’m separating the two because I might want to format alerts in HTML). Once that is in place, I can use a news aggregator like Amphetadesk or NewsMonster to poll my Documentum RSS alerts periodically for things that need attention.

This one is nice because it does not force the admins to go to a web page–they just leave their aggregator running on their desktop.

Return Documentum Query Results in a Spreadsheet

Sometimes you’d like to be able to query multiple docbases and have the results in a spreadsheet so you can then do some analysis or whatever. Today you have to query each docbase and then cut-and-paste the results. With my transformer in place, I ought to be able to spit my query results into an Excel spreadsheet, PDF, SVG, whatever.

Netflix and Cocoon steal time from blog

Two things are stealing time away from the time budget previously allocated to blogging:

1. Netflix. Having a constant supply of movies on-hand that have been on my to-be-watched list for some time is awesome, and I love that I’m getting caught up. But, the blog has suffered.

2. Integrating Documentum with Cocoon. I got my DQL Transformer working some time ago but I ran into a problem transforming the DQL query result with my stylesheet. What sucks is that I had to upgrade my DFC and all of my WDK apps because of my current project, and after that, I discovered the problem. So now I’ve got to figure out if it was the upgrade or something else.

Until now I hadn’t been able to get logging to work from my custom transformer but this problem forced me to work through that. It turned out to be a simple thing that just wasn’t documented clearly. The solution was to use the logger attribute on my transformer declaration in sitemap.xmap like this:

<map:transformer name=”dqlquery” src=”com.navigatorsystems.cocoon.dctm.transformation.XdqlTransformer” logger=”sitemap.transformer.dqlquery”>

The category declaration in logkit.xconf matches up with that like this:

<category log-level=”DEBUG” name=”sitemap.transformer.dqlquery”>
 
<log-target id-ref=”dqlquery”/>
  <log-target id-ref=”error”/>
</category>

The DQL Transformer works like the SQL Transformer. It receives SAX events looking for a query element. When it finds it, it executes the query against Documentum as an XDQL query (ie, the DQL query results get returned as a well-formed XML document). The XML that gets returned gets sent to the next component in the pipeline (like another transformer or a serializer).

I am now back to running on Cocoon 2.1 instead of the version that came with the Cocoon book. And I’m running it on Tomcat 4.1.

XML databases move to the middle.

It’s true that you can use native XML databases to manage the growing number of business documents created by the new generation of XML-savvy end-user applications. It’s handy, for example, to search an insurance database for incident reports that match some structured pattern of in-line metadata. But hybrid SQL/XML databases can do that too, and they can also join the structured XML content with relational columns — a powerful combination. So XML databases are migrating into a niche that SQL/XML can’t and won’t occupy. They’re becoming the high-performance pumps that push XML traffic around on the emerging services web. [InfoWorld.com]

This short piece is a companion to Sean McCown’s excellent cover story which surveys the XML features of leading relational databases: Oracle, DB2, SQL Server, Sybase. [Jon’s Radio]

Cocoon book

Still working through the Cocoon text. The book covers 2.0. I was having trouble getting some of the PDF examples and sub-map examples to work right so I went ahead and installed 2.0 instead of trying to get their examples to work on my 2.1 install. Once I’m through I’d like to circle back, read the 2.1 release notes and figure out why their 2.0 examples were broken.

Tonight I got MySQL installed, loaded with some test data, and configured for access by Cocoon. It was extremely straightforward. I want to code up a little Cocoon app for managing the MySQL test data. Then, I’m going to hook in my Xindice install and play with that through Cocoon. Next, it’ll be writing a simple generator and serializer for Documentum.

Cocoon texts

I opened up Java & XML recently because it had some references to Cocoon. The Cocoon examples are pre 2.0, so instead I worked through some of the XML-RPC chapters which were good. I’d recommend working through the whole book to anyone who’s just getting started using Java and XML together.

Before I made it to my intended destination (the SOAP and web services chapters), I decided to pick up Cocoon: Building XML Applications. I had previously seen this one but passed up. So far, it is pretty good–I’m glad I came back around. They seem to do a better job explaining the architecture than some of the articles I’ve read recently. I like the examples I’ve worked through so far. The authors spend a little too much time on the evolution of the net and web applications–I wish they would have devoted that space to some of the more advanced features. It definitely gets me excited about using Cocoon on some real projects. This is a good book for anyone starting out with XML applications with Cocoon.

I’m noticing there are a few other Cocoon texts out there but I haven’t taken a look at them yet. They are: