I'm sort of pondering a project in which I think a DSL would be a good
fit for user programmability to control transactional flow. I'm
thinking about how the DSL might look, and have come up with something
like this:
get :approval, :from => [:manager, :system_owner]
if :approval == :ok
get :information, :request => :clearance, :from =>
[:person_with_role, "Security Role"]
modify :person, :with => [:clearance, :clearance_date => :now]
notify :success => [:requestee, :requestor]
else
notify :failure => [:requestee, :requestor]
finish
end
# unrelated to the code above
push :change, :of => :cn, :to => :accounts, :where => ":attribute
== :old_cn"
It would expand much deeper, but for now, that's what I have. Any
thoughts on how best to implement something like this, how I could
make it a little cleaner, and how I might deal with completing the
flow after a system failure would be much appreciated