ruote 2.3.0 → 2.3.0.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.
@@ -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
-