TODO.txt in ruote-2.1.9 vs TODO.txt in ruote-2.1.10

- old
+ new

@@ -191,30 +191,47 @@ [o] StorageParticipant#query(wfid, participant_name, {fields}) [x] break fs_history, prepare for dm_history [o] part = engine.register_participant :alpha, StorageParticipant should work... [o] concurrence :merge_type => 'stack' [o] CompositeStorage.new('msgs' => AmqpStorage.new(''), ...) +[x] let the storage participant leverage Ruote::FlowExpressionId.from_id(s) +[o] Andrew's technique http://groups.google.com/group/openwferu-users/browse_thread/thread/c2aa4b53d1664d45/8523a1a5ee98fd71 +[o] Avishai : LocalParticipant : repost dispatch message +[o] Rdoc Ruote::Engine.register_participant -> passing a block to a participant + and perhaps also on + http://ruote.rubyforge.org/implementing_participants.html (Avish) +[o] wrap workitem in process error ? for on_error consumption (thanks Oleg) + doing workitem.fields['__error__'] = [ fei, time, error_message ] +[o] HashStorage should emit 'init persist fail' messages as well ! +[o] Oleg's idea about participant on_reply + http://groups.google.com/group/openwferu-users/browse_thread/thread/2e6a95708c10847b + on_reply should be done in the receive action, not in Receiver + thus, in the ParticipantExpression +[x] exp : step (jump to cursor tag ?) : there is already the jump expression +[x] auto-participant re-apply +[o] receiver should be OK with a storage or a context +[x] Avishai : Worker : hook for rejecting the dispatch message +[o] receiver / local participant : reply/forward/proceed/... mess : fix +[o] storage participant : accept string for fei +[o] => Ruote::FlowExpressionId.extract(x) +[o] fei : place engine id in fei.to_storage_id (and back) [ ] exp : exp (restricted form of eval ?) [ ] exp : case (is it necessary ?) [ ] exp : filter [ ] exp : filter-definition [x] exp : lose ? [x] exp : parameter -[ ] exp : log +[ ] exp : log : or could it be a participant ? [ ] exp : defined (not really necessary) [ ] exp : quote (not really necessary) [ ] exp : field / attribute (not really necessary) [ ] exp : variable (not really necessary) -[ ] exp : step (jump to cursor tag ?) - [ ] conditional : rprefix ! ${r:x} is perhaps sufficient -[ ] auto-participant re-apply - [ ] define without name (__result__) [ ] pooltool.ru [ ] participant dispatch thread throttling ? @@ -232,10 +249,13 @@ [ ] 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] ? [ ] tree.to_xml (require builder ?) [ ] tree.to_rb @@ -291,28 +311,29 @@ [ ] 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... [ ] at expression ? -[ ] listen to participants/errors/tags {in|out} [ ] remove abort_on_exception=true [ ] shell ? irb ? Shell.new(storage) [ ] focus on fulldup or json.dup (via fulldup ?) -[ ] implement pause engine -[ ] implement pause process +[ ] listen to participants/errors/tags {in|out} -[ ] engine.on_error = 'participant_name' // 'subprocess_name' +[x] engine.on_error = 'participant_name' // 'subprocess_name' + done at : http://github.com/jmettraux/ruote/commit/50292d954ff877f1f6615022216f346a7001b483 + `--> reverting that for now, too dangerous +[ ] should __error__ contain the tree ? +[ ] engine.on_cancel = 'participant_name' // 'subprocess_name' + [ ] "business days" plugin [ ] issue with ruote-kit and inpa participants... -[ ] let the storage participant leverage Ruote::FlowExpressionId.from_id(s) - [ ] participant :ref => '${f:nada}', :or => 'xyz' (look at OpenWFE manual, this feature already existed in there) http://www.openwfe.org/manual/ch06s02.html#expression_participant else-ref... list of participants... ref="alpha && bravo", ref="alpha||bravo" (|| parallel :( ) @@ -320,6 +341,29 @@ [ ] LocalParticipant def consume; handle; reply; end [ ] lib/ruote/part/participant_list.rb l176 better error message ! [ ] 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 + +[ ] detach / attach segments of processes +[ ] clone process ? (could be used by {de|at}tach) + +[ ] dollar.rb ${timestamp} ? + +[ ] toto :task => 'maw the lawn', :within => '3d' + +[ ] solve the ps#root_expression_for(fei) dilemma + +[ ] engine.noisy = true shortcut + +[ ] re_apply_stalled + http://groups.google.com/group/openwferu-users/browse_thread/thread/ff29f26d6b5fd135 + +[ ] wait_for(:inactive) blocks until worker is inactive + +[ ] storage0.copy_to(storage1) / migrate_to as requested by Matt Nichols