cpee 1.3.174 → 1.3.175
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Rakefile +0 -6
- data/cockpit/js/instance.js +15 -0
- data/cpee.gemspec +1 -1
- data/lib/cpee/controller.rb +9 -0
- data/lib/cpee/handler_properties.rb +2 -0
- 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/12/notifications/8d7f2ae546a742fce3a0a488266ea51d/consumer-secret +1 -0
- data/server/instances/12/notifications/8d7f2ae546a742fce3a0a488266ea51d/producer-secret +1 -0
- data/server/instances/12/notifications/8d7f2ae546a742fce3a0a488266ea51d/subscription.xml +6 -0
- data/server/instances/12/properties.xml +0 -1
- data/server/instances/13/notifications/4ff0cde5161c44dae49b263cbc12eaf8/consumer-secret +1 -0
- data/server/instances/13/notifications/4ff0cde5161c44dae49b263cbc12eaf8/producer-secret +1 -0
- data/server/instances/{14/notifications/5bcce90b170116a77fb25aea4e133acc → 13/notifications/4ff0cde5161c44dae49b263cbc12eaf8}/subscription.xml +0 -0
- data/server/instances/14/properties.xml +160 -160
- data/server/instances/15/properties.xml +314 -28
- data/server/instances/16/properties.xml +249 -28
- data/server/instances/17/properties.xml +130 -28
- data/server/instances/18/properties.xml +2 -3
- data/server/instances/19/properties.xml +1 -0
- 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 +117 -131
- 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/12/notifications/7ace1a6f6974fe3574107a19b5e9d036/consumer-secret +0 -1
- data/server/instances/12/notifications/7ace1a6f6974fe3574107a19b5e9d036/producer-secret +0 -1
- data/server/instances/12/notifications/7ace1a6f6974fe3574107a19b5e9d036/subscription.xml +0 -33
- data/server/instances/14/notifications/5bcce90b170116a77fb25aea4e133acc/consumer-secret +0 -1
- data/server/instances/14/notifications/5bcce90b170116a77fb25aea4e133acc/producer-secret +0 -1
- data/server/instances/20/properties.xml +0 -46
- data/server/instances/21/properties.xml +0 -46
- data/server/instances/22/notifications/f9c504b8c715ec94a99fc3c6a660c53a/consumer-secret +0 -1
- data/server/instances/22/notifications/f9c504b8c715ec94a99fc3c6a660c53a/producer-secret +0 -1
- data/server/instances/22/notifications/f9c504b8c715ec94a99fc3c6a660c53a/subscription.xml +0 -23
- data/server/instances/22/properties.xml +0 -112
- data/server/instances/23/notifications/0a5a059f4ae897aee1446d560210dec0/consumer-secret +0 -1
- data/server/instances/23/notifications/0a5a059f4ae897aee1446d560210dec0/producer-secret +0 -1
- data/server/instances/23/notifications/0a5a059f4ae897aee1446d560210dec0/subscription.xml +0 -23
- data/server/instances/23/properties.xml +0 -148
- data/server/server.pid +0 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 70225433763cb242babcee10a600ef4c1c93608e
|
4
|
+
data.tar.gz: 656cdb6a210f034042af3286da1becec952e7e30
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: da3e0654adf834fdaa9b10268a31639516865fb80d9828a716679fc5d60e3c87147528ba16942254ce8ec81c25700b4533f1eddc049cc27aec8dfb8d15d6e623
|
7
|
+
data.tar.gz: 8b3493514a48f2fe03a7a1662ad71cacaedf124f92fa457bf179dbb6572c3d1d0ac12402c5cf0570ddcd82633de4e667d6364cc2944b9a0975ad049b34f610c0
|
data/Rakefile
CHANGED
@@ -2,12 +2,6 @@ require 'rake'
|
|
2
2
|
require 'rubygems/package_task'
|
3
3
|
require 'rake/testtask'
|
4
4
|
|
5
|
-
Rake::TestTask.new do |t|
|
6
|
-
t.libs << "test"
|
7
|
-
t.test_files = FileList['./test/*/tc_*.rb']
|
8
|
-
t.verbose = false
|
9
|
-
end
|
10
|
-
|
11
5
|
Rake::TestTask.new do |t|
|
12
6
|
t.libs << "test"
|
13
7
|
t.test_files = FileList['./test/tc_*.rb']
|
data/cockpit/js/instance.js
CHANGED
@@ -610,6 +610,7 @@ function set_testset(testset) {// {{{
|
|
610
610
|
});
|
611
611
|
|
612
612
|
load_testset_dataelements(url,testset);
|
613
|
+
load_testset_attributes(url,testset);
|
613
614
|
load_testset_endpoints(url,testset);
|
614
615
|
load_testset_pos(url,testset);
|
615
616
|
|
@@ -786,6 +787,20 @@ function load_testset_dataelements(url,testset) {// {{{
|
|
786
787
|
error: report_failure
|
787
788
|
});
|
788
789
|
}// }}}
|
790
|
+
function load_testset_attributes(url,testset) {// {{{
|
791
|
+
if ($("testset > attributes",testset).length == 0) { return; }
|
792
|
+
var ser = '';
|
793
|
+
$("testset > attributes > *",testset).each(function(){
|
794
|
+
ser += $(this).serializeXML() + "\n";
|
795
|
+
});
|
796
|
+
var val = "<content>" + ser + "</content>";
|
797
|
+
$.ajax({
|
798
|
+
type: "PUT",
|
799
|
+
url: url + "/properties/values/attributes",
|
800
|
+
data: ({content: val}),
|
801
|
+
error: report_failure
|
802
|
+
});
|
803
|
+
}// }}}
|
789
804
|
function load_testset_endpoints(url,testset) {// {{{
|
790
805
|
if ($("testset > endpoints",testset).length == 0) { return; }
|
791
806
|
var ser = '';
|
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.175"
|
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"
|
data/lib/cpee/controller.rb
CHANGED
@@ -62,6 +62,7 @@ module CPEE
|
|
62
62
|
@callbacks = {}
|
63
63
|
@instance = EmptyWorkflow.new(self)
|
64
64
|
@positions = []
|
65
|
+
@attributes = {}
|
65
66
|
@thread = nil
|
66
67
|
@mutex = Mutex.new
|
67
68
|
@opts = opts
|
@@ -93,6 +94,7 @@ module CPEE
|
|
93
94
|
unserialize_endpoints!
|
94
95
|
unserialize_dsl!
|
95
96
|
unserialize_positions!
|
97
|
+
unserialize_attributes!
|
96
98
|
end
|
97
99
|
|
98
100
|
attr_reader :id
|
@@ -100,6 +102,7 @@ module CPEE
|
|
100
102
|
attr_reader :notifications
|
101
103
|
attr_reader :callbacks
|
102
104
|
attr_reader :mutex
|
105
|
+
attr_reader :attributes
|
103
106
|
|
104
107
|
def base_url
|
105
108
|
@opts[:url]
|
@@ -273,6 +276,12 @@ module CPEE
|
|
273
276
|
end
|
274
277
|
end # }}}
|
275
278
|
|
279
|
+
def unserialize_attributes! #{{{
|
280
|
+
@attributes = {}
|
281
|
+
@properties.data.find("/p:properties/p:attributes/p:*").map do |ele|
|
282
|
+
@attributes[ele.qname.name] = ele.text
|
283
|
+
end
|
284
|
+
end #}}}
|
276
285
|
def unserialize_dataelements! #{{{
|
277
286
|
@instance.data.clear
|
278
287
|
@properties.data.find("/p:properties/p:dataelements/p:*").each do |e|
|
@@ -29,6 +29,8 @@ class PropertiesHandler < Riddl::Utils::Properties::HandlerBase
|
|
29
29
|
when 'dataelements'
|
30
30
|
@data.unserialize_dataelements!
|
31
31
|
@data.notify('properties/dataelements/change', :instance => @data.instance)
|
32
|
+
when 'attributes'
|
33
|
+
@data.unserialize_attributes!
|
32
34
|
when 'positions'
|
33
35
|
@data.unserialize_positions!
|
34
36
|
@data.notify('properties/position/change', :instance => @data.instance)
|
@@ -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>
|