ruote 2.1.2 → 2.1.3
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 +1 -0
- data/CHANGELOG.txt +6 -0
- data/Rakefile +2 -0
- data/TODO.txt +13 -14
- data/lib/ruote/exp/flowexpression.rb +1 -1
- data/lib/ruote/log/wait_logger.rb +1 -1
- data/lib/ruote/part/storage_participant.rb +6 -0
- data/lib/ruote/storage/base.rb +13 -1
- data/lib/ruote/worker.rb +1 -1
- data/ruote.gemspec +8 -2
- data/test/functional/ft_20_storage_participant.rb +26 -0
- data/test/unit/ut_18_engine.rb +13 -0
- metadata +22 -2
data/.gitignore
CHANGED
data/CHANGELOG.txt
CHANGED
@@ -2,6 +2,12 @@
|
|
2
2
|
= ruote - CHANGELOG.txt
|
3
3
|
|
4
4
|
|
5
|
+
== ruote - 2.1.3 released 2010/01/04
|
6
|
+
|
7
|
+
- fixed issue with Rufus.is_cron_string (thanks Torsten)
|
8
|
+
- fixed issue with FlowExpression#cancel (Kenneth)
|
9
|
+
|
10
|
+
|
5
11
|
== ruote - 2.1.2 released 2010/01/03
|
6
12
|
|
7
13
|
- fixed issue when initializing engine without worker. Thanks Matt Nichols.
|
data/Rakefile
CHANGED
@@ -33,6 +33,8 @@ ruote is an open source ruby workflow engine.
|
|
33
33
|
|
34
34
|
gem.add_development_dependency 'json'
|
35
35
|
gem.add_development_dependency 'yard'
|
36
|
+
gem.add_development_dependency 'builder'
|
37
|
+
gem.add_development_dependency 'mailtrap'
|
36
38
|
|
37
39
|
# Gem::Specification http://www.rubygems.org/read/chapter/20
|
38
40
|
end
|
data/TODO.txt
CHANGED
@@ -156,6 +156,19 @@
|
|
156
156
|
[o] undo exp : alias to 'cancel'
|
157
157
|
[o] Andrew's at for timeouts (Chronic maybe)
|
158
158
|
[x] timeout :at and :after (timeout expression vanished)
|
159
|
+
[x] listen : should it forget its triggered children ? yes
|
160
|
+
[o] limit the number of msgs returned
|
161
|
+
[o] should redo/undo follow the example of command and add_branches ?
|
162
|
+
everything through reply (receive)
|
163
|
+
should re_apply not touch the state of its expression ?
|
164
|
+
[o] test undo when cancelling parent expression
|
165
|
+
[o] issue with :unless => '${f:index} == 2000'
|
166
|
+
[o] implement Engine#reply (Engine simply has to include ReceiverMixin
|
167
|
+
[o] listeners X receivers
|
168
|
+
[o] add_service(name, path, klass, opts={}) opts local to services (really?)
|
169
|
+
[o] add_branches : pass message to concurrent_iterator like a command expression
|
170
|
+
[o] clean up persists present in #apply
|
171
|
+
[o] maybe cancel should have a safely / redo_reply thing
|
159
172
|
|
160
173
|
[ ] exp : exp (restricted form of eval ?)
|
161
174
|
[ ] exp : case (is it necessary ?)
|
@@ -246,7 +259,6 @@
|
|
246
259
|
[ ] repeat : have a counter in a variable (:to => x maybe) (subprocessid ?)
|
247
260
|
|
248
261
|
[ ] when : add test for cancelling when child has been triggered / is running
|
249
|
-
[x] listen : should it forget its triggered children ? yes
|
250
262
|
|
251
263
|
[ ] engine.cancel_forgotten_children(wfid) ?
|
252
264
|
|
@@ -254,25 +266,12 @@
|
|
254
266
|
|
255
267
|
[ ] double-check on_cancel rewrite (ft_1_process_status)
|
256
268
|
|
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
269
|
[ ] verify get_last/get_raw logic, no + 0.0001...
|
269
|
-
[ ] clean up persists present in #apply
|
270
270
|
[ ] case exp : smarter one ?
|
271
271
|
[ ] spare 1 get_msg by caching msg (but keep 'deleting')
|
272
272
|
[ ] [un]set_var : via message ? should be ok like that... Not much traffic there
|
273
273
|
|
274
274
|
[ ] empty iterator or concurrent-iterator, log ? crash ? empty while...
|
275
|
-
[ ] maybe cancel should have a safely / redo_reply thing
|
276
275
|
[ ] at expression ?
|
277
276
|
[ ] listen to participants/errors/tags {in|out}
|
278
277
|
|
@@ -320,7 +320,7 @@ module Ruote::Exp
|
|
320
320
|
def cancel (flavour)
|
321
321
|
|
322
322
|
return reply_to_parent(h.applied_workitem) \
|
323
|
-
unless h.children.find { |cfei| Ruote::FlowExpression.fetch(cfei) }
|
323
|
+
unless h.children.find { |cfei| Ruote::Exp::FlowExpression.fetch(@context, cfei) }
|
324
324
|
|
325
325
|
do_persist || return
|
326
326
|
# before firing the cancel message to the children
|
data/lib/ruote/storage/base.rb
CHANGED
@@ -139,7 +139,7 @@ module Ruote
|
|
139
139
|
|
140
140
|
at = if s.is_a?(Time) # at or every
|
141
141
|
at
|
142
|
-
elsif
|
142
|
+
elsif is_cron_string(s) # cron
|
143
143
|
Rufus::CronLine.new(s).next_time(Time.now + 1)
|
144
144
|
else # at or every
|
145
145
|
Ruote.s_to_at(s)
|
@@ -205,6 +205,18 @@ module Ruote
|
|
205
205
|
|
206
206
|
scheds.select { |sched| sched['at'] <= now }
|
207
207
|
end
|
208
|
+
|
209
|
+
# Waiting for a better implementation of it in rufus-scheduler 2.0.4
|
210
|
+
#
|
211
|
+
def is_cron_string (s)
|
212
|
+
|
213
|
+
ss = s.split(' ')
|
214
|
+
|
215
|
+
return false if ss.size < 5 || ss.size > 6
|
216
|
+
return false if s.match(/\d{4}/)
|
217
|
+
|
218
|
+
true
|
219
|
+
end
|
208
220
|
end
|
209
221
|
end
|
210
222
|
|
data/lib/ruote/worker.rb
CHANGED
data/ruote.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{ruote}
|
8
|
-
s.version = "2.1.
|
8
|
+
s.version = "2.1.3"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["John Mettraux", "Kenneth Kalmer"]
|
12
|
-
s.date = %q{2010-01-
|
12
|
+
s.date = %q{2010-01-04}
|
13
13
|
s.description = %q{
|
14
14
|
ruote is an open source ruby workflow engine.
|
15
15
|
}
|
@@ -253,6 +253,8 @@ ruote is an open source ruby workflow engine.
|
|
253
253
|
s.add_runtime_dependency(%q<rufus-treechecker>, [">= 1.0.3"])
|
254
254
|
s.add_development_dependency(%q<json>, [">= 0"])
|
255
255
|
s.add_development_dependency(%q<yard>, [">= 0"])
|
256
|
+
s.add_development_dependency(%q<builder>, [">= 0"])
|
257
|
+
s.add_development_dependency(%q<mailtrap>, [">= 0"])
|
256
258
|
else
|
257
259
|
s.add_dependency(%q<rufus-json>, [">= 0"])
|
258
260
|
s.add_dependency(%q<rufus-cloche>, [">= 0.1.10"])
|
@@ -263,6 +265,8 @@ ruote is an open source ruby workflow engine.
|
|
263
265
|
s.add_dependency(%q<rufus-treechecker>, [">= 1.0.3"])
|
264
266
|
s.add_dependency(%q<json>, [">= 0"])
|
265
267
|
s.add_dependency(%q<yard>, [">= 0"])
|
268
|
+
s.add_dependency(%q<builder>, [">= 0"])
|
269
|
+
s.add_dependency(%q<mailtrap>, [">= 0"])
|
266
270
|
end
|
267
271
|
else
|
268
272
|
s.add_dependency(%q<rufus-json>, [">= 0"])
|
@@ -274,6 +278,8 @@ ruote is an open source ruby workflow engine.
|
|
274
278
|
s.add_dependency(%q<rufus-treechecker>, [">= 1.0.3"])
|
275
279
|
s.add_dependency(%q<json>, [">= 0"])
|
276
280
|
s.add_dependency(%q<yard>, [">= 0"])
|
281
|
+
s.add_dependency(%q<builder>, [">= 0"])
|
282
|
+
s.add_dependency(%q<mailtrap>, [">= 0"])
|
277
283
|
end
|
278
284
|
end
|
279
285
|
|
@@ -42,5 +42,31 @@ class FtStorageParticipantTest < Test::Unit::TestCase
|
|
42
42
|
|
43
43
|
assert_nil @engine.process(wfid)
|
44
44
|
end
|
45
|
+
|
46
|
+
def test_purge
|
47
|
+
|
48
|
+
pdef = Ruote.process_definition :name => 'def0' do
|
49
|
+
alpha
|
50
|
+
end
|
51
|
+
|
52
|
+
@engine.register_participant :alpha, Ruote::StorageParticipant
|
53
|
+
|
54
|
+
#noisy
|
55
|
+
|
56
|
+
wfid = @engine.launch(pdef)
|
57
|
+
|
58
|
+
wait_for(:alpha)
|
59
|
+
|
60
|
+
assert_equal 1, @engine.storage.get_many('workitems').size
|
61
|
+
|
62
|
+
alpha = Ruote::StorageParticipant.new
|
63
|
+
alpha.context = @engine.context
|
64
|
+
|
65
|
+
assert !alpha.first.nil?
|
66
|
+
|
67
|
+
alpha.purge!
|
68
|
+
|
69
|
+
assert alpha.first.nil?
|
70
|
+
end
|
45
71
|
end
|
46
72
|
|
data/test/unit/ut_18_engine.rb
CHANGED
@@ -23,6 +23,13 @@ class UtEngineTest < Test::Unit::TestCase
|
|
23
23
|
engine = Ruote::Engine.new(worker, false)
|
24
24
|
end
|
25
25
|
|
26
|
+
def test_initialize_with_worker_and_without_logger
|
27
|
+
|
28
|
+
storage = determine_storage({})
|
29
|
+
worker = Ruote::Worker.new(storage)
|
30
|
+
engine = Ruote::Engine.new(worker, false)
|
31
|
+
end
|
32
|
+
|
26
33
|
def test_initialize_with_storage
|
27
34
|
|
28
35
|
storage = determine_storage(
|
@@ -30,5 +37,11 @@ class UtEngineTest < Test::Unit::TestCase
|
|
30
37
|
|
31
38
|
engine = Ruote::Engine.new(storage)
|
32
39
|
end
|
40
|
+
|
41
|
+
def test_initialize_storage_without_logger
|
42
|
+
|
43
|
+
storage = determine_storage({})
|
44
|
+
engine = Ruote::Engine.new(storage)
|
45
|
+
end
|
33
46
|
end
|
34
47
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruote
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.1.
|
4
|
+
version: 2.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- John Mettraux
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2010-01-
|
13
|
+
date: 2010-01-04 00:00:00 +09:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
@@ -103,6 +103,26 @@ dependencies:
|
|
103
103
|
- !ruby/object:Gem::Version
|
104
104
|
version: "0"
|
105
105
|
version:
|
106
|
+
- !ruby/object:Gem::Dependency
|
107
|
+
name: builder
|
108
|
+
type: :development
|
109
|
+
version_requirement:
|
110
|
+
version_requirements: !ruby/object:Gem::Requirement
|
111
|
+
requirements:
|
112
|
+
- - ">="
|
113
|
+
- !ruby/object:Gem::Version
|
114
|
+
version: "0"
|
115
|
+
version:
|
116
|
+
- !ruby/object:Gem::Dependency
|
117
|
+
name: mailtrap
|
118
|
+
type: :development
|
119
|
+
version_requirement:
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: "0"
|
125
|
+
version:
|
106
126
|
description: "\n\
|
107
127
|
ruote is an open source ruby workflow engine.\n "
|
108
128
|
email: jmettraux@gmail.com
|