event-driven workflows for clojure