Permalink
Browse files

release 0.9.20

  • Loading branch information...
1 parent 54ebfa5 commit 5b166ce67bd6e003da6ec4ce28b733f1cd50d28d @jmettraux committed Mar 18, 2009
Showing with 182 additions and 131 deletions.
  1. +2 −2 CHANGELOG.txt
  2. +7 −6 README.txt
  3. +108 −53 RELEASE.txt
  4. +65 −70 RELEASE.txt.previous
View
4 CHANGELOG.txt
@@ -1,8 +1,8 @@
-= OpenWFEru "ruote" - CHANGELOG.txt
+= ruote (OpenWFEru) - CHANGELOG.txt
-== ruote - 0.9.20 not yet released
+== ruote - 0.9.20 released 2009/03/18
- todo #24578 : _redo/undo now accept :if/:unless attribute (conditional)
- todo #24512 : accept _redo/undo 'tagname' notation
View
13 README.txt
@@ -1,13 +1,15 @@
-= OpenWFEru
+
+= Ruote (OpenWFEru)
== Overview
-OpenWFEru is an open source workflow and BPM engine written in Ruby.
+Ruote is an open source workflow engine written in Ruby.
"Ruote" is the nickname of the engine/system, as "OpenWFEru" is quite hard to spell.
The quickstart is at : http://openwferu.rubyforge.org/quickstart.html
+
== License
is the MIT one.
@@ -23,12 +25,11 @@ http://jmettraux.wordpress.com (blog)
== feedback
-user mailing list : http://groups.google.com/group/openwferu-users
-developers mailing list : http://groups.google.com/group/openwferu-dev
+mailing list : http://groups.google.com/group/openwferu-users
-issue tracker : http://rubyforge.org/tracker/?atid=10023&group_id=2609&func=browse
+issue tracker : http://rubyforge.org/tracker/?atid=10023&group_id=2609&func=browse
-irc : irc.freenode.net #ruote
+irc : irc.freenode.net #ruote
author : jmettraux@gmail.com
View
161 RELEASE.txt
@@ -1,96 +1,151 @@
-= OpenWFEru (Ruote) 0.9.19 released
+= Ruote (OpenWFEru) 0.9.20 released
+
+Ruote is an open source workflow engine implemented in Ruby.
+
+With a bit of discipline, you could even do BPM with it.
-OpenWFEru is an open source workflow / BPM engine implemented in Ruby.
downloads : http://rubyforge.org/frs/?group_id=2609
source : http://github.com/jmettraux/ruote
== What's new
-The main driving force between this release and the previous has been the work on ruote-rest (the Rack / REST based web application wrapper around ruote).
+This release is not backward compatible. Changing the engine and restarting with a batch of persisted processes will not work. Start with new processes or migrate them.
+
+Speaking of persistence, this release features revised and new persistence mechanisms, they are detailed at [1]. The most common one, the FileSystem bound one has been revised to use Ruby marshalling instead of YAML with a net perf increase. Tokyo Cabinet and Tokyo Tyrant persistence mechanisms have been added as well.
+A DataMapper based persistence has been added as well.
-There have been many bugfixes as well as simplifications. One of the most obvious simplifications : the ruote-extras gem vanished, everything goes into one unique 'ruote' gem.
+Should the need to move from one persistence mecha to the other arise, a pooltool.ru [2] has been included for easy migrations, back and forth.
-On the web front, note that ruote-fluo, the javascript library used for drawing process definitions on the fly (used by ruote-rest and ruote-web) is currently usable with Firefox 3 only. I hope that the webkit based browsers will implement canvas text drawing soon.
+On the front of expressions themselves, 'sleep' and 'wait' have been merged, as was pointed out to me, "wait '2d'" sounds more businessy than "sleep '2d'".
-Ruote-fluo first task is to render process definitions graphically, on the fly. Lately, it was enhanced as a process designer as well [1]. It's currently rather alpha, but promising.
+Each expression may now have a on_cancel and/or on_error attribute, pointing to a subprocess or participant called in case of error or cancel respectively. This was suggested by Raphael Simon and Kenneth Kalmer. More about it at [3]
-A DbHistory has been implemented (and integrated into ruote-rest). It tracks activity in the workflow engine and is easily queriable. Ruote-rest provides an atom feed representation for it.
+There is a new way to define process via Ruby :
+ pdef = OpenWFE.process_definition :name => 'cfp' do
+ sequence do
+ prepare_call
+ concurrence do
+ vendor1
+ vendor2
+ vendor3
+ end
+ decide_which
+ end
+ end
-The next release will probably focus on ruote-web2, a rewrite of ruote-web (the Rails based workflow environment). Ruote-fluo will be improved as well, with a focus on helping the user in its process-design task.
+It will directly store the process definition tree (a tree of expressions) in the variable 'pdef'.
+Kenneth Kalmer came up with a JabberParticipant and a JabberListener [4] and Torsten Schoenebaum implemented a ActiveResourceParticipant for modifying Rails resources from Ruote [5].
-Many thanks to all that have contributed patches, suggested ideas and provided feedback.
+Many thanks to everybody who contributed code, feedback, ideas to Ruote !
-[1] http://difference.openwfe.org:4567/?pdef=pdef_ttt.xml
+[1] http://openwferu.rubyforge.org/persistence.html
+[2] http://openwferu.rubyforge.org/persistence.html#pooltool
+[3] http://openwferu.rubyforge.org/on_error.html
+[4] http://openwferu.rubyforge.org/participants.html#JabberParticipant
+[5] http://openwferu.rubyforge.org/participants.html#ActiveResourceParticipant
== Source
engine http://github.com/jmettraux/ruote
rest webapp http://github.com/jmettraux/ruote-rest
process desginer http://github.com/jmettraux/ruote-fluo
-rails based webapp http://github.com/jmettraux/ruote-web
+rails based webapp http://github.com/jmettraux/ruote-web2
== Feedback / help
user mailing list http://groups.google.com/group/openwferu-users
-dev mailing list http://groups.google.com/group/openwferu-dev
+irc freenode.net #ruote
== What's next
-- 1.0 (instead of 0.9.20) ?
+- ruote-web2 release
- ruote-fluo more user-friendly
-- ruote-web2
- ...
== CHANGELOG
-- todo #21849 : added :uri attribute to InFlowWorkitem
-- todo #21802 : added an updated_at field to FlowExpression
-- todo #21716 : added option switch :use_ruby_treechecker, on by default
-- todo #21722 : replaced TreeChecker by the rufus-treechecker gem
-- todo #21646 : integrated a process status cache
-- todo #21680 : added timestamp to ProcessStatus
-- todo #21664 : integrated REXML security patch by Michael Koziarski
-- bug #21649 : pause and resume were not emitting an expool event. Fixed.
-- todo #21652 : now generating one unique 'ruote' gem
-- todo #21644 : included process_stack result into process_status
-- bug #21585 : to_h.to_json and back broken. Fixed and discarded eval(class)
-- todo #21498 : implemented DbHistory (with History redux)
-- todo #21419 : removed direct dependency on json gem, relying on whatever
- is present (activesupport or json).
-- bug #21347 : scheduler was silent when encountering error. Fixed.
-- bug #21306 : made sure duplicate insert bug for ActiveParticipant is fixed.
-- todo #21334 : optimized fulldup() (almost 2 times faster).
-- bug #21322 : reserve mutex not freed upon cancel. Fixed.
-- bug #21305 : replay_at_error was broken for subprocesses. Fixed.
-- todo #21167 : exptree.to_code_s() now respecting non-string att values.
-- bug #20714 : engine.lookup_variable was coaxing target value into a regex.
+- todo #24578 : _redo/undo now accept :if/:unless attribute (conditional)
+- todo #24512 : accept _redo/undo 'tagname' notation
+- todo #23912 : aligned register_participant on register_listener
+- todo #24270 : added DataMapper based engine persistence
+- todo #24269 : openwfe/extras/ar_engine spun off of db_engine (Marshal instead
+ of YAML now by default)
+- todo #23768 : implememented work/pooltool.ru
+- todo #24125 : moved ProcessParameter next to ExpressionTree module.
+- todo #24193 : 'parameter' now raises ArgumentError instead of
+ OpenWFE::ParameterException
+- todo #24016 : merged 'sleep' into 'wait'
+- todo #24140 : merged process_stack into process_status
+- todo #23937 : made sure on_error blocks see variables
+- todo #23936 : made sure on_cancel blocks see variables (reported by Kenneth)
+- todo #23858 : implemented Tokyo Tyrant persistence mechanism
+- todo #23886 : added wfname and wfrevision to DbHistory
+- todo #23869 : implement ProcessStatus#workitem_expids
+- todo #23833 : engine#add_workitem_listener -> register_listener
+- todo #23821 : participant impl can now decide if dispatches to them should
+ be done in a specific thread
+- todo #23016 : nuked old 'rest' legacy from OpenWFEja
+- todo #23756 : implemented Marshal based file persistence
+- todo #23683 : implemented Tokyo Cabinet persistence mechanism
+- todo #23608 : init_service() now stops services getting 'overriden'
+- bug #23609 : db_errorjournal.rb broken. Fixed.
+- todo #23607 : added created_at timestamp to OpenWFE::Extras::ProcessError
+- todo #23600 : file renaming among listeners and participants
+- bug #23560 : ActiveParticipant turning value false to '0'. Fixed.
+- todo #23553 : don't present the __result__ field to participants
+- todo #23541 : implemented json safe serialization for FilterDefinition
+- todo #23500 : added a HistoryEvent#log! for direct history logging (rw2)
+- todo #23441 : tracking rel=prev/next in representations.rb (ruote-rest/web).
+- bug #23438 : QueuedDbHistory was losing the :source information. Fixed.
+- todo #23200 : added rewind-if/break-if attributes to cursor/loop
+- todo #23187 : OpenWFE.process_definition :name => x, ... as a shortcut
+- bug #23164 : ExpressionTree.to_code_s broken for 1 string child exps. Fixed.
+- todo #23125 : moved website src to http://github.com/jmettraux/ruote_website
+- todo #23102 : implemented on_cancel attribute with Kenneth Kalmer
+- todo #23083 : implemented QueuedDbHistory (used in ruote-rest)
+- todo #23015 : implemented on_error mecha as designed with Raphael Simon
+- todo #23014 : added Jabber participant and listener (Kenneth Kalmer)
+- todo #22868 : representations.rb : added error[s]_to_xml()
+- todo #22864 : representations.rb : added expression[s]_to_xml()
+- todo #22872 : added column 'expid' to 'expressions' table as well
+- todo #22865 : added column 'expid' to 'workitems' and 'errors' tables
+- todo #22834 : 'href' -> 'link' and upgraded lib/openwfe/representations.rb
+- todo #22722 : upgraded lookup_processes() (can now look for variables and
+ workitem fields (applied_workitem))
+- todo #22550 : introduced applied_workitems in process_status and moved the
+ engine lookup[_stuff] methods in a LookupMethods module
+- todo #22699 : engine.update_raw_expression() becomes update_expression_tree()
+- todo #22691 : implemented Xml.workitems_to_xml()
+- todo #22682 : expressions now have priority over participants in lookup
+- todo #22680 : made the participant_map a service locator as well
+- todo #22608 : introduced the 'wfid' attribute for the 'listen' expression
+- todo #22517 : logs/openwferu.log -> logs/ruote.log
+- bug #10049 : empty ruby ProcessDefinition broke (instead of exiting). Fixed.
+- todo #22584 : huge rework 'no_raw_children'
+- todo #22004 : now stamping workitem with timeout info '__timeouts__' and
+ added current_timeout() method to InFlowWorkItem class
+- todo #22442 : now storing filter as workitem attribute
+- todo : added expid() to OpenWFE::Extras::Workitem
+- bug #22213 : engine.process_status() cache keeping 1! result. Fixed.
+- todo #22202 : engine.launch(li, :variables => {...}) implemented
+- bug #22158 : ArgumentError: OpenWFE::Extras is not missing constant Field!
Fixed.
-- todo #20697 : implemented ProcessStatus.scheduled_jobs
-- todo #20624 : returning [ :terminate, wi, fei ] or [ :error, e, fei ]if
- launch(li, :wait_for => true) [instead of just fei]
-- bug #20625 : exception inside of BlockParticipant can't get replayed. Fixed.
-- todo #20467 : got rid of unnecessary synces in yamlfilestorage
-- todo #20564 : sequence : caching current position for speed gain
-- todo #20554 : optimized wait_for and added :wait_for option to engine.launch
-- todo #20539 : indent = 2
-- bug #20505 : fixed issues with branch count in ProcessStatus.
-- todo #11856 : got rid of old rest interface (but kept xmlcodec for a while)
-- todo #20083 : integrated treechecker and got rid of rufus-eval.
-- todo #20466 : made sure that yaml ejournal mkdir_p path to journal.
-- bug #20445 : yaml error journal get_error_logs() broken. Fixed.
-- todo #20360 : implemented hpost/hget/hput/hdelete and hpoll expressions
-- bug #20378 : workitem.att throws exception if attribute holds the boolean
- #false value. Fixed.
-- bug #20364 : 'a' and 'step' were not using $ substitution for their
- first child param. Fixed.
+- todo #22122 : tree wrapping redux (see test/ft_89_polyglot.rb)
+- bug #22121 : when wait_for => true, two wfids were generated. Fixed.
+- todo #22023 : made sure YAML, JSON and Array expression were accepted
+- todo #22036 : introduced openwfe/util/json for from_json(s)
+- todo #22005 : moved process_to_xml to ruote (openwfe/representations.rb)
+- todo #20613 : cleaned up xml generation (builder(options) do |xml|)
+- bug #21206 : tree.to_xml not happy with hash attributes. Fixed.
+- bug #21958 : InMemoryEngine initial_tree and current_tree conflict. Fixed.
View
135 RELEASE.txt.previous
@@ -1,101 +1,96 @@
-= OpenWFEru (Ruote) 0.9.18 released
+= OpenWFEru (Ruote) 0.9.19 released
OpenWFEru is an open source workflow / BPM engine implemented in Ruby.
-download : http://rubyforge.org/frs/?group_id=2609
+downloads : http://rubyforge.org/frs/?group_id=2609
+source : http://github.com/jmettraux/ruote
== What's new
-The gems have been renamed "ruote" and "ruote-extras". The require paths have not changed.
+The main driving force between this release and the previous has been the work on ruote-rest (the Rack / REST based web application wrapper around ruote).
-This name is shorter, easier to spell and serves as a handy prefix for subprojects like "ruote-web" and "ruote-rest".
+There have been many bugfixes as well as simplifications. One of the most obvious simplifications : the ruote-extras gem vanished, everything goes into one unique 'ruote' gem.
-The source of all the Ruote projects (and the Rufus ones) has moved from RubyForge subversion to GitHub [1], feel free to fork.
+On the web front, note that ruote-fluo, the javascript library used for drawing process definitions on the fly (used by ruote-rest and ruote-web) is currently usable with Firefox 3 only. I hope that the webkit based browsers will implement canvas text drawing soon.
-This new "ruote" uses threads in a more economic way. This adaptation was driven by deployments on JRuby 1.1.1 which exposed flaws in the way threads were used by OpenWFEru. Ruote now runs happily on Ruby 1.8.6 and JRuby 1.1.1.
+Ruote-fluo first task is to render process definitions graphically, on the fly. Lately, it was enhanced as a process designer as well [1]. It's currently rather alpha, but promising.
-There is a new "step" expression [2], spaghetti processes are now easier to script (it's OK as "ruote" is the name of a pasta variety).
+A DbHistory has been implemented (and integrated into ruote-rest). It tracks activity in the workflow engine and is easily queriable. Ruote-rest provides an atom feed representation for it.
-This "step" expression is heavily involved in a new sub-project named "ruote-transition" [3][4]. It's a kind of translator that turns XPDL and YAWL process definitions to the Ruote process definition language.
-Another addition to the "ruote" family is "ruote-rest" [5], a RESTful workflow / BPM system based on OpenWFEru and the Sinatra [6].
+The next release will probably focus on ruote-web2, a rewrite of ruote-web (the Rails based workflow environment). Ruote-fluo will be improved as well, with a focus on helping the user in its process-design task.
-[1] http://github.com/jmettraux
-[2] http://openwferu.rubyforge.org/expressions.html#exp_step
-[3] http://github.com/jmettraux/ruote-transition
-[4] http://jmettraux.wordpress.com/2008/05/18/xpdl-for-fun/
-[5] http://jmettraux.wordpress.com/2008/05/07/restful-workflow-engine-on-sinatra/
-[6] http://sinatrarb.com
+Many thanks to all that have contributed patches, suggested ideas and provided feedback.
-Many thanks to all that have contributed patches, suggested ideas and provided feedback.
+[1] http://difference.openwfe.org:4567/?pdef=pdef_ttt.xml
+
+
+== Source
+
+engine http://github.com/jmettraux/ruote
+rest webapp http://github.com/jmettraux/ruote-rest
+process desginer http://github.com/jmettraux/ruote-fluo
+rails based webapp http://github.com/jmettraux/ruote-web
== Feedback / help
-user mailing list : http://groups.google.com/group/openwferu-users
-dev mailing list : http://groups.google.com/group/openwferu-dev
+user mailing list http://groups.google.com/group/openwferu-users
+dev mailing list http://groups.google.com/group/openwferu-dev
== What's next
-- 1.0 (instead of 0.9.19) ?
-- write mode for fluo
-- more expressions display support for Densha process definition graphical rendering
-- http verbs in the process definition language
-- more vapor
+- 1.0 (instead of 0.9.20) ?
+- ruote-fluo more user-friendly
+- ruote-web2
+- ...
== CHANGELOG
-- todo #20221 : added engine.process_representation(wfid) method
-- todo #20244 : 'description' is now an expression like any other
-- todo #20228 : made sure removed expressions did not appear in
- process_stack.representation()
-- bug #20225 : 'description' problem in process_stack.representation. Fixed.
-- todo #20202 : using 'ref' as the main 'step' attribute
-- bug #18954 : activity feed service stuck after 100 entries. Fixed.
-- bug #20128 : upgraded to atom-tools 2.0.1
-- todo #20111 : step_tail optimization of the "step" expression
-- todo #18222 : the <a> expression now accepts JSON
-- todo #20108 : upgraded the <a> expression to OpenWFE::Xml
-- bug #20059 : wfid growing .0.1.2.3 instead of .3 in some cases. Fixed.
-- todo #18935 : implemented "step" expression (test/ft_79b)
-- bug #20061 : get_description broken with Ruby pdef with no desc. Fixed.
-- todo #20016 : allowing "define 'process_def_name' do ... end"
-- todo #19933 : reintroduced ${vf:x} and ${fv:y}
-- todo #19536 : added :engine_name application context parameter
-- todo #19839 : moved storeparticipants out of worklist/
-- bug #19739 : made sure that ActiveParticipant didn't flatten Date and Time
- instances found in workitem fields
-- todo #19704 : introduced parameter :definition_in_launchitem_allowed
- (defaults to false)
-- bug #19607 : preventing cancel root expression bug (in case of error
- in process)
-- todo #19559 : using Queue instead of schedule_every for threaded
- expression storage
-- todo #19624 : 'if' now logs a warning message if more than 2 or 3 children
-- todo #19620 : making sure that the custom thread names are displayed
- when ctrl-\ing JRuby
-- todo #19615 : making sure WorkQueue is freed when stopped.
-- bug #19576 : update_raw_expression() broken. Fixed.
-- todo #19575 : turned WorkQueueMixin into the WorkQueue service
-- todo #19532 : removed unnecessary synchronizations
-- todo #19471 : implemented new, lighter xml codec openwfe/util/xml
-- patch #19500 : size patch for db backed engine by Maarten Oelering
-- todo #19026 : keeping track of raw_representation in-flight changes
- in [replying] children
-- : switched source to http://github.com/jmettraux/ruote
-- todo #19060 : added representation() to the result of engine.process_stack()
-- todo #19339 : fixed fulldup for Time and Date[Time] as reported by Maarten
-- todo #19104 : reformed the template system ( see http://tinyurl.com/2y6z9r )
-- bug #19095 : namespace problem for db enabled engine. Fix by Tomaso.
-- todo #19072 : 'cron' now leaves his template in the expool
-- todo #19061 : lib/openwfe/engine/ cleanup (more later)
-- todo #18995 : made 'cron' aware of process pause
-- todo #18518 : changed 'cron', broke the // exception
-- patch #18953 : smart dsub for expression args by Nick Petrella
+- todo #21849 : added :uri attribute to InFlowWorkitem
+- todo #21802 : added an updated_at field to FlowExpression
+- todo #21716 : added option switch :use_ruby_treechecker, on by default
+- todo #21722 : replaced TreeChecker by the rufus-treechecker gem
+- todo #21646 : integrated a process status cache
+- todo #21680 : added timestamp to ProcessStatus
+- todo #21664 : integrated REXML security patch by Michael Koziarski
+- bug #21649 : pause and resume were not emitting an expool event. Fixed.
+- todo #21652 : now generating one unique 'ruote' gem
+- todo #21644 : included process_stack result into process_status
+- bug #21585 : to_h.to_json and back broken. Fixed and discarded eval(class)
+- todo #21498 : implemented DbHistory (with History redux)
+- todo #21419 : removed direct dependency on json gem, relying on whatever
+ is present (activesupport or json).
+- bug #21347 : scheduler was silent when encountering error. Fixed.
+- bug #21306 : made sure duplicate insert bug for ActiveParticipant is fixed.
+- todo #21334 : optimized fulldup() (almost 2 times faster).
+- bug #21322 : reserve mutex not freed upon cancel. Fixed.
+- bug #21305 : replay_at_error was broken for subprocesses. Fixed.
+- todo #21167 : exptree.to_code_s() now respecting non-string att values.
+- bug #20714 : engine.lookup_variable was coaxing target value into a regex.
+ Fixed.
+- todo #20697 : implemented ProcessStatus.scheduled_jobs
+- todo #20624 : returning [ :terminate, wi, fei ] or [ :error, e, fei ]if
+ launch(li, :wait_for => true) [instead of just fei]
+- bug #20625 : exception inside of BlockParticipant can't get replayed. Fixed.
+- todo #20467 : got rid of unnecessary synces in yamlfilestorage
+- todo #20564 : sequence : caching current position for speed gain
+- todo #20554 : optimized wait_for and added :wait_for option to engine.launch
+- todo #20539 : indent = 2
+- bug #20505 : fixed issues with branch count in ProcessStatus.
+- todo #11856 : got rid of old rest interface (but kept xmlcodec for a while)
+- todo #20083 : integrated treechecker and got rid of rufus-eval.
+- todo #20466 : made sure that yaml ejournal mkdir_p path to journal.
+- bug #20445 : yaml error journal get_error_logs() broken. Fixed.
+- todo #20360 : implemented hpost/hget/hput/hdelete and hpoll expressions
+- bug #20378 : workitem.att throws exception if attribute holds the boolean
+ #false value. Fixed.
+- bug #20364 : 'a' and 'step' were not using $ substitution for their
+ first child param. Fixed.

0 comments on commit 5b166ce

Please sign in to comment.