Here's a good one for you...

We have a project that's mostly wrapped up called Origami. I think I've mentioned it before but here's a re-cap: Essentially you go to a web-page, search for data, fill out a form indicating what you want to do with the data, and then submit it to the processing cluster via XML RPC. You get notified when the job is done (RPC again) and goto the status page and launch IDV/McV via a dynamically created JNLP link and kablam! it's all set with the data already loaded via OPeNDAP and you're all ready to go.

What I want to do is take the functionality of the webpage and be able to do all of that right from McV. I'm not looking for something polished and production ready, quick and dirty is fine, just something that could be end-to-end right from the application ... find data - fire off job - wait - view data.

My first thought was to simply create a formula that popped up a window to allow you to do the search, etc..., and just sit there and wait until it got the notification message from the cluster saying the data was ready then create the field and return it. However, I believe that this by nature would be synchronous, there by locking the application until the cluster completed the job, which could be a while depending on how full the job queue is.

My second thought was to create a plugin with a chooser that spawned some thread that waited for the processing complete message. I'm not sure if it would be possible to plop the OPeNDAP URL for the processed data into the URL chooser once it's done though. Maybe it would be possible to simply popup a dialog with the list of currently available displays and ask which one to put it in.

The first idea would work but I really want asynchronous communication. I'm not sure if the second way would work.

What do you think?