ruote 2.3.0.1 → 2.3.0.2
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
|