cpee 1.3.174 → 1.3.175

Sign up to get free protection for your applications and to get access to all the features.
Files changed (50) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +0 -6
  3. data/cockpit/js/instance.js +15 -0
  4. data/cpee.gemspec +1 -1
  5. data/lib/cpee/controller.rb +9 -0
  6. data/lib/cpee/handler_properties.rb +2 -0
  7. data/server/instances/1/properties.xml +101 -69
  8. data/server/instances/10/properties.xml +70 -106
  9. data/server/instances/11/properties.xml +73 -133
  10. data/server/instances/12/notifications/8d7f2ae546a742fce3a0a488266ea51d/consumer-secret +1 -0
  11. data/server/instances/12/notifications/8d7f2ae546a742fce3a0a488266ea51d/producer-secret +1 -0
  12. data/server/instances/12/notifications/8d7f2ae546a742fce3a0a488266ea51d/subscription.xml +6 -0
  13. data/server/instances/12/properties.xml +0 -1
  14. data/server/instances/13/notifications/4ff0cde5161c44dae49b263cbc12eaf8/consumer-secret +1 -0
  15. data/server/instances/13/notifications/4ff0cde5161c44dae49b263cbc12eaf8/producer-secret +1 -0
  16. data/server/instances/{14/notifications/5bcce90b170116a77fb25aea4e133acc → 13/notifications/4ff0cde5161c44dae49b263cbc12eaf8}/subscription.xml +0 -0
  17. data/server/instances/14/properties.xml +160 -160
  18. data/server/instances/15/properties.xml +314 -28
  19. data/server/instances/16/properties.xml +249 -28
  20. data/server/instances/17/properties.xml +130 -28
  21. data/server/instances/18/properties.xml +2 -3
  22. data/server/instances/19/properties.xml +1 -0
  23. data/server/instances/2/properties.xml +44 -191
  24. data/server/instances/3/properties.xml +44 -70
  25. data/server/instances/4/properties.xml +68 -28
  26. data/server/instances/5/properties.xml +70 -10
  27. data/server/instances/6/properties.xml +55 -175
  28. data/server/instances/7/properties.xml +52 -118
  29. data/server/instances/8/properties.xml +50 -112
  30. data/server/instances/9/properties.xml +47 -115
  31. metadata +117 -131
  32. data/server/instances/1/notifications/d12eff1ac812661c05d7090ce7394cf9/consumer-secret +0 -1
  33. data/server/instances/1/notifications/d12eff1ac812661c05d7090ce7394cf9/producer-secret +0 -1
  34. data/server/instances/1/notifications/d12eff1ac812661c05d7090ce7394cf9/subscription.xml +0 -27
  35. data/server/instances/12/notifications/7ace1a6f6974fe3574107a19b5e9d036/consumer-secret +0 -1
  36. data/server/instances/12/notifications/7ace1a6f6974fe3574107a19b5e9d036/producer-secret +0 -1
  37. data/server/instances/12/notifications/7ace1a6f6974fe3574107a19b5e9d036/subscription.xml +0 -33
  38. data/server/instances/14/notifications/5bcce90b170116a77fb25aea4e133acc/consumer-secret +0 -1
  39. data/server/instances/14/notifications/5bcce90b170116a77fb25aea4e133acc/producer-secret +0 -1
  40. data/server/instances/20/properties.xml +0 -46
  41. data/server/instances/21/properties.xml +0 -46
  42. data/server/instances/22/notifications/f9c504b8c715ec94a99fc3c6a660c53a/consumer-secret +0 -1
  43. data/server/instances/22/notifications/f9c504b8c715ec94a99fc3c6a660c53a/producer-secret +0 -1
  44. data/server/instances/22/notifications/f9c504b8c715ec94a99fc3c6a660c53a/subscription.xml +0 -23
  45. data/server/instances/22/properties.xml +0 -112
  46. data/server/instances/23/notifications/0a5a059f4ae897aee1446d560210dec0/consumer-secret +0 -1
  47. data/server/instances/23/notifications/0a5a059f4ae897aee1446d560210dec0/producer-secret +0 -1
  48. data/server/instances/23/notifications/0a5a059f4ae897aee1446d560210dec0/subscription.xml +0 -23
  49. data/server/instances/23/properties.xml +0 -148
  50. data/server/server.pid +0 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 57b2bcb0a54d9ba22dfe122a16356af176febe0d
4
- data.tar.gz: b268f6cedef78bc4265d8564fdb72f7f940daaf6
3
+ metadata.gz: 70225433763cb242babcee10a600ef4c1c93608e
4
+ data.tar.gz: 656cdb6a210f034042af3286da1becec952e7e30
5
5
  SHA512:
6
- metadata.gz: 37cc26d6baf204364d8b6852e8948c1a49bf6c47729aa7a8d323d5fc9e552d5e099e451562cfa5f58d747e629659f22829e8329b7690a3f384c8ee022bbe5e8e
7
- data.tar.gz: a018352784375f69df6129f536d6d10a35cfc355c64b07b922962250165f4efc1174351d27763214f4e10fafc44bfaf25ed85037572b0de1b20ba9b8eb809500
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']
@@ -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 = '';
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = "cpee"
3
- s.version = "1.3.174"
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"
@@ -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>asd</info>
3
- <state>stopped</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
- <x/>
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
- <timeout>http://gruppe.wst.univie.ac.at/~mangler/services/timeout.php</timeout>
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>parallel do
15
- parallel_branch do
16
- call :a4, :timeout, { :label =&gt; nil, :method =&gt; "post", :parameters =&gt; { :timeout =&gt; a } }
17
- end
18
- parallel_branch do
19
- call :a5, :timeout, { :label =&gt; nil, :method =&gt; "post", :parameters =&gt; { :timeout =&gt; a } }
20
+ <dsl>call :a1, :bookAir, { :method =&gt; "post", :parameters =&gt; { :from =&gt; data.from, :to =&gt; data.to, :persons =&gt; data.persons } }, &lt;&lt;-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 &gt; 0} do
27
+ parallel_branch data.persons do |p|
28
+ call :a2, :bookHotel, { :method =&gt; "post", :parameters =&gt; { :to =&gt; data.to } }, &lt;&lt;-end
29
+ data.hotels &lt;&lt; result.value('id')
30
+ data.costs += result.value('costs').to_f
31
+ end
32
+ end
33
+ manipulate :a3, &lt;&lt;-end
34
+ data.persons -= 1
35
+ end
20
36
  end
21
37
  end
22
- call :a2, :timeout, { :label =&gt; nil, :method =&gt; "post", :parameters =&gt; { :timeout =&gt; b } }, &lt;&lt;-end
23
- data.x += "a2,"
38
+ choose do
39
+ alternative data.costs &gt; 700 do
40
+ call :a4, :approve, { :method =&gt; "post", :parameters =&gt; { :costs =&gt; 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
- <parallel svg-label="">
30
- <parallel_branch svg-label="">
31
- <call id="a4" endpoint="timeout" svg-label="">
32
- <parameters>
33
- <label/>
34
- <method>post</method>
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 &gt; 0">
61
+ <parallel_branch pass="data.persons" local="p">
62
+ <call id="a2" endpoint="bookHotel">
35
63
  <parameters>
36
- <timeout>a</timeout>
64
+ <method>post</method>
65
+ <parameters>
66
+ <to>data.to</to>
67
+ </parameters>
37
68
  </parameters>
38
- </parameters>
39
- </call>
40
- </parallel_branch>
41
- <parallel_branch svg-label="">
42
- <call id="a5" endpoint="timeout" svg-label="">
69
+ <manipulate output="result"> data.hotels &lt;&lt; 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 &gt; 700">
78
+ <call id="a4" endpoint="approve">
43
79
  <parameters>
44
- <label/>
45
80
  <method>post</method>
46
81
  <parameters>
47
- <timeout>a</timeout>
82
+ <costs>data.costs</costs>
48
83
  </parameters>
49
84
  </parameters>
50
85
  </call>
51
- </parallel_branch>
52
- </parallel>
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
- <parallel svg-label="">
73
- <parallel_branch svg-label="">
74
- <call id="a4" endpoint="timeout" svg-label="">
75
- <parameters>
76
- <label/>
77
- <method>post</method>
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 &gt; 0">
111
+ <parallel_branch pass="data.persons" local="p">
112
+ <call id="a2" endpoint="bookHotel">
78
113
  <parameters>
79
- <timeout>a</timeout>
114
+ <method>post</method>
115
+ <parameters>
116
+ <to>data.to</to>
117
+ </parameters>
80
118
  </parameters>
81
- </parameters>
82
- </call>
83
- </parallel_branch>
84
- <parallel_branch svg-label="">
85
- <call id="a5" endpoint="timeout" svg-label="">
119
+ <manipulate output="result"> data.hotels &lt;&lt; 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 &gt; 700">
128
+ <call id="a4" endpoint="approve">
86
129
  <parameters>
87
- <label/>
88
130
  <method>post</method>
89
131
  <parameters>
90
- <timeout>a</timeout>
132
+ <costs>data.costs</costs>
91
133
  </parameters>
92
134
  </parameters>
93
135
  </call>
94
- </parallel_branch>
95
- </parallel>
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>finished</state>
3
+ <state>ready</state>
4
4
  <handlerwrapper>DefaultHandlerWrapper</handlerwrapper>
5
- <positions/>
5
+ <positions>
6
+ <a1>after</a1>
7
+ </positions>
6
8
  <dataelements>
7
- <persons>0</persons>
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
- <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>
12
+ <timeout>http://gruppe.wst.univie.ac.at/~mangler/services/timeout.php</timeout>
19
13
  </endpoints>
20
- <dsl>call :a1, :bookAir, { :method =&gt; :post, :parameters =&gt; {:from =&gt; data.from, :to =&gt; data.to, :persons =&gt; data.persons} }, &lt;&lt;-end
21
- data.airline = result.value('id')
22
- data.costs += result.value('costs').to_f
23
- status.update 1, 'Hotel'
14
+ <dsl>call :a1, :timeout, { :method =&gt; "post", :parameters =&gt; { :timeout =&gt; 2 } }, &lt;&lt;-end
15
+ data.x += "a1,"
24
16
  end
25
- parallel do
26
- loop pre_test{data.persons &gt; 0} do
27
- parallel_branch data.persons do |p|
28
- call :a2, :bookHotel, { :method =&gt; :post, :parameters =&gt; {:to =&gt; data.to} }, &lt;&lt;-end
29
- data.hotels &lt;&lt; result.value('id')
30
- data.costs += result.value('costs').to_f
31
- end
32
- end
33
- manipulate :a3, &lt;&lt;-end
34
- data.persons -= 1
35
- end
36
- end
17
+ call :a2, :timeout, { :method =&gt; "post", :parameters =&gt; { :timeout =&gt; 4 } }, &lt;&lt;-end
18
+ data.x += "a2,"
37
19
  end
38
- choose :inclusive do
39
- alternative "data.costs &gt; 700" do
40
- call :a4, :approve, { :method =&gt; :post, :parameters =&gt; {:costs =&gt; data.costs} }
41
- end
20
+ call :a3, :timeout, { :method =&gt; "post", :parameters =&gt; { :timeout =&gt; 4 } }, &lt;&lt;-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
- <call id="a1" endpoint="bookAir">
26
+ <!--{{{-->
27
+ <call id="a1" endpoint="timeout">
47
28
  <parameters>
48
- <method>:post</method>
29
+ <!--{{{-->
30
+ <method>post</method>
49
31
  <parameters>
50
- <from>data.from</from>
51
- <to>data.to</to>
52
- <persons>data.persons</persons>
32
+ <timeout>2</timeout>
53
33
  </parameters>
54
34
  </parameters>
55
- <manipulate output="result"> data.airline = result.value('id')
56
- data.costs += result.value('costs').to_f
57
- status.update 1, 'Hotel'</manipulate>
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 &gt; 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 &lt;&lt; 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 &gt; 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
- <call id="a1" endpoint="bookAir">
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
- <method>:post</method>
93
+ <!--{{{-->
94
+ <method>post</method>
99
95
  <parameters>
100
- <from>data.from</from>
101
- <to>data.to</to>
102
- <persons>data.persons</persons>
96
+ <timeout>4</timeout>
103
97
  </parameters>
104
98
  </parameters>
105
- <manipulate output="result"> data.airline = result.value('id')
106
- data.costs += result.value('costs').to_f
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 &gt; 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 &lt;&lt; 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 &gt; 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>