cpee 1.3.153 → 1.3.154
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/cpee.gemspec +1 -1
- data/lib/cpee/processtransformation/bpmn2.rb +5 -4
- data/lib/cpee/processtransformation/structures.rb +9 -8
- data/server/instances/1/properties.xml +101 -69
- data/server/instances/10/properties.xml +70 -106
- data/server/instances/11/properties.xml +73 -133
- data/server/instances/2/properties.xml +44 -191
- data/server/instances/3/properties.xml +44 -70
- data/server/instances/4/properties.xml +68 -28
- data/server/instances/5/properties.xml +70 -10
- data/server/instances/6/properties.xml +55 -175
- data/server/instances/7/properties.xml +52 -118
- data/server/instances/8/properties.xml +50 -112
- data/server/instances/9/properties.xml +47 -115
- metadata +99 -105
- data/server/instances/1/notifications/d12eff1ac812661c05d7090ce7394cf9/consumer-secret +0 -1
- data/server/instances/1/notifications/d12eff1ac812661c05d7090ce7394cf9/producer-secret +0 -1
- data/server/instances/1/notifications/d12eff1ac812661c05d7090ce7394cf9/subscription.xml +0 -27
- data/server/instances/11/notifications/e0910b6b5536976209bca471780066f1/consumer-secret +0 -1
- data/server/instances/11/notifications/e0910b6b5536976209bca471780066f1/producer-secret +0 -1
- data/server/instances/11/notifications/e0910b6b5536976209bca471780066f1/subscription.xml +0 -27
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3b82462869a2853a428365a5d22819a6bc9012e7
|
4
|
+
data.tar.gz: dadf5ce874de2edc08552e8646e3ce1e15d65339
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 270cf087d7420d7a9a68623accbd86f4ae983b8434af89127eac41140cc046590320331f064d20afe1971a04fc8121395c85b66b36b63b728e30d8f8938e719f
|
7
|
+
data.tar.gz: 28f94599b36695d4acd61db487bc526e1aea42df4c879beaade34cc059626eed138c6467fd80db6a144a0cb9af69b4521971381fdefad2aa4980454dbfd851df
|
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.154"
|
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"
|
@@ -73,7 +73,7 @@ module CPEE
|
|
73
73
|
|
74
74
|
def extract_nodelink(doc)
|
75
75
|
doc.find("/bm:definitions/bm:process/bm:*[@id and @name and not(@itemSubjectRef) and not(name()='sequenceFlow')]").each do |e|
|
76
|
-
n = Node.new(e.attributes['id'],e.qname.name.to_sym,e.attributes['name'].strip,e.find('count(bm:incoming)'),e.find('count(bm:outgoing)'))
|
76
|
+
n = Node.new(self.object_id,e.attributes['id'],e.qname.name.to_sym,e.attributes['name'].strip,e.find('count(bm:incoming)'),e.find('count(bm:outgoing)'))
|
77
77
|
|
78
78
|
if e.attributes['scriptFormat'] != ''
|
79
79
|
n.script_type = e.attributes['scriptFormat']
|
@@ -189,7 +189,8 @@ module CPEE
|
|
189
189
|
if node = traces.same_first
|
190
190
|
if branch.empty? && branch.respond_to?(:id)
|
191
191
|
li = if (branch.id == traces.first_node.id)
|
192
|
-
### for tail controlled loops
|
192
|
+
### for tail controlled loops, use the link from this to next
|
193
|
+
### if a tasks loops to itself, then second_nodes returns the first
|
193
194
|
@graph.link(branch.id,traces.second_nodes.first.id)
|
194
195
|
else
|
195
196
|
@graph.link(branch.id,traces.first_node.id)
|
@@ -238,7 +239,7 @@ module CPEE
|
|
238
239
|
branch << InfiniteLoop.new(node.id)
|
239
240
|
### add the blank conditional to get a break
|
240
241
|
len = loops.length
|
241
|
-
loops.add_breaks
|
242
|
+
loops.add_breaks(self.object_id)
|
242
243
|
puts '--> down loop2 to ' + (down + 1).to_s if debug
|
243
244
|
build_ttree branch.last, loops.dup, nil, debug, down + 1
|
244
245
|
puts '--> up loop2 from ' + (down + 1).to_s if debug
|
@@ -264,7 +265,7 @@ module CPEE
|
|
264
265
|
nb = branch.last.new_branch
|
265
266
|
if trcs.finished?
|
266
267
|
puts '--> branch down to ' + (down + 1).to_s if debug
|
267
|
-
build_ttree nb, Traces.new([[Break.new(1)]]), endnode, debug, down + 1
|
268
|
+
build_ttree nb, Traces.new([[Break.new(self.object_id,1)]]), endnode, debug, down + 1
|
268
269
|
puts '--> branch up from ' + (down + 1).to_s if debug
|
269
270
|
else
|
270
271
|
puts '--> branch down to ' + (down + 1).to_s if debug
|
@@ -41,13 +41,14 @@ module CPEE
|
|
41
41
|
|
42
42
|
class Node #{{{
|
43
43
|
include Container
|
44
|
-
@@niceid =
|
44
|
+
@@niceid = {}
|
45
45
|
attr_reader :id, :label, :niceid
|
46
46
|
attr_reader :endpoints, :methods, :parameters, :attributes
|
47
47
|
attr_accessor :script, :script_id, :script_var, :script_type, :incoming, :outgoing, :type
|
48
|
-
def initialize(id,type,label,incoming,outgoing)
|
48
|
+
def initialize(context,id,type,label,incoming,outgoing)
|
49
|
+
@@niceid[context] ||= -1
|
50
|
+
@niceid = (@@niceid[context] += 1)
|
49
51
|
@id = id
|
50
|
-
@niceid = (@@niceid += 1)
|
51
52
|
@type = type
|
52
53
|
@label = label
|
53
54
|
@endpoints = []
|
@@ -73,8 +74,8 @@ module CPEE
|
|
73
74
|
end #}}}
|
74
75
|
|
75
76
|
class Break < Node
|
76
|
-
def initialize(incoming)
|
77
|
-
super '-1', :break, 'BREAK', incoming, []
|
77
|
+
def initialize(context,incoming)
|
78
|
+
super context, '-1', :break, 'BREAK', incoming, []
|
78
79
|
end
|
79
80
|
end
|
80
81
|
|
@@ -283,7 +284,7 @@ module CPEE
|
|
283
284
|
self.first.first
|
284
285
|
end
|
285
286
|
def second_nodes
|
286
|
-
self.map { |t| t[1] }
|
287
|
+
self.map { |t| t.length > 1 ? t[1] : t[0] }
|
287
288
|
end
|
288
289
|
|
289
290
|
def shortest
|
@@ -338,13 +339,13 @@ module CPEE
|
|
338
339
|
end
|
339
340
|
|
340
341
|
|
341
|
-
def add_breaks
|
342
|
+
def add_breaks(context)
|
342
343
|
trueloops = self.find_all{ |t| t.last == t.first }.length
|
343
344
|
if trueloops == self.length
|
344
345
|
self << [self.first_node] ### the blank conditional so that we get a break
|
345
346
|
else
|
346
347
|
self.each do |t|
|
347
|
-
t << Break.new(1) unless t.last == t.first ### an explicit break
|
348
|
+
t << Break.new(context,1) unless t.last == t.first ### an explicit break
|
348
349
|
end
|
349
350
|
end
|
350
351
|
end
|
@@ -1,65 +1,90 @@
|
|
1
1
|
<properties xmlns="http://riddl.org/ns/common-patterns/properties/1.0">
|
2
|
-
<info>
|
3
|
-
<state>
|
2
|
+
<info>Enter info here</info>
|
3
|
+
<state>ready</state>
|
4
4
|
<handlerwrapper>DefaultHandlerWrapper</handlerwrapper>
|
5
|
-
<positions
|
6
|
-
<a1>after</a1>
|
7
|
-
</positions>
|
5
|
+
<positions/>
|
8
6
|
<dataelements>
|
9
|
-
<
|
7
|
+
<persons>3</persons>
|
8
|
+
<card>Visa_12345</card>
|
9
|
+
<airline>null</airline>
|
10
|
+
<hotels>[]</hotels>
|
11
|
+
<from>Vienna</from>
|
12
|
+
<to>Prague</to>
|
13
|
+
<costs>0</costs>
|
10
14
|
</dataelements>
|
11
15
|
<endpoints>
|
12
|
-
<
|
16
|
+
<bookAir>http://gruppe.wst.univie.ac.at/~mangler/services/airline.php</bookAir>
|
17
|
+
<bookHotel>http://gruppe.wst.univie.ac.at/~mangler/services/hotel.php</bookHotel>
|
18
|
+
<approve>http://gruppe.wst.univie.ac.at/~mangler/services/approval.php</approve>
|
13
19
|
</endpoints>
|
14
|
-
<dsl>
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
+
<dsl>call :a1, :bookAir, { :method => "post", :parameters => { :from => data.from, :to => data.to, :persons => data.persons } }, <<-end
|
21
|
+
data.airline = result.value('id')
|
22
|
+
data.costs += result.value('costs').to_f
|
23
|
+
status.update 1, 'Hotel'
|
24
|
+
end
|
25
|
+
parallel do
|
26
|
+
loop pre_test{data.persons > 0} do
|
27
|
+
parallel_branch data.persons do |p|
|
28
|
+
call :a2, :bookHotel, { :method => "post", :parameters => { :to => data.to } }, <<-end
|
29
|
+
data.hotels << result.value('id')
|
30
|
+
data.costs += result.value('costs').to_f
|
31
|
+
end
|
32
|
+
end
|
33
|
+
manipulate :a3, <<-end
|
34
|
+
data.persons -= 1
|
35
|
+
end
|
20
36
|
end
|
21
37
|
end
|
22
|
-
|
23
|
-
data.
|
38
|
+
choose do
|
39
|
+
alternative data.costs > 700 do
|
40
|
+
call :a4, :approve, { :method => "post", :parameters => { :costs => data.costs } }
|
41
|
+
end
|
24
42
|
end
|
25
43
|
</dsl>
|
26
44
|
<dslx>
|
27
45
|
<description xmlns="http://cpee.org/ns/description/1.0">
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
<
|
32
|
-
<
|
33
|
-
|
34
|
-
|
46
|
+
<call id="a1" endpoint="bookAir">
|
47
|
+
<parameters>
|
48
|
+
<method>post</method>
|
49
|
+
<parameters>
|
50
|
+
<from>data.from</from>
|
51
|
+
<to>data.to</to>
|
52
|
+
<persons>data.persons</persons>
|
53
|
+
</parameters>
|
54
|
+
</parameters>
|
55
|
+
<manipulate output="result"> data.airline = result.value('id')
|
56
|
+
data.costs += result.value('costs').to_f
|
57
|
+
status.update 1, 'Hotel'</manipulate>
|
58
|
+
</call>
|
59
|
+
<parallel>
|
60
|
+
<loop pre_test="data.persons > 0">
|
61
|
+
<parallel_branch pass="data.persons" local="p">
|
62
|
+
<call id="a2" endpoint="bookHotel">
|
35
63
|
<parameters>
|
36
|
-
<
|
64
|
+
<method>post</method>
|
65
|
+
<parameters>
|
66
|
+
<to>data.to</to>
|
67
|
+
</parameters>
|
37
68
|
</parameters>
|
38
|
-
|
39
|
-
</
|
40
|
-
|
41
|
-
|
42
|
-
<
|
69
|
+
<manipulate output="result"> data.hotels << result.value('id')
|
70
|
+
data.costs += result.value('costs').to_f</manipulate>
|
71
|
+
</call>
|
72
|
+
</parallel_branch>
|
73
|
+
<manipulate id="a3"> data.persons -= 1</manipulate>
|
74
|
+
</loop>
|
75
|
+
</parallel>
|
76
|
+
<choose>
|
77
|
+
<alternative condition="data.costs > 700">
|
78
|
+
<call id="a4" endpoint="approve">
|
43
79
|
<parameters>
|
44
|
-
<label/>
|
45
80
|
<method>post</method>
|
46
81
|
<parameters>
|
47
|
-
<
|
82
|
+
<costs>data.costs</costs>
|
48
83
|
</parameters>
|
49
84
|
</parameters>
|
50
85
|
</call>
|
51
|
-
</
|
52
|
-
</
|
53
|
-
<call id="a2" endpoint="timeout">
|
54
|
-
<parameters>
|
55
|
-
<label/>
|
56
|
-
<method>post</method>
|
57
|
-
<parameters>
|
58
|
-
<timeout>b</timeout>
|
59
|
-
</parameters>
|
60
|
-
</parameters>
|
61
|
-
<manipulate>data.x += "a2,"</manipulate>
|
62
|
-
</call>
|
86
|
+
</alternative>
|
87
|
+
</choose>
|
63
88
|
</description>
|
64
89
|
</dslx>
|
65
90
|
<status>
|
@@ -68,41 +93,48 @@ end
|
|
68
93
|
</status>
|
69
94
|
<description>
|
70
95
|
<description xmlns="http://cpee.org/ns/description/1.0">
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
<
|
75
|
-
<
|
76
|
-
|
77
|
-
|
96
|
+
<call id="a1" endpoint="bookAir">
|
97
|
+
<parameters>
|
98
|
+
<method>post</method>
|
99
|
+
<parameters>
|
100
|
+
<from>data.from</from>
|
101
|
+
<to>data.to</to>
|
102
|
+
<persons>data.persons</persons>
|
103
|
+
</parameters>
|
104
|
+
</parameters>
|
105
|
+
<manipulate output="result"> data.airline = result.value('id')
|
106
|
+
data.costs += result.value('costs').to_f
|
107
|
+
status.update 1, 'Hotel'</manipulate>
|
108
|
+
</call>
|
109
|
+
<parallel>
|
110
|
+
<loop pre_test="data.persons > 0">
|
111
|
+
<parallel_branch pass="data.persons" local="p">
|
112
|
+
<call id="a2" endpoint="bookHotel">
|
78
113
|
<parameters>
|
79
|
-
<
|
114
|
+
<method>post</method>
|
115
|
+
<parameters>
|
116
|
+
<to>data.to</to>
|
117
|
+
</parameters>
|
80
118
|
</parameters>
|
81
|
-
|
82
|
-
</
|
83
|
-
|
84
|
-
|
85
|
-
<
|
119
|
+
<manipulate output="result"> data.hotels << result.value('id')
|
120
|
+
data.costs += result.value('costs').to_f</manipulate>
|
121
|
+
</call>
|
122
|
+
</parallel_branch>
|
123
|
+
<manipulate id="a3"> data.persons -= 1</manipulate>
|
124
|
+
</loop>
|
125
|
+
</parallel>
|
126
|
+
<choose>
|
127
|
+
<alternative condition="data.costs > 700">
|
128
|
+
<call id="a4" endpoint="approve">
|
86
129
|
<parameters>
|
87
|
-
<label/>
|
88
130
|
<method>post</method>
|
89
131
|
<parameters>
|
90
|
-
<
|
132
|
+
<costs>data.costs</costs>
|
91
133
|
</parameters>
|
92
134
|
</parameters>
|
93
135
|
</call>
|
94
|
-
</
|
95
|
-
</
|
96
|
-
<call id="a2" endpoint="timeout">
|
97
|
-
<parameters>
|
98
|
-
<label/>
|
99
|
-
<method>post</method>
|
100
|
-
<parameters>
|
101
|
-
<timeout>b</timeout>
|
102
|
-
</parameters>
|
103
|
-
</parameters>
|
104
|
-
<manipulate>data.x += "a2,"</manipulate>
|
105
|
-
</call>
|
136
|
+
</alternative>
|
137
|
+
</choose>
|
106
138
|
</description>
|
107
139
|
</description>
|
108
140
|
<transformation>
|
@@ -1,90 +1,62 @@
|
|
1
1
|
<properties xmlns="http://riddl.org/ns/common-patterns/properties/1.0">
|
2
2
|
<info>Enter info here</info>
|
3
|
-
<state>
|
3
|
+
<state>ready</state>
|
4
4
|
<handlerwrapper>DefaultHandlerWrapper</handlerwrapper>
|
5
|
-
<positions
|
5
|
+
<positions>
|
6
|
+
<a1>after</a1>
|
7
|
+
</positions>
|
6
8
|
<dataelements>
|
7
|
-
<
|
8
|
-
<card>Visa_12345</card>
|
9
|
-
<airline>Lufthansa</airline>
|
10
|
-
<hotels>["Rathaus","Rathaus","Ibis"]</hotels>
|
11
|
-
<from>Vienna</from>
|
12
|
-
<to>Prague</to>
|
13
|
-
<costs>940.0</costs>
|
9
|
+
<x/>
|
14
10
|
</dataelements>
|
15
11
|
<endpoints>
|
16
|
-
<
|
17
|
-
<bookHotel>http://gruppe.wst.univie.ac.at/~mangler/services/hotel.php</bookHotel>
|
18
|
-
<approve>http://gruppe.wst.univie.ac.at/~mangler/services/approval.php</approve>
|
12
|
+
<timeout>http://gruppe.wst.univie.ac.at/~mangler/services/timeout.php</timeout>
|
19
13
|
</endpoints>
|
20
|
-
<dsl>call :a1, :
|
21
|
-
data.
|
22
|
-
data.costs += result.value('costs').to_f
|
23
|
-
status.update 1, 'Hotel'
|
14
|
+
<dsl>call :a1, :timeout, { :method => "post", :parameters => { :timeout => 2 } }, <<-end
|
15
|
+
data.x += "a1,"
|
24
16
|
end
|
25
|
-
|
26
|
-
|
27
|
-
parallel_branch data.persons do |p|
|
28
|
-
call :a2, :bookHotel, { :method => :post, :parameters => {:to => data.to} }, <<-end
|
29
|
-
data.hotels << result.value('id')
|
30
|
-
data.costs += result.value('costs').to_f
|
31
|
-
end
|
32
|
-
end
|
33
|
-
manipulate :a3, <<-end
|
34
|
-
data.persons -= 1
|
35
|
-
end
|
36
|
-
end
|
17
|
+
call :a2, :timeout, { :method => "post", :parameters => { :timeout => 4 } }, <<-end
|
18
|
+
data.x += "a2,"
|
37
19
|
end
|
38
|
-
|
39
|
-
|
40
|
-
call :a4, :approve, { :method => :post, :parameters => {:costs => data.costs} }
|
41
|
-
end
|
20
|
+
call :a3, :timeout, { :method => "post", :parameters => { :timeout => 4 } }, <<-end
|
21
|
+
data.x += "a3,"
|
42
22
|
end
|
43
23
|
</dsl>
|
44
24
|
<dslx>
|
45
25
|
<description xmlns="http://cpee.org/ns/description/1.0">
|
46
|
-
|
26
|
+
<!--{{{-->
|
27
|
+
<call id="a1" endpoint="timeout">
|
47
28
|
<parameters>
|
48
|
-
|
29
|
+
<!--{{{-->
|
30
|
+
<method>post</method>
|
49
31
|
<parameters>
|
50
|
-
<
|
51
|
-
<to>data.to</to>
|
52
|
-
<persons>data.persons</persons>
|
32
|
+
<timeout>2</timeout>
|
53
33
|
</parameters>
|
54
34
|
</parameters>
|
55
|
-
|
56
|
-
|
57
|
-
|
35
|
+
<!--}}}-->
|
36
|
+
<manipulate output="result"> data.x += "a1,"</manipulate>
|
37
|
+
</call>
|
38
|
+
<call id="a2" endpoint="timeout">
|
39
|
+
<parameters>
|
40
|
+
<!--{{{-->
|
41
|
+
<method>post</method>
|
42
|
+
<parameters>
|
43
|
+
<timeout>4</timeout>
|
44
|
+
</parameters>
|
45
|
+
</parameters>
|
46
|
+
<!--}}}-->
|
47
|
+
<manipulate output="result"> data.x += "a2,"</manipulate>
|
48
|
+
</call>
|
49
|
+
<call id="a3" endpoint="timeout">
|
50
|
+
<parameters>
|
51
|
+
<!--{{{-->
|
52
|
+
<method>post</method>
|
53
|
+
<parameters>
|
54
|
+
<timeout>4</timeout>
|
55
|
+
</parameters>
|
56
|
+
</parameters>
|
57
|
+
<!--}}}-->
|
58
|
+
<manipulate output="result"> data.x += "a3,"</manipulate>
|
58
59
|
</call>
|
59
|
-
<parallel>
|
60
|
-
<loop pre_test="data.persons > 0">
|
61
|
-
<parallel_branch pass="data.persons" local="p">
|
62
|
-
<call id="a2" endpoint="bookHotel">
|
63
|
-
<parameters>
|
64
|
-
<method>:post</method>
|
65
|
-
<parameters>
|
66
|
-
<to>data.to</to>
|
67
|
-
</parameters>
|
68
|
-
</parameters>
|
69
|
-
<manipulate output="result"> data.hotels << result.value('id')
|
70
|
-
data.costs += result.value('costs').to_f</manipulate>
|
71
|
-
</call>
|
72
|
-
</parallel_branch>
|
73
|
-
<manipulate id="a3"> data.persons -= 1</manipulate>
|
74
|
-
</loop>
|
75
|
-
</parallel>
|
76
|
-
<choose>
|
77
|
-
<alternative condition="data.costs > 700">
|
78
|
-
<call id="a4" endpoint="approve">
|
79
|
-
<parameters>
|
80
|
-
<method>:post</method>
|
81
|
-
<parameters>
|
82
|
-
<costs>data.costs</costs>
|
83
|
-
</parameters>
|
84
|
-
</parameters>
|
85
|
-
</call>
|
86
|
-
</alternative>
|
87
|
-
</choose>
|
88
60
|
</description>
|
89
61
|
</dslx>
|
90
62
|
<status>
|
@@ -93,48 +65,40 @@ end
|
|
93
65
|
</status>
|
94
66
|
<description>
|
95
67
|
<description xmlns="http://cpee.org/ns/description/1.0">
|
96
|
-
|
68
|
+
<!--{{{-->
|
69
|
+
<call id="a1" endpoint="timeout">
|
70
|
+
<parameters>
|
71
|
+
<!--{{{-->
|
72
|
+
<method>post</method>
|
73
|
+
<parameters>
|
74
|
+
<timeout>2</timeout>
|
75
|
+
</parameters>
|
76
|
+
</parameters>
|
77
|
+
<!--}}}-->
|
78
|
+
<manipulate output="result"> data.x += "a1,"</manipulate>
|
79
|
+
</call>
|
80
|
+
<call id="a2" endpoint="timeout">
|
81
|
+
<parameters>
|
82
|
+
<!--{{{-->
|
83
|
+
<method>post</method>
|
84
|
+
<parameters>
|
85
|
+
<timeout>4</timeout>
|
86
|
+
</parameters>
|
87
|
+
</parameters>
|
88
|
+
<!--}}}-->
|
89
|
+
<manipulate output="result"> data.x += "a2,"</manipulate>
|
90
|
+
</call>
|
91
|
+
<call id="a3" endpoint="timeout">
|
97
92
|
<parameters>
|
98
|
-
|
93
|
+
<!--{{{-->
|
94
|
+
<method>post</method>
|
99
95
|
<parameters>
|
100
|
-
<
|
101
|
-
<to>data.to</to>
|
102
|
-
<persons>data.persons</persons>
|
96
|
+
<timeout>4</timeout>
|
103
97
|
</parameters>
|
104
98
|
</parameters>
|
105
|
-
|
106
|
-
|
107
|
-
status.update 1, 'Hotel'</manipulate>
|
99
|
+
<!--}}}-->
|
100
|
+
<manipulate output="result"> data.x += "a3,"</manipulate>
|
108
101
|
</call>
|
109
|
-
<parallel>
|
110
|
-
<loop pre_test="data.persons > 0">
|
111
|
-
<parallel_branch pass="data.persons" local="p">
|
112
|
-
<call id="a2" endpoint="bookHotel">
|
113
|
-
<parameters>
|
114
|
-
<method>:post</method>
|
115
|
-
<parameters>
|
116
|
-
<to>data.to</to>
|
117
|
-
</parameters>
|
118
|
-
</parameters>
|
119
|
-
<manipulate output="result"> data.hotels << result.value('id')
|
120
|
-
data.costs += result.value('costs').to_f</manipulate>
|
121
|
-
</call>
|
122
|
-
</parallel_branch>
|
123
|
-
<manipulate id="a3"> data.persons -= 1</manipulate>
|
124
|
-
</loop>
|
125
|
-
</parallel>
|
126
|
-
<choose>
|
127
|
-
<alternative condition="data.costs > 700">
|
128
|
-
<call id="a4" endpoint="approve">
|
129
|
-
<parameters>
|
130
|
-
<method>:post</method>
|
131
|
-
<parameters>
|
132
|
-
<costs>data.costs</costs>
|
133
|
-
</parameters>
|
134
|
-
</parameters>
|
135
|
-
</call>
|
136
|
-
</alternative>
|
137
|
-
</choose>
|
138
102
|
</description>
|
139
103
|
</description>
|
140
104
|
<transformation>
|