flor
Flor is a "Ruby workflow engine", if that makes any sense.
Design
- Strives to propose a scheming interpreter for long running executions
- Is written in Ruby a rather straightforward language with at least two wonderful implementations (MRI and JRuby, which is enterprise-friendly)
- Stores everything as JSON (if it breaks it's still readable)
- Stores in any database supported by Sequel (the JSON goes in the "content" columns, along with some index columns)
- Favours naive/simple implementations over smart ones
- All in all should be easy to maintain (engine itself and executions running on top of it)
Documentation
see doc/.
Running the specs
(Most of the time, as developer of flor, I'm writing specs, running them with FLOR_DEBUG=dbg and hammering the code until the specs are green. The following lines are about setting FLOR_DEBUG for flor development).
setting FLOR_DEBUG
This is a targetted run of a spec file:
FLOR_DEBUG=msg,err bundle exec rspec spec/punit/cancel_spec.rb
msgdisplays the flor messages in a summary, colored formaterrdisplays errors with details, when and if they happensrcdisplays the source before it gets parsed and launchedtreedisplays the syntax tree as parsed from the source, right before launchrunshows info about each run that just endedstodisplays debug information about the storage, it's mostly SQL statements
FLOR_DEBUG=dbg and FLOR_DEBUG=all
There are two shortcuts for the flags above:
FLOR_DEBUG=dbg bundle exec rspec spec/punit/cancel_spec.rb
# is equivalent to
FLOR_DEBUG=msg,err,src,tree,run bundle exec rspec spec/punit/cancel_spec.rb
and
FLOR_DEBUG=all bundle exec rspec spec/punit/cancel_spec.rb
# is equivalent to
FLOR_DEBUG=msg,err,src,tree,run,log,sto bundle exec rspec spec/punit/cancel_spec.rb
I tend to use FLOR_DEBUG=dbg when developping flor.
LICENSE
MIT, see LICENSE.txt