Well celery does have subtasks that it can wait and join on (see
http://ask.github.com/celery/userguide/tasksets.html), but I suppose that the logic to do such things would have to occur within a running task as opposed to SWF where such things are handled by the platform itself.