ruote 2.2.0 → 2.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG.txt +166 -1
- data/CREDITS.txt +36 -17
- data/LICENSE.txt +1 -1
- data/README.rdoc +1 -7
- data/Rakefile +38 -29
- data/TODO.txt +93 -52
- data/lib/ruote-fs.rb +3 -0
- data/lib/ruote.rb +5 -1
- data/lib/ruote/context.rb +140 -35
- data/lib/ruote/dashboard.rb +1247 -0
- data/lib/ruote/{engine → dboard}/process_error.rb +22 -2
- data/lib/ruote/dboard/process_status.rb +587 -0
- data/lib/ruote/engine.rb +6 -871
- data/lib/ruote/exp/command.rb +7 -2
- data/lib/ruote/exp/commanded.rb +2 -2
- data/lib/ruote/exp/condition.rb +38 -13
- data/lib/ruote/exp/fe_add_branches.rb +1 -1
- data/lib/ruote/exp/fe_apply.rb +1 -1
- data/lib/ruote/exp/fe_await.rb +357 -0
- data/lib/ruote/exp/fe_cancel_process.rb +17 -3
- data/lib/ruote/exp/fe_command.rb +8 -4
- data/lib/ruote/exp/fe_concurrence.rb +218 -18
- data/lib/ruote/exp/fe_concurrent_iterator.rb +71 -10
- data/lib/ruote/exp/fe_cron.rb +3 -10
- data/lib/ruote/exp/fe_cursor.rb +14 -4
- data/lib/ruote/exp/fe_define.rb +3 -1
- data/lib/ruote/exp/fe_echo.rb +1 -1
- data/lib/ruote/exp/fe_equals.rb +1 -1
- data/lib/ruote/exp/fe_error.rb +1 -1
- data/lib/ruote/exp/fe_filter.rb +163 -4
- data/lib/ruote/exp/fe_forget.rb +21 -4
- data/lib/ruote/exp/fe_given.rb +1 -1
- data/lib/ruote/exp/fe_if.rb +1 -1
- data/lib/ruote/exp/fe_inc.rb +102 -35
- data/lib/ruote/exp/fe_iterator.rb +47 -12
- data/lib/ruote/exp/fe_listen.rb +96 -11
- data/lib/ruote/exp/fe_lose.rb +31 -4
- data/lib/ruote/exp/fe_noop.rb +1 -1
- data/lib/ruote/exp/fe_on_error.rb +109 -0
- data/lib/ruote/exp/fe_once.rb +10 -19
- data/lib/ruote/exp/fe_participant.rb +90 -28
- data/lib/ruote/exp/fe_read.rb +69 -0
- data/lib/ruote/exp/fe_redo.rb +3 -2
- data/lib/ruote/exp/fe_ref.rb +57 -27
- data/lib/ruote/exp/fe_registerp.rb +1 -3
- data/lib/ruote/exp/fe_reserve.rb +1 -1
- data/lib/ruote/exp/fe_restore.rb +6 -6
- data/lib/ruote/exp/fe_save.rb +12 -19
- data/lib/ruote/exp/fe_sequence.rb +38 -2
- data/lib/ruote/exp/fe_set.rb +143 -40
- data/lib/ruote/exp/{fe_let.rb → fe_stall.rb} +7 -38
- data/lib/ruote/exp/fe_subprocess.rb +8 -2
- data/lib/ruote/exp/fe_that.rb +1 -1
- data/lib/ruote/exp/fe_undo.rb +40 -4
- data/lib/ruote/exp/fe_unregisterp.rb +1 -3
- data/lib/ruote/exp/fe_wait.rb +12 -25
- data/lib/ruote/exp/{flowexpression.rb → flow_expression.rb} +375 -229
- data/lib/ruote/exp/iterator.rb +2 -2
- data/lib/ruote/exp/merge.rb +78 -17
- data/lib/ruote/exp/ro_attributes.rb +46 -36
- data/lib/ruote/exp/ro_filters.rb +34 -8
- data/lib/ruote/exp/ro_on_x.rb +431 -0
- data/lib/ruote/exp/ro_persist.rb +19 -7
- data/lib/ruote/exp/ro_timers.rb +123 -0
- data/lib/ruote/exp/ro_variables.rb +90 -29
- data/lib/ruote/fei.rb +57 -3
- data/lib/ruote/fs.rb +3 -0
- data/lib/ruote/id/mnemo_wfid_generator.rb +30 -7
- data/lib/ruote/id/wfid_generator.rb +17 -38
- data/lib/ruote/log/default_history.rb +23 -9
- data/lib/ruote/log/fancy_printing.rb +265 -0
- data/lib/ruote/log/storage_history.rb +23 -13
- data/lib/ruote/log/wait_logger.rb +224 -17
- data/lib/ruote/observer.rb +82 -0
- data/lib/ruote/part/block_participant.rb +65 -28
- data/lib/ruote/part/code_participant.rb +81 -0
- data/lib/ruote/part/engine_participant.rb +7 -2
- data/lib/ruote/part/local_participant.rb +221 -21
- data/lib/ruote/part/no_op_participant.rb +1 -1
- data/lib/ruote/part/null_participant.rb +1 -1
- data/lib/ruote/part/participant.rb +50 -0
- data/lib/ruote/part/rev_participant.rb +178 -0
- data/lib/ruote/part/smtp_participant.rb +2 -2
- data/lib/ruote/part/storage_participant.rb +228 -60
- data/lib/ruote/part/template.rb +1 -1
- data/lib/ruote/participant.rb +2 -0
- data/lib/ruote/reader.rb +205 -68
- data/lib/ruote/reader/json.rb +49 -0
- data/lib/ruote/reader/radial.rb +303 -0
- data/lib/ruote/reader/ruby_dsl.rb +44 -9
- data/lib/ruote/reader/xml.rb +11 -8
- data/lib/ruote/receiver/base.rb +98 -45
- data/lib/ruote/storage/base.rb +104 -35
- data/lib/ruote/storage/composite_storage.rb +50 -60
- data/lib/ruote/storage/fs_storage.rb +25 -34
- data/lib/ruote/storage/hash_storage.rb +38 -36
- data/lib/ruote/svc/dispatch_pool.rb +104 -35
- data/lib/ruote/svc/dollar_sub.rb +10 -8
- data/lib/ruote/svc/error_handler.rb +108 -52
- data/lib/ruote/svc/expression_map.rb +3 -3
- data/lib/ruote/svc/participant_list.rb +160 -55
- data/lib/ruote/svc/tracker.rb +31 -31
- data/lib/ruote/svc/treechecker.rb +28 -16
- data/lib/ruote/tree_dot.rb +1 -1
- data/lib/ruote/util/deep.rb +143 -0
- data/lib/ruote/util/filter.rb +125 -18
- data/lib/ruote/util/hashdot.rb +15 -13
- data/lib/ruote/util/look.rb +1 -1
- data/lib/ruote/util/lookup.rb +60 -22
- data/lib/ruote/util/misc.rb +63 -18
- data/lib/ruote/util/mpatch.rb +53 -0
- data/lib/ruote/util/ometa.rb +1 -2
- data/lib/ruote/util/process_observer.rb +177 -0
- data/lib/ruote/util/subprocess.rb +1 -1
- data/lib/ruote/util/time.rb +2 -2
- data/lib/ruote/util/tree.rb +64 -2
- data/lib/ruote/version.rb +3 -2
- data/lib/ruote/worker.rb +421 -92
- data/lib/ruote/workitem.rb +157 -22
- data/ruote.gemspec +15 -9
- data/test/bm/ci.rb +0 -2
- data/test/bm/ici.rb +0 -2
- data/test/bm/load_26c.rb +0 -3
- data/test/bm/mega.rb +0 -2
- data/test/functional/base.rb +57 -43
- data/test/functional/concurrent_base.rb +16 -13
- data/test/functional/ct_0_concurrence.rb +7 -11
- data/test/functional/ct_1_iterator.rb +9 -11
- data/test/functional/ct_2_cancel.rb +28 -17
- data/test/functional/eft_0_flow_expression.rb +35 -0
- data/test/functional/eft_10_cancel_process.rb +1 -1
- data/test/functional/eft_11_wait.rb +13 -13
- data/test/functional/eft_12_listen.rb +199 -66
- data/test/functional/eft_13_iterator.rb +95 -29
- data/test/functional/eft_14_cursor.rb +74 -24
- data/test/functional/eft_15_loop.rb +7 -7
- data/test/functional/eft_16_if.rb +1 -1
- data/test/functional/eft_17_equals.rb +1 -1
- data/test/functional/eft_18_concurrent_iterator.rb +156 -68
- data/test/functional/eft_19_reserve.rb +15 -15
- data/test/functional/eft_1_echo.rb +1 -1
- data/test/functional/eft_20_save.rb +51 -9
- data/test/functional/eft_21_restore.rb +1 -1
- data/test/functional/eft_22_noop.rb +1 -1
- data/test/functional/eft_23_apply.rb +1 -1
- data/test/functional/eft_24_add_branches.rb +7 -8
- data/test/functional/eft_25_command.rb +1 -1
- data/test/functional/eft_26_error.rb +11 -11
- data/test/functional/eft_27_inc.rb +111 -67
- data/test/functional/eft_28_once.rb +16 -16
- data/test/functional/eft_29_cron.rb +9 -9
- data/test/functional/eft_2_sequence.rb +23 -4
- data/test/functional/eft_30_ref.rb +36 -24
- data/test/functional/eft_31_registerp.rb +24 -24
- data/test/functional/eft_32_lose.rb +46 -20
- data/test/functional/eft_34_given.rb +1 -1
- data/test/functional/eft_35_filter.rb +161 -7
- data/test/functional/eft_36_read.rb +97 -0
- data/test/functional/{eft_0_process_definition.rb → eft_37_process_definition.rb} +4 -4
- data/test/functional/eft_38_on_error.rb +195 -0
- data/test/functional/eft_39_stall.rb +35 -0
- data/test/functional/eft_3_participant.rb +77 -22
- data/test/functional/eft_40_await.rb +297 -0
- data/test/functional/eft_4_set.rb +110 -11
- data/test/functional/eft_5_subprocess.rb +27 -5
- data/test/functional/eft_6_concurrence.rb +299 -60
- data/test/functional/eft_7_forget.rb +24 -22
- data/test/functional/eft_8_undo.rb +52 -15
- data/test/functional/eft_9_redo.rb +18 -20
- data/test/functional/ft_0_worker.rb +122 -13
- data/test/functional/ft_10_dollar.rb +77 -16
- data/test/functional/ft_11_recursion.rb +9 -9
- data/test/functional/ft_12_launchitem.rb +7 -9
- data/test/functional/ft_13_variables.rb +125 -22
- data/test/functional/ft_14_re_apply.rb +112 -56
- data/test/functional/ft_15_timeout.rb +64 -33
- data/test/functional/ft_16_participant_params.rb +59 -6
- data/test/functional/ft_17_conditional.rb +68 -2
- data/test/functional/ft_18_kill.rb +48 -30
- data/test/functional/ft_19_participant_code.rb +67 -0
- data/test/functional/ft_1_process_status.rb +222 -150
- data/test/functional/ft_20_storage_participant.rb +445 -44
- data/test/functional/ft_21_forget.rb +21 -26
- data/test/functional/ft_22_process_definitions.rb +8 -6
- data/test/functional/ft_23_load_defs.rb +29 -5
- data/test/functional/ft_24_block_participant.rb +199 -20
- data/test/functional/ft_25_receiver.rb +98 -46
- data/test/functional/ft_26_participant_rtimeout.rb +34 -26
- data/test/functional/ft_27_var_indirection.rb +40 -5
- data/test/functional/ft_28_null_noop_participants.rb +5 -5
- data/test/functional/ft_29_part_template.rb +2 -2
- data/test/functional/ft_2_errors.rb +106 -74
- data/test/functional/ft_30_smtp_participant.rb +7 -7
- data/test/functional/ft_31_part_blocking.rb +11 -11
- data/test/functional/ft_32_scope.rb +50 -0
- data/test/functional/ft_33_participant_subprocess_priority.rb +3 -3
- data/test/functional/ft_34_cursor_rewind.rb +14 -14
- data/test/functional/ft_35_add_service.rb +67 -9
- data/test/functional/ft_36_storage_history.rb +92 -24
- data/test/functional/ft_37_default_history.rb +35 -23
- data/test/functional/ft_38_participant_more.rb +189 -32
- data/test/functional/ft_39_wait_for.rb +25 -25
- data/test/functional/ft_3_participant_registration.rb +235 -107
- data/test/functional/ft_40_wait_logger.rb +105 -18
- data/test/functional/ft_41_participants.rb +13 -12
- data/test/functional/ft_42_storage_copy.rb +12 -12
- data/test/functional/ft_43_participant_on_reply.rb +85 -11
- data/test/functional/ft_44_var_participant.rb +5 -5
- data/test/functional/ft_45_participant_accept.rb +3 -3
- data/test/functional/ft_46_launch_single.rb +17 -17
- data/test/functional/ft_47_wfids.rb +41 -0
- data/test/functional/ft_48_lose.rb +19 -25
- data/test/functional/ft_49_engine_on_error.rb +54 -70
- data/test/functional/ft_4_cancel.rb +84 -26
- data/test/functional/ft_50_engine_config.rb +4 -4
- data/test/functional/ft_51_misc.rb +12 -12
- data/test/functional/ft_52_case.rb +17 -17
- data/test/functional/ft_53_engine_on_terminate.rb +18 -21
- data/test/functional/ft_54_patterns.rb +18 -16
- data/test/functional/ft_55_engine_participant.rb +55 -55
- data/test/functional/ft_56_filter_attribute.rb +90 -52
- data/test/functional/ft_57_rev_participant.rb +252 -0
- data/test/functional/ft_58_workitem.rb +150 -0
- data/test/functional/ft_59_pause.rb +329 -0
- data/test/functional/ft_5_on_error.rb +430 -77
- data/test/functional/ft_60_code_participant.rb +65 -0
- data/test/functional/ft_61_trailing_fields.rb +34 -0
- data/test/functional/ft_62_exp_name_and_dollar_substitution.rb +35 -0
- data/test/functional/ft_63_participants_221.rb +458 -0
- data/test/functional/ft_64_stash.rb +41 -0
- data/test/functional/ft_65_timers.rb +313 -0
- data/test/functional/ft_66_flank.rb +133 -0
- data/test/functional/ft_67_radial_misc.rb +34 -0
- data/test/functional/ft_68_reput.rb +72 -0
- data/test/functional/ft_69_worker_info.rb +56 -0
- data/test/functional/ft_6_on_cancel.rb +189 -36
- data/test/functional/ft_70_take_and_discard_attributes.rb +94 -0
- data/test/functional/ft_71_retries.rb +144 -0
- data/test/functional/ft_72_on_terminate.rb +60 -0
- data/test/functional/ft_73_raise_msg.rb +107 -0
- data/test/functional/ft_74_respark.rb +106 -0
- data/test/functional/ft_75_context.rb +66 -0
- data/test/functional/ft_76_observer.rb +53 -0
- data/test/functional/ft_77_process_observer.rb +157 -0
- data/test/functional/ft_78_part_participant.rb +37 -0
- data/test/functional/ft_7_tags.rb +238 -50
- data/test/functional/ft_8_participant_consumption.rb +27 -21
- data/test/functional/ft_9_subprocesses.rb +48 -18
- data/test/functional/restart_base.rb +4 -6
- data/test/functional/rt_0_wait.rb +10 -10
- data/test/functional/rt_1_listen.rb +6 -6
- data/test/functional/rt_2_errors.rb +12 -12
- data/test/functional/rt_3_once.rb +17 -12
- data/test/functional/rt_4_cron.rb +17 -17
- data/test/functional/rt_5_timeout.rb +13 -13
- data/test/functional/signals.rb +103 -0
- data/test/functional/storage.rb +730 -0
- data/test/functional/storage_helper.rb +48 -35
- data/test/functional/test.rb +6 -2
- data/test/misc/idle.rb +21 -0
- data/test/misc/light.rb +29 -0
- data/test/path_helper.rb +1 -1
- data/test/test.rb +2 -5
- data/test/test_helper.rb +13 -0
- data/test/unit/test.rb +1 -4
- data/test/unit/ut_0_ruby_reader.rb +25 -9
- data/test/unit/ut_10_participants.rb +47 -0
- data/test/unit/ut_11_lookup.rb +59 -2
- data/test/unit/ut_12_wait_logger.rb +123 -0
- data/test/unit/ut_14_is_uri.rb +1 -1
- data/test/unit/ut_15_util.rb +1 -1
- data/test/unit/ut_16_reader.rb +136 -14
- data/test/unit/ut_17_merge.rb +155 -0
- data/test/unit/ut_19_part_template.rb +1 -1
- data/test/unit/ut_1_fei.rb +11 -2
- data/test/unit/ut_20_composite_storage.rb +27 -1
- data/test/unit/{ut_21_participant_list.rb → ut_21_svc_participant_list.rb} +2 -3
- data/test/unit/ut_22_filter.rb +231 -10
- data/test/unit/ut_23_svc_tracker.rb +48 -0
- data/test/unit/ut_24_radial_reader.rb +458 -0
- data/test/unit/ut_25_process_status.rb +143 -0
- data/test/unit/ut_26_deep.rb +131 -0
- data/test/unit/ut_2_dashboard.rb +114 -0
- data/test/unit/ut_3_worker.rb +54 -0
- data/test/unit/ut_4_expmap.rb +1 -1
- data/test/unit/ut_5_tree.rb +23 -23
- data/test/unit/ut_6_condition.rb +71 -29
- data/test/unit/ut_7_workitem.rb +18 -4
- data/test/unit/ut_8_tree_to_dot.rb +1 -1
- data/test/unit/ut_9_xml_reader.rb +1 -1
- metadata +142 -63
- data/jruby_issue.txt +0 -32
- data/lib/ruote/engine/process_status.rb +0 -403
- data/lib/ruote/log/pretty.rb +0 -165
- data/lib/ruote/log/test_logger.rb +0 -204
- data/lib/ruote/util/serializer.rb +0 -103
- data/phil.txt +0 -14
- data/test/functional/eft_33_let.rb +0 -31
- data/test/functional/ft_19_alias.rb +0 -33
- data/test/functional/ft_47_wfid_generator.rb +0 -54
- data/test/unit/storage.rb +0 -403
- data/test/unit/storages.rb +0 -37
- data/test/unit/ut_13_serializer.rb +0 -65
- data/test/unit/ut_18_engine.rb +0 -47
- data/test/unit/ut_3_wait_logger.rb +0 -39
data/CHANGELOG.txt
CHANGED
|
@@ -2,7 +2,172 @@
|
|
|
2
2
|
= ruote - CHANGELOG.txt
|
|
3
3
|
|
|
4
4
|
|
|
5
|
-
== ruote - 2.
|
|
5
|
+
== ruote - 2.3.0 released 2012/09/04
|
|
6
|
+
|
|
7
|
+
- Dashboard#wait_for('action' => 'apply', 'name' => 'wait')
|
|
8
|
+
- past_tags: track variables
|
|
9
|
+
- Workitem#launched_at and #sub_wf_launched_at
|
|
10
|
+
- Ruote.deep_delete and .deep_mutate
|
|
11
|
+
- Ruote::Observer (a base classing for observing a ruote engine's activity)
|
|
12
|
+
- thread['ruote_worker']
|
|
13
|
+
- Dashboard#respark(wfid, opts={})
|
|
14
|
+
- StorageBase#dump: go with YAML
|
|
15
|
+
- on_error: !immediate
|
|
16
|
+
- "kill" expression (undo/cancel alias)
|
|
17
|
+
- ${tags}, ${tag} and ${full_tag}
|
|
18
|
+
- StorageParticipant#flunk(workitem, err, *err_args)
|
|
19
|
+
- ReceiverMixin#flunk(workitem, err, *err_args)
|
|
20
|
+
- workitem: sub_wf_name and sub_wf_revision
|
|
21
|
+
- new 'raise' msg for passing back errors to worker
|
|
22
|
+
- participant#on_apply
|
|
23
|
+
- push/pop specialized aliases for inc/dec
|
|
24
|
+
- inc/dec: 'v:x' => 2 shortcut
|
|
25
|
+
- inc/dec: drop default 'v:d' and accept nested {in|de}crement
|
|
26
|
+
- 'participant_in_variable_enabled' switch
|
|
27
|
+
- make re_apply use the applied workitem by default
|
|
28
|
+
- ${mnemo_id} (along with ${expid} and ${subid})
|
|
29
|
+
- Dashboard#remove_process (idea Claudio Petasecca Donati)
|
|
30
|
+
- re_dispatch bug fix (patch by Doug Bryant)
|
|
31
|
+
- Ruote.extract_wfid(o)
|
|
32
|
+
- on_error/on_timeout: cancel/cando
|
|
33
|
+
- Worker#handle_step_error(e, msg) enhancements
|
|
34
|
+
- cancel "flavour" rebound
|
|
35
|
+
- Dashboard#logger shortcut
|
|
36
|
+
- :on_error => 'raise'
|
|
37
|
+
- :over_if bug fix (reported by Alex Wang)
|
|
38
|
+
- :merge_type => 'deep' (idea Jim MarsBomber Li)
|
|
39
|
+
- Dashboard#launch accepts :wfid "field", custom wfid
|
|
40
|
+
- kill_process expression (and on_error)
|
|
41
|
+
- the "second take" (__on_error__, __on_cancel__)
|
|
42
|
+
- Ruote.tree(&block) alias to Ruote.to_tree(&block)
|
|
43
|
+
- added 'tree' entry to error doc and error msg
|
|
44
|
+
- error handler $f:__error__: added 'tree' entry
|
|
45
|
+
- Ruote::Reader.to_expid_radial
|
|
46
|
+
- wfid_generator: dropping the @last['raw'] concept
|
|
47
|
+
- wait_for(:x, :or_error) (thanks John Roberts)
|
|
48
|
+
- concurrence over_if bug (thanks alexw668)
|
|
49
|
+
- concurrence and citerator :remaining => 'wait' (idea Pedro Visintin)
|
|
50
|
+
- set 'v:x' => 'y', :over[ride] => true/'sub'
|
|
51
|
+
- concurrence and citerator :count => -x (all but x)
|
|
52
|
+
- "await" expression, successor to "listen"
|
|
53
|
+
- root expression: __past_tags__ variable
|
|
54
|
+
- full tags
|
|
55
|
+
- concurrence and citerator: :count => 0 (immediate reply)
|
|
56
|
+
- iterator and concurrent-iterator: implicit sequence
|
|
57
|
+
- iterator: stopped creating new variable scope
|
|
58
|
+
- :vars_to_f common attribute
|
|
59
|
+
- :scope => true forces a new variable scope
|
|
60
|
+
- subprocess 'field:x' => 'y' (variables and now fields)
|
|
61
|
+
- Dashboard#worklist (alias for Dashboard#storage_participant)
|
|
62
|
+
- set: now accepting children (and behaving like a sequence)
|
|
63
|
+
- [un]set: setting __result__
|
|
64
|
+
- concurrence :wait_for => 'alpha, bravo' (idea Raphael Simon)
|
|
65
|
+
- BlockParticipant: nicer multi blocks
|
|
66
|
+
- Dashboard #cancel and #kill now accept options
|
|
67
|
+
- StorageParticipant #reserve and #delegate
|
|
68
|
+
- 'terminated/ceased' msg: include root exp variables
|
|
69
|
+
- Dashboard#worker_state[=] (running/paused/stopped)
|
|
70
|
+
- define :on_terminate => :regenerate
|
|
71
|
+
- :on_error => '5m: retry * 3, 10m: retry'
|
|
72
|
+
- :on_error => '5m: retry, 2m: retry, pass'
|
|
73
|
+
- dsub for attribute keys as well
|
|
74
|
+
- conf option: 'worker_info_enabled' (defaults to true, enabled)
|
|
75
|
+
- Dashboard#register saves list in one batch (unless :clear => true)
|
|
76
|
+
- DefaultHistory include Enumerable
|
|
77
|
+
- Dashboard#wait_for(action_name) (dispatch, cancel, reply, ...)
|
|
78
|
+
- merged TestLogger into WaitLogger
|
|
79
|
+
- :take and :discard common attributes
|
|
80
|
+
- filter: 'take' and 'discard'
|
|
81
|
+
- Participant: on_cancel -> false prevents on_cancel reply
|
|
82
|
+
- LocalParticipant #is_gone? #is_cancel[l]ed?
|
|
83
|
+
- Dashboard#worker_info
|
|
84
|
+
- msg: put_doc, low-level action
|
|
85
|
+
- participant: #rtimers, #rtimeout and #timers
|
|
86
|
+
- lose and forget expressions: aligned 'multi' behaviour
|
|
87
|
+
- concurrence and citerator: :merge_type => 'ignore'
|
|
88
|
+
- :timers error, redo/retry, undo/pass and commands
|
|
89
|
+
- :timers common attribute
|
|
90
|
+
- :flank common attribute
|
|
91
|
+
- Storage#done(worker, msg) optional method
|
|
92
|
+
- get_many :batch option (used by some storages for optimization)
|
|
93
|
+
- 'stall' expression (mostly for testing)
|
|
94
|
+
- context and worker : subscription reworked
|
|
95
|
+
- worker: 'restless_worker' option
|
|
96
|
+
- Ruote::Dashboard (will slowly phase Ruote::Engine out)
|
|
97
|
+
- :on_timeout => 'rewind', :on_timeout => 'jump to alpha'
|
|
98
|
+
- :on_error => 'rewind', :on_error => 'jump to alpha'
|
|
99
|
+
- dispatch_pool and context['participant_threads_enabled']
|
|
100
|
+
- participant params.__children__
|
|
101
|
+
- on_error expression
|
|
102
|
+
- concurrence :merge_type => 'concat' (vs 'union') (Thanks Julien France)
|
|
103
|
+
- Workitem#re_dispatch_count
|
|
104
|
+
- Engine#launch(pdef, fields, vars, root_stash)
|
|
105
|
+
- Workitem #[] amd #[]= (#lookup and #set_field shortcuts)
|
|
106
|
+
- LocalParticipant#lookup_variable(key)
|
|
107
|
+
- LocalParticipant / Receiver : stash_get / stash_put
|
|
108
|
+
- LocalParticipant implicit participant_name
|
|
109
|
+
- LocalParticipant implicit workitem, fei, flavour and fexp
|
|
110
|
+
- Participant #on_workitem, #dont_thread?, etc
|
|
111
|
+
- FlowExpression #root and #root_id
|
|
112
|
+
- dollar substitution in expression name as well
|
|
113
|
+
- Engine#replay_at_error(err_or_fei_or_wi)
|
|
114
|
+
- Engine#error(wi_or_fei)
|
|
115
|
+
- storages: #replace_engine_configuration(opts)
|
|
116
|
+
- FsStorage: saving newer configuration (Thanks Nicholas Faiz)
|
|
117
|
+
- ProcessStatus context: linking expression <-> error
|
|
118
|
+
- ProcessStatus#root_workitem
|
|
119
|
+
- ProcessStatus#leaves
|
|
120
|
+
- filter 'includes' and 'is' (Thanks Nando Sola)
|
|
121
|
+
- trailing fields (a Simone Carletti idea)
|
|
122
|
+
- concurrence vs history issue fixed (Thanks Juris Galang)
|
|
123
|
+
- unset and fields: made sure the field is removed (Thanks jpgilman)
|
|
124
|
+
- sourcify, using to_raw_source from now on
|
|
125
|
+
- filter expression and blocks
|
|
126
|
+
- set 'v:display' => 'echo', aliasing of expressions
|
|
127
|
+
- Reader.read(s): better error raised when failed to 'parse'
|
|
128
|
+
- :on_field => 'my.nested.field' now possible
|
|
129
|
+
- [concurrent-]iterator :to => 'v:x' / 'f:y' / 'y'
|
|
130
|
+
- concurrence :merge_type => 'union'
|
|
131
|
+
- Reader.to_radial(tree)
|
|
132
|
+
- Workitem#param_or_field(key) and #field_or_param(key)
|
|
133
|
+
- Workitem#param_text
|
|
134
|
+
- ProcessError#deviations (cf filter and Ruote::ValidationError)
|
|
135
|
+
- reworked (process definition) Reader
|
|
136
|
+
- filter top-level 'or'
|
|
137
|
+
- filter field => 'x|y' (or on field names)
|
|
138
|
+
- 'radial' process definitions
|
|
139
|
+
- fixed Tracker#add_tracker (2nd try) issue (Thanks Pedro Texeira)
|
|
140
|
+
- Engine#register :on_workitem / :on_reply / ...
|
|
141
|
+
- set 'v:participant' => lambda { |wi| wi.fields['x'] = 'y' }
|
|
142
|
+
- listen :to => :errors, :class => string / :message/:msg => string / regex
|
|
143
|
+
- listen :to => :errors
|
|
144
|
+
- dropped require 'json' and co from fs_storage (Thanks Torsten)
|
|
145
|
+
- cursor : 'reset' command and :reset_if attribute
|
|
146
|
+
- Engine#resume(wfid, :anyway => true) resumes any paused expression in a
|
|
147
|
+
given process
|
|
148
|
+
- Engine#pause(fei, :breakpoint => true) pauses only one expression (and not
|
|
149
|
+
its children)
|
|
150
|
+
- CompositeStorage#delete_schedule fix (Thanks Greg)
|
|
151
|
+
- read 'http://'|'file', :to => 'f:a' / :to => 'v:b'
|
|
152
|
+
- save :to => 'f:a' / :to => 'v:b'
|
|
153
|
+
- pause(fei/wfid), resume(fei/wfid)
|
|
154
|
+
- participant list, multiple participants with same regex now ok, allowing
|
|
155
|
+
for cascading participants (at consume and at on_error)
|
|
156
|
+
- register block : fixed issue with lonely pname and block
|
|
157
|
+
- register_participant : after/before/over
|
|
158
|
+
- register block : now clearing by default
|
|
159
|
+
- fixed issue with deep set and unset (Thanks Nando Sola)
|
|
160
|
+
- improved conditional evaluation for dollar notation
|
|
161
|
+
- register block : catchall and catch_all
|
|
162
|
+
- Workitem #wf_name and #wf_revision
|
|
163
|
+
- StorageParticipant :skip and :limit issues (Thanks Jan Topiński)
|
|
164
|
+
- StorageParticipant #proceed deprecates #reply
|
|
165
|
+
- fix for :if => '${a}' when a like '456ab' (Thanks John Le)
|
|
166
|
+
- StorageParticipant :count => true uniformization (Thanks Jan Topiński)
|
|
167
|
+
- StorageParticipant#by_fei (alias for #[])
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
== ruote - 2.2.0 released 2011/03/01
|
|
6
171
|
|
|
7
172
|
- Engine#participant(name) returns an instance of any participant
|
|
8
173
|
- :filter => 'participant_name' (consume(wi) / filter(fields))
|
data/CREDITS.txt
CHANGED
|
@@ -1,21 +1,30 @@
|
|
|
1
1
|
|
|
2
|
-
CREDITS
|
|
3
|
-
=======
|
|
2
|
+
= CREDITS
|
|
4
3
|
|
|
5
|
-
Ruote is an open source Ruby workflow engine
|
|
4
|
+
(Ruote is an open source Ruby workflow engine)
|
|
6
5
|
|
|
7
6
|
|
|
8
|
-
The main project team
|
|
9
|
-
---------------------
|
|
7
|
+
== The main project team
|
|
10
8
|
|
|
11
9
|
John Mettraux - http://jmettraux.wordpress.com
|
|
12
10
|
Torsten Schoenebaum - http://github.com/tosch
|
|
13
11
|
Kenneth Kalmer - http://www.opensourcery.co.za
|
|
14
12
|
|
|
15
13
|
|
|
16
|
-
Contributors
|
|
17
|
-
|
|
18
|
-
|
|
14
|
+
== Contributors
|
|
15
|
+
|
|
16
|
+
Gvozden Neskovic - https://github.com/ladenBrain
|
|
17
|
+
Hartog C. de Mik - https://github.com/coffeeaddict
|
|
18
|
+
Doug Bryant - re_dispatch bug and 'dispatched' << 'workitem'
|
|
19
|
+
Sjors - https://github.com/xtr3me - missing "concat" tactic for concurrence
|
|
20
|
+
Islam Amer - https://github.com/iamer
|
|
21
|
+
Nathan Stults - https://github.com/PlasticLizard - lots of help
|
|
22
|
+
Akeem Adeniji - https://github.com/akeem - add_type and composite storage
|
|
23
|
+
Bjoern Boettcher - https://github.com/doITdistributed - example fixing
|
|
24
|
+
Julien France - https://github.com/xaop - concat/union merge types enhancements
|
|
25
|
+
Simone Carletti - documentation, bug hunting and various ideas
|
|
26
|
+
Raphael Simon - error handling + filters design
|
|
27
|
+
Nando Sola - lots of help
|
|
19
28
|
Neil Pennell - http://github.com/npennel
|
|
20
29
|
Patrick Gannon - fix for compatibility with ruote-mongodb
|
|
21
30
|
Fix Peña - 'jump to' bug patch
|
|
@@ -31,7 +40,6 @@ Nicholas Faiz - http://github.com/biv
|
|
|
31
40
|
Chris Beer - http://github.com/cbeer
|
|
32
41
|
Enrico Bianco - http://github.com/enricob
|
|
33
42
|
Andrew Timberlake - timeout 'at'
|
|
34
|
-
Raphael Simon - error handling mechanism design and QA
|
|
35
43
|
Maarten Oelering - bug reports and test cases
|
|
36
44
|
Nick Petrella - socket listener issues and Python interactivity, dollar patch
|
|
37
45
|
Sakaguchi Masa - japanese website and articles in Japanese magazines
|
|
@@ -44,10 +52,23 @@ Frederic Piccand
|
|
|
44
52
|
Richard Jennings
|
|
45
53
|
|
|
46
54
|
|
|
47
|
-
Feedback
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
55
|
+
== Feedback
|
|
56
|
+
|
|
57
|
+
tsdeng - https://github.com/tsdeng
|
|
58
|
+
Klaus Schmidtmamn - sub_wf_name inspiration
|
|
59
|
+
chaofan - https://github.com/chaofoan
|
|
60
|
+
Nagender Reddy Paduru - various design discussions
|
|
61
|
+
Chris Conley - https://github.com/chrisconley
|
|
62
|
+
Jim "MarsBomber" Li - :merge_type => 'deep'
|
|
63
|
+
John Roberts - idea for wait_for(:x, :or_error)
|
|
64
|
+
Alex - https://github.com/alexw668
|
|
65
|
+
Pedro Visintin - :remaining => 'wait'
|
|
66
|
+
Christophe Malaurie - quickstart fix
|
|
67
|
+
Juris Galang - https://github.com/jurisgalang (concurrence vs history issue)
|
|
68
|
+
John 'jpgilman' - timed_out and name of the participant
|
|
69
|
+
Pedro Texeira - add_tracker issue
|
|
70
|
+
Greg Lazarev - composite storage issues
|
|
71
|
+
Jan Topiński - https://github.com/simcha
|
|
51
72
|
Iuri Gagnidze - ProcessStatus#definition_name issues, Engine#leftovers
|
|
52
73
|
John Le - https://github.com/sandbox
|
|
53
74
|
Sean Johnson - https://github.com/belucid
|
|
@@ -59,7 +80,6 @@ Claudio Petasecca Donati - many help
|
|
|
59
80
|
Daniel Neighman "hassox" - :on_timeout => "error" and many issue reports
|
|
60
81
|
Eric Platon - engine.launch_single idea
|
|
61
82
|
Marc Lee - storage.clear consistency
|
|
62
|
-
Nathan Stults - enhanced dollar substitution and service
|
|
63
83
|
Don H. French - Engine#register_from_dir idea
|
|
64
84
|
Kaspar Schiess - http://github.com/kschiess
|
|
65
85
|
Oleg (foenixx) - many suggestions and bug reports
|
|
@@ -91,8 +111,7 @@ Jon "Compensator" - first report of the "yamlextras" issue
|
|
|
91
111
|
(see the mailing list at : http://groups.google.com/group/openwferu-users )
|
|
92
112
|
|
|
93
113
|
|
|
94
|
-
Last but not least
|
|
95
|
-
------------------
|
|
114
|
+
= Last but not least
|
|
96
115
|
|
|
97
|
-
Many thanks to the authors, the contributors and the community of the Ruby language, the various json gems, the builder, mailtrap, sourcify, parsetree gems, and many more.
|
|
116
|
+
Many thanks to the authors, the contributors and the community of the Ruby language, the various json gems, the builder, mailtrap, sourcify, parsetree, parslet gems, and many more.
|
|
98
117
|
|
data/LICENSE.txt
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
|
|
2
|
-
Copyright (c) 2001-
|
|
2
|
+
Copyright (c) 2001-2012, John Mettraux, jmettraux@gmail.com
|
|
3
3
|
|
|
4
4
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
5
5
|
of this software and associated documentation files (the "Software"), to deal
|
data/README.rdoc
CHANGED
|
@@ -17,12 +17,6 @@ grab ruote
|
|
|
17
17
|
gem install ruote
|
|
18
18
|
gem install yajl-ruby
|
|
19
19
|
|
|
20
|
-
Note : the json gem has a serious bug :
|
|
21
|
-
|
|
22
|
-
http://github.com/flori/json/issues#issue/21
|
|
23
|
-
|
|
24
|
-
So yajl-ruby is seriously recommended.
|
|
25
|
-
|
|
26
20
|
Then
|
|
27
21
|
|
|
28
22
|
require 'rubygems'
|
|
@@ -66,7 +60,7 @@ Then
|
|
|
66
60
|
|
|
67
61
|
== test suite
|
|
68
62
|
|
|
69
|
-
see http://github.com/jmettraux/ruote/tree/
|
|
63
|
+
see http://github.com/jmettraux/ruote/tree/master/test
|
|
70
64
|
|
|
71
65
|
|
|
72
66
|
== license
|
data/Rakefile
CHANGED
|
@@ -6,7 +6,7 @@ require 'rubygems/user_interaction' if Gem::RubyGemsVersion == '1.5.0'
|
|
|
6
6
|
|
|
7
7
|
require 'rake'
|
|
8
8
|
require 'rake/clean'
|
|
9
|
-
require '
|
|
9
|
+
#require 'rdoc/task'
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
#
|
|
@@ -54,36 +54,37 @@ task :push => :build do
|
|
|
54
54
|
end
|
|
55
55
|
|
|
56
56
|
|
|
57
|
+
##
|
|
58
|
+
## rdoc
|
|
59
|
+
##
|
|
60
|
+
## make sure to have rdoc 2.5.x to run that
|
|
57
61
|
#
|
|
58
|
-
#
|
|
62
|
+
#Rake::RDocTask.new do |rd|
|
|
59
63
|
#
|
|
60
|
-
#
|
|
61
|
-
|
|
62
|
-
Rake::RDocTask.new do |rd|
|
|
63
|
-
|
|
64
|
-
rd.main = 'README.rdoc'
|
|
65
|
-
rd.rdoc_dir = 'rdoc'
|
|
66
|
-
|
|
67
|
-
rd.rdoc_files.include(
|
|
68
|
-
'README.rdoc', 'CHANGELOG.txt', 'CREDITS.txt', 'lib/**/*.rb')
|
|
69
|
-
|
|
70
|
-
rd.title = "#{GEMSPEC.name} #{GEMSPEC.version}"
|
|
71
|
-
end
|
|
72
|
-
|
|
73
|
-
|
|
64
|
+
# rd.main = 'README.rdoc'
|
|
65
|
+
# rd.rdoc_dir = 'rdoc'
|
|
74
66
|
#
|
|
75
|
-
#
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
67
|
+
# rd.rdoc_files.include(
|
|
68
|
+
# 'README.rdoc', 'CHANGELOG.txt', 'CREDITS.txt', 'lib/**/*.rb')
|
|
69
|
+
#
|
|
70
|
+
# rd.title = "#{GEMSPEC.name} #{GEMSPEC.version}"
|
|
71
|
+
#end
|
|
72
|
+
#
|
|
73
|
+
##
|
|
74
|
+
## upload_rdoc
|
|
75
|
+
#
|
|
76
|
+
#desc %{
|
|
77
|
+
# upload the rdoc to rubyforge
|
|
78
|
+
#}
|
|
79
|
+
#task :upload_rdoc => [ :clean, :rdoc ] do
|
|
80
|
+
#
|
|
81
|
+
# account = 'jmettraux@rubyforge.org'
|
|
82
|
+
# webdir = '/var/www/gforge-projects/ruote'
|
|
83
|
+
#
|
|
84
|
+
# sh "rsync -azv -e ssh rdoc #{account}:#{webdir}/"
|
|
85
|
+
#end
|
|
86
|
+
#
|
|
87
|
+
# leverage rdoc.info instead
|
|
87
88
|
|
|
88
89
|
|
|
89
90
|
desc %{
|
|
@@ -93,7 +94,15 @@ task :doublons do
|
|
|
93
94
|
|
|
94
95
|
lines = `grep -r " def test_" test/ | sort`.split("\n")
|
|
95
96
|
lines.inject(nil) do |previous, line|
|
|
96
|
-
|
|
97
|
+
puts line if line == previous
|
|
98
|
+
line
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
lines = `grep -r "TestCase" test/`.split("\n")
|
|
102
|
+
lines = lines.collect { |line| [ line, line.split(/\.rb:/).last ] }
|
|
103
|
+
lines = lines.sort_by { |line, klass| klass }
|
|
104
|
+
lines.inject(nil) do |previous, (line, klass)|
|
|
105
|
+
puts klass if line == previous
|
|
97
106
|
line
|
|
98
107
|
end
|
|
99
108
|
end
|
data/TODO.txt
CHANGED
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
[o] logger service
|
|
4
4
|
[o] test logger
|
|
5
5
|
[o] object full_dup
|
|
6
|
-
[o] engine#remove_service
|
|
7
6
|
[o] :receive or :receive_back for when workitems come back from participant
|
|
8
7
|
[o] emit :processes :launch :wfid
|
|
9
8
|
[o] emit :processes :terminate :wfid only
|
|
@@ -139,7 +138,7 @@
|
|
|
139
138
|
[o] reserve : perhaps it's better to have an atomic get and set variable...
|
|
140
139
|
[o] clean up lookup_var/set_var into locate_var/lookup_var/set_var
|
|
141
140
|
[x] Sun Hao's up-to-date-tree idea ${f:participant_name} ps#resolved_tree
|
|
142
|
-
[o] error : when an error expression is cancelled, should the err get
|
|
141
|
+
[o] error : when an error expression is cancelled, should the err get removed
|
|
143
142
|
from the process status ? yes.
|
|
144
143
|
[o] file logger / history service
|
|
145
144
|
[o] engine.process_history(wfid)
|
|
@@ -287,35 +286,57 @@
|
|
|
287
286
|
[o] DefaultHistory : add a method to list all wfids (for by_wfid)
|
|
288
287
|
[x] issue with ruote-kit and inpa participants...
|
|
289
288
|
[x] .nil? .empty? .set? for "${x}.nil?"
|
|
290
|
-
|
|
291
|
-
[
|
|
289
|
+
[o] BlockParticipant : proc.to_source thanks to sourcify
|
|
290
|
+
[o] register :overwrite { ... } ? (wipes all the participants)
|
|
291
|
+
[o] pause engine
|
|
292
|
+
[o] pause process instance
|
|
293
|
+
[o] filter : blank? equivalent (maybe it already exists)
|
|
294
|
+
[o] eft_18 weak with jruby-1.5.1 and 1.5.6
|
|
295
|
+
[o] participant : consume/cancel/accept?/on_reply without params
|
|
296
|
+
[o] participant : consume -> on_workitem
|
|
297
|
+
[o] remove abort_on_exception=true
|
|
298
|
+
[o] concurrence / concurrent_iterator : merge_type => 'discard' / 'ignore'
|
|
299
|
+
keep track of the first "process sub id" ?
|
|
300
|
+
[o] register :toto, :accept? => lambda { |workitem| ... }
|
|
301
|
+
[o] register :toto, :do_not_thread => lambda { |workitem| ... }
|
|
302
|
+
[o] :on_timeout => :rewind (break, jump to x)...
|
|
303
|
+
[o] :on_error => :rewind (break, jump to x)...
|
|
304
|
+
[o] worker identification/registration
|
|
305
|
+
http://groups.google.com/group/openwferu-users/browse_thread/thread/c51b94fb8bb685da
|
|
306
|
+
[o] worker shutdown initiated by engine (same thread)
|
|
307
|
+
[o] set :var => 'y' { '2342342' }
|
|
308
|
+
[o] wfid generator UTC?
|
|
309
|
+
[o] iterator: drop the need for the sequence --> implicit sequence
|
|
310
|
+
[o] citerator: drop the need for the sequence --> implicit sequence
|
|
311
|
+
[o] move test/unit/storage[s].rb to test/functional/
|
|
312
|
+
[x] exp : defined (not really necessary)
|
|
313
|
+
[x] exp : quote (not really necessary)
|
|
314
|
+
[x] exp : field / attribute (not really necessary)
|
|
315
|
+
[x] exp : variable (not really necessary)
|
|
316
|
+
[o] expression :concurrent => true idea (reply immediately, cancellable)
|
|
317
|
+
`- covered by :flank => true
|
|
318
|
+
[o] concurrence: allow empty
|
|
319
|
+
[o] citerator: allow empty
|
|
320
|
+
|
|
321
|
+
[ ] exp : at expression ? comparable to cron
|
|
322
|
+
[x] exp : exp (restricted form of eval ?) (is it apply ?)
|
|
292
323
|
[x] exp : filter
|
|
293
324
|
[x] exp : filter-definition
|
|
294
325
|
[x] exp : parameter
|
|
295
326
|
[ ] exp : log : or could it be a participant ?
|
|
296
|
-
|
|
297
|
-
[ ] exp : defined (not really necessary)
|
|
298
|
-
[ ] exp : quote (not really necessary)
|
|
299
|
-
[ ] exp : field / attribute (not really necessary)
|
|
300
|
-
[ ] exp : variable (not really necessary)
|
|
327
|
+
[x] wait_for(:participant) what about 'dispatched' instead of 'dispatch' ?
|
|
301
328
|
|
|
302
329
|
[ ] define without name (__result__)
|
|
303
330
|
|
|
304
331
|
[ ] participant dispatch thread throttling ?
|
|
305
332
|
|
|
306
333
|
[ ] tailcall
|
|
334
|
+
- is it really necessary? The storage is the limit.
|
|
335
|
+
|
|
307
336
|
[ ] subprocesses participants (alias ?)
|
|
308
337
|
|
|
309
338
|
[ ] recursion : should cope with modified trees 'main' => :tree ??
|
|
310
339
|
|
|
311
|
-
[ ] set :var => 'y' { '2342342' }
|
|
312
|
-
|
|
313
|
-
[ ] pause engine
|
|
314
|
-
[ ] pause process instance
|
|
315
|
-
|
|
|
316
|
-
would it mean something like placing a paused list in the storage
|
|
317
|
-
and fetching it all the time ?
|
|
318
|
-
|
|
319
340
|
[ ] file/fs_listener [example] ?
|
|
320
341
|
|
|
321
342
|
[ ] concurrence / concurrent_iterator : merge plugin ?
|
|
@@ -324,23 +345,18 @@
|
|
|
324
345
|
[ ] restore : implement merge strategies
|
|
325
346
|
|
|
326
347
|
[ ] one file, no multi-process, persistence ? LateHashStorage ?
|
|
348
|
+
[ ] one file per process ?
|
|
327
349
|
|
|
328
350
|
[ ] apply : ruby or xml (instead of just ast) ?
|
|
329
351
|
|
|
330
|
-
[ ] unify ruote/util/json and ruote/util/serializer
|
|
331
|
-
|
|
332
352
|
[ ] history.to_tree ?
|
|
333
353
|
|
|
334
354
|
[ ] Ruote.process_definition ... Ruote.method_missing or sequence ?
|
|
335
355
|
|
|
336
|
-
[ ] concurrence / concurrent_iterator : merge_type => 'discard' / 'ignore'
|
|
337
|
-
keep track of the first "process sub id" ?
|
|
338
|
-
|
|
339
356
|
[ ] @children diff/undiff idea ?
|
|
340
357
|
|
|
341
|
-
[
|
|
342
|
-
[ ] :
|
|
343
|
-
|
|
358
|
+
[o] cursor : 'reset' command ?
|
|
359
|
+
[ ] cursor : 'restart' alias for 'reset' ?
|
|
344
360
|
[ ] repeat : have a counter in a variable (:to => x maybe) (subprocessid ?)
|
|
345
361
|
|
|
346
362
|
[ ] engine.cancel_forgotten_children(wfid) ?
|
|
@@ -350,13 +366,11 @@
|
|
|
350
366
|
[ ] double-check on_cancel rewrite (ft_1_process_status)
|
|
351
367
|
|
|
352
368
|
[ ] verify get_last/get_raw logic, no + 0.0001...
|
|
353
|
-
[
|
|
369
|
+
[x] spare 1 get_msg by caching msg (but keep 'deleting')
|
|
354
370
|
[ ] [un]set_var : via message ? should be ok like that... Not much traffic there
|
|
355
371
|
|
|
356
372
|
[ ] empty iterator or concurrent-iterator, log ? crash ? empty while...
|
|
357
373
|
|
|
358
|
-
[ ] remove abort_on_exception=true
|
|
359
|
-
|
|
360
374
|
[ ] shell ? irb ? Shell.new(storage)
|
|
361
375
|
[ ] focus on fulldup or json.dup (via fulldup ?)
|
|
362
376
|
|
|
@@ -372,8 +386,6 @@
|
|
|
372
386
|
|
|
373
387
|
[ ] LocalParticipant def consume; handle; reply; end
|
|
374
388
|
|
|
375
|
-
[ ] find better solution than "get all schedules"
|
|
376
|
-
|
|
377
389
|
[ ] worker : minuteman, make it cron triggerable
|
|
378
390
|
trap SIGUSR1 or USR2
|
|
379
391
|
maybe it's expensive to fire a [worker] process each minute
|
|
@@ -387,7 +399,7 @@
|
|
|
387
399
|
[ ] re_apply_stalled
|
|
388
400
|
http://groups.google.com/group/openwferu-users/browse_thread/thread/ff29f26d6b5fd135
|
|
389
401
|
|
|
390
|
-
[ ] engine.purge (arts style
|
|
402
|
+
[ ] engine.purge (arts style: worker.@msgs = [])
|
|
391
403
|
|
|
392
404
|
[ ] http://ruote.rubyforge.org/irclogs/ruote_2010-07-07.txt
|
|
393
405
|
configuration issue
|
|
@@ -406,8 +418,6 @@
|
|
|
406
418
|
|
|
407
419
|
[x] cursor : previous_command field ? not really necessary with :break_if => x
|
|
408
420
|
|
|
409
|
-
[ ] register :overwrite { ... } ? (wipes all the participants)
|
|
410
|
-
|
|
411
421
|
[ ] storage_participant.by_participant([ a, b, c, d ], opts)
|
|
412
422
|
storage_participant.by_participant(a, b, c, d, opts) too
|
|
413
423
|
leverage things like
|
|
@@ -421,24 +431,21 @@
|
|
|
421
431
|
[ ] engine.force_reply_to_parent(fei) ?
|
|
422
432
|
but, this is a cancel_expression(fei)
|
|
423
433
|
|
|
424
|
-
[ ] at expression ? :names :wait, :at
|
|
425
|
-
|
|
426
434
|
[ ] concurrence : add_child ?
|
|
427
435
|
How would that impact concurrent_iterator's add_branches ?
|
|
428
436
|
[ ] detach / attach segments of processes
|
|
429
|
-
[
|
|
437
|
+
[x] clone process ? (could be used by {de|at}tach)
|
|
438
|
+
what about participants ?
|
|
430
439
|
|
|
431
440
|
[ ] console for InformatiQ / console or dashboard or tool ?
|
|
432
441
|
[ ] pooltool.ru : there are already storage copy methods
|
|
433
442
|
|
|
434
|
-
[ ] BlockParticipant : proc.to_source thanks to sourcify
|
|
435
|
-
|
|
436
443
|
[o] doc : enhance doc on conditional (and, empty, null, ...)
|
|
437
444
|
[o] doc : document engine.on_{error|terminate}
|
|
438
445
|
[o] doc : document on_error = retry and on_error = pass
|
|
439
446
|
[ ] doc : add piece of doc about running workers on their own
|
|
440
447
|
|
|
441
|
-
[
|
|
448
|
+
[o] listen to errors {in|out}
|
|
442
449
|
well... there is already on_error...
|
|
443
450
|
but on_error is for nested stuff...
|
|
444
451
|
[o] listen to tags {entering|leaving}
|
|
@@ -450,30 +457,64 @@
|
|
|
450
457
|
it's :where and it's not documented :-( but it's tested :-)
|
|
451
458
|
[o] engine#on_terminate, similar to on_error
|
|
452
459
|
[o] let engine#on_error use svc/tracker.rb instead of 'notifications'
|
|
460
|
+
[ ] process supervise other process, listen...
|
|
461
|
+
launch a process with a designed 'supervisor' ?
|
|
462
|
+
listen to termination, listen to error, for a given process ?
|
|
463
|
+
[ ] events for put_schedule/delete_schedule/trigger_schedule
|
|
464
|
+
|
|
465
|
+
[ ] use 'raise' instead of error_handler.action_handle
|
|
466
|
+
(ruote-amqp, ruote-beanstalk)
|
|
453
467
|
|
|
454
468
|
[ ] ruote cheatsheet
|
|
455
469
|
[ ] ruote slides
|
|
456
470
|
|
|
457
|
-
[ ] process supervise other process, listen...
|
|
458
|
-
launch a process with a designed 'supervisor' ?
|
|
459
|
-
|
|
460
471
|
[x] ci : ruote-amqp
|
|
461
|
-
[
|
|
472
|
+
[o] ci : ruote-mon
|
|
462
473
|
[ ] ci : jruby
|
|
463
474
|
|
|
464
|
-
[ ]
|
|
465
|
-
|
|
475
|
+
[ ] ruote-doozer?
|
|
476
|
+
|
|
477
|
+
[ ] StorageParticipant#proceed : raise if workitem not found ?
|
|
478
|
+
[ ] StorageParticipant#proceed : accept fei ?
|
|
466
479
|
[ ] Engine#reply(wi), should remove from storage...
|
|
467
480
|
|
|
468
|
-
[
|
|
481
|
+
[o] @engine.context['participant_in_variable_enabled'] = true
|
|
482
|
+
[ ] @engine.register(x, :trusted => true, &block)
|
|
483
|
+
[ ] security service ? context['x'] but then, more advanced behaviours
|
|
484
|
+
[ ] subaltern
|
|
469
485
|
|
|
470
|
-
[
|
|
486
|
+
[x] investigate 1.9's json
|
|
487
|
+
[ ] Parslet for conditions?
|
|
488
|
+
[ ] subaltern for conditions?
|
|
489
|
+
[ ] enhance radial/Parslet error messages (cf Raphael)
|
|
471
490
|
|
|
472
|
-
[ ]
|
|
473
|
-
|
|
474
|
-
|
|
491
|
+
[ ] concurrence: reply_to_parent instead of cease when no more children ?
|
|
492
|
+
https://github.com/jmettraux/ruote/blob/1f9add961f90049ea951b8940622fbe8d136c45f/lib/ruote/exp/fe_concurrence.rb#L304-310
|
|
493
|
+
|
|
494
|
+
[ ] cursor: deeper jumps
|
|
495
|
+
http://groups.google.com/group/openwferu-users/browse_thread/thread/a973f0ea5fbb1a96
|
|
496
|
+
|
|
497
|
+
[ ] on_cancel like on_error expression
|
|
498
|
+
[ ] on_timeout like on_error expression (or make timeout an error)
|
|
499
|
+
|
|
500
|
+
[ ] #get_msgs to cover #get_schedules (make #get_schedules empty)
|
|
501
|
+
| | |
|
|
502
|
+
[ ] find better solution than "get all schedules"
|
|
503
|
+
... or discard get_schedules completely
|
|
504
|
+
|
|
505
|
+
[ ] eft_6_concurrence : 2 Fs when running standalone...
|
|
506
|
+
|
|
507
|
+
[ ] get rid of the "web" test[s]
|
|
508
|
+
|
|
509
|
+
[.] remove #dump from all storage implementations
|
|
510
|
+
|
|
511
|
+
[ ] engine#remove_service
|
|
475
512
|
|
|
476
|
-
|
|
513
|
+
== 3.0
|
|
514
|
+
[ ] deprecate get_schedules
|
|
515
|
+
(let the storage include triggered schedules as msgs)
|
|
516
|
+
[ ] deprecate "trackers as variables"
|
|
477
517
|
|
|
478
|
-
|
|
518
|
+
== 4.0
|
|
519
|
+
[ ] deprecate listen (await?) or make it an alias of await?
|
|
479
520
|
|