ruote 0.9.20 → 2.1.1
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/.gitignore +3 -0
- data/CHANGELOG.txt +8 -0
- data/CREDITS.txt +65 -0
- data/LICENSE.txt +21 -0
- data/README.rdoc +76 -0
- data/Rakefile +68 -0
- data/TODO.txt +287 -0
- data/examples/flickr_report.rb +108 -0
- data/examples/ruote_quickstart.rb +42 -0
- data/examples/web_first_page.rb +57 -0
- data/lib/ruote.rb +6 -0
- data/lib/ruote/context.rb +136 -0
- data/lib/ruote/engine.rb +339 -0
- data/lib/{openwfe/expressions/merge.rb → ruote/engine/process_error.rb} +35 -24
- data/lib/ruote/engine/process_status.rb +236 -0
- data/lib/ruote/evt/tracker.rb +110 -0
- data/lib/ruote/exp/command.rb +88 -0
- data/lib/ruote/exp/commanded.rb +69 -0
- data/lib/ruote/exp/condition.rb +120 -0
- data/lib/ruote/exp/expression_map.rb +103 -0
- data/lib/ruote/exp/fe_add_branches.rb +138 -0
- data/lib/ruote/exp/fe_apply.rb +85 -0
- data/lib/ruote/exp/fe_cancel_process.rb +74 -0
- data/lib/ruote/exp/fe_command.rb +163 -0
- data/lib/ruote/exp/fe_concurrence.rb +273 -0
- data/lib/ruote/exp/fe_concurrent_iterator.rb +204 -0
- data/lib/ruote/exp/fe_cron.rb +141 -0
- data/lib/ruote/exp/fe_cursor.rb +270 -0
- data/lib/ruote/exp/fe_define.rb +112 -0
- data/lib/{openwfe/engine/fs_engine.rb → ruote/exp/fe_echo.rb} +24 -18
- data/lib/ruote/exp/fe_equals.rb +115 -0
- data/lib/ruote/exp/fe_error.rb +90 -0
- data/lib/ruote/exp/fe_forget.rb +81 -0
- data/lib/ruote/exp/fe_if.rb +124 -0
- data/lib/ruote/exp/fe_inc.rb +205 -0
- data/lib/ruote/exp/fe_iterator.rb +193 -0
- data/lib/ruote/exp/fe_listen.rb +197 -0
- data/lib/{openwfe/engine.rb → ruote/exp/fe_noop.rb} +20 -3
- data/lib/ruote/exp/fe_participant.rb +202 -0
- data/lib/ruote/exp/fe_redo.rb +83 -0
- data/lib/ruote/exp/fe_reserve.rb +126 -0
- data/lib/ruote/exp/fe_restore.rb +102 -0
- data/lib/ruote/exp/fe_save.rb +79 -0
- data/lib/ruote/exp/fe_sequence.rb +60 -0
- data/lib/ruote/exp/fe_set.rb +160 -0
- data/lib/ruote/exp/fe_subprocess.rb +203 -0
- data/lib/{openwfe/expool/errors.rb → ruote/exp/fe_undo.rb} +28 -30
- data/lib/ruote/exp/fe_wait.rb +92 -0
- data/lib/ruote/exp/fe_when.rb +214 -0
- data/lib/ruote/exp/flowexpression.rb +624 -0
- data/lib/{openwfe/omixins.rb → ruote/exp/iterator.rb} +41 -23
- data/lib/ruote/exp/merge.rb +66 -0
- data/lib/{openwfe/util/ometa.rb → ruote/exp/raw.rb} +16 -16
- data/lib/ruote/exp/ro_attributes.rb +203 -0
- data/lib/ruote/exp/ro_persist.rb +139 -0
- data/lib/ruote/exp/ro_variables.rb +192 -0
- data/lib/ruote/fei.rb +131 -0
- data/lib/{openwfe/version.rb → ruote/id/mnemo_wfid_generator.rb} +17 -3
- data/lib/{openwfe/extras/engine/dm_engine.rb → ruote/id/wfid_generator.rb} +34 -22
- data/lib/ruote/log/fs_history.rb +181 -0
- data/lib/ruote/log/test_logger.rb +254 -0
- data/lib/ruote/log/wait_logger.rb +67 -0
- data/lib/ruote/parser.rb +205 -0
- data/lib/ruote/parser/ruby_dsl.rb +85 -0
- data/lib/ruote/parser/xml.rb +92 -0
- data/lib/ruote/part/block_participant.rb +101 -0
- data/lib/ruote/part/dispatch_pool.rb +84 -0
- data/lib/ruote/part/hash_participant.rb +91 -0
- data/lib/ruote/part/local_participant.rb +52 -0
- data/lib/{openwfe/engine/tc_engine.rb → ruote/part/no_op_participant.rb} +19 -14
- data/lib/{openwfe/engine/tt_engine.rb → ruote/part/null_participant.rb} +17 -18
- data/lib/ruote/part/participant_list.rb +201 -0
- data/lib/ruote/part/smtp_participant.rb +135 -0
- data/lib/ruote/part/storage_participant.rb +140 -0
- data/lib/{openwfe/util/irb.rb → ruote/part/template.rb} +23 -31
- data/lib/ruote/participant.rb +6 -0
- data/lib/ruote/receiver/base.rb +73 -0
- data/lib/ruote/storage/base.rb +210 -0
- data/lib/ruote/storage/fs_storage.rb +89 -0
- data/lib/ruote/storage/hash_storage.rb +171 -0
- data/lib/ruote/tree_dot.rb +85 -0
- data/lib/{openwfe → ruote}/util/dollar.rb +47 -63
- data/lib/{openwfe/extras/singlecon.rb → ruote/util/hashdot.rb} +40 -19
- data/lib/ruote/util/look.rb +129 -0
- data/lib/ruote/util/lookup.rb +92 -0
- data/lib/ruote/util/misc.rb +119 -0
- data/lib/ruote/util/ometa.rb +55 -0
- data/lib/ruote/util/serializer.rb +103 -0
- data/lib/ruote/util/time.rb +90 -0
- data/lib/ruote/util/tree.rb +58 -0
- data/lib/{openwfe → ruote}/util/treechecker.rb +10 -16
- data/lib/ruote/worker.rb +375 -0
- data/lib/ruote/workitem.rb +176 -0
- data/phil.txt +14 -0
- data/ruote.gemspec +278 -0
- data/test/README.rdoc +15 -0
- data/test/bm/ci.rb +55 -0
- data/test/bm/ici.rb +71 -0
- data/test/bm/juuman.rb +54 -0
- data/test/bm/load_26c.rb +25 -7
- data/test/bm/mega.rb +64 -0
- data/test/bm/seq_thousand.rb +31 -0
- data/test/bm/t.rb +35 -0
- data/test/functional/base.rb +88 -99
- data/test/functional/concurrent_base.rb +91 -0
- data/test/functional/crunner.rb +26 -0
- data/test/functional/ct_0_concurrence.rb +68 -0
- data/test/functional/ct_1_iterator.rb +61 -0
- data/test/functional/ct_2_cancel.rb +69 -0
- data/test/functional/eft_0_process_definition.rb +46 -15
- data/test/functional/eft_10_cancel_process.rb +46 -0
- data/test/functional/eft_11_wait.rb +97 -0
- data/test/functional/eft_12_listen.rb +271 -0
- data/test/functional/eft_13_iterator.rb +267 -0
- data/test/functional/eft_14_cursor.rb +278 -0
- data/test/functional/eft_15_loop.rb +67 -0
- data/test/functional/eft_16_if.rb +171 -0
- data/test/functional/eft_17_equals.rb +55 -0
- data/test/functional/eft_18_concurrent_iterator.rb +361 -0
- data/test/functional/eft_19_reserve.rb +136 -0
- data/test/functional/eft_1_echo.rb +59 -0
- data/test/functional/eft_20_save.rb +76 -0
- data/test/functional/eft_21_restore.rb +61 -0
- data/test/functional/eft_22_noop.rb +28 -0
- data/test/functional/eft_23_apply.rb +145 -0
- data/test/functional/eft_24_add_branches.rb +86 -0
- data/test/functional/eft_25_command.rb +28 -0
- data/test/functional/eft_26_error.rb +77 -0
- data/test/functional/eft_27_inc.rb +279 -0
- data/test/functional/eft_28_when.rb +109 -0
- data/test/functional/eft_29_cron.rb +64 -0
- data/test/functional/eft_2_sequence.rb +38 -27
- data/test/functional/eft_3_participant.rb +122 -0
- data/test/functional/eft_4_set.rb +230 -0
- data/test/functional/eft_5_subprocess.rb +164 -0
- data/test/functional/eft_6_concurrence.rb +279 -0
- data/test/functional/eft_7_forget.rb +61 -0
- data/test/functional/eft_8_undo.rb +78 -0
- data/test/functional/eft_9_redo.rb +46 -0
- data/test/functional/ft_0_worker.rb +46 -0
- data/test/functional/ft_10_dollar.rb +90 -0
- data/test/functional/ft_11_recursion.rb +111 -0
- data/test/functional/ft_12_launchitem.rb +37 -0
- data/test/functional/ft_13_variables.rb +131 -0
- data/test/functional/ft_14_re_apply.rb +133 -0
- data/test/functional/ft_15_timeout.rb +205 -0
- data/test/functional/ft_16_participant_params.rb +47 -0
- data/test/functional/ft_17_conditional.rb +76 -0
- data/test/functional/ft_18_kill.rb +85 -0
- data/test/functional/ft_19_alias.rb +33 -0
- data/test/functional/ft_1_process_status.rb +410 -20
- data/test/functional/ft_20_storage_participant.rb +46 -0
- data/test/functional/ft_21_forget.rb +42 -0
- data/test/functional/ft_22_process_definitions.rb +80 -0
- data/test/functional/ft_23_load_defs.rb +55 -0
- data/test/functional/ft_24_block_participants.rb +59 -0
- data/test/functional/ft_25_receiver.rb +87 -0
- data/test/functional/ft_26_participant_timeout.rb +49 -0
- data/test/functional/ft_27_var_indirection.rb +93 -0
- data/test/functional/ft_28_null_noop_participants.rb +51 -0
- data/test/functional/ft_29_part_template.rb +78 -0
- data/test/functional/ft_2_errors.rb +320 -0
- data/test/functional/ft_30_smtp_participant.rb +69 -0
- data/test/functional/ft_31_part_blocking.rb +70 -0
- data/test/functional/ft_32_history.rb +184 -0
- data/test/functional/ft_33_participant_subprocess_priority.rb +32 -0
- data/test/functional/ft_34_cursor_rewind.rb +98 -0
- data/test/functional/ft_35_add_service.rb +48 -0
- data/test/functional/ft_3_participant_registration.rb +107 -0
- data/test/functional/ft_4_cancel.rb +72 -0
- data/test/functional/ft_5_on_error.rb +155 -0
- data/test/functional/ft_6_on_cancel.rb +165 -0
- data/test/functional/ft_7_tags.rb +88 -0
- data/test/functional/ft_8_participant_consumption.rb +75 -0
- data/test/functional/ft_9_subprocesses.rb +145 -0
- data/test/functional/restart_base.rb +17 -26
- data/test/functional/rt_0_wait.rb +55 -0
- data/test/functional/rt_1_listen.rb +56 -0
- data/test/functional/rt_2_errors.rb +56 -0
- data/test/functional/rt_3_when.rb +70 -0
- data/test/functional/rt_4_cron.rb +63 -0
- data/test/functional/rt_5_timeout.rb +60 -0
- data/test/functional/rtest.rb +8 -0
- data/test/functional/storage_helper.rb +79 -0
- data/test/functional/test.rb +23 -11
- data/test/mpc_test.rb +29 -0
- data/test/path_helper.rb +4 -2
- data/test/pdef.xml +7 -0
- data/test/test_helper.rb +2 -30
- data/test/unit/storages.rb +13 -0
- data/test/unit/test.rb +2 -11
- data/test/unit/ut_0_ruby_parser.rb +120 -0
- data/test/unit/ut_11_lookup.rb +51 -0
- data/test/unit/ut_13_serializer.rb +65 -0
- data/test/unit/ut_14_is_uri.rb +28 -0
- data/test/unit/ut_15_util.rb +34 -0
- data/test/unit/ut_16_parser.rb +100 -0
- data/test/unit/ut_17_storage.rb +122 -0
- data/test/unit/ut_1_fei.rb +20 -0
- data/test/unit/ut_2_wfidgen.rb +21 -0
- data/test/unit/ut_3_wait_logger.rb +41 -0
- data/test/unit/ut_4_expmap.rb +20 -0
- data/test/unit/ut_5_tree.rb +54 -0
- data/test/unit/ut_6_condition.rb +138 -0
- data/test/unit/ut_7_workitem.rb +21 -0
- data/test/unit/ut_8_tree_to_dot.rb +72 -0
- data/test/unit/ut_9_xml_parser.rb +61 -0
- metadata +246 -253
- data/README.txt +0 -36
- data/bin/validate-workflow.rb +0 -89
- data/examples/about_state.rb +0 -81
- data/examples/bigflow.rb +0 -19
- data/examples/csv_weather.rb +0 -23
- data/examples/engine_template.rb +0 -222
- data/examples/flowtracing.rb +0 -24
- data/examples/homeworkreview.rb +0 -68
- data/examples/kotoba.rb +0 -22
- data/examples/mano_tracker.rb +0 -172
- data/examples/openwferu.rb +0 -60
- data/examples/quickstart.rb +0 -87
- data/examples/quotereporter.rb +0 -150
- data/examples/simple.rb +0 -56
- data/lib/openwfe.rb +0 -27
- data/lib/openwfe/contextual.rb +0 -120
- data/lib/openwfe/def.rb +0 -37
- data/lib/openwfe/engine/engine.rb +0 -455
- data/lib/openwfe/engine/expool_methods.rb +0 -113
- data/lib/openwfe/engine/file_persisted_engine.rb +0 -84
- data/lib/openwfe/engine/launch_methods.rb +0 -245
- data/lib/openwfe/engine/listener_methods.rb +0 -128
- data/lib/openwfe/engine/lookup_methods.rb +0 -156
- data/lib/openwfe/engine/participant_methods.rb +0 -141
- data/lib/openwfe/engine/status_methods.rb +0 -382
- data/lib/openwfe/engine/update_exp_methods.rb +0 -119
- data/lib/openwfe/expool/def_parser.rb +0 -196
- data/lib/openwfe/expool/errorjournal.rb +0 -294
- data/lib/openwfe/expool/expool_pause_methods.rb +0 -87
- data/lib/openwfe/expool/expressionpool.rb +0 -941
- data/lib/openwfe/expool/expstorage.rb +0 -370
- data/lib/openwfe/expool/fs_expstorage.rb +0 -302
- data/lib/openwfe/expool/history.rb +0 -278
- data/lib/openwfe/expool/journal.rb +0 -210
- data/lib/openwfe/expool/journal_replay.rb +0 -305
- data/lib/openwfe/expool/representation.rb +0 -105
- data/lib/openwfe/expool/tc_expstorage.rb +0 -239
- data/lib/openwfe/expool/threaded_expstorage.rb +0 -163
- data/lib/openwfe/expool/tt_expstorage.rb +0 -55
- data/lib/openwfe/expool/wfidgen.rb +0 -370
- data/lib/openwfe/expool/yaml_errorjournal.rb +0 -187
- data/lib/openwfe/expressions/condition.rb +0 -226
- data/lib/openwfe/expressions/environment.rb +0 -232
- data/lib/openwfe/expressions/expression_map.rb +0 -248
- data/lib/openwfe/expressions/expression_tree.rb +0 -265
- data/lib/openwfe/expressions/fe_cancel.rb +0 -89
- data/lib/openwfe/expressions/fe_command.rb +0 -237
- data/lib/openwfe/expressions/fe_concurrence.rb +0 -599
- data/lib/openwfe/expressions/fe_cron.rb +0 -197
- data/lib/openwfe/expressions/fe_cursor.rb +0 -200
- data/lib/openwfe/expressions/fe_define.rb +0 -146
- data/lib/openwfe/expressions/fe_do.rb +0 -181
- data/lib/openwfe/expressions/fe_equals.rb +0 -273
- data/lib/openwfe/expressions/fe_error.rb +0 -103
- data/lib/openwfe/expressions/fe_filter.rb +0 -112
- data/lib/openwfe/expressions/fe_filter_definition.rb +0 -151
- data/lib/openwfe/expressions/fe_fqv.rb +0 -231
- data/lib/openwfe/expressions/fe_http.rb +0 -198
- data/lib/openwfe/expressions/fe_if.rb +0 -287
- data/lib/openwfe/expressions/fe_iterator.rb +0 -128
- data/lib/openwfe/expressions/fe_listen.rb +0 -327
- data/lib/openwfe/expressions/fe_losfor.rb +0 -102
- data/lib/openwfe/expressions/fe_misc.rb +0 -374
- data/lib/openwfe/expressions/fe_participant.rb +0 -231
- data/lib/openwfe/expressions/fe_reserve.rb +0 -192
- data/lib/openwfe/expressions/fe_save.rb +0 -255
- data/lib/openwfe/expressions/fe_sequence.rb +0 -102
- data/lib/openwfe/expressions/fe_set.rb +0 -121
- data/lib/openwfe/expressions/fe_step.rb +0 -146
- data/lib/openwfe/expressions/fe_subprocess.rb +0 -150
- data/lib/openwfe/expressions/fe_timeout.rb +0 -107
- data/lib/openwfe/expressions/fe_wait.rb +0 -183
- data/lib/openwfe/expressions/fe_when.rb +0 -118
- data/lib/openwfe/expressions/filter.rb +0 -85
- data/lib/openwfe/expressions/flowexpression.rb +0 -872
- data/lib/openwfe/expressions/iterator.rb +0 -206
- data/lib/openwfe/expressions/raw.rb +0 -330
- data/lib/openwfe/expressions/rprocdef.rb +0 -373
- data/lib/openwfe/expressions/time.rb +0 -314
- data/lib/openwfe/expressions/timeout.rb +0 -184
- data/lib/openwfe/expressions/value.rb +0 -100
- data/lib/openwfe/extras/engine/ar_engine.rb +0 -58
- data/lib/openwfe/extras/engine/db_persisted_engine.rb +0 -74
- data/lib/openwfe/extras/expool/ar_expstorage.rb +0 -337
- data/lib/openwfe/extras/expool/db_errorjournal.rb +0 -165
- data/lib/openwfe/extras/expool/db_expstorage.rb +0 -73
- data/lib/openwfe/extras/expool/db_history.rb +0 -163
- data/lib/openwfe/extras/expool/dm_expstorage.rb +0 -327
- data/lib/openwfe/extras/listeners/jabber_listeners.rb +0 -102
- data/lib/openwfe/extras/listeners/jabberlisteners.rb +0 -26
- data/lib/openwfe/extras/listeners/sqs_listeners.rb +0 -128
- data/lib/openwfe/extras/misc/activityfeed.rb +0 -249
- data/lib/openwfe/extras/misc/basecamp.rb +0 -485
- data/lib/openwfe/extras/misc/jabber_common.rb +0 -122
- data/lib/openwfe/extras/participants/active_participants.rb +0 -724
- data/lib/openwfe/extras/participants/active_resource_participants.rb +0 -213
- data/lib/openwfe/extras/participants/activeparticipants.rb +0 -3
- data/lib/openwfe/extras/participants/ar_participants.rb +0 -285
- data/lib/openwfe/extras/participants/atomfeed_participants.rb +0 -158
- data/lib/openwfe/extras/participants/atompub_participants.rb +0 -252
- data/lib/openwfe/extras/participants/basecamp_participants.rb +0 -73
- data/lib/openwfe/extras/participants/decision_participants.rb +0 -113
- data/lib/openwfe/extras/participants/jabber_participants.rb +0 -147
- data/lib/openwfe/extras/participants/jabberparticipants.rb +0 -3
- data/lib/openwfe/extras/participants/sqs_participants.rb +0 -108
- data/lib/openwfe/extras/participants/twitter_participants.rb +0 -162
- data/lib/openwfe/filterdef.rb +0 -277
- data/lib/openwfe/flowexpressionid.rb +0 -396
- data/lib/openwfe/listeners/listener.rb +0 -86
- data/lib/openwfe/listeners/listeners.rb +0 -135
- data/lib/openwfe/logging.rb +0 -108
- data/lib/openwfe/participants.rb +0 -5
- data/lib/openwfe/participants/mail_participants.rb +0 -216
- data/lib/openwfe/participants/participant.rb +0 -142
- data/lib/openwfe/participants/participant_map.rb +0 -245
- data/lib/openwfe/participants/participants.rb +0 -381
- data/lib/openwfe/participants/soap_participants.rb +0 -121
- data/lib/openwfe/participants/store_participants.rb +0 -249
- data/lib/openwfe/participants/yaml_filestorage.rb +0 -216
- data/lib/openwfe/representations.rb +0 -770
- data/lib/openwfe/rexml.rb +0 -44
- data/lib/openwfe/rudefinitions.rb +0 -114
- data/lib/openwfe/service.rb +0 -92
- data/lib/openwfe/tools/flowtracer.rb +0 -63
- data/lib/openwfe/util/json.rb +0 -55
- data/lib/openwfe/util/observable.rb +0 -119
- data/lib/openwfe/util/workqueue.rb +0 -125
- data/lib/openwfe/util/xml.rb +0 -270
- data/lib/openwfe/utils.rb +0 -484
- data/lib/openwfe/workitem.rb +0 -541
- data/lib/openwfe/worklist/storelocks.rb +0 -277
- data/lib/openwfe/worklist/storeparticipant.rb +0 -6
- data/lib/openwfe/worklist/worklist.rb +0 -283
- data/lib/pooltool.ru +0 -311
- data/test/ar_test_connection.rb +0 -63
- data/test/bm/fatxml.rb +0 -70
- data/test/dm_test_connection.rb +0 -11
- data/test/extras/base.rb +0 -3
- data/test/extras/et_0_sqs.rb +0 -37
- data/test/extras/et_jabber_test.rb +0 -226
- data/test/extras/test.rb +0 -16
- data/test/functional/db_ft_0_ar_participants.rb +0 -136
- data/test/functional/eft_10_unset.rb +0 -60
- data/test/functional/eft_11_sleep.rb +0 -95
- data/test/functional/eft_12_wait.rb +0 -57
- data/test/functional/eft_13_cursor.rb +0 -139
- data/test/functional/eft_14_loop.rb +0 -36
- data/test/functional/eft_15_undo.rb +0 -77
- data/test/functional/eft_16_redo.rb +0 -88
- data/test/functional/eft_1_print.rb +0 -57
- data/test/functional/eft_3_equals.rb +0 -98
- data/test/functional/eft_4_if.rb +0 -96
- data/test/functional/eft_5_eval.rb +0 -89
- data/test/functional/eft_6_reval.rb +0 -101
- data/test/functional/eft_7_exp.rb +0 -47
- data/test/functional/eft_8_log.rb +0 -50
- data/test/functional/eft_9_set.rb +0 -132
- data/test/functional/engine_helper.rb +0 -122
- data/test/functional/ft_0_vars_at_launch.rb +0 -27
- data/test/functional/ft_2_file_listener.rb +0 -45
- data/test/functional/ft_3_on_cancel.rb +0 -171
- data/test/functional/ft_4_on_error.rb +0 -220
- data/test/functional/ft_5_process_uri.rb +0 -82
- data/test/functional/ft_6_process_status.rb +0 -62
- data/test/functional/ft_7_parameters.rb +0 -103
- data/test/functional/ft_8_dollar.rb +0 -53
- data/test/functional/ft_9_register_participants.rb +0 -119
- data/test/functional/rft_0_sleep.rb +0 -76
- data/test/unit/ut_0_fei.rb +0 -166
- data/test/unit/ut_10_lookup_attribute.rb +0 -86
- data/test/unit/ut_11_filter.rb +0 -124
- data/test/unit/ut_12_conditional.rb +0 -162
- data/test/unit/ut_13_xmlutil.rb +0 -57
- data/test/unit/ut_14_var_field_lookup.rb +0 -85
- data/test/unit/ut_15_fe_att_lookup.rb +0 -55
- data/test/unit/ut_16_expstorage_findexp.rb +0 -38
- data/test/unit/ut_17_representations.rb +0 -330
- data/test/unit/ut_17b_representations_hash.rb +0 -97
- data/test/unit/ut_18_store_lock.rb +0 -77
- data/test/unit/ut_1_wfid.rb +0 -104
- data/test/unit/ut_2_utils.rb +0 -53
- data/test/unit/ut_3_expmap.rb +0 -65
- data/test/unit/ut_4_fulldup.rb +0 -163
- data/test/unit/ut_5_observable.rb +0 -132
- data/test/unit/ut_6_treechecker.rb +0 -101
- data/test/unit/ut_7_parser_ruby.rb +0 -344
- data/test/unit/ut_7b_parser_ruby.rb +0 -56
- data/test/unit/ut_8_parser_description.rb +0 -77
- data/test/unit/ut_9_workitem.rb +0 -72
data/.gitignore
ADDED
data/CHANGELOG.txt
ADDED
data/CREDITS.txt
ADDED
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
|
|
2
|
+
CREDITS
|
|
3
|
+
=======
|
|
4
|
+
|
|
5
|
+
Ruote (OpenWFEru) is an open source Ruby workflow (and sometimes BPM) engine.
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
The main project team
|
|
9
|
+
---------------------
|
|
10
|
+
|
|
11
|
+
John Mettraux http://jmettraux.wordpress.com
|
|
12
|
+
Kenneth Kalmer http://www.opensourcery.co.za
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
Contributors
|
|
16
|
+
------------
|
|
17
|
+
|
|
18
|
+
Nicholas Faiz - http://github.com/biv
|
|
19
|
+
Chris Beer - http://github.com/cbeer
|
|
20
|
+
Enrico Bianco - http://github.com/enricob
|
|
21
|
+
Andrew Timberlake - timeout 'at'
|
|
22
|
+
Torsten Schoenebaum - ActiveResourceParticipant and more
|
|
23
|
+
Raphael Simon - error handling mechanism design and QA
|
|
24
|
+
Maarten Oelering - bug reports and test cases
|
|
25
|
+
Nick Petrella - socket listener issues and Python interactivity, dollar patch
|
|
26
|
+
Sakaguchi Masa - japanese website and articles in Japanese magazines
|
|
27
|
+
Patrice Cappelaere - lots of feedback and ideas
|
|
28
|
+
Tomaso Tosolini - database persisted engine implementation and patches
|
|
29
|
+
Alain Hoang (configuration managaer)
|
|
30
|
+
Matt Zukowski (senior developer)
|
|
31
|
+
Jamandru Reynolds (http://geometron.net)
|
|
32
|
+
Frederic Piccand
|
|
33
|
+
Richard Jennings
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
Feedback
|
|
37
|
+
--------
|
|
38
|
+
|
|
39
|
+
Francisco Kiko - "is set" issue
|
|
40
|
+
David Goldhirsch - EM participant block
|
|
41
|
+
dlamotte - set :val => nil
|
|
42
|
+
jpr5 + asm
|
|
43
|
+
Daniel Neighman "hassox" - :on_timeout => "error"
|
|
44
|
+
Jason Allen - multi-instance considerations
|
|
45
|
+
Petia Wohed - workflow patterns implementation evaluation
|
|
46
|
+
Ralph DeGuelle - sleep silent death report
|
|
47
|
+
Leo Venegas - various bug reports
|
|
48
|
+
Corin Moss - sync launch and ruote-rest balancing
|
|
49
|
+
Scott Sproule - missing read() method in rufus-verbs fopen()
|
|
50
|
+
Aye Thu - missing 'atom-tools' dependency
|
|
51
|
+
Machiel Groeneveld - missing 'rufus-mnemo' dependency
|
|
52
|
+
Harshal Hayat - :on_field => :executions idea
|
|
53
|
+
Ralf KaoticEntity - concurrence mix feedback
|
|
54
|
+
Graeme Lockley - every jobs {re/un}scheduling
|
|
55
|
+
JimJin - various feedback and bug reports
|
|
56
|
+
Andreas Baumann - bug reports and test cases
|
|
57
|
+
Fu Zhang - csv tables 'accumulate' and 'range' ideas
|
|
58
|
+
Lee Fyock - suggested the Scheduler 'tag' feature.
|
|
59
|
+
Art Schumer - cron scheduler bug
|
|
60
|
+
ara.t.howard on the ruby talk ml pointed out a weakness in scheduler.
|
|
61
|
+
Tomek "Tomash" Stachewicz - scheduler feedback
|
|
62
|
+
Jon "Compensator" - first report of the "yamlextras" issue
|
|
63
|
+
|
|
64
|
+
(see the mailing list at : http://groups.google.com/group/openwferu-users )
|
|
65
|
+
|
data/LICENSE.txt
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
|
|
2
|
+
Copyright (c) 2001-2010, John Mettraux, jmettraux@gmail.com
|
|
3
|
+
|
|
4
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
5
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
6
|
+
in the Software without restriction, including without limitation the rights
|
|
7
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
8
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
9
|
+
furnished to do so, subject to the following conditions:
|
|
10
|
+
|
|
11
|
+
The above copyright notice and this permission notice shall be included in
|
|
12
|
+
all copies or substantial portions of the Software.
|
|
13
|
+
|
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
15
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
16
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
17
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
18
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
19
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
20
|
+
THE SOFTWARE.
|
|
21
|
+
|
data/README.rdoc
ADDED
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
|
|
2
|
+
= ruote
|
|
3
|
+
|
|
4
|
+
Ruote is a Ruby workflow engine. It's thus a workflow definition interpreter. If you're enterprisey, you might say business process definition.
|
|
5
|
+
|
|
6
|
+
Instances of these definitions are meant to run for a long time, so Ruote is oriented towards persistency / modifiability instead of transience / performance like a regular interpreter is. A Ruote engine may run multiple instances of workflow definitions.
|
|
7
|
+
|
|
8
|
+
Persistent mostly means that you can stop Ruote and later restart it without losing processes. Modifiability means that you can modify a workflow instance on the fly.
|
|
9
|
+
|
|
10
|
+
Process definitions are mainly describing how workitems are routed to participants. These participants may represent worklists for users or group of users, pieces of code, ...
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
== usage
|
|
14
|
+
|
|
15
|
+
require 'rubygems'
|
|
16
|
+
require 'ruote'
|
|
17
|
+
require 'ruote/storage/fs_storage'
|
|
18
|
+
|
|
19
|
+
# preparing the engine
|
|
20
|
+
|
|
21
|
+
engine = Ruote::Engine.new(
|
|
22
|
+
Ruote::Worker.new(
|
|
23
|
+
Ruote::FsStorage.new('ruote_work')))
|
|
24
|
+
|
|
25
|
+
# registering participants
|
|
26
|
+
|
|
27
|
+
engine.register_participant :alpha do |workitem|
|
|
28
|
+
workitem.fields['message'] = { 'text' => 'hello !', 'author' => 'Alice' }
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
engine.register_participant :bravo do |workitem|
|
|
32
|
+
puts "I received a message from #{workitem.fields['message']['author']}"
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
# defining a process
|
|
36
|
+
|
|
37
|
+
pdef = Ruote.process_definition :name => 'test' do
|
|
38
|
+
sequence do
|
|
39
|
+
participant :alpha
|
|
40
|
+
participant :bravo
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
# launching, creating a process instance
|
|
45
|
+
|
|
46
|
+
wfid = engine.launch(pdef)
|
|
47
|
+
|
|
48
|
+
engine.wait_for(wfid)
|
|
49
|
+
# blocks current thread until our process instance terminates
|
|
50
|
+
|
|
51
|
+
# => 'I received a message from Alice'
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
== test suite
|
|
55
|
+
|
|
56
|
+
see http://github.com/jmettraux/ruote/tree/ruote2.1/test
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
== license
|
|
60
|
+
|
|
61
|
+
MIT
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
== Links
|
|
65
|
+
|
|
66
|
+
http://ruote.rubyforge.org
|
|
67
|
+
http://github.com/jmettraux/ruote
|
|
68
|
+
|
|
69
|
+
http://jmettraux.wordpress.com (blog)
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
== feedback
|
|
73
|
+
|
|
74
|
+
mailing list : http://groups.google.com/group/openwferu-users
|
|
75
|
+
irc : irc.freenode.net #ruote
|
|
76
|
+
|
data/Rakefile
ADDED
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
|
|
2
|
+
require 'rubygems'
|
|
3
|
+
require 'rake'
|
|
4
|
+
|
|
5
|
+
$:.unshift( File.join(File.dirname(__FILE__), 'lib') )
|
|
6
|
+
require File.join(File.dirname(__FILE__), %w[ lib ruote worker.rb ])
|
|
7
|
+
|
|
8
|
+
begin
|
|
9
|
+
|
|
10
|
+
require 'jeweler'
|
|
11
|
+
|
|
12
|
+
Jeweler::Tasks.new do |gem|
|
|
13
|
+
|
|
14
|
+
gem.version = Ruote::VERSION
|
|
15
|
+
gem.name = 'ruote'
|
|
16
|
+
gem.summary = 'an open source ruby workflow engine'
|
|
17
|
+
gem.description = %{
|
|
18
|
+
ruote is an open source ruby workflow engine.
|
|
19
|
+
}
|
|
20
|
+
gem.email = 'jmettraux@gmail.com'
|
|
21
|
+
gem.homepage = 'http://ruote.rubyforge.org'
|
|
22
|
+
gem.authors = [ 'John Mettraux', 'Kenneth Kalmer' ]
|
|
23
|
+
gem.rubyforge_project = 'ruote'
|
|
24
|
+
gem.test_file = 'test/test.rb'
|
|
25
|
+
|
|
26
|
+
gem.add_dependency 'rufus-cloche', '>= 0.1.6'
|
|
27
|
+
gem.add_dependency 'rufus-dollar'
|
|
28
|
+
gem.add_dependency 'rufus-json'
|
|
29
|
+
gem.add_dependency 'rufus-lru'
|
|
30
|
+
gem.add_dependency 'rufus-mnemo', '>= 1.1.0'
|
|
31
|
+
gem.add_dependency 'rufus-scheduler', '>= 2.0.3'
|
|
32
|
+
gem.add_dependency 'rufus-treechecker', '>= 1.0.3'
|
|
33
|
+
|
|
34
|
+
gem.add_development_dependency 'json'
|
|
35
|
+
gem.add_development_dependency 'yard'
|
|
36
|
+
|
|
37
|
+
# Gem::Specification http://www.rubygems.org/read/chapter/20
|
|
38
|
+
end
|
|
39
|
+
Jeweler::GemcutterTasks.new
|
|
40
|
+
rescue LoadError
|
|
41
|
+
puts 'Jeweler (or a dependency) not available. Install it with: gem install jeweler'
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
begin
|
|
45
|
+
require 'yard'
|
|
46
|
+
YARD::Rake::YardocTask.new do |doc|
|
|
47
|
+
doc.options = [ '-o', 'ruote_rdoc', '--title', "ruote #{Ruote::VERSION}" ]
|
|
48
|
+
end
|
|
49
|
+
rescue LoadError
|
|
50
|
+
task :yard do
|
|
51
|
+
abort 'YARD is not available. In order to run yardoc, you must: sudo gem install yard'
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
require 'rake/clean'
|
|
56
|
+
CLEAN.include('pkg', 'rdoc', 'work', 'logs')
|
|
57
|
+
|
|
58
|
+
task :default => [ :clean ]
|
|
59
|
+
|
|
60
|
+
desc 'Upload the documentation to rubyforge'
|
|
61
|
+
task :upload_rdoc => :rdoc do
|
|
62
|
+
sh %{
|
|
63
|
+
rsync -azv -e ssh \
|
|
64
|
+
ruote_rdoc \
|
|
65
|
+
jmettraux@rubyforge.org:/var/www/gforge-projects/ruote/
|
|
66
|
+
}
|
|
67
|
+
end
|
|
68
|
+
|
data/TODO.txt
ADDED
|
@@ -0,0 +1,287 @@
|
|
|
1
|
+
|
|
2
|
+
[o] port load26 (requires BlockParticipant)
|
|
3
|
+
[o] logger service
|
|
4
|
+
[o] test logger
|
|
5
|
+
[o] object full_dup
|
|
6
|
+
[o] engine#remove_service
|
|
7
|
+
[o] :receive or :receive_back for when workitems come back from participant
|
|
8
|
+
[o] emit :processes :launch :wfid
|
|
9
|
+
[o] emit :processes :terminate :wfid only
|
|
10
|
+
[o] arch doc
|
|
11
|
+
[o] verbose always on
|
|
12
|
+
[o] ev : :participants :register/:unregister
|
|
13
|
+
[o] test logger always on for tests (in-memory only)
|
|
14
|
+
[o] NullParticipant
|
|
15
|
+
[o] NoOpParticipant
|
|
16
|
+
[o] rufus-dollar
|
|
17
|
+
[o] variables in ProcessStatus (process level only)
|
|
18
|
+
[o] ProcessStatus#tree
|
|
19
|
+
[o] subprocess binding
|
|
20
|
+
[o] subprocess lookup
|
|
21
|
+
[o] participant lookup
|
|
22
|
+
[o] event : launch_sub
|
|
23
|
+
[o] event : :processes, :cancelled ?
|
|
24
|
+
[o] concurrence : over_if
|
|
25
|
+
[o] pool cleanup
|
|
26
|
+
[o] fexp : created_time
|
|
27
|
+
[o] ps : launched_time
|
|
28
|
+
[o] ps : #tags
|
|
29
|
+
[o] wi test (and fix) ${f:xyz}
|
|
30
|
+
[o] wi#to_h #from_h
|
|
31
|
+
[o] wi.params
|
|
32
|
+
[o] self rec for [main] process
|
|
33
|
+
[o] fexp.modified_time
|
|
34
|
+
[o] wfid_gen : rufus-mnemo
|
|
35
|
+
[o] fs_error_journal
|
|
36
|
+
[o] fs_error_journal : restart test
|
|
37
|
+
[o] do errors get removed after being replayed ? yes.
|
|
38
|
+
[o] cache storage
|
|
39
|
+
[o] fs storage
|
|
40
|
+
[o] tag (which implies variables)
|
|
41
|
+
[o] event : upon setting tag !
|
|
42
|
+
[o] event : upon leaving tag
|
|
43
|
+
[o] undo
|
|
44
|
+
[o] redo
|
|
45
|
+
[o] cancel-process (exp)
|
|
46
|
+
[o] cancel_process
|
|
47
|
+
[o] cancel
|
|
48
|
+
[o] on_error
|
|
49
|
+
[o] on_cancel
|
|
50
|
+
[o] iterator
|
|
51
|
+
[o] iterator : break, cancel, ...
|
|
52
|
+
[o] cursor
|
|
53
|
+
[o] cursor : jump to tag
|
|
54
|
+
[o] loop
|
|
55
|
+
[o] if
|
|
56
|
+
[o] equals
|
|
57
|
+
[o] unset
|
|
58
|
+
[o] cursor/loop/iterator : break-if rewind-if
|
|
59
|
+
[o] stop passing full exp in message, except for expression updates
|
|
60
|
+
[x] engine#reload
|
|
61
|
+
[o] participants shutdown
|
|
62
|
+
[o] stalled [participant] expressions restart (apply/reply ?)
|
|
63
|
+
"re-apply on reload"
|
|
64
|
+
http://groups.google.com/group/openwferu-users/browse_thread/thread/c2aa4b53d1664d45
|
|
65
|
+
[x] workitem.__result__ / why, the workitem itself is the result
|
|
66
|
+
[o] tracker
|
|
67
|
+
[o] sleep
|
|
68
|
+
[o] listen
|
|
69
|
+
[o] listen wfid="x"
|
|
70
|
+
[o] exploded scheduler
|
|
71
|
+
[x] wfid --> piid (stick with the funny old name)
|
|
72
|
+
[o] persisted tracker
|
|
73
|
+
[o] wfidgen.shutdown (close wfidgen.last)
|
|
74
|
+
[o] conditional for everybody
|
|
75
|
+
[o] timeout for everybody
|
|
76
|
+
[o] __timed_out__ = true ? (wi.fields)
|
|
77
|
+
[o] engine.processes()
|
|
78
|
+
[o] kill_process != cancel_process (need a way to not trigger on_cancel)
|
|
79
|
+
[o] pdef.to_dot (a beginning)
|
|
80
|
+
[o] @in_cancel, @in_error --> @state (active|cancelling|killing)
|
|
81
|
+
[o] wait
|
|
82
|
+
[o] listen
|
|
83
|
+
[o] Jason Allen's check about concurrence
|
|
84
|
+
[x] on_cancel => 'error' NO
|
|
85
|
+
[o] event on [un]setting variable
|
|
86
|
+
[o] condition : != ~= >= ....
|
|
87
|
+
[o] fs_participant
|
|
88
|
+
[o] participant : do thread (and do_not_thread)
|
|
89
|
+
[o] add test for error replay in participant
|
|
90
|
+
[o] forget : participant ? subprocess ? everybody
|
|
91
|
+
[o] Ruote.VERSION = "2.0.0" for Kenneth
|
|
92
|
+
[o] on_timeout => 'part|sub' (idea by hassox)
|
|
93
|
+
[o] on_timeout => 'error' (idea by hassox)
|
|
94
|
+
[o] exp : concurrent-iterator < concurrence
|
|
95
|
+
[o] exp : reserve
|
|
96
|
+
[o] exp : unset
|
|
97
|
+
[o] exp : save
|
|
98
|
+
[o] exp : restore (and its set-fields alias)
|
|
99
|
+
[o] participant : if EM is present use next_ or defer instead of Thread.new
|
|
100
|
+
[o] XML process definitions
|
|
101
|
+
[o] remote process definitions
|
|
102
|
+
[o] json process definitions
|
|
103
|
+
[o] check nested ${f:a.b.c}
|
|
104
|
+
[o] test : participant in error timeout (error should cancel timeout)
|
|
105
|
+
[o] nested set wi.fields['a.b.0'] = x
|
|
106
|
+
[o] nested save wi.fields['a.b.0'] = x
|
|
107
|
+
[o] parser.rb : test security check
|
|
108
|
+
[o] add Ruote::Launchitem
|
|
109
|
+
[o] participant#cancel pass flavour as well nil|:kill|:timeout
|
|
110
|
+
[o] BlockParticipant : |workitem, fexp|
|
|
111
|
+
[o] listeners
|
|
112
|
+
[o] engine.wait_for
|
|
113
|
+
[o] func tests : wire assert_no_errors back in
|
|
114
|
+
[o] timeout set by participant [implementation]
|
|
115
|
+
[o] test for wfids of errors in subprocesses !
|
|
116
|
+
[o] Ruote::Exp:: namespace for expressions
|
|
117
|
+
[o] exp : apply (ex-eval)
|
|
118
|
+
[o] apply : attributes to variables
|
|
119
|
+
[o] subprocess : attributes to variables
|
|
120
|
+
[o] concurrent_iterator :times => X
|
|
121
|
+
[o] iterator defaults to :to_v => 'i'
|
|
122
|
+
[o] concurrent_iterator defaults to :to_v => 'i'
|
|
123
|
+
[o] set "f:x" => "blah"; set "v:y" => [ 1, 2 ] (defaults to f:)
|
|
124
|
+
[o] subprocess :ref => uri
|
|
125
|
+
[o] participants : pass the &block under the option :block
|
|
126
|
+
[o] concurrence : :over_unless
|
|
127
|
+
[x] engine#register_subprocess (replaced by engine#variables)
|
|
128
|
+
[x] switch to JSON friendly pers format for flow expressions
|
|
129
|
+
[o] switch to JSON friendly pers format for workitems
|
|
130
|
+
[o] rewind :ref => 'tag_of_cursor_exp' (direct) :tag oriented.
|
|
131
|
+
[o] exp : error
|
|
132
|
+
[o] wait 0.500 / wait 60
|
|
133
|
+
[x] exp : reval : not needed, participants are here
|
|
134
|
+
[o] exp : inc ? if target is array, becomes append (not cons)
|
|
135
|
+
[o] exp : dec ? if target is array, then pop (not car)
|
|
136
|
+
[o] _if '${f:x} == ${f:y}'
|
|
137
|
+
[x] equals : equals "v:v" => "true" NO => evokes assignment
|
|
138
|
+
[x] if : _if "v:v" => "true" ? NO => evokes assignement
|
|
139
|
+
[x] deferred apply technique / not OK, with EM and next_tick / pro
|
|
140
|
+
[o] reserve : perhaps it's better to have an atomic get and set variable...
|
|
141
|
+
[o] clean up lookup_var/set_var into locate_var/lookup_var/set_var
|
|
142
|
+
[x] Sun Hao's up-to-date-tree idea ${f:participant_name} ps#resolved_tree
|
|
143
|
+
[o] error : when an error expression is cancelled, should the err get remove
|
|
144
|
+
from the process status ? yes.
|
|
145
|
+
[o] file logger / history service
|
|
146
|
+
[o] engine.process_history(wfid)
|
|
147
|
+
[o] add_branch :times/:branches
|
|
148
|
+
[o] cursor : :break_if / :break_unless
|
|
149
|
+
[o] exp : when (exploit :var :set event, or frequency)
|
|
150
|
+
[o] when : restart test
|
|
151
|
+
[o] when : cron frequency
|
|
152
|
+
[o] let listeners accept launchitems
|
|
153
|
+
[o] exp : cron
|
|
154
|
+
[o] exp : every
|
|
155
|
+
[o] write rt test for 'timeout'
|
|
156
|
+
[o] undo exp : alias to 'cancel'
|
|
157
|
+
[o] Andrew's at for timeouts (Chronic maybe)
|
|
158
|
+
[x] timeout :at and :after (timeout expression vanished)
|
|
159
|
+
|
|
160
|
+
[ ] exp : exp (restricted form of eval ?)
|
|
161
|
+
[ ] exp : case (is it necessary ?)
|
|
162
|
+
[ ] exp : filter
|
|
163
|
+
[ ] exp : filter-definition
|
|
164
|
+
[x] exp : lose ?
|
|
165
|
+
[x] exp : parameter
|
|
166
|
+
[ ] exp : log
|
|
167
|
+
|
|
168
|
+
[ ] exp : defined (not really necessary)
|
|
169
|
+
[ ] exp : quote (not really necessary)
|
|
170
|
+
[ ] exp : field / attribute (not really necessary)
|
|
171
|
+
[ ] exp : variable (not really necessary)
|
|
172
|
+
|
|
173
|
+
[ ] exp : step (jump to cursor tag ?)
|
|
174
|
+
|
|
175
|
+
[ ] conditional : rprefix ! ${r:x} is perhaps sufficient
|
|
176
|
+
|
|
177
|
+
[ ] auto-participant re-apply
|
|
178
|
+
|
|
179
|
+
[ ] define without name (__result__)
|
|
180
|
+
|
|
181
|
+
[ ] pooltool.ru
|
|
182
|
+
|
|
183
|
+
[ ] participant dispatch thread throttling ?
|
|
184
|
+
|
|
185
|
+
[ ] expstorage.to_dot
|
|
186
|
+
|
|
187
|
+
[ ] tailcall
|
|
188
|
+
[ ] subprocesses participants (alias ?)
|
|
189
|
+
|
|
190
|
+
[ ] __command__ + tag (rewind that cursor there, not the current one)
|
|
191
|
+
|
|
192
|
+
[ ] beanstalk [as a] workqueue ?
|
|
193
|
+
|
|
194
|
+
[ ] recursion : should cope with modified trees 'main' => :tree ??
|
|
195
|
+
|
|
196
|
+
[ ] user3 :rif => "!wi.fields['approvers'].include?('user3')" : 'in' operator
|
|
197
|
+
|
|
198
|
+
[ ] set :var => 'y' { '2342342' }
|
|
199
|
+
|
|
200
|
+
[ ] pause engine
|
|
201
|
+
[ ] pause process instance
|
|
202
|
+
|
|
203
|
+
[ ] file/fs_listener [example] ?
|
|
204
|
+
|
|
205
|
+
[ ] tree.to_xml (require builder ?)
|
|
206
|
+
[ ] tree.to_rb
|
|
207
|
+
|
|
208
|
+
[ ] concurrence / concurrent_iterator : merge plugin ?
|
|
209
|
+
use participant for that ?
|
|
210
|
+
|
|
211
|
+
[ ] restore : implement merge strategies
|
|
212
|
+
|
|
213
|
+
[ ] one file, no multi-process, persistence ? LateHashStorage ?
|
|
214
|
+
|
|
215
|
+
[ ] apply : ruby or xml (instead of just ast) ?
|
|
216
|
+
|
|
217
|
+
[ ] unify ruote/util/json and ruote/util/serializer
|
|
218
|
+
|
|
219
|
+
[ ] history.to_tree ?
|
|
220
|
+
|
|
221
|
+
[ ] Ruote.process_definition ... Ruote.method_missing or sequence ?
|
|
222
|
+
|
|
223
|
+
[ ] concurrence / concurrent_iterator : merge_type => 'discard' / 'ignore'
|
|
224
|
+
keep track of the first "process sub id" ?
|
|
225
|
+
|
|
226
|
+
[ ] @children diff/undiff idea ?
|
|
227
|
+
|
|
228
|
+
[ ] write doc about engine options (multi-process !)
|
|
229
|
+
[ ] _if '${f:x} == ${f:y} || ${f:x} == ${f:z}'
|
|
230
|
+
|
|
231
|
+
[ ] document the dollar notation / substitution / extrapolation
|
|
232
|
+
|
|
233
|
+
[ ] condition : "${f:x} [is] empty" / this one is hard
|
|
234
|
+
|
|
235
|
+
[ ] ruote/exp/fe_set.rb:147: warning: already initialized constant PREFIX_REGEX
|
|
236
|
+
|
|
237
|
+
[ ] implement kill_process! (kill_expression! ?)
|
|
238
|
+
|
|
239
|
+
[ ] engine.force_reply_to_parent(fei) ?
|
|
240
|
+
|
|
241
|
+
[ ] break fs_history, prepare for dm_history
|
|
242
|
+
|
|
243
|
+
[ ] :on_timeout => :rewind (break, jump to x)...
|
|
244
|
+
[ ] rewind 'x' where x is a tagname (command x)
|
|
245
|
+
|
|
246
|
+
[ ] repeat : have a counter in a variable (:to => x maybe) (subprocessid ?)
|
|
247
|
+
|
|
248
|
+
[ ] when : add test for cancelling when child has been triggered / is running
|
|
249
|
+
[x] listen : should it forget its triggered children ? yes
|
|
250
|
+
|
|
251
|
+
[ ] engine.cancel_forgotten_children(wfid) ?
|
|
252
|
+
|
|
253
|
+
[ ] port subprocess on_cancel test from ruote 0.9 http://groups.google.com/group/openwferu-users/t/75f02bdadf7b93eb
|
|
254
|
+
|
|
255
|
+
[ ] double-check on_cancel rewrite (ft_1_process_status)
|
|
256
|
+
|
|
257
|
+
[o] limit the number of msgs returned
|
|
258
|
+
[o] should redo/undo follow the example of command and add_branches ?
|
|
259
|
+
everything through reply (receive)
|
|
260
|
+
should re_apply not touch the state of its expression ?
|
|
261
|
+
[o] test undo when cancelling parent expression
|
|
262
|
+
[o] issue with :unless => '${f:index} == 2000'
|
|
263
|
+
[o] implement Engine#reply (Engine simply has to include ReceiverMixin
|
|
264
|
+
[o] listeners X receivers
|
|
265
|
+
[o] add_service(name, path, klass, opts={}) opts local to services (really?)
|
|
266
|
+
[o] add_branches : pass message to concurrent_iterator like a command expression
|
|
267
|
+
|
|
268
|
+
[ ] verify get_last/get_raw logic, no + 0.0001...
|
|
269
|
+
[ ] clean up persists present in #apply
|
|
270
|
+
[ ] case exp : smarter one ?
|
|
271
|
+
[ ] spare 1 get_msg by caching msg (but keep 'deleting')
|
|
272
|
+
[ ] [un]set_var : via message ? should be ok like that... Not much traffic there
|
|
273
|
+
|
|
274
|
+
[ ] empty iterator or concurrent-iterator, log ? crash ? empty while...
|
|
275
|
+
[ ] maybe cancel should have a safely / redo_reply thing
|
|
276
|
+
[ ] at expression ?
|
|
277
|
+
[ ] listen to participants/errors/tags {in|out}
|
|
278
|
+
|
|
279
|
+
[ ] implement StorageHistory
|
|
280
|
+
[ ] nuke FsHistory ?
|
|
281
|
+
|
|
282
|
+
[ ] remove abort_on_exception=true
|
|
283
|
+
|
|
284
|
+
[ ] check : what if a reply on a concurrence wants to save, whereas the
|
|
285
|
+
concurrence terminated (got removed) meanwhile ?
|
|
286
|
+
the reply returns true...
|
|
287
|
+
|