Brian's Waste of Time

Mon, 20 Jun 2005

Orchestration for Geeks

I have felt, for a long time, that the orchestration/BPEL/quasi-workflow space has been missing a big audience. Right now it is handled almost wholly by flowchart programming at one end, and bpel-in-emacs at the other end (which makes Jelly look nice). The flowchart programming model is painful for anyone that actually knows much programming, and scripting in XML is painful for anyone sane.

Now, the model for this orchestration component is that tech-savvy business analyst types, and non-programmer IT folks, can create reasonable orchestrations. This is fine and dandy. The fact is, however, that in a large number of cases it is actually being done by fairly sophisticated developers. I want to optimize that case. Imagine this:

import http://foo.org/employees.wsdl as employees
import http://foo.org/restaurants.wsdl as food

export start as http://foo.org/find_lunch-spot/

def start(employee_id)
  employee = search.find_employee employee_id
  if employee.xpath("/employee@title") == "Peon"
    return food.find_cheapest
  else
    return food.search_menus_for employee.xpath("/employee/favorites/food")
  end  
end

Which compiles down to BPEL =) May need to add some additional declarations, maybe not. But doesn't this beat a flowchart?

writebacks...

Nick Sieger


Better yet, can we just nominate Ruby as the official über/glue/all-purpose/domain scripting language? :) Rather than creating a toy domain-specific language for each new application? Seriously, Dave Thomas actually mentions this in an interview at http://www.artima.com/intv/domain2.html.

Brian McCallister

Ruby as Glue
If ruby continuations were serializable and migratable, I would be all over it. The problem is that you either need to bizarre pseudo-dsl in ruby which builds a state machine, or just go for a dsl which can be compiled a state machine. BPEL is (slowly) emerging as a cross-engine high level language for defining these, so having somehting which compiles to BPEL which is not a flowchart would be nice. The ability to convert it to a flowchart is also important -- there is value in having the flowchart: documentations, communication, and people who like visual stuff (I am text oriented, personally).

comment...

 
Name:
URL/Email: [http://... or mailto:you@wherever] (optional)
Title: (optional)
Spam Guard, translate l33t to English: (hint, it's an Australian animal, plural form)
Comments:
Save my Name and URL/Email for next time