ruote 2.3.0 → 2.3.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -2,6 +2,13 @@
2
2
  = ruote - CHANGELOG.txt
3
3
 
4
4
 
5
+ == ruote - 2.3.0.1 released 2012/09/08
6
+
7
+ - pin ruote.gemspec to blankslate 2.1.2.4
8
+ (since blankslate 3.1 is out and Parslet wants ~> 2.1...)
9
+ - FlowExpression#root(stubborn=false)
10
+
11
+
5
12
  == ruote - 2.3.0 released 2012/09/04
6
13
 
7
14
  - Dashboard#wait_for('action' => 'apply', 'name' => 'wait')
@@ -184,29 +184,47 @@ module Ruote::Exp
184
184
  nil
185
185
  end
186
186
 
187
- # Returns the root expression of this expression.
187
+ # An expensive method, looks up all the expressions with the same wfid
188
+ # in the storage (for some storages this is not expensive at all),
189
+ # and determine the root of this expression.
190
+ # It does this by recursively going from an expression to its parent,
191
+ # starting with this expression. The root is when the parent can't be
192
+ # reached.
188
193
  #
189
- # The result is an instance of Ruote::FlowExpression or nil if the
190
- # parent cannot be found.
194
+ # By default, this method will always return an expression, but if
195
+ # stubborn is set to true and the top expression points to a gone parent
196
+ # then nil will be returned.
197
+ # The default (stubborn=true) is probably what you want anyway.
191
198
  #
192
- def root
199
+ def root(stubborn=false)
193
200
 
201
+ previous = nil
194
202
  current = @h
195
- exps = @context.storage.find_expressions(h.fei['wfid'])
203
+
204
+ exps = @context.storage.find_expressions(
205
+ @h['fei']['wfid']
206
+ ).each_with_object({}) { |exp, h|
207
+ h[exp['fei']] = exp
208
+ }
196
209
 
197
210
  while current && current['parent_id']
198
- current = exps.find { |e| e['fei'] == current['parent_id'] }
211
+ previous = current
212
+ current = exps[current['parent_id']]
199
213
  end
200
214
 
215
+ current ||= previous unless stubborn
216
+
201
217
  current ? Ruote::Exp::FlowExpression.from_h(@context, current) : nil
202
218
  end
203
219
 
204
220
  # Returns the fei of the root expression of this expression.
205
221
  # The result is an instance of Ruote::FlowExpressionId.
206
222
  #
207
- def root_id
223
+ # Uses #root behind the scenes, hence the stubborn option.
224
+ #
225
+ def root_id(stubborn=false)
208
226
 
209
- root.fei
227
+ root(stubborn).fei
210
228
  end
211
229
 
212
230
  # Turns this FlowExpression instance into a Hash (well, just hands back
@@ -24,6 +24,6 @@
24
24
 
25
25
  module Ruote
26
26
 
27
- VERSION = '2.3.0'
27
+ VERSION = '2.3.0.1'
28
28
  end
29
29
 
@@ -24,7 +24,7 @@ ruote is an open source Ruby workflow engine
24
24
  '*.gemspec', '*.txt', '*.rdoc', '*.md'
25
25
  ]
26
26
 
27
- s.add_runtime_dependency 'blankslate', '>= 2.1.2.4'
27
+ s.add_runtime_dependency 'blankslate', '2.1.2.4'
28
28
  s.add_runtime_dependency 'parslet', '>= 1.4.0'
29
29
  # blankslate 2.1.2.3 is to avoid...
30
30
 
@@ -31,5 +31,40 @@ class EftFlowExpressionTest < Test::Unit::TestCase
31
31
 
32
32
  assert_equal '0', fexp.root_id.expid
33
33
  end
34
+
35
+ class MyParticipant < Ruote::Participant
36
+ def on_workitem
37
+ workitem.fields['roots'] = [
38
+ fexp.root.class.to_s, fexp.root(true).class.to_s
39
+ ]
40
+ reply
41
+ end
42
+ end
43
+
44
+ def test_root_stubborn
45
+
46
+ @dashboard.register :toto, MyParticipant
47
+
48
+ pdef = Ruote.define do
49
+ concurrence :remaining => 'forget', :wait_for => 1 do
50
+ sequence do
51
+ # exit immediately
52
+ end
53
+ sequence do
54
+ wait '1s'
55
+ toto
56
+ end
57
+ end
58
+ end
59
+
60
+ wfid = @dashboard.launch(pdef)
61
+
62
+ @dashboard.wait_for('terminated')
63
+ r = @dashboard.wait_for('ceased')
64
+
65
+ assert_equal(
66
+ %w[ Ruote::Exp::ConcurrenceExpression NilClass ],
67
+ r['workitem']['fields']['roots'])
68
+ end
34
69
  end
35
70
 
metadata CHANGED
@@ -1,222 +1,217 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: ruote
3
- version: !ruby/object:Gem::Version
4
- hash: 3
3
+ version: !ruby/object:Gem::Version
4
+ version: 2.3.0.1
5
5
  prerelease:
6
- segments:
7
- - 2
8
- - 3
9
- - 0
10
- version: 2.3.0
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - John Mettraux
14
9
  - Kenneth Kalmer
15
10
  - Torsten Schoenebaum
16
11
  autorequire:
17
12
  bindir: bin
18
13
  cert_chain: []
19
-
20
- date: 2012-09-03 00:00:00 Z
21
- dependencies:
22
- - !ruby/object:Gem::Dependency
14
+ date: 2012-09-08 00:00:00.000000000 Z
15
+ dependencies:
16
+ - !ruby/object:Gem::Dependency
23
17
  name: blankslate
24
- prerelease: false
25
- requirement: &id001 !ruby/object:Gem::Requirement
18
+ requirement: !ruby/object:Gem::Requirement
26
19
  none: false
27
- requirements:
28
- - - ">="
29
- - !ruby/object:Gem::Version
30
- hash: 103
31
- segments:
32
- - 2
33
- - 1
34
- - 2
35
- - 4
20
+ requirements:
21
+ - - '='
22
+ - !ruby/object:Gem::Version
36
23
  version: 2.1.2.4
37
24
  type: :runtime
38
- version_requirements: *id001
39
- - !ruby/object:Gem::Dependency
40
- name: parslet
41
25
  prerelease: false
42
- requirement: &id002 !ruby/object:Gem::Requirement
26
+ version_requirements: !ruby/object:Gem::Requirement
27
+ none: false
28
+ requirements:
29
+ - - '='
30
+ - !ruby/object:Gem::Version
31
+ version: 2.1.2.4
32
+ - !ruby/object:Gem::Dependency
33
+ name: parslet
34
+ requirement: !ruby/object:Gem::Requirement
43
35
  none: false
44
- requirements:
45
- - - ">="
46
- - !ruby/object:Gem::Version
47
- hash: 7
48
- segments:
49
- - 1
50
- - 4
51
- - 0
36
+ requirements:
37
+ - - ! '>='
38
+ - !ruby/object:Gem::Version
52
39
  version: 1.4.0
53
40
  type: :runtime
54
- version_requirements: *id002
55
- - !ruby/object:Gem::Dependency
56
- name: sourcify
57
41
  prerelease: false
58
- requirement: &id003 !ruby/object:Gem::Requirement
42
+ version_requirements: !ruby/object:Gem::Requirement
59
43
  none: false
60
- requirements:
61
- - - "="
62
- - !ruby/object:Gem::Version
63
- hash: 11
64
- segments:
65
- - 0
66
- - 5
67
- - 0
44
+ requirements:
45
+ - - ! '>='
46
+ - !ruby/object:Gem::Version
47
+ version: 1.4.0
48
+ - !ruby/object:Gem::Dependency
49
+ name: sourcify
50
+ requirement: !ruby/object:Gem::Requirement
51
+ none: false
52
+ requirements:
53
+ - - '='
54
+ - !ruby/object:Gem::Version
68
55
  version: 0.5.0
69
56
  type: :runtime
70
- version_requirements: *id003
71
- - !ruby/object:Gem::Dependency
72
- name: rufus-json
73
57
  prerelease: false
74
- requirement: &id004 !ruby/object:Gem::Requirement
58
+ version_requirements: !ruby/object:Gem::Requirement
75
59
  none: false
76
- requirements:
77
- - - ">="
78
- - !ruby/object:Gem::Version
79
- hash: 21
80
- segments:
81
- - 1
82
- - 0
83
- - 1
60
+ requirements:
61
+ - - '='
62
+ - !ruby/object:Gem::Version
63
+ version: 0.5.0
64
+ - !ruby/object:Gem::Dependency
65
+ name: rufus-json
66
+ requirement: !ruby/object:Gem::Requirement
67
+ none: false
68
+ requirements:
69
+ - - ! '>='
70
+ - !ruby/object:Gem::Version
84
71
  version: 1.0.1
85
72
  type: :runtime
86
- version_requirements: *id004
87
- - !ruby/object:Gem::Dependency
88
- name: rufus-cloche
89
73
  prerelease: false
90
- requirement: &id005 !ruby/object:Gem::Requirement
74
+ version_requirements: !ruby/object:Gem::Requirement
75
+ none: false
76
+ requirements:
77
+ - - ! '>='
78
+ - !ruby/object:Gem::Version
79
+ version: 1.0.1
80
+ - !ruby/object:Gem::Dependency
81
+ name: rufus-cloche
82
+ requirement: !ruby/object:Gem::Requirement
91
83
  none: false
92
- requirements:
93
- - - ">="
94
- - !ruby/object:Gem::Version
95
- hash: 19
96
- segments:
97
- - 1
98
- - 0
99
- - 2
84
+ requirements:
85
+ - - ! '>='
86
+ - !ruby/object:Gem::Version
100
87
  version: 1.0.2
101
88
  type: :runtime
102
- version_requirements: *id005
103
- - !ruby/object:Gem::Dependency
104
- name: rufus-dollar
105
89
  prerelease: false
106
- requirement: &id006 !ruby/object:Gem::Requirement
90
+ version_requirements: !ruby/object:Gem::Requirement
107
91
  none: false
108
- requirements:
109
- - - ">="
110
- - !ruby/object:Gem::Version
111
- hash: 31
112
- segments:
113
- - 1
114
- - 0
115
- - 4
92
+ requirements:
93
+ - - ! '>='
94
+ - !ruby/object:Gem::Version
95
+ version: 1.0.2
96
+ - !ruby/object:Gem::Dependency
97
+ name: rufus-dollar
98
+ requirement: !ruby/object:Gem::Requirement
99
+ none: false
100
+ requirements:
101
+ - - ! '>='
102
+ - !ruby/object:Gem::Version
116
103
  version: 1.0.4
117
104
  type: :runtime
118
- version_requirements: *id006
119
- - !ruby/object:Gem::Dependency
120
- name: rufus-mnemo
121
105
  prerelease: false
122
- requirement: &id007 !ruby/object:Gem::Requirement
106
+ version_requirements: !ruby/object:Gem::Requirement
123
107
  none: false
124
- requirements:
125
- - - ">="
126
- - !ruby/object:Gem::Version
127
- hash: 27
128
- segments:
129
- - 1
130
- - 2
131
- - 2
108
+ requirements:
109
+ - - ! '>='
110
+ - !ruby/object:Gem::Version
111
+ version: 1.0.4
112
+ - !ruby/object:Gem::Dependency
113
+ name: rufus-mnemo
114
+ requirement: !ruby/object:Gem::Requirement
115
+ none: false
116
+ requirements:
117
+ - - ! '>='
118
+ - !ruby/object:Gem::Version
132
119
  version: 1.2.2
133
120
  type: :runtime
134
- version_requirements: *id007
135
- - !ruby/object:Gem::Dependency
136
- name: rufus-scheduler
137
121
  prerelease: false
138
- requirement: &id008 !ruby/object:Gem::Requirement
122
+ version_requirements: !ruby/object:Gem::Requirement
123
+ none: false
124
+ requirements:
125
+ - - ! '>='
126
+ - !ruby/object:Gem::Version
127
+ version: 1.2.2
128
+ - !ruby/object:Gem::Dependency
129
+ name: rufus-scheduler
130
+ requirement: !ruby/object:Gem::Requirement
139
131
  none: false
140
- requirements:
141
- - - ">="
142
- - !ruby/object:Gem::Version
143
- hash: 47
144
- segments:
145
- - 2
146
- - 0
147
- - 16
132
+ requirements:
133
+ - - ! '>='
134
+ - !ruby/object:Gem::Version
148
135
  version: 2.0.16
149
136
  type: :runtime
150
- version_requirements: *id008
151
- - !ruby/object:Gem::Dependency
152
- name: rufus-treechecker
153
137
  prerelease: false
154
- requirement: &id009 !ruby/object:Gem::Requirement
138
+ version_requirements: !ruby/object:Gem::Requirement
155
139
  none: false
156
- requirements:
157
- - - ">="
158
- - !ruby/object:Gem::Version
159
- hash: 7
160
- segments:
161
- - 1
162
- - 0
163
- - 8
140
+ requirements:
141
+ - - ! '>='
142
+ - !ruby/object:Gem::Version
143
+ version: 2.0.16
144
+ - !ruby/object:Gem::Dependency
145
+ name: rufus-treechecker
146
+ requirement: !ruby/object:Gem::Requirement
147
+ none: false
148
+ requirements:
149
+ - - ! '>='
150
+ - !ruby/object:Gem::Version
164
151
  version: 1.0.8
165
152
  type: :runtime
166
- version_requirements: *id009
167
- - !ruby/object:Gem::Dependency
168
- name: rake
169
153
  prerelease: false
170
- requirement: &id010 !ruby/object:Gem::Requirement
154
+ version_requirements: !ruby/object:Gem::Requirement
171
155
  none: false
172
- requirements:
173
- - - ">="
174
- - !ruby/object:Gem::Version
175
- hash: 3
176
- segments:
177
- - 0
178
- version: "0"
156
+ requirements:
157
+ - - ! '>='
158
+ - !ruby/object:Gem::Version
159
+ version: 1.0.8
160
+ - !ruby/object:Gem::Dependency
161
+ name: rake
162
+ requirement: !ruby/object:Gem::Requirement
163
+ none: false
164
+ requirements:
165
+ - - ! '>='
166
+ - !ruby/object:Gem::Version
167
+ version: '0'
179
168
  type: :development
180
- version_requirements: *id010
181
- - !ruby/object:Gem::Dependency
182
- name: json
183
169
  prerelease: false
184
- requirement: &id011 !ruby/object:Gem::Requirement
170
+ version_requirements: !ruby/object:Gem::Requirement
171
+ none: false
172
+ requirements:
173
+ - - ! '>='
174
+ - !ruby/object:Gem::Version
175
+ version: '0'
176
+ - !ruby/object:Gem::Dependency
177
+ name: json
178
+ requirement: !ruby/object:Gem::Requirement
185
179
  none: false
186
- requirements:
187
- - - ">="
188
- - !ruby/object:Gem::Version
189
- hash: 3
190
- segments:
191
- - 0
192
- version: "0"
180
+ requirements:
181
+ - - ! '>='
182
+ - !ruby/object:Gem::Version
183
+ version: '0'
193
184
  type: :development
194
- version_requirements: *id011
195
- - !ruby/object:Gem::Dependency
196
- name: mailtrap
197
185
  prerelease: false
198
- requirement: &id012 !ruby/object:Gem::Requirement
186
+ version_requirements: !ruby/object:Gem::Requirement
187
+ none: false
188
+ requirements:
189
+ - - ! '>='
190
+ - !ruby/object:Gem::Version
191
+ version: '0'
192
+ - !ruby/object:Gem::Dependency
193
+ name: mailtrap
194
+ requirement: !ruby/object:Gem::Requirement
199
195
  none: false
200
- requirements:
201
- - - ">="
202
- - !ruby/object:Gem::Version
203
- hash: 3
204
- segments:
205
- - 0
206
- version: "0"
196
+ requirements:
197
+ - - ! '>='
198
+ - !ruby/object:Gem::Version
199
+ version: '0'
207
200
  type: :development
208
- version_requirements: *id012
209
- description: "\n\
210
- ruote is an open source Ruby workflow engine\n "
211
- email:
201
+ prerelease: false
202
+ version_requirements: !ruby/object:Gem::Requirement
203
+ none: false
204
+ requirements:
205
+ - - ! '>='
206
+ - !ruby/object:Gem::Version
207
+ version: '0'
208
+ description: ! "\nruote is an open source Ruby workflow engine\n "
209
+ email:
212
210
  - jmettraux@gmail.com
213
211
  executables: []
214
-
215
212
  extensions: []
216
-
217
213
  extra_rdoc_files: []
218
-
219
- files:
214
+ files:
220
215
  - Rakefile
221
216
  - lib/ruote/context.rb
222
217
  - lib/ruote/dashboard.rb
@@ -517,36 +512,26 @@ files:
517
512
  - README.rdoc
518
513
  homepage: http://ruote.rubyforge.org
519
514
  licenses: []
520
-
521
515
  post_install_message:
522
516
  rdoc_options: []
523
-
524
- require_paths:
517
+ require_paths:
525
518
  - lib
526
- required_ruby_version: !ruby/object:Gem::Requirement
519
+ required_ruby_version: !ruby/object:Gem::Requirement
527
520
  none: false
528
- requirements:
529
- - - ">="
530
- - !ruby/object:Gem::Version
531
- hash: 3
532
- segments:
533
- - 0
534
- version: "0"
535
- required_rubygems_version: !ruby/object:Gem::Requirement
521
+ requirements:
522
+ - - ! '>='
523
+ - !ruby/object:Gem::Version
524
+ version: '0'
525
+ required_rubygems_version: !ruby/object:Gem::Requirement
536
526
  none: false
537
- requirements:
538
- - - ">="
539
- - !ruby/object:Gem::Version
540
- hash: 3
541
- segments:
542
- - 0
543
- version: "0"
527
+ requirements:
528
+ - - ! '>='
529
+ - !ruby/object:Gem::Version
530
+ version: '0'
544
531
  requirements: []
545
-
546
532
  rubyforge_project: ruote
547
- rubygems_version: 1.8.15
533
+ rubygems_version: 1.8.24
548
534
  signing_key:
549
535
  specification_version: 3
550
536
  summary: an open source Ruby workflow engine
551
537
  test_files: []
552
-