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?

2 writebacks [/src/java] permanent link