TODO.txt in ruote-2.2.0 vs TODO.txt in ruote-2.3.0
- old
+ new
@@ -1,11 +1,10 @@
[o] port load26 (requires BlockParticipant)
[o] logger service
[o] test logger
[o] object full_dup
-[o] engine#remove_service
[o] :receive or :receive_back for when workitems come back from participant
[o] emit :processes :launch :wfid
[o] emit :processes :terminate :wfid only
[o] arch doc
[o] verbose always on
@@ -137,11 +136,11 @@
[x] if : _if "v:v" => "true" ? NO => evokes assignement
[x] deferred apply technique / not OK, with EM and next_tick / pro
[o] reserve : perhaps it's better to have an atomic get and set variable...
[o] clean up lookup_var/set_var into locate_var/lookup_var/set_var
[x] Sun Hao's up-to-date-tree idea ${f:participant_name} ps#resolved_tree
-[o] error : when an error expression is cancelled, should the err get remove
+[o] error : when an error expression is cancelled, should the err get removed
from the process status ? yes.
[o] file logger / history service
[o] engine.process_history(wfid)
[o] add_branch :times/:branches
[o] cursor : :break_if / :break_unless
@@ -285,80 +284,95 @@
like WaitLogger only remembers 147 msgs...
[o] StorageHistory : add a method to list all wfids (for by_wfid)
[o] DefaultHistory : add a method to list all wfids (for by_wfid)
[x] issue with ruote-kit and inpa participants...
[x] .nil? .empty? .set? for "${x}.nil?"
+[o] BlockParticipant : proc.to_source thanks to sourcify
+[o] register :overwrite { ... } ? (wipes all the participants)
+[o] pause engine
+[o] pause process instance
+[o] filter : blank? equivalent (maybe it already exists)
+[o] eft_18 weak with jruby-1.5.1 and 1.5.6
+[o] participant : consume/cancel/accept?/on_reply without params
+[o] participant : consume -> on_workitem
+[o] remove abort_on_exception=true
+[o] concurrence / concurrent_iterator : merge_type => 'discard' / 'ignore'
+ keep track of the first "process sub id" ?
+[o] register :toto, :accept? => lambda { |workitem| ... }
+[o] register :toto, :do_not_thread => lambda { |workitem| ... }
+[o] :on_timeout => :rewind (break, jump to x)...
+[o] :on_error => :rewind (break, jump to x)...
+[o] worker identification/registration
+ http://groups.google.com/group/openwferu-users/browse_thread/thread/c51b94fb8bb685da
+[o] worker shutdown initiated by engine (same thread)
+[o] set :var => 'y' { '2342342' }
+[o] wfid generator UTC?
+[o] iterator: drop the need for the sequence --> implicit sequence
+[o] citerator: drop the need for the sequence --> implicit sequence
+[o] move test/unit/storage[s].rb to test/functional/
+[x] exp : defined (not really necessary)
+[x] exp : quote (not really necessary)
+[x] exp : field / attribute (not really necessary)
+[x] exp : variable (not really necessary)
+[o] expression :concurrent => true idea (reply immediately, cancellable)
+ `- covered by :flank => true
+[o] concurrence: allow empty
+[o] citerator: allow empty
-[ ] exp : exp (restricted form of eval ?) (is it apply ?)
+[ ] exp : at expression ? comparable to cron
+[x] exp : exp (restricted form of eval ?) (is it apply ?)
[x] exp : filter
[x] exp : filter-definition
[x] exp : parameter
[ ] exp : log : or could it be a participant ?
+[x] wait_for(:participant) what about 'dispatched' instead of 'dispatch' ?
-[ ] exp : defined (not really necessary)
-[ ] exp : quote (not really necessary)
-[ ] exp : field / attribute (not really necessary)
-[ ] exp : variable (not really necessary)
-
[ ] define without name (__result__)
[ ] participant dispatch thread throttling ?
[ ] tailcall
+ - is it really necessary? The storage is the limit.
+
[ ] subprocesses participants (alias ?)
[ ] recursion : should cope with modified trees 'main' => :tree ??
-[ ] set :var => 'y' { '2342342' }
-
-[ ] pause engine
-[ ] pause process instance
- |
- would it mean something like placing a paused list in the storage
- and fetching it all the time ?
-
[ ] file/fs_listener [example] ?
[ ] concurrence / concurrent_iterator : merge plugin ?
use participant for that ?
[ ] restore : implement merge strategies
[ ] one file, no multi-process, persistence ? LateHashStorage ?
+[ ] one file per process ?
[ ] apply : ruby or xml (instead of just ast) ?
-[ ] unify ruote/util/json and ruote/util/serializer
-
[ ] history.to_tree ?
[ ] Ruote.process_definition ... Ruote.method_missing or sequence ?
-[ ] concurrence / concurrent_iterator : merge_type => 'discard' / 'ignore'
- keep track of the first "process sub id" ?
-
[ ] @children diff/undiff idea ?
-[ ] :on_timeout => :rewind (break, jump to x)...
-[ ] :on_error => :rewind (break, jump to x)...
-
+[o] cursor : 'reset' command ?
+[ ] cursor : 'restart' alias for 'reset' ?
[ ] repeat : have a counter in a variable (:to => x maybe) (subprocessid ?)
[ ] engine.cancel_forgotten_children(wfid) ?
[ ] port subprocess on_cancel test from ruote 0.9 http://groups.google.com/group/openwferu-users/t/75f02bdadf7b93eb
[ ] double-check on_cancel rewrite (ft_1_process_status)
[ ] verify get_last/get_raw logic, no + 0.0001...
-[ ] spare 1 get_msg by caching msg (but keep 'deleting')
+[x] spare 1 get_msg by caching msg (but keep 'deleting')
[ ] [un]set_var : via message ? should be ok like that... Not much traffic there
[ ] empty iterator or concurrent-iterator, log ? crash ? empty while...
-[ ] remove abort_on_exception=true
-
[ ] shell ? irb ? Shell.new(storage)
[ ] focus on fulldup or json.dup (via fulldup ?)
[ ] should __error__ contain the tree ?
[ ] engine.on_cancel = 'participant_name' // 'subprocess_name'
@@ -370,12 +384,10 @@
else-ref... list of participants...
ref="alpha && bravo", ref="alpha||bravo" (|| parallel :( )
[ ] LocalParticipant def consume; handle; reply; end
-[ ] find better solution than "get all schedules"
-
[ ] worker : minuteman, make it cron triggerable
trap SIGUSR1 or USR2
maybe it's expensive to fire a [worker] process each minute
have to write the $$ (pid) somewhere for cron to pick it up
@@ -385,11 +397,11 @@
[ ] participant 'toto', :while => '${not_good}' (really ?)
[ ] re_apply_stalled
http://groups.google.com/group/openwferu-users/browse_thread/thread/ff29f26d6b5fd135
-[ ] engine.purge (arts style : worker.@msgs = [])
+[ ] engine.purge (arts style: worker.@msgs = [])
[ ] http://ruote.rubyforge.org/irclogs/ruote_2010-07-07.txt
configuration issue
maybe fail with a good error message when registering service...
@@ -404,12 +416,10 @@
[ ] a run of ruby -w
[x] cursor : previous_command field ? not really necessary with :break_if => x
-[ ] register :overwrite { ... } ? (wipes all the participants)
-
[ ] storage_participant.by_participant([ a, b, c, d ], opts)
storage_participant.by_participant(a, b, c, d, opts) too
leverage things like
http://wiki.apache.org/couchdb/HTTP_view_API#Querying_Options
2.1.12
@@ -419,28 +429,25 @@
[ ] engine/receiver #reply(workitem or fexp or fei) ?
[ ] workitem : short constructor, cf http://groups.google.com/group/openwferu-users/browse_thread/thread/c52d207d85e4b93e
[ ] engine.force_reply_to_parent(fei) ?
but, this is a cancel_expression(fei)
-[ ] at expression ? :names :wait, :at
-
[ ] concurrence : add_child ?
How would that impact concurrent_iterator's add_branches ?
[ ] detach / attach segments of processes
-[ ] clone process ? (could be used by {de|at}tach)
+[x] clone process ? (could be used by {de|at}tach)
+ what about participants ?
[ ] console for InformatiQ / console or dashboard or tool ?
[ ] pooltool.ru : there are already storage copy methods
-[ ] BlockParticipant : proc.to_source thanks to sourcify
-
[o] doc : enhance doc on conditional (and, empty, null, ...)
[o] doc : document engine.on_{error|terminate}
[o] doc : document on_error = retry and on_error = pass
[ ] doc : add piece of doc about running workers on their own
-[ ] listen to errors {in|out}
+[o] listen to errors {in|out}
well... there is already on_error...
but on_error is for nested stuff...
[o] listen to tags {entering|leaving}
[x] listen to launch/terminate, listen :process => :x, :upon => 'launching'
you can now set :tag on a subprocess' define
@@ -448,32 +455,66 @@
not really necessary... there is already 'once' (when)
[o] listen condition ? :when => '${x} == y', :constraint, :only, ...
it's :where and it's not documented :-( but it's tested :-)
[o] engine#on_terminate, similar to on_error
[o] let engine#on_error use svc/tracker.rb instead of 'notifications'
+[ ] process supervise other process, listen...
+ launch a process with a designed 'supervisor' ?
+ listen to termination, listen to error, for a given process ?
+[ ] events for put_schedule/delete_schedule/trigger_schedule
+[ ] use 'raise' instead of error_handler.action_handle
+ (ruote-amqp, ruote-beanstalk)
+
[ ] ruote cheatsheet
[ ] ruote slides
-[ ] process supervise other process, listen...
- launch a process with a designed 'supervisor' ?
-
[x] ci : ruote-amqp
-[ ] ci : ruote-mongodb
+[o] ci : ruote-mon
[ ] ci : jruby
-[ ] StorageParticipant#reply : raise if workitem not found ?
-[ ] StorageParticipant#reply : accept fei ?
+[ ] ruote-doozer?
+
+[ ] StorageParticipant#proceed : raise if workitem not found ?
+[ ] StorageParticipant#proceed : accept fei ?
[ ] Engine#reply(wi), should remove from storage...
-[ ] eft_18 weak with jruby-1.5.1 and 1.5.6
+[o] @engine.context['participant_in_variable_enabled'] = true
+[ ] @engine.register(x, :trusted => true, &block)
+[ ] security service ? context['x'] but then, more advanced behaviours
+[ ] subaltern
-[ ] participant : consume/cancel/accept?/on_reply without params
+[x] investigate 1.9's json
+[ ] Parslet for conditions?
+[ ] subaltern for conditions?
+[ ] enhance radial/Parslet error messages (cf Raphael)
-[ ] worker identification/registration
- http://groups.google.com/group/openwferu-users/browse_thread/thread/c51b94fb8bb685da
-[ ] worker shutdown initiated by engine (same thread)
+[ ] concurrence: reply_to_parent instead of cease when no more children ?
+ https://github.com/jmettraux/ruote/blob/1f9add961f90049ea951b8940622fbe8d136c45f/lib/ruote/exp/fe_concurrence.rb#L304-310
-[ ] wait_for(:participant) what about 'dispatched' instead of 'dispatch' ?
+[ ] cursor: deeper jumps
+ http://groups.google.com/group/openwferu-users/browse_thread/thread/a973f0ea5fbb1a96
-[ ] expression :concurrent => true idea (reply immediately, cancellable)
+[ ] on_cancel like on_error expression
+[ ] on_timeout like on_error expression (or make timeout an error)
+
+[ ] #get_msgs to cover #get_schedules (make #get_schedules empty)
+ | | |
+[ ] find better solution than "get all schedules"
+ ... or discard get_schedules completely
+
+[ ] eft_6_concurrence : 2 Fs when running standalone...
+
+[ ] get rid of the "web" test[s]
+
+[.] remove #dump from all storage implementations
+
+[ ] engine#remove_service
+
+== 3.0
+[ ] deprecate get_schedules
+ (let the storage include triggered schedules as msgs)
+[ ] deprecate "trackers as variables"
+
+== 4.0
+[ ] deprecate listen (await?) or make it an alias of await?