cpee 1.3.159 → 1.3.160
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.
- checksums.yaml +4 -4
- data/cpee.gemspec +1 -1
- data/lib/cpee/processtransformation/bpmn2.rb +26 -50
- data/lib/cpee/processtransformation/cpee.rb +10 -5
- data/lib/cpee/processtransformation/structures.rb +20 -36
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1db33f357360202a3eebfe4f375eb149fc5e6d1f
|
4
|
+
data.tar.gz: 83c7b07ca81a93a19d2d4062582728ef1dbc4a29
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0e16f74611ae052df0e6e2b79cdbc8c4e82cb588839ac132b062610c71476bb816fedc0c789fbb23362803c81b1e489301d434294c8b577def9d7cda66037faf
|
7
|
+
data.tar.gz: 8d734498c1a896361ee8150d7cfb728001df38e032368ae7b03197cb1cd688e5d0c99a8fe840b4ec7f31a57cd46b37e08271c1eb82cf047784fce8cedead5f10
|
data/cpee.gemspec
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = "cpee"
|
3
|
-
s.version = "1.3.
|
3
|
+
s.version = "1.3.160"
|
4
4
|
s.platform = Gem::Platform::RUBY
|
5
5
|
s.license = "LGPL-3"
|
6
6
|
s.summary = "Preliminary release of cloud process execution engine (cpee). If you just need workflow execution, without a rest/xmpp service exposing it, then use WEEL"
|
@@ -155,16 +155,16 @@ module CPEE
|
|
155
155
|
end #}}}
|
156
156
|
private :build_extraces
|
157
157
|
|
158
|
-
def map_node(node) #{{{
|
158
|
+
def map_node(node,flat) #{{{
|
159
159
|
case node.type
|
160
160
|
when :parallelGateway
|
161
|
-
Parallel.new(node.id,node.type)
|
161
|
+
flat ? nil : Parallel.new(node.id,node.type)
|
162
162
|
when :exclusiveGateway
|
163
|
-
Conditional.new(node.id,:exclusive,node.type)
|
163
|
+
flat ? nil : Conditional.new(node.id,:exclusive,node.type)
|
164
164
|
when :eventBasedGateway
|
165
|
-
Parallel.new(node.id,node.type,1)
|
165
|
+
flat ? nil : Parallel.new(node.id,node.type,1)
|
166
166
|
when :inclusiveGateway
|
167
|
-
Conditional.new(node.id,:inclusive,node.type)
|
167
|
+
flat ? nil : Conditional.new(node.id,:inclusive,node.type)
|
168
168
|
when :endEvent, :startEvent, nil
|
169
169
|
nil
|
170
170
|
else
|
@@ -206,57 +206,39 @@ module CPEE
|
|
206
206
|
end
|
207
207
|
end
|
208
208
|
end
|
209
|
-
nic = traces.incoming(node)
|
210
209
|
if node == enode
|
211
210
|
traces.shift_all
|
212
|
-
elsif
|
211
|
+
elsif traces.incoming(node) == 1
|
213
212
|
traces.shift_all
|
214
|
-
n = map_node(node)
|
215
|
-
if !
|
213
|
+
n = map_node(node,traces.same_first)
|
214
|
+
if !n.nil? && !(n.container? && traces.finished?)
|
216
215
|
(branch << n).compact!
|
217
216
|
end
|
218
217
|
else
|
219
218
|
loops = traces.loops
|
220
219
|
if node.type == :exclusiveGateway || traces.all_loops?
|
221
|
-
###
|
222
|
-
###
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
build_ttree branch.last, loops.dup, nil, debug, down + 1
|
236
|
-
puts '--> up loop1 from ' + (down + 1).to_s if debug
|
237
|
-
else
|
238
|
-
### dont remove it, treat it as a normal conditional
|
239
|
-
### an infinite loop that can only be left by break is created
|
240
|
-
node.incoming = 1
|
241
|
-
branch << InfiniteLoop.new(node.id)
|
242
|
-
### add the blank conditional to get a break
|
243
|
-
len = loops.length
|
244
|
-
loops.add_breaks(self.object_id)
|
245
|
-
puts '--> down loop2 to ' + (down + 1).to_s if debug
|
246
|
-
build_ttree branch.last, loops.dup, nil, debug, down + 1
|
247
|
-
puts '--> up loop2 from ' + (down + 1).to_s if debug
|
248
|
-
### set outgoing to number of loops (without the break) so that it can be ignored (should be 1 all the time)
|
249
|
-
node.outgoing -= len
|
250
|
-
end
|
220
|
+
### an infinite loop that can only be left by break is created
|
221
|
+
### at the output time it is decided wether this can be optimized
|
222
|
+
branch << Loop.new(node.id)
|
223
|
+
### duplicate because we need it later to remove all the shit from traces
|
224
|
+
lops = loops.dup
|
225
|
+
### remove the exclusive gateway because we no longer need it
|
226
|
+
lops.add_breaks(self.object_id)
|
227
|
+
lops.shift_all
|
228
|
+
### add the blank conditional to get a break
|
229
|
+
puts '--> down head_loop to ' + (down + 1).to_s if debug
|
230
|
+
build_ttree branch, lops, nil, debug, down + 1
|
231
|
+
puts '--> up head_loop from ' + (down + 1).to_s if debug
|
232
|
+
traces.remove(loops)
|
233
|
+
traces.shift_all
|
251
234
|
else
|
252
|
-
node.incoming -= loops.length
|
253
235
|
### throw away the loop traces, remove loop traces from front of all other traces
|
254
236
|
traces.segment_by_loops loops
|
255
|
-
puts '--> down
|
237
|
+
puts '--> down tail_loop to ' + (down + 1).to_s if debug
|
256
238
|
build_ttree branch, loops.dup, nil, debug, down + 1
|
257
|
-
puts '--> up
|
239
|
+
puts '--> up tail_loop from ' + (down + 1).to_s if debug
|
240
|
+
traces.remove(loops)
|
258
241
|
end
|
259
|
-
traces.remove(loops)
|
260
242
|
traces.remove_empty
|
261
243
|
end
|
262
244
|
else
|
@@ -267,14 +249,13 @@ module CPEE
|
|
267
249
|
nb = branch.last.new_branch
|
268
250
|
if trcs.finished?
|
269
251
|
puts '--> branch down to ' + (down + 1).to_s if debug
|
270
|
-
build_ttree nb, Traces.new([[Break.new(self.object_id
|
252
|
+
build_ttree nb, Traces.new([[Break.new(self.object_id)]]), endnode, debug, down + 1
|
271
253
|
puts '--> branch up from ' + (down + 1).to_s if debug
|
272
254
|
else
|
273
255
|
puts '--> branch down to ' + (down + 1).to_s if debug
|
274
256
|
build_ttree nb, trcs, endnode, debug, down + 1
|
275
257
|
puts '--> branch up from ' + (down + 1).to_s if debug
|
276
258
|
end
|
277
|
-
endnode.incoming -= 1 unless endnode.nil?
|
278
259
|
end
|
279
260
|
# remove all traces that don't start with endnode to account for loops
|
280
261
|
if endnode.nil?
|
@@ -282,11 +263,6 @@ module CPEE
|
|
282
263
|
else
|
283
264
|
traces.remove_by_endnode(endnode)
|
284
265
|
end
|
285
|
-
### all before is reduced to one incoming arrow
|
286
|
-
### if now there is still more than one incoming we have a loop situation
|
287
|
-
### where the end of a branching statement is also the starting/endpoint
|
288
|
-
### of a loop
|
289
|
-
endnode.incoming += 1 unless endnode.nil?
|
290
266
|
end
|
291
267
|
end
|
292
268
|
end
|
@@ -55,12 +55,17 @@ module CPEE
|
|
55
55
|
generate_for_list(node,s1)
|
56
56
|
end
|
57
57
|
def print_Loop_default(node,res)
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
58
|
+
if node.sub.length == 2
|
59
|
+
s1 = res.add('loop', 'pre_test' => node.sub[0].condition.empty? ? 'true' : node.sub[0].condition.join(' && '))
|
60
|
+
s1.attributes['language'] = node.sub[0].condition_type unless node.sub[0].condition_type.nil?
|
61
|
+
node.sub[0].attributes.each do |k,v|
|
62
|
+
s1.attributes[k] = v
|
63
|
+
end
|
64
|
+
generate_for_list(node.sub[0],s1)
|
65
|
+
else
|
66
|
+
s1 = res.add('loop', 'pre_test' => 'true')
|
67
|
+
print_Conditional(node,s1)
|
62
68
|
end
|
63
|
-
generate_for_list(node,s1)
|
64
69
|
s1
|
65
70
|
end
|
66
71
|
private :print_Loop_default
|
@@ -74,8 +74,8 @@ module CPEE
|
|
74
74
|
end #}}}
|
75
75
|
|
76
76
|
class Break < Node
|
77
|
-
def initialize(context
|
78
|
-
super context, '-1', :break, 'BREAK',
|
77
|
+
def initialize(context)
|
78
|
+
super context, '-1', :break, 'BREAK', 1, []
|
79
79
|
end
|
80
80
|
end
|
81
81
|
|
@@ -101,31 +101,27 @@ module CPEE
|
|
101
101
|
@id = id
|
102
102
|
end
|
103
103
|
end #}}}
|
104
|
-
class
|
104
|
+
class Loop #{{{
|
105
105
|
include Container
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
@container = true
|
111
|
-
@id = id
|
112
|
-
@type = :loop
|
113
|
-
@attributes = {}
|
114
|
-
end
|
115
|
-
end #}}}
|
116
|
-
class Loop < Array #{{{
|
117
|
-
include Container
|
118
|
-
attr_accessor :id, :type, :condition, :condition_type
|
106
|
+
include Struct
|
107
|
+
include Enumerable
|
108
|
+
attr_reader :id, :sub, :mode
|
109
|
+
attr_accessor :type, :condition, :condition_type
|
119
110
|
attr_reader :attributes
|
120
111
|
def condition?; true; end
|
121
112
|
def initialize(id)
|
122
113
|
@container = true
|
123
114
|
@id = id
|
124
115
|
@type = :loop
|
116
|
+
@mode = :exclusive
|
125
117
|
@condition = []
|
118
|
+
@sub = []
|
126
119
|
@condition_type = nil
|
127
120
|
@attributes = {}
|
128
121
|
end
|
122
|
+
def new_branch
|
123
|
+
(@sub << Alternative.new(@id)).last
|
124
|
+
end
|
129
125
|
end #}}}
|
130
126
|
|
131
127
|
class Parallel #{{{
|
@@ -330,10 +326,9 @@ module CPEE
|
|
330
326
|
self.each{|n| num += 1 if n.include?(e)}
|
331
327
|
num == self.length
|
332
328
|
end
|
333
|
-
|
334
|
-
|
335
|
-
|
336
|
-
num == self.length
|
329
|
+
|
330
|
+
def aaa
|
331
|
+
puts 'rrr'
|
337
332
|
end
|
338
333
|
|
339
334
|
def all_loops?
|
@@ -342,12 +337,11 @@ module CPEE
|
|
342
337
|
num == self.length
|
343
338
|
end
|
344
339
|
|
345
|
-
|
346
340
|
def add_breaks(context)
|
347
341
|
trueloops = self.find_all{ |t| t.last == t.first }.length
|
348
|
-
tb = Break.new(context
|
342
|
+
tb = Break.new(context)
|
349
343
|
if trueloops == self.length
|
350
|
-
self << [
|
344
|
+
self << [nil,tb]
|
351
345
|
else
|
352
346
|
self.each do |t|
|
353
347
|
t << tb unless t.last == t.first ### an explicit break
|
@@ -400,22 +394,13 @@ module CPEE
|
|
400
394
|
|
401
395
|
def extend
|
402
396
|
# find largest common
|
403
|
-
max =
|
397
|
+
max = []
|
404
398
|
sh = self.shortest
|
405
399
|
sh = sh[0..-2] if sh.first == sh.last
|
406
400
|
sh.each_with_index do |e,i|
|
407
|
-
if self.
|
408
|
-
max = e
|
409
|
-
else
|
410
|
-
break
|
411
|
-
end
|
401
|
+
max << e if self.include_in_all?(e)
|
412
402
|
end
|
413
|
-
|
414
|
-
# all before the largest common are just copied, so incoming should be 1
|
415
|
-
sh.each do |e|
|
416
|
-
break if e == max
|
417
|
-
e.incoming = 1
|
418
|
-
end
|
403
|
+
max = max.last
|
419
404
|
|
420
405
|
# if last is the largest common do nothing
|
421
406
|
# else append from last to largest common
|
@@ -430,7 +415,6 @@ module CPEE
|
|
430
415
|
end
|
431
416
|
end
|
432
417
|
|
433
|
-
max.incoming = self.length + 1
|
434
418
|
max
|
435
419
|
end
|
436
420
|
|