ruote 2.3.0.1 → 2.3.0.2
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 +23 -0
- data/CREDITS.txt +4 -0
- data/LICENSE.txt +1 -1
- data/lib/ruote.rb +2 -0
- data/lib/ruote/context.rb +2 -1
- data/lib/ruote/dashboard.rb +169 -13
- data/lib/ruote/dboard/mutation.rb +282 -0
- data/lib/ruote/dboard/process_error.rb +1 -1
- data/lib/ruote/dboard/process_status.rb +61 -48
- data/lib/ruote/engine.rb +1 -1
- data/lib/ruote/exp/command.rb +1 -1
- data/lib/ruote/exp/commanded.rb +1 -1
- data/lib/ruote/exp/condition.rb +2 -1
- 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 +97 -48
- data/lib/ruote/exp/fe_cancel_process.rb +1 -1
- data/lib/ruote/exp/fe_command.rb +2 -3
- data/lib/ruote/exp/fe_concurrence.rb +162 -66
- data/lib/ruote/exp/fe_concurrent_iterator.rb +25 -7
- data/lib/ruote/exp/fe_cron.rb +1 -1
- data/lib/ruote/exp/fe_cursor.rb +10 -11
- data/lib/ruote/exp/fe_define.rb +1 -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 +1 -1
- data/lib/ruote/exp/fe_forget.rb +1 -1
- data/lib/ruote/exp/fe_given.rb +1 -1
- data/lib/ruote/exp/fe_if.rb +87 -7
- data/lib/ruote/exp/fe_inc.rb +1 -1
- data/lib/ruote/exp/fe_iterator.rb +1 -1
- data/lib/ruote/exp/fe_listen.rb +1 -1
- data/lib/ruote/exp/fe_lose.rb +1 -1
- data/lib/ruote/exp/fe_noop.rb +1 -1
- data/lib/ruote/exp/fe_on_error.rb +1 -1
- data/lib/ruote/exp/fe_once.rb +1 -1
- data/lib/ruote/exp/fe_participant.rb +49 -16
- data/lib/ruote/exp/fe_read.rb +1 -1
- data/lib/ruote/exp/fe_redo.rb +1 -1
- data/lib/ruote/exp/fe_ref.rb +1 -1
- data/lib/ruote/exp/fe_registerp.rb +1 -1
- data/lib/ruote/exp/fe_reserve.rb +1 -1
- data/lib/ruote/exp/fe_restore.rb +1 -7
- data/lib/ruote/exp/fe_save.rb +1 -1
- data/lib/ruote/exp/fe_sequence.rb +1 -1
- data/lib/ruote/exp/fe_set.rb +1 -1
- data/lib/ruote/exp/fe_stall.rb +1 -1
- data/lib/ruote/exp/fe_subprocess.rb +1 -1
- data/lib/ruote/exp/fe_that.rb +1 -1
- data/lib/ruote/exp/fe_undo.rb +1 -1
- data/lib/ruote/exp/fe_unregisterp.rb +1 -1
- data/lib/ruote/exp/fe_wait.rb +1 -1
- data/lib/ruote/exp/flow_expression.rb +117 -8
- data/lib/ruote/exp/iterator.rb +1 -1
- data/lib/ruote/exp/ro_attributes.rb +1 -1
- data/lib/ruote/exp/ro_filters.rb +1 -1
- data/lib/ruote/exp/ro_on_x.rb +4 -2
- data/lib/ruote/exp/ro_persist.rb +1 -1
- data/lib/ruote/exp/ro_timers.rb +1 -1
- data/lib/ruote/exp/ro_variables.rb +1 -1
- data/lib/ruote/extract.rb +125 -0
- data/lib/ruote/fei.rb +10 -73
- data/lib/ruote/id/mnemo_wfid_generator.rb +1 -1
- data/lib/ruote/id/wfid_generator.rb +1 -1
- data/lib/ruote/log/default_history.rb +17 -3
- data/lib/ruote/log/fancy_printing.rb +12 -32
- data/lib/ruote/log/storage_history.rb +1 -1
- data/lib/ruote/log/wait_logger.rb +15 -7
- data/lib/ruote/merge.rb +123 -0
- data/lib/ruote/observer.rb +1 -1
- data/lib/ruote/part/block_participant.rb +1 -1
- data/lib/ruote/part/code_participant.rb +1 -1
- data/lib/ruote/part/engine_participant.rb +1 -1
- data/lib/ruote/part/local_participant.rb +9 -1
- 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 +1 -1
- data/lib/ruote/part/rev_participant.rb +1 -1
- data/lib/ruote/part/smtp_participant.rb +1 -1
- data/lib/ruote/part/storage_participant.rb +18 -1
- data/lib/ruote/part/template.rb +1 -1
- data/lib/ruote/reader.rb +1 -1
- data/lib/ruote/reader/json.rb +1 -1
- data/lib/ruote/reader/radial.rb +4 -4
- data/lib/ruote/reader/ruby_dsl.rb +1 -1
- data/lib/ruote/reader/xml.rb +1 -1
- data/lib/ruote/receiver/base.rb +13 -1
- data/lib/ruote/storage/base.rb +8 -14
- data/lib/ruote/storage/composite_storage.rb +1 -1
- data/lib/ruote/storage/fs_storage.rb +1 -1
- data/lib/ruote/storage/hash_storage.rb +2 -1
- data/lib/ruote/svc/dispatch_pool.rb +29 -18
- data/lib/ruote/svc/dollar_sub.rb +5 -8
- data/lib/ruote/svc/error_handler.rb +1 -1
- data/lib/ruote/svc/expression_map.rb +1 -1
- data/lib/ruote/svc/participant_list.rb +8 -5
- data/lib/ruote/svc/tracker.rb +154 -56
- data/lib/ruote/svc/treechecker.rb +1 -1
- data/lib/ruote/tree_dot.rb +1 -1
- data/lib/ruote/util/deep.rb +4 -2
- data/lib/ruote/util/filter.rb +1 -1
- data/lib/ruote/util/hashdot.rb +1 -1
- data/lib/ruote/util/look.rb +1 -1
- data/lib/ruote/util/lookup.rb +1 -1
- data/lib/ruote/util/misc.rb +51 -1
- data/lib/ruote/util/mpatch.rb +1 -1
- data/lib/ruote/util/ometa.rb +1 -1
- data/lib/ruote/util/subprocess.rb +1 -1
- data/lib/ruote/util/time.rb +3 -3
- data/lib/ruote/util/tree.rb +43 -4
- data/lib/ruote/version.rb +2 -2
- data/lib/ruote/worker.rb +30 -18
- data/lib/ruote/workitem.rb +1 -1
- data/ruote.gemspec +6 -2
- data/test/functional/base.rb +0 -1
- data/test/functional/concurrent_base.rb +1 -1
- data/test/functional/eft_14_cursor.rb +42 -52
- data/test/functional/eft_16_if.rb +24 -16
- data/test/functional/eft_18_concurrent_iterator.rb +31 -1
- data/test/functional/eft_6_concurrence.rb +149 -34
- data/test/functional/ft_10_dollar.rb +14 -30
- data/test/functional/ft_12_launchitem.rb +15 -0
- data/test/functional/ft_1_process_status.rb +62 -13
- data/test/functional/ft_20_storage_participant.rb +25 -0
- data/test/functional/ft_38_participant_more.rb +1 -1
- data/test/functional/ft_42_storage_copy.rb +1 -3
- data/test/functional/ft_43_participant_on_reply.rb +63 -5
- data/test/functional/ft_66_flank.rb +41 -0
- data/test/functional/ft_6_on_cancel.rb +9 -18
- data/test/functional/ft_71_retries.rb +25 -12
- data/test/functional/ft_79_attach.rb +138 -0
- data/test/functional/ft_7_tags.rb +27 -0
- data/test/functional/ft_80_pause_on_apply.rb +64 -0
- data/test/functional/ft_81_mutation.rb +417 -0
- data/test/functional/ft_82_await_attribute.rb +84 -0
- data/test/functional/ft_83_trackers.rb +79 -0
- data/test/functional/storage.rb +3 -4
- data/test/unit/ut_12_wait_logger.rb +41 -3
- data/test/unit/ut_15_util.rb +30 -0
- data/test/unit/ut_17_merge.rb +54 -53
- data/test/unit/ut_1_fei.rb +2 -2
- data/test/unit/ut_24_radial_reader.rb +7 -0
- data/test/unit/ut_26_deep.rb +14 -0
- data/test/unit/ut_5_tree.rb +38 -28
- metadata +206 -169
- data/couch_url.txt +0 -1
- data/lib/ruote/exp/merge.rb +0 -134
data/lib/ruote/util/mpatch.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
#--
|
2
|
-
# Copyright (c) 2005-
|
2
|
+
# Copyright (c) 2005-2013, 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/lib/ruote/util/ometa.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
#--
|
2
|
-
# Copyright (c) 2005-
|
2
|
+
# Copyright (c) 2005-2013, 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
|
@@ -1,5 +1,5 @@
|
|
1
1
|
#--
|
2
|
-
# Copyright (c) 2005-
|
2
|
+
# Copyright (c) 2005-2013, 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/lib/ruote/util/time.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
#--
|
2
|
-
# Copyright (c) 2005-
|
2
|
+
# Copyright (c) 2005-2013, 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
|
@@ -69,7 +69,7 @@ module Ruote
|
|
69
69
|
#
|
70
70
|
# date
|
71
71
|
|
72
|
-
|
72
|
+
DateTime.parse(s)
|
73
73
|
|
74
74
|
else
|
75
75
|
#
|
@@ -87,7 +87,7 @@ module Ruote
|
|
87
87
|
|
88
88
|
# Waiting for a better implementation of it in rufus-scheduler 2.0.4
|
89
89
|
#
|
90
|
-
def self.
|
90
|
+
def self.cron_string?(s)
|
91
91
|
|
92
92
|
ss = s.split(' ')
|
93
93
|
|
data/lib/ruote/util/tree.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
#--
|
2
|
-
# Copyright (c) 2005-
|
2
|
+
# Copyright (c) 2005-2013, 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
|
@@ -38,7 +38,10 @@ module Ruote
|
|
38
38
|
# end
|
39
39
|
#
|
40
40
|
# p pdef
|
41
|
-
# # => ["define", {"name"=>"def0"}, [
|
41
|
+
# # => ["define", {"name"=>"def0"}, [
|
42
|
+
# # ["sequence", {}, [
|
43
|
+
# # ["alpha", {}, []],
|
44
|
+
# # ["bravo", {}, []]]]]]
|
42
45
|
#
|
43
46
|
# puts Ruote.tree_to_s(pdef)
|
44
47
|
# # =>
|
@@ -55,7 +58,43 @@ module Ruote
|
|
55
58
|
s
|
56
59
|
end
|
57
60
|
|
58
|
-
#
|
61
|
+
# Compacts
|
62
|
+
#
|
63
|
+
# [ 'participant', { 'ref' => 'sam' }, [] ] # and
|
64
|
+
# [ 'subprocess', { 'ref' => 'compute_prime' }, [] ]
|
65
|
+
#
|
66
|
+
# into
|
67
|
+
#
|
68
|
+
# [ 'sam', {}, [] ] # and
|
69
|
+
# [ 'compute_prime', {}, [] ]
|
70
|
+
#
|
71
|
+
# to simplify tree comparisons.
|
72
|
+
#
|
73
|
+
def self.compact_tree(tree)
|
74
|
+
|
75
|
+
tree = tree.dup
|
76
|
+
|
77
|
+
if %w[ participant subprocess ].include?(tree[0])
|
78
|
+
|
79
|
+
ref =
|
80
|
+
tree[1].delete('ref') ||
|
81
|
+
begin
|
82
|
+
kv = tree[1].find { |k, v| v == nil }
|
83
|
+
tree[1].delete(kv[0])
|
84
|
+
kv[0]
|
85
|
+
end
|
86
|
+
|
87
|
+
tree[0] = ref
|
88
|
+
|
89
|
+
else
|
90
|
+
|
91
|
+
tree[2] = tree[2].collect { |t| compact_tree(t) }
|
92
|
+
end
|
93
|
+
|
94
|
+
tree
|
95
|
+
end
|
96
|
+
|
97
|
+
# Used by some projects, used to be called from Ruote::ProcessStatus.
|
59
98
|
#
|
60
99
|
# Given a tree
|
61
100
|
#
|
@@ -81,7 +120,7 @@ module Ruote
|
|
81
120
|
h
|
82
121
|
end
|
83
122
|
|
84
|
-
# Used by Ruote::ProcessStatus.
|
123
|
+
# Used by some projects, used to be called from Ruote::ProcessStatus.
|
85
124
|
#
|
86
125
|
# Given a decomposed tree like
|
87
126
|
#
|
data/lib/ruote/version.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
#--
|
2
|
-
# Copyright (c) 2005-
|
2
|
+
# Copyright (c) 2005-2013, 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
|
@@ -24,6 +24,6 @@
|
|
24
24
|
|
25
25
|
module Ruote
|
26
26
|
|
27
|
-
VERSION = '2.3.0.
|
27
|
+
VERSION = '2.3.0.2'
|
28
28
|
end
|
29
29
|
|
data/lib/ruote/worker.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
#--
|
2
|
-
# Copyright (c) 2005-
|
2
|
+
# Copyright (c) 2005-2013, 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
|
@@ -27,6 +27,21 @@ require 'ruote/fei'
|
|
27
27
|
|
28
28
|
module Ruote
|
29
29
|
|
30
|
+
# A helper for the #worker method, it returns that dummy worker
|
31
|
+
# when there is no reference to the calling worker in the current
|
32
|
+
# thread's local variables.
|
33
|
+
#
|
34
|
+
DUMMY_WORKER = OpenStruct.new(
|
35
|
+
:name => 'worker', :identity => 'unknown', :state => 'running')
|
36
|
+
|
37
|
+
# Warning, this is not equivalent to doing @context.worker, this method
|
38
|
+
# fetches the worker from the local thread variables.
|
39
|
+
#
|
40
|
+
def self.current_worker
|
41
|
+
|
42
|
+
Thread.current['ruote_worker'] || DUMMY_WORKER
|
43
|
+
end
|
44
|
+
|
30
45
|
#
|
31
46
|
# Workers fetch 'msgs' and 'schedules' from the storage and process them.
|
32
47
|
#
|
@@ -339,10 +354,10 @@ module Ruote
|
|
339
354
|
#
|
340
355
|
def turn_schedule_to_msg(schedule)
|
341
356
|
|
342
|
-
msg = Ruote.fulldup(schedule['msg'])
|
343
|
-
|
344
357
|
return false unless @storage.reserve(schedule)
|
345
358
|
|
359
|
+
msg = Ruote.fulldup(schedule['msg'])
|
360
|
+
|
346
361
|
@storage.put_msg(msg.delete('action'), msg)
|
347
362
|
|
348
363
|
true
|
@@ -390,7 +405,7 @@ module Ruote
|
|
390
405
|
|
391
406
|
when 'raise'
|
392
407
|
|
393
|
-
|
408
|
+
@context.error_handler.msg_handle(msg['msg'], msg['error'])
|
394
409
|
|
395
410
|
when 'respark'
|
396
411
|
|
@@ -406,7 +421,7 @@ module Ruote
|
|
406
421
|
|
407
422
|
rescue => err
|
408
423
|
|
409
|
-
|
424
|
+
@context.error_handler.msg_handle(msg, err)
|
410
425
|
end
|
411
426
|
|
412
427
|
@context.storage.done(msg) if @context.storage.respond_to?(:done)
|
@@ -417,15 +432,6 @@ module Ruote
|
|
417
432
|
true
|
418
433
|
end
|
419
434
|
|
420
|
-
# Passes the msg and the err it resulted in to the error_handler.
|
421
|
-
#
|
422
|
-
# Some storage/worker implementation may want to override this.
|
423
|
-
#
|
424
|
-
def handle_msg_error(msg, err)
|
425
|
-
|
426
|
-
@context.error_handler.msg_handle(msg, err)
|
427
|
-
end
|
428
|
-
|
429
435
|
# Works for both the 'launch' and the 'apply' msgs.
|
430
436
|
#
|
431
437
|
# Creates a new expression, gives and applies it with the
|
@@ -439,8 +445,8 @@ module Ruote
|
|
439
445
|
|
440
446
|
exp_class = @context.expmap.expression_class(tree.first)
|
441
447
|
|
442
|
-
# msg['wfid'] only
|
443
|
-
# msg['fei']
|
448
|
+
# msg['wfid'] only: it's a launch
|
449
|
+
# msg['fei']: it's a sub launch (a supplant ?)
|
444
450
|
|
445
451
|
if is_launch?(msg, exp_class)
|
446
452
|
|
@@ -457,21 +463,27 @@ module Ruote
|
|
457
463
|
end
|
458
464
|
|
459
465
|
exp_hash = {
|
466
|
+
|
460
467
|
'fei' => msg['fei'] || {
|
461
468
|
'engine_id' => @context.engine_id,
|
462
469
|
'wfid' => msg['wfid'],
|
463
470
|
'subid' => Ruote.generate_subid(msg.inspect),
|
464
471
|
'expid' => msg['expid'] || '0' },
|
472
|
+
|
465
473
|
'parent_id' => msg['parent_id'],
|
466
474
|
'variables' => variables,
|
467
475
|
'applied_workitem' => wi,
|
476
|
+
|
468
477
|
'forgotten' => msg['forgotten'],
|
469
478
|
'lost' => msg['lost'],
|
470
479
|
'flanking' => msg['flanking'],
|
480
|
+
'attached' => msg['attached'],
|
481
|
+
'supplanted' => msg['supplanted'],
|
482
|
+
|
471
483
|
'stash' => msg['stash'],
|
472
484
|
'trigger' => msg['trigger'],
|
473
|
-
'on_reply' => msg['on_reply']
|
474
|
-
|
485
|
+
'on_reply' => msg['on_reply']
|
486
|
+
}
|
475
487
|
|
476
488
|
if not exp_class
|
477
489
|
|
data/lib/ruote/workitem.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
#--
|
2
|
-
# Copyright (c) 2005-
|
2
|
+
# Copyright (c) 2005-2013, 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/ruote.gemspec
CHANGED
@@ -24,9 +24,13 @@ ruote is an open source Ruby workflow engine
|
|
24
24
|
'*.gemspec', '*.txt', '*.rdoc', '*.md'
|
25
25
|
]
|
26
26
|
|
27
|
+
s.add_runtime_dependency 'ruby_parser', '~> 2.3'
|
28
|
+
# ruby_parser 3.x is very different,
|
29
|
+
# will rather go the ripper way (full 19 or even 20)...
|
30
|
+
|
27
31
|
s.add_runtime_dependency 'blankslate', '2.1.2.4'
|
28
|
-
s.add_runtime_dependency 'parslet', '
|
29
|
-
#
|
32
|
+
s.add_runtime_dependency 'parslet', '1.4.0'
|
33
|
+
# not yet Parslet 1.5.x ready
|
30
34
|
|
31
35
|
s.add_runtime_dependency 'sourcify', '0.5.0'
|
32
36
|
s.add_runtime_dependency 'rufus-json', '>= 1.0.1'
|
data/test/functional/base.rb
CHANGED
@@ -20,8 +20,6 @@ class EftCursorTest < Test::Unit::TestCase
|
|
20
20
|
end
|
21
21
|
end
|
22
22
|
|
23
|
-
#noisy
|
24
|
-
|
25
23
|
assert_trace('', pdef)
|
26
24
|
end
|
27
25
|
|
@@ -34,8 +32,6 @@ class EftCursorTest < Test::Unit::TestCase
|
|
34
32
|
end
|
35
33
|
end
|
36
34
|
|
37
|
-
#noisy
|
38
|
-
|
39
35
|
assert_trace(%w[ a b ], pdef)
|
40
36
|
end
|
41
37
|
|
@@ -50,8 +46,6 @@ class EftCursorTest < Test::Unit::TestCase
|
|
50
46
|
end
|
51
47
|
end
|
52
48
|
|
53
|
-
#noisy
|
54
|
-
|
55
49
|
assert_trace(%w[ a c ], pdef)
|
56
50
|
end
|
57
51
|
|
@@ -65,8 +59,6 @@ class EftCursorTest < Test::Unit::TestCase
|
|
65
59
|
end
|
66
60
|
end
|
67
61
|
|
68
|
-
#noisy
|
69
|
-
|
70
62
|
assert_trace('a', pdef)
|
71
63
|
end
|
72
64
|
|
@@ -80,8 +72,6 @@ class EftCursorTest < Test::Unit::TestCase
|
|
80
72
|
end
|
81
73
|
end
|
82
74
|
|
83
|
-
#noisy
|
84
|
-
|
85
75
|
assert_trace('a', pdef)
|
86
76
|
end
|
87
77
|
|
@@ -95,8 +85,6 @@ class EftCursorTest < Test::Unit::TestCase
|
|
95
85
|
end
|
96
86
|
end
|
97
87
|
|
98
|
-
#noisy
|
99
|
-
|
100
88
|
assert_trace('a', pdef)
|
101
89
|
end
|
102
90
|
|
@@ -105,14 +93,12 @@ class EftCursorTest < Test::Unit::TestCase
|
|
105
93
|
pdef = Ruote.process_definition :name => 'test' do
|
106
94
|
cursor do
|
107
95
|
echo 'a'
|
108
|
-
jump :to => '
|
96
|
+
jump :to => 'ctag'
|
109
97
|
echo 'b'
|
110
|
-
echo 'c', :tag => '
|
98
|
+
echo 'c', :tag => 'ctag'
|
111
99
|
end
|
112
100
|
end
|
113
101
|
|
114
|
-
#noisy
|
115
|
-
|
116
102
|
assert_trace(%w[ a c ], pdef)
|
117
103
|
end
|
118
104
|
|
@@ -121,18 +107,14 @@ class EftCursorTest < Test::Unit::TestCase
|
|
121
107
|
pdef = Ruote.process_definition :name => 'test' do
|
122
108
|
cursor do
|
123
109
|
echo 'a'
|
124
|
-
|
110
|
+
set :var => 'v0', :val => 'ctag'
|
111
|
+
jump :to => '${v:v0}'
|
125
112
|
echo 'b'
|
126
|
-
|
127
|
-
jump :to => 'd'
|
128
|
-
echo 'c'
|
129
|
-
echo 'd', :tag => '${v:v0}'
|
113
|
+
echo 'c', :tag => '${v:v0}'
|
130
114
|
end
|
131
115
|
end
|
132
116
|
|
133
|
-
|
134
|
-
|
135
|
-
assert_trace(%w[ a b d ], pdef)
|
117
|
+
assert_trace(%w[ a c ], pdef)
|
136
118
|
end
|
137
119
|
|
138
120
|
def test_rewind_if
|
@@ -153,8 +135,6 @@ class EftCursorTest < Test::Unit::TestCase
|
|
153
135
|
tracer << "a\n"
|
154
136
|
end
|
155
137
|
|
156
|
-
#noisy
|
157
|
-
|
158
138
|
assert_trace(%w[ a ] * 5, pdef)
|
159
139
|
end
|
160
140
|
|
@@ -182,12 +162,46 @@ class EftCursorTest < Test::Unit::TestCase
|
|
182
162
|
tracer << "p\n"
|
183
163
|
end
|
184
164
|
|
185
|
-
#noisy
|
186
|
-
|
187
165
|
assert_trace %w[ a r a r a r p ], pdef
|
188
166
|
# ARP nostalgy....
|
189
167
|
end
|
190
168
|
|
169
|
+
def test_jump_to_participant_name
|
170
|
+
|
171
|
+
@dashboard.register '.+' do |workitem|
|
172
|
+
tracer << workitem.participant_name + "\n"
|
173
|
+
end
|
174
|
+
|
175
|
+
pdef = Ruote.define do
|
176
|
+
cursor do
|
177
|
+
participant 'a'
|
178
|
+
jump :to => 'c'
|
179
|
+
participant 'b'
|
180
|
+
participant 'c'
|
181
|
+
end
|
182
|
+
end
|
183
|
+
|
184
|
+
assert_trace %w[ a c ], pdef
|
185
|
+
end
|
186
|
+
|
187
|
+
def test_jump_to_participant_ref_name
|
188
|
+
|
189
|
+
@dashboard.register '.+' do |workitem|
|
190
|
+
tracer << workitem.participant_name + "\n"
|
191
|
+
end
|
192
|
+
|
193
|
+
pdef = Ruote.define do
|
194
|
+
cursor do
|
195
|
+
participant :ref => 'a'
|
196
|
+
jump :to => 'c'
|
197
|
+
participant :ref => 'b'
|
198
|
+
participant :ref => 'c'
|
199
|
+
end
|
200
|
+
end
|
201
|
+
|
202
|
+
assert_trace %w[ a c ], pdef
|
203
|
+
end
|
204
|
+
|
191
205
|
def test_deep_rewind
|
192
206
|
|
193
207
|
pdef = Ruote.process_definition :name => 'test' do
|
@@ -200,8 +214,6 @@ class EftCursorTest < Test::Unit::TestCase
|
|
200
214
|
end
|
201
215
|
end
|
202
216
|
|
203
|
-
#noisy
|
204
|
-
|
205
217
|
wfid = @dashboard.launch(pdef)
|
206
218
|
|
207
219
|
wait_for(14)
|
@@ -228,8 +240,6 @@ class EftCursorTest < Test::Unit::TestCase
|
|
228
240
|
|
229
241
|
@dashboard.register_participant :alpha, Ruote::NoOpParticipant
|
230
242
|
|
231
|
-
#noisy
|
232
|
-
|
233
243
|
wfid = @dashboard.launch(pdef)
|
234
244
|
|
235
245
|
wait_for(:alpha)
|
@@ -255,8 +265,6 @@ class EftCursorTest < Test::Unit::TestCase
|
|
255
265
|
end
|
256
266
|
end
|
257
267
|
|
258
|
-
#noisy
|
259
|
-
|
260
268
|
assert_trace %w[ a b ], pdef
|
261
269
|
end
|
262
270
|
|
@@ -269,8 +277,6 @@ class EftCursorTest < Test::Unit::TestCase
|
|
269
277
|
echo 'done.'
|
270
278
|
end
|
271
279
|
|
272
|
-
#noisy
|
273
|
-
|
274
280
|
assert_trace 'done.', pdef
|
275
281
|
end
|
276
282
|
|
@@ -283,8 +289,6 @@ class EftCursorTest < Test::Unit::TestCase
|
|
283
289
|
echo 'done.'
|
284
290
|
end
|
285
291
|
|
286
|
-
#noisy
|
287
|
-
|
288
292
|
assert_trace 'done.', pdef
|
289
293
|
end
|
290
294
|
|
@@ -317,8 +321,6 @@ class EftCursorTest < Test::Unit::TestCase
|
|
317
321
|
echo 'done.'
|
318
322
|
end
|
319
323
|
|
320
|
-
#noisy
|
321
|
-
|
322
324
|
@dashboard.register do
|
323
325
|
alpha EftCursorTest::Alpha
|
324
326
|
bravo EftCursorTest::Bravo
|
@@ -335,8 +337,6 @@ class EftCursorTest < Test::Unit::TestCase
|
|
335
337
|
end
|
336
338
|
end
|
337
339
|
|
338
|
-
#@dashboard.noisy = true
|
339
|
-
|
340
340
|
wfid = @dashboard.launch(pdef)
|
341
341
|
|
342
342
|
@dashboard.wait_for(9)
|
@@ -369,8 +369,6 @@ class EftCursorTest < Test::Unit::TestCase
|
|
369
369
|
|
370
370
|
def test_workitem_command_and_jump_array
|
371
371
|
|
372
|
-
#noisy
|
373
|
-
|
374
372
|
@dashboard.register do
|
375
373
|
charly EftCursorTest::Charly, 'command' => [ 'jump', 'delta' ]
|
376
374
|
catchall Ruote::NoOpParticipant
|
@@ -381,8 +379,6 @@ class EftCursorTest < Test::Unit::TestCase
|
|
381
379
|
|
382
380
|
def test_workitem_command_and_jump_string
|
383
381
|
|
384
|
-
#noisy
|
385
|
-
|
386
382
|
@dashboard.register do
|
387
383
|
charly EftCursorTest::Charly, 'command' => 'jump delta'
|
388
384
|
catchall Ruote::NoOpParticipant
|
@@ -393,8 +389,6 @@ class EftCursorTest < Test::Unit::TestCase
|
|
393
389
|
|
394
390
|
def test_workitem_command_and_jump_to_string
|
395
391
|
|
396
|
-
#noisy
|
397
|
-
|
398
392
|
@dashboard.register do
|
399
393
|
charly EftCursorTest::Charly, 'command' => 'jump to delta'
|
400
394
|
catchall Ruote::NoOpParticipant
|
@@ -415,8 +409,6 @@ class EftCursorTest < Test::Unit::TestCase
|
|
415
409
|
|
416
410
|
@dashboard.register { catchall }
|
417
411
|
|
418
|
-
#@dashboard.noisy = true
|
419
|
-
|
420
412
|
wfid = @dashboard.launch(pdef)
|
421
413
|
@dashboard.wait_for(:alpha)
|
422
414
|
|
@@ -440,8 +432,6 @@ class EftCursorTest < Test::Unit::TestCase
|
|
440
432
|
|
441
433
|
@dashboard.register { catchall }
|
442
434
|
|
443
|
-
#@dashboard.noisy = true
|
444
|
-
|
445
435
|
wfid = @dashboard.launch(pdef)
|
446
436
|
@dashboard.wait_for(:alpha)
|
447
437
|
|