48 Hours Later…

I told my advisor I’d have him a draft of a paper within 48 hours. I think that was pretty reasonable given that he decided we should submit only 96 hours before the deadline.

I just mailed him a solid first draft. It’s reasonably smooth, although I’m not completely happy with it. I haven’t gotten a good night’s sleep in a couple of days, but I think I can relax this evening and try to get caught up on my rest. I’m going to need to get back at it early tomorrow, so I’ll need my rest.

Still, I feel like I’ve done a pretty good couple of days’ work.

Deadline Looming

I missed my weekly meeting with my advisor last week because of meetings at work that ran late. I didn’t mind much, because I hadn’t made a lot of progress on the task he set me the previous week. He asked me to look into devising a protocol that service agents could use to negotiate among themselves to offer better deals to potential users.

After looking into possible agent communication protocols, it was obvious that the Contract Net Protocol and Iterated  Contract Net Protocol published by Foundation for Intelligent Physical Agents (FIPA) met the needs of the mechanics of the communication if not the content. All of the work I could find that related to contract negotiation among agents used one of these protocols as the basis for their negotiation. So I turned my attention to the content of the communications, but I wasn’t making much progress.

Missing the meeting worked out well; I had a flash of inspiration earlier this week. I can use the Contract Net protocols for the mechanics of the communication, and on top of that I can layer a means for agents to know what other agents are in their potential workflow with them, then adjust their initial offer up or down based on their affinity for each of their neighbors.

I explained my idea to my advisor during out meeting this week, which went very well. In fact, it went a little too well. He liked the idea enough that he thought we could put together a paper for a conference whose deadline is “at the end of the month.” That’s the good news. The bad news is that deadline isn’t really the end of the month. It’s actually October 24. As in Monday; as in four days from our meeting yesterday.

So I spent a fair bit of last night writing furiously, and I’ll do the same tonight. I let my advisor know that unless the deadline has been moved the paper is due Monday, but I’d have him something within 48 hours.

It’s going to be a long night.

Finally, Progress

It has been way too long since I’ve updated this. I will be more diligent about it.

I’ve been meeting with my advisor weekly for most of this semester so far. Each time, I’ve fleshed out more and more of the details of how I’d like my research topic to shape up. At this point, I think I’m close to having a complete architecture that I can start working toward implementing to prove my ideas will work.

So far, I’ve laid out several items. First, a high-level architecture describing the main components needed to construct an automated workflow composition capability. Along with that, I’ve laid out the sequence of steps that those components need to execute to correctly parse through a BPMN model and pick out services needed to execute that workflow.

I’ve also specified some basic definitions and equations to capture the formal definitions and relations needed to compose services into workflows. And as of this week, I’ve detailed the major decision points necessary to compose services. This includes mapping services to individual activities in the process model, deciding which services can be composed together, how to analyze the quality of service attributes and recommend a choice of service compositions, and the factors to be considered when evaluating quality of service across complex workflows.

Now I need to specify the metadata that needs to be attached to a process model, plus an overall detailed architecture for the system. Luckily I did a fair bit of that work over the summer and I just need to formalize it.

BPMN 2.0

One of the issues with earlier versions of BPMN is that they do not include a specific XML schema for describing a process. Version 2 resolves this with the inclusion of an XML schema as part of the standard. So I was really looking forward to BPMN 2, as it would make automated parsing and analysis of a BPMN model much easier and more predictable.

Unfortunately, the tools available for creating BPMN models don’t generally implement that specification just yet. Most BPMN tools claim to implement the BPMN 2 standard, but for the most part they implement the BPMN 2 graphical notation and not much else. Several of them include some variation of the XML standard with tool-specific extensions, which is of no particular help to me — I want to parse the standard to enable maximum portability. A fair number of tools save their models in XML Process Definition Language (XPDL); others use XML Metadata Interchange (XMI). While both of those are good standards for particular uses, neither one is ideal for my purposes. I would really like a design language that is accessible to business analysts, and that generally means a graphical notation.

The one bright spot on the scene is Sparx Enterprise Architect. I’ve used this tool in the past for various projects at work. It is an outstanding tool; unfailingly standards-compliant in my experience. And this time I was not disappointed — not only does the tool create BPMN 2.0 models, but it can actually save them in BPMN 2 XML. And the icing on the cake is that the price is dirt cheap. These days its running about $135 for a personal license; the “all you can eat” version tops out at just over $300. Compared to the thousands the competition charges, it just can’t be beat.

And most importantly (to me), the output is easy to parse. Now I just need to figure out how to add some extensions that will show up in the XML.

A Logical Progression

I have developed an initial service description ontology based on OWL-S. It is an initial version partly because it will doubtless evolve as I learn more from my research, but also because there are some missing pieces. Perhaps the most obvious of these, as I discussed in my presentation last week, is Quality of Service. Part of the reason QoS is missing is because it’s going to be complex to define and I’m not quite sure how to go about it.

I had planned to tackle QoS as the next part of my research; thinking that if I got something in there, no matter how basic, it would be progress. But the other day a thought occurred to me: Measuring and accounting for QoS in service selection is an optimization step — it is not fundamental to being able to compose services together.

So after thinking it over, I decided to take a more logical progression:

  1. Determine how to relate a process model to a service description
  2. Build a capability to do the service selection & matching and then execute the process
  3. Define how to capture quality of service in the service description
  4. Figure out how to optimize service selection with QoS as a factor in the selection

This will give me a chance to get some code running to prove that the basic idea is possible, and it will give me a chance to start generating some results I can use for comparison as I progress.

Now I just need to figure out how to relate a process description to service descriptions. I think I’ll be helped in this by the fact that OWL-S represents a service as a process. This might allow me to assert a certain equivalence between the idea of a service and the idea of a process. I’ll need to work on that.

Two Down

Yesterday afternoon (7/13/11; for some reason this didn’t post when I hit the publish button) I delivered my presentation at the 3rd Annual DoD SOA & Semantic Technology Symposium. I’m certainly in no position to objectively judge, but it seemed to me that it went very well. I had several questions that seemed like they were genuinely curious about the subject.

More importantly, from a purely mercenary point of view, is that this counted as my second publication on the road to completing my dissertation. Two down, and two or three more to go!

Now I need to get to work on the rest of my research. The first thing I need to focus on is probably some measure of Quality of Service. It certainly won’t be fully fleshed out, but I at least need a placeholder. But for now, a good night’s sleep would do me a world of good.

Getting Closer

I haven’t had the time to update this because I’ve swamped with work and with preparing my presentation. My slides have been through many drafts, but a couple of weeks ago I finally got my advisor’s approval. Since then, I’ve run the slides and my notes past some trusted friends for a good sanity check and to make sure I’m covering all the right bases.

In the meantime, I’ve had to navigate the corporate approval process to make sure I don’t run afoul of any restrictions they have. I’m pretty sure this was entirely new territory for them, and they really didn’t know quite how to handle it at first. But they’re good folks and flexible, so they adapted quickly and got me the necessary approvals.

So I’ve spent most of the past two weeks rehearsing and re-rehearsing my presentation for timing and content. I’m not completely happy with it, but then I never am. I think I’ve got it down well enough to get my points across and hopefully generate some thoughts and discussion. I’ll post the slides here after the conference, which begins later this morning. My speaking slot is at 12:30, right before lunch. I’m the first speaker in the “Standards” track; I’m not sure if that’s a good thing or not. I suppose we’ll see how it goes.

One Step Back, One Step Forward

The paper I had been working on went a little off the rails. I got into a groove and was cooking with gas, but in the process of writing I went off on a tangent to my original topic and the result just wasn’t right. I’m not happy about it, but the process did help me think through some of the details of the work I need to do, so I think I’ll be able to reuse some of the content or concepts at a later time. And the conference I was targeting was a bit of a long shot anyway, so I guess it’s just as well.

But I got some excellent news this week. My boss asked me to submit an abstract when we got a call for submissions from a SOA symposium sponsored by The Association for Enterprise Information (AFEI). I was pleasantly surprised that my submission was accepted, and I’ll be speaking at the 3rd Annual DoD SOA & Semantic Technology Symposium.

Now comes the hard part — get my research into good enough shape to present to that audience. But I’m glad to do it; nothing focuses the mind like a deadline.

Another Paper

I’m working on a paper for the 10th International Conference on Modeling and Applied Simulation. the overall topic of the conference is a little outside my area of research, but one of their topic areas is business process re-engineering. They also have some other related areas that could be a decent fit. And even if it’s not a good fit and gets rejected, I’ve at least got a draft of a paper that may work for another conference.

So I finally finished it and sent the complete first draft to my advisor for review. Hopefully he’ll get back to me in a day or two and I can make any needed changes. At any rate, it’s done and I can relax for a day or two. Well, a day, anyway. I’m planning on taking almost all of Tuesday off to devote tow working on my research. If I can do that just one day each month I should be able to make a lot more progress on my work than I have been up until now.

I can’t take credit for the one-day-per month idea; I have a friend to thank for that. For some reason, ideas like that never occur to me.

WSDL and Java and NOAA, Oh My!

I’ve spent most of this weekend trying to build a simple JADE agent that will invoke a web service and return the results. I finally succeeded this morning, after a fashion. And it was not pretty.

I began trying a simple stock quote service, as I thought this would be useful and easy to incorporate into several demonstration workflows. I was able to find some public services available, so I set to work. I decided to use WSDL2Java utility to generate an interface I could easily call. The utility worked simply enough, although the code it generates is less than intuitive. Searching through several forums and tutorials weren’t much help; its interface is apparently sufficiently quirky that Axis2 didn’t much like it. Most other stock quote services are subscription-only, and I’m not going to be using this enough to make that worth my while.

So I decided to switch to a weather service; that’s always a good standby for a workflow. and the National Oceanic and Atmospheric Administration (NOAA) has a publicly available weather service I for a class project several years ago. It’s the National Digital Forecast Database (NDFD), and it makes all manner of weather information available.

After 8 or 10 different attempts to generate code from the WSDL, using both the Axis2 utility, the MyEclipse utility of the same name, and a couple of others, I found myself in the same state as I was with the stock quote service. The one major difference is that there is some chatter on various web sites and forums discussing the NDFD service, and apparently it’s not very well-behaved when code is generated from it. The general opinion of the user community seems to be that it’s a poorly designed service; I’m not enough of a programmer to offer a meaningful opinion.

I did finally get the NDFD service to work. It’s not pretty, but it works. I’m manually generating the SOAP request, building the message, and submitting it to the service. And as painful as that sounds, it’s no worse than dealing with the mess that is Axis2. I’m sure the authors mean well, but they seem focused on service providers and not consumers. Surely there must be a more straightforward way to write code for invoking a web service. It’s no wonder web service adoption has been much less rapid than originally anticipated.