cpee 1.3.214 → 1.3.215

Sign up to get free protection for your applications and to get access to all the features.
Files changed (66) hide show
  1. checksums.yaml +4 -4
  2. data/cockpit/css/wfadaptor.css +73 -5
  3. data/cockpit/js/instance.js +43 -24
  4. data/cockpit/js/wfadaptor.js +56 -26
  5. data/cockpit/testsets/Coopis Testset.xml +4 -1
  6. data/cockpit/testsets/ICSOC Testset.xml +6 -0
  7. data/cockpit/themes/adventure/theme.js +1 -0
  8. data/cockpit/themes/default/symbols/alternative.svg +1 -1
  9. data/cockpit/themes/default/symbols/call.svg +1 -1
  10. data/cockpit/themes/default/symbols/callcorrelationreceive.svg +2 -2
  11. data/cockpit/themes/default/symbols/callcorrelationsend.svg +2 -2
  12. data/cockpit/themes/default/symbols/callinstantiation.svg +1 -1
  13. data/cockpit/themes/default/symbols/callmanipulate.svg +2 -2
  14. data/cockpit/themes/default/symbols/callmanipulateworklist.svg +2 -2
  15. data/cockpit/themes/default/symbols/callworklist.svg +1 -1
  16. data/cockpit/themes/default/symbols/choose.svg +1 -1
  17. data/cockpit/themes/default/symbols/choose_exclusive.svg +1 -1
  18. data/cockpit/themes/default/symbols/choose_inclusive.svg +1 -1
  19. data/cockpit/themes/default/symbols/critical.svg +1 -1
  20. data/cockpit/themes/default/symbols/escape.svg +2 -2
  21. data/cockpit/themes/default/symbols/loop.svg +1 -1
  22. data/cockpit/themes/default/symbols/manipulate.svg +1 -1
  23. data/cockpit/themes/default/symbols/otherwise.svg +1 -1
  24. data/cockpit/themes/default/symbols/parallel.svg +1 -1
  25. data/cockpit/themes/default/symbols/parallel_branch.svg +1 -1
  26. data/cockpit/themes/default/symbols/scripts.svg +1 -1
  27. data/cockpit/themes/default/theme.js +66 -52
  28. data/cockpit/themes/labels/symbols/alternative.svg +1 -1
  29. data/cockpit/themes/labels/symbols/call.svg +1 -1
  30. data/cockpit/themes/labels/symbols/callcorrelationreceive.svg +2 -2
  31. data/cockpit/themes/labels/symbols/callcorrelationsend.svg +3 -3
  32. data/cockpit/themes/labels/symbols/callinstantiation.svg +1 -1
  33. data/cockpit/themes/labels/symbols/callmanipulate.svg +2 -2
  34. data/cockpit/themes/labels/symbols/callmanipulateworklist.svg +2 -2
  35. data/cockpit/themes/labels/symbols/callworklist.svg +1 -1
  36. data/cockpit/themes/labels/symbols/choose.svg +1 -1
  37. data/cockpit/themes/labels/symbols/choose_exclusive.svg +1 -1
  38. data/cockpit/themes/labels/symbols/choose_inclusive.svg +1 -1
  39. data/cockpit/themes/labels/symbols/critical.svg +1 -1
  40. data/cockpit/themes/labels/symbols/escape.svg +2 -2
  41. data/cockpit/themes/labels/symbols/loop.svg +1 -1
  42. data/cockpit/themes/labels/symbols/manipulate.svg +1 -1
  43. data/cockpit/themes/labels/symbols/otherwise.svg +1 -1
  44. data/cockpit/themes/labels/symbols/parallel.svg +1 -1
  45. data/cockpit/themes/labels/symbols/parallel_branch.svg +1 -1
  46. data/cockpit/themes/labels/symbols/scripts.svg +1 -1
  47. data/cockpit/themes/labels/theme.js +66 -52
  48. data/cpee.gemspec +1 -1
  49. data/log/logoverlay.xml +1 -1
  50. data/log/server.rb +21 -8
  51. data/log/yaml/server.rb +6 -0
  52. data/log/yaml/yaml.rb +5 -5
  53. data/server/instances/21/properties.xml +156 -0
  54. data/server/instances/22/properties.xml +118 -0
  55. data/server/instances/23/properties.xml +118 -0
  56. data/server/instances/24/properties.xml +156 -0
  57. data/server/instances/25/properties.xml +156 -0
  58. data/server/instances/26/properties.xml +156 -0
  59. data/server/instances/27/notifications/f43a34bc3d85f852bece416443f1a528/consumer-secret +1 -0
  60. data/server/instances/27/notifications/f43a34bc3d85f852bece416443f1a528/producer-secret +1 -0
  61. data/server/instances/27/notifications/f43a34bc3d85f852bece416443f1a528/subscription.xml +38 -0
  62. data/server/instances/27/properties.xml +140 -0
  63. data/server/instances/6/properties.xml +11 -11
  64. data/server/instances/7/properties.xml +111 -75
  65. data/server/server.pid +1 -0
  66. metadata +13 -2
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = "cpee"
3
- s.version = "1.3.214"
3
+ s.version = "1.3.215"
4
4
  s.platform = Gem::Platform::RUBY
5
5
  s.license = "LGPL-3.0"
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"
@@ -4,7 +4,7 @@
4
4
  </message>
5
5
 
6
6
  <resource>
7
- <get out="logresponse"/>
7
+ <get in='*' out="logresponse"/>
8
8
  </resource>
9
9
 
10
10
  </description>
@@ -23,24 +23,29 @@ class Logging < Riddl::Implementation #{{{
23
23
  </global>
24
24
  <global scope="event">
25
25
  <string key="concept:name" value="__INVALID__"/>
26
- <string key="concept:endpoint" value=""/>
27
- <string key="id:id" value=""/>
26
+ <string key="concept:endpoint" value="__ENDPOINT__"/>
27
+ <string key="id:id" value="__ID__"/>
28
28
  <string key="lifecycle:transition" value="complete" />
29
- <date key="time:timestamp" value=""/>
29
+ <date key="time:timestamp" value="1990-02-17T09:45:00.000+01:00"/>
30
30
  </global>
31
31
  <classifier name="Data" keys="data_send data_received"/>
32
32
  <classifier name="Data_Received" keys="data_received"/>
33
- <classifier name="Data_Send" keys="data_send"/>
33
+ <classifier name="Name" keys="concept:name"/>
34
+ <classifier name="Endpoint" keys="concept:endpoint"/>
35
+ <classifier name="ID" keys="id:id"/>
36
+ <classifier name="Lifecycle" keys="lifecycle:transition"/>
34
37
  <trace/>
35
38
  </log>
36
39
  END
37
40
  def doc(event_name,log_dir,instancenr,notification)
41
+ start_x = Time.now
38
42
  uuid = notification['instance_uuid']
39
43
  activity = notification["activity"]
40
44
  parameters = notification['parameters']
41
45
  receiving = notification['received']
42
46
  Dir.mkdir(log_dir+'/'+uuid) unless Dir.exist?(log_dir+'/'+uuid)
43
47
  time_added=false
48
+ cpee_time = notification['time']
44
49
  XML::Smart.modify(log_dir+'/'+uuid+'/log.xes',LOGTEMPLATE) do |xml|
45
50
  begin
46
51
  trace = xml.find("/xmlns:log/xmlns:trace").first
@@ -76,9 +81,12 @@ class Logging < Riddl::Implementation #{{{
76
81
  node.add XML::Smart.string(v['content']).root
77
82
  when /\/json$/
78
83
  rec_unjson(JSON.parse(v['content']),event,"data_received")
79
- else
84
+ when /\/html$/
80
85
  list = event.add 'list', :key => "data_received"
81
86
  list.add 'string', :key => k, :value => v['content']
87
+ else
88
+ list = event.add 'list', :key => "data_received"
89
+ list.add 'string', :key => k, :value => v
82
90
  end
83
91
  end
84
92
  end
@@ -86,12 +94,17 @@ class Logging < Riddl::Implementation #{{{
86
94
  pp receiving
87
95
  end
88
96
  end
89
- event.add 'date', :key => "time:timestamp", :value => Time.now.iso8601 unless time_added
97
+ event.add 'date', :key => "time:timestamp", :value => cpee_time unless time_added
98
+ pid, size = `ps ax -o pid,rss | grep -E "^[[:space:]]*#{$$}"`.strip.split.map(&:to_i)
99
+ File.open(log_dir+'/'+uuid+'/memory.file',"a+"){ |f| f<< size << "\n" }
90
100
  rescue => e
91
101
  puts e.message
92
102
  puts e.backtrace
93
103
  end
94
104
  end
105
+ end_x = Time.now
106
+ x = end_x - start_x
107
+ File.open(log_dir+'/'+uuid+'/time.file',"a+"){ |f| f<< x << "\n" }
95
108
  end
96
109
 
97
110
  def rec_unjson(value,list,key)
@@ -127,12 +140,12 @@ Riddl::Server.new(::File.dirname(__FILE__) + '/log.xml', :host => "coruscant.wst
127
140
  cross_site_xhr true
128
141
  log_path = "/home/demo/Projects/cpee-helpers/log/logs"
129
142
 
130
- interface 'events' do
143
+ interface 'events' do
131
144
  run Logging if post 'event'
132
145
  #run CB if post 'vote'
133
146
  end
134
147
  interface 'logoverlay' do |r|
135
- run Riddl::Utils::FileServe, log_path + r[:h]["RIDDL_DECLARATION_PATH"]+ ".xes","text/xml" if get
148
+ run Riddl::Utils::FileServe, "#{log_path}#{r[:h]["RIDDL_DECLARATION_PATH"]}.xes","text/xml" if get '*'
136
149
  end
137
150
 
138
151
 
@@ -40,6 +40,7 @@ class Logging < Riddl::Implementation #{{{
40
40
  }
41
41
  }
42
42
  def doc(event_name,log_dir,instancenr,notification)
43
+ x = Time.now
43
44
  log = LOGTEMPLATE
44
45
  uuid = notification['instance_uuid']
45
46
  activity = notification["activity"]
@@ -75,7 +76,12 @@ class Logging < Riddl::Implementation #{{{
75
76
  event["time:timestamp"]= Time.now.iso8601 unless time_added
76
77
  File.open(log_dir+'/'+uuid+'/log.xes',"a") do |f|
77
78
  f << {'event' => event}.to_yaml
79
+ pid, size = `ps ax -o pid,rss | grep -E "^[[:space:]]*#{$$}"`.strip.split.map(&:to_i)
80
+ File.open(log_dir+'/'+uuid+'/memory.file',"a+"){ |fl| fl<< size << "\n" }
78
81
  end
82
+ y = Time.now
83
+ z = y-x
84
+ File.open(log_dir+'/'+uuid+'/time.file',"a+"){ |f| f<< z << "\n" }
79
85
  end
80
86
 
81
87
  def rec_unjson(value,list,key)
@@ -4,16 +4,16 @@ require 'pp'
4
4
 
5
5
  def pbuf(buf)
6
6
  unless buf.empty?
7
- pp YAML.load(buf)
8
- pp '---'
7
+ x = YAML.load(buf)
9
8
  end
10
9
  buf.clear
10
+ x
11
11
  end
12
12
 
13
+ result = []
13
14
  buf = ""
14
15
  File.open('log.xes').each do |line|
15
- pbuf(buf) if line == "---\n"
16
+ result << pbuf(buf) if line == "---\n"
16
17
  buf += line
17
18
  end
18
-
19
- pbuf(buf)
19
+ result << pbuf(buf)
@@ -0,0 +1,156 @@
1
+ <properties xmlns="http://riddl.org/ns/common-patterns/properties/1.0">
2
+ <attributes>
3
+ <uuid>6e375218-ed2b-4f53-9b8a-f4cef916d3de</uuid>
4
+ <info>Enter info here</info>
5
+ <modeltype>CPEE</modeltype>
6
+ <theme>labels</theme>
7
+ </attributes>
8
+ <state>finished</state>
9
+ <handlerwrapper>DefaultHandlerWrapper</handlerwrapper>
10
+ <positions/>
11
+ <dataelements>
12
+ <persons>3</persons>
13
+ <card>Visa_12345</card>
14
+ <airline>null</airline>
15
+ <hotels>[]</hotels>
16
+ <from>Vienna</from>
17
+ <to>Prague</to>
18
+ <costs>0</costs>
19
+ </dataelements>
20
+ <endpoints>
21
+ <bookAir>http://gruppe.wst.univie.ac.at/~mangler/services/airline.php</bookAir>
22
+ <bookHotel>http://gruppe.wst.univie.ac.at/~mangler/services/hotel.php</bookHotel>
23
+ <approve>http://gruppe.wst.univie.ac.at/~mangler/services/approval.php</approve>
24
+ </endpoints>
25
+ <dsl>call :a1, :bookAir, parameters: { :label =&gt; "Book Airline":method =&gt; :post, :arguments =&gt; [⭐(:name =&gt; :from, :value =&gt; data.from), ⭐(:name =&gt; :to, :value =&gt; data.to), ⭐(:name =&gt; :persons, :value =&gt; data.persons)] }, finalize: &lt;&lt;-END
26
+ data.airline = result.value('id')
27
+ data.costs += result.value('costs').to_f
28
+ status.update 1, 'Hotel'
29
+ END
30
+ parallel do
31
+ loop pre_test{data.persons &gt; 0} do
32
+ parallel_branch data.persons do |p|
33
+ call :a2, :bookHotel, parameters: { :label =&gt; "Book Hotel":method =&gt; :post, :arguments =&gt; [⭐(:name =&gt; :to, :value =&gt; data.to)] }, finalize: &lt;&lt;-END
34
+ data.hotels &lt;&lt; result.value('id')
35
+ data.costs += result.value('costs').to_f
36
+ END
37
+ end
38
+ manipulate :a3, &lt;&lt;-END
39
+ data.persons -= 1
40
+ END
41
+ end
42
+ end
43
+ choose :inclusive do
44
+ alternative "data.costs &gt; 700" do
45
+ call :a4, :approve, parameters: { :label =&gt; "Approve Hotel":method =&gt; :post, :arguments =&gt; [⭐(:name =&gt; :costs, :value =&gt; data.costs)] }
46
+ end
47
+ end
48
+ </dsl>
49
+ <dslx>
50
+ <description xmlns="http://cpee.org/ns/description/1.0">
51
+ <call id="a1" endpoint="bookAir">
52
+ <parameters>
53
+ <method>:post</method>
54
+ <label>Book Airline</label>
55
+ <arguments>
56
+ <from>data.from</from>
57
+ <to>data.to</to>
58
+ <persons>data.persons</persons>
59
+ </arguments>
60
+ </parameters>
61
+ <finalize output="result">data.airline = result.value('id')
62
+ data.costs += result.value('costs').to_f
63
+ status.update 1, 'Hotel'</finalize>
64
+ </call>
65
+ <parallel>
66
+ <loop mode="pre_test" condition="data.persons &gt; 0">
67
+ <parallel_branch pass="data.persons" local="p">
68
+ <call id="a2" endpoint="bookHotel">
69
+ <parameters>
70
+ <method>:post</method>
71
+ <label>Book Hotel</label>
72
+ <arguments>
73
+ <to>data.to</to>
74
+ </arguments>
75
+ </parameters>
76
+ <finalize output="result">data.hotels &lt;&lt; result.value('id')
77
+ data.costs += result.value('costs').to_f</finalize>
78
+ </call>
79
+ </parallel_branch>
80
+ <manipulate id="a3">data.persons -= 1</manipulate>
81
+ </loop>
82
+ </parallel>
83
+ <choose mode="inclusive">
84
+ <alternative condition="data.costs &gt; 700">
85
+ <call id="a4" endpoint="approve">
86
+ <parameters>
87
+ <method>:post</method>
88
+ <label>Approve Hotel</label>
89
+ <arguments>
90
+ <costs>data.costs</costs>
91
+ </arguments>
92
+ </parameters>
93
+ </call>
94
+ </alternative>
95
+ </choose>
96
+ </description>
97
+ </dslx>
98
+ <status>
99
+ <id>0</id>
100
+ <message>undefined</message>
101
+ </status>
102
+ <description>
103
+ <description xmlns="http://cpee.org/ns/description/1.0">
104
+ <call id="a1" endpoint="bookAir">
105
+ <parameters>
106
+ <method>:post</method>
107
+ <label>Book Airline</label>
108
+ <arguments>
109
+ <from>data.from</from>
110
+ <to>data.to</to>
111
+ <persons>data.persons</persons>
112
+ </arguments>
113
+ </parameters>
114
+ <finalize output="result">data.airline = result.value('id')
115
+ data.costs += result.value('costs').to_f
116
+ status.update 1, 'Hotel'</finalize>
117
+ </call>
118
+ <parallel>
119
+ <loop mode="pre_test" condition="data.persons &gt; 0">
120
+ <parallel_branch pass="data.persons" local="p">
121
+ <call id="a2" endpoint="bookHotel">
122
+ <parameters>
123
+ <method>:post</method>
124
+ <label>Book Hotel</label>
125
+ <arguments>
126
+ <to>data.to</to>
127
+ </arguments>
128
+ </parameters>
129
+ <finalize output="result">data.hotels &lt;&lt; result.value('id')
130
+ data.costs += result.value('costs').to_f</finalize>
131
+ </call>
132
+ </parallel_branch>
133
+ <manipulate id="a3">data.persons -= 1</manipulate>
134
+ </loop>
135
+ </parallel>
136
+ <choose mode="inclusive">
137
+ <alternative condition="data.costs &gt; 700">
138
+ <call id="a4" endpoint="approve">
139
+ <parameters>
140
+ <method>:post</method>
141
+ <label>Approve Hotel</label>
142
+ <arguments>
143
+ <costs>data.costs</costs>
144
+ </arguments>
145
+ </parameters>
146
+ </call>
147
+ </alternative>
148
+ </choose>
149
+ </description>
150
+ </description>
151
+ <transformation>
152
+ <description type="copy"/>
153
+ <dataelements type="rest"/>
154
+ <endpoints type="rest"/>
155
+ </transformation>
156
+ </properties>
@@ -0,0 +1,118 @@
1
+ <properties xmlns="http://riddl.org/ns/common-patterns/properties/1.0">
2
+ <attributes>
3
+ <uuid>8f912edc-d4a7-4793-8499-073860043452</uuid>
4
+ <info>Linear</info>
5
+ <modeltype>CPEE</modeltype>
6
+ <theme>default</theme>
7
+ </attributes>
8
+ <state>finished</state>
9
+ <handlerwrapper>DefaultHandlerWrapper</handlerwrapper>
10
+ <positions/>
11
+ <dataelements>
12
+ <x/>
13
+ </dataelements>
14
+ <endpoints>
15
+ <timeout>http://gruppe.wst.univie.ac.at/~mangler/services/timeout.php</timeout>
16
+ </endpoints>
17
+ <dsl>call :a1, :timeout, parameters: { :label =&gt; "Step 1", :method =&gt; :post, :arguments =&gt; [⭐(:name =&gt; :timeout, :value =&gt; 2)] }, finalize: &lt;&lt;-END
18
+ data.x += "a1,"
19
+ END
20
+ call :a2, :timeout, parameters: { :label =&gt; "Step 2", :method =&gt; :post, :arguments =&gt; [⭐(:name =&gt; :timeout, :value =&gt; 4)] }, finalize: &lt;&lt;-END
21
+ data.x += "a2,"
22
+ END
23
+ call :a3, :timeout, parameters: { :label =&gt; "Step 3", :method =&gt; :post, :arguments =&gt; [⭐(:name =&gt; :timeout, :value =&gt; 4)] }, finalize: &lt;&lt;-END
24
+ data.x += "a3,"
25
+ END
26
+ </dsl>
27
+ <dslx>
28
+ <description xmlns="http://cpee.org/ns/description/1.0">
29
+ <!--{{{-->
30
+ <call id="a1" endpoint="timeout">
31
+ <parameters>
32
+ <!--{{{-->
33
+ <label>Step 1</label>
34
+ <method>:post</method>
35
+ <arguments>
36
+ <timeout>2</timeout>
37
+ </arguments>
38
+ </parameters>
39
+ <!--}}}-->
40
+ <finalize output="result">data.x += "a1,"</finalize>
41
+ </call>
42
+ <call id="a2" endpoint="timeout">
43
+ <parameters>
44
+ <!--{{{-->
45
+ <label>Step 2</label>
46
+ <method>:post</method>
47
+ <arguments>
48
+ <timeout>4</timeout>
49
+ </arguments>
50
+ </parameters>
51
+ <!--}}}-->
52
+ <finalize output="result">data.x += "a2,"</finalize>
53
+ </call>
54
+ <call id="a3" endpoint="timeout">
55
+ <parameters>
56
+ <!--{{{-->
57
+ <label>Step 3</label>
58
+ <method>:post</method>
59
+ <arguments>
60
+ <timeout>4</timeout>
61
+ </arguments>
62
+ </parameters>
63
+ <!--}}}-->
64
+ <finalize output="result">data.x += "a3,"</finalize>
65
+ </call>
66
+ </description>
67
+ </dslx>
68
+ <status>
69
+ <id>0</id>
70
+ <message>undefined</message>
71
+ </status>
72
+ <description>
73
+ <description xmlns="http://cpee.org/ns/description/1.0">
74
+ <!--{{{-->
75
+ <call id="a1" endpoint="timeout">
76
+ <parameters>
77
+ <!--{{{-->
78
+ <label>Step 1</label>
79
+ <method>:post</method>
80
+ <arguments>
81
+ <timeout>2</timeout>
82
+ </arguments>
83
+ </parameters>
84
+ <!--}}}-->
85
+ <finalize output="result">data.x += "a1,"</finalize>
86
+ </call>
87
+ <call id="a2" endpoint="timeout">
88
+ <parameters>
89
+ <!--{{{-->
90
+ <label>Step 2</label>
91
+ <method>:post</method>
92
+ <arguments>
93
+ <timeout>4</timeout>
94
+ </arguments>
95
+ </parameters>
96
+ <!--}}}-->
97
+ <finalize output="result">data.x += "a2,"</finalize>
98
+ </call>
99
+ <call id="a3" endpoint="timeout">
100
+ <parameters>
101
+ <!--{{{-->
102
+ <label>Step 3</label>
103
+ <method>:post</method>
104
+ <arguments>
105
+ <timeout>4</timeout>
106
+ </arguments>
107
+ </parameters>
108
+ <!--}}}-->
109
+ <finalize output="result">data.x += "a3,"</finalize>
110
+ </call>
111
+ </description>
112
+ </description>
113
+ <transformation>
114
+ <description type="copy"/>
115
+ <dataelements type="rest"/>
116
+ <endpoints type="rest"/>
117
+ </transformation>
118
+ </properties>
@@ -0,0 +1,118 @@
1
+ <properties xmlns="http://riddl.org/ns/common-patterns/properties/1.0">
2
+ <attributes>
3
+ <uuid>9b7b1c9c-f895-4780-aae0-43e15654f400</uuid>
4
+ <info>Linear</info>
5
+ <modeltype>CPEE</modeltype>
6
+ <theme>default</theme>
7
+ </attributes>
8
+ <state>finished</state>
9
+ <handlerwrapper>DefaultHandlerWrapper</handlerwrapper>
10
+ <positions/>
11
+ <dataelements>
12
+ <x>a2,a3,</x>
13
+ </dataelements>
14
+ <endpoints>
15
+ <timeout>http://gruppe.wst.univie.ac.at/~mangler/services/timeout.php</timeout>
16
+ </endpoints>
17
+ <dsl>call :a1, :timeout, parameters: { :label =&gt; "Step 1", :method =&gt; :post, :arguments =&gt; [⭐(:name =&gt; :timeout, :value =&gt; 2)] }, finalize: &lt;&lt;-END
18
+ data.x += "a1,"
19
+ END
20
+ call :a2, :timeout, parameters: { :label =&gt; "Step 2", :method =&gt; :post, :arguments =&gt; [⭐(:name =&gt; :timeout, :value =&gt; 4)] }, finalize: &lt;&lt;-END
21
+ data.x += "a2,"
22
+ END
23
+ call :a3, :timeout, parameters: { :label =&gt; "Step 3", :method =&gt; :post, :arguments =&gt; [⭐(:name =&gt; :timeout, :value =&gt; 4)] }, finalize: &lt;&lt;-END
24
+ data.x += "a3,"
25
+ END
26
+ </dsl>
27
+ <dslx>
28
+ <description xmlns="http://cpee.org/ns/description/1.0">
29
+ <!--{{{-->
30
+ <call id="a1" endpoint="timeout">
31
+ <parameters>
32
+ <!--{{{-->
33
+ <label>Step 1</label>
34
+ <method>:post</method>
35
+ <arguments>
36
+ <timeout>2</timeout>
37
+ </arguments>
38
+ </parameters>
39
+ <!--}}}-->
40
+ <finalize output="result">data.x += "a1,"</finalize>
41
+ </call>
42
+ <call id="a2" endpoint="timeout">
43
+ <parameters>
44
+ <!--{{{-->
45
+ <label>Step 2</label>
46
+ <method>:post</method>
47
+ <arguments>
48
+ <timeout>4</timeout>
49
+ </arguments>
50
+ </parameters>
51
+ <!--}}}-->
52
+ <finalize output="result">data.x += "a2,"</finalize>
53
+ </call>
54
+ <call id="a3" endpoint="timeout">
55
+ <parameters>
56
+ <!--{{{-->
57
+ <label>Step 3</label>
58
+ <method>:post</method>
59
+ <arguments>
60
+ <timeout>4</timeout>
61
+ </arguments>
62
+ </parameters>
63
+ <!--}}}-->
64
+ <finalize output="result">data.x += "a3,"</finalize>
65
+ </call>
66
+ </description>
67
+ </dslx>
68
+ <status>
69
+ <id>0</id>
70
+ <message>undefined</message>
71
+ </status>
72
+ <description>
73
+ <description xmlns="http://cpee.org/ns/description/1.0">
74
+ <!--{{{-->
75
+ <call id="a1" endpoint="timeout">
76
+ <parameters>
77
+ <!--{{{-->
78
+ <label>Step 1</label>
79
+ <method>:post</method>
80
+ <arguments>
81
+ <timeout>2</timeout>
82
+ </arguments>
83
+ </parameters>
84
+ <!--}}}-->
85
+ <finalize output="result">data.x += "a1,"</finalize>
86
+ </call>
87
+ <call id="a2" endpoint="timeout">
88
+ <parameters>
89
+ <!--{{{-->
90
+ <label>Step 2</label>
91
+ <method>:post</method>
92
+ <arguments>
93
+ <timeout>4</timeout>
94
+ </arguments>
95
+ </parameters>
96
+ <!--}}}-->
97
+ <finalize output="result">data.x += "a2,"</finalize>
98
+ </call>
99
+ <call id="a3" endpoint="timeout">
100
+ <parameters>
101
+ <!--{{{-->
102
+ <label>Step 3</label>
103
+ <method>:post</method>
104
+ <arguments>
105
+ <timeout>4</timeout>
106
+ </arguments>
107
+ </parameters>
108
+ <!--}}}-->
109
+ <finalize output="result">data.x += "a3,"</finalize>
110
+ </call>
111
+ </description>
112
+ </description>
113
+ <transformation>
114
+ <description type="copy"/>
115
+ <dataelements type="rest"/>
116
+ <endpoints type="rest"/>
117
+ </transformation>
118
+ </properties>