cpee 1.3.220 → 1.3.221

Sign up to get free protection for your applications and to get access to all the features.
Files changed (44) hide show
  1. checksums.yaml +4 -4
  2. data/cockpit/js/instance.js +3 -3
  3. data/cockpit/js/wfadaptor.js +13 -8
  4. data/cpee.gemspec +2 -1
  5. data/log/chain.xml +27 -0
  6. data/log/logoverlay.xml +2 -2
  7. data/log/non_tamp.rb +156 -0
  8. data/log/yaml/server.rb +12 -12
  9. data/server/instances/313/notifications/crisp/consumer-secret +1 -0
  10. data/server/instances/313/notifications/crisp/producer-secret +1 -0
  11. data/server/instances/313/notifications/crisp/subscription.xml +7 -0
  12. data/server/instances/313/notifications/logging/consumer-secret +1 -0
  13. data/server/instances/313/notifications/logging/producer-secret +1 -0
  14. data/server/instances/313/notifications/logging/subscription.xml +7 -0
  15. data/server/instances/313/notifications/logging_yaml/consumer-secret +1 -0
  16. data/server/instances/313/notifications/logging_yaml/producer-secret +1 -0
  17. data/server/instances/313/notifications/logging_yaml/subscription.xml +7 -0
  18. data/server/instances/313/properties.xml +524 -0
  19. data/server/instances/6/properties.xml +5 -2
  20. data/server/instances/662/notifications/crisp/consumer-secret +1 -0
  21. data/server/instances/662/notifications/crisp/producer-secret +1 -0
  22. data/server/instances/662/notifications/crisp/subscription.xml +7 -0
  23. data/server/instances/662/notifications/logging/consumer-secret +1 -0
  24. data/server/instances/662/notifications/logging/producer-secret +1 -0
  25. data/server/instances/662/notifications/logging/subscription.xml +7 -0
  26. data/server/instances/662/notifications/logging_yaml/consumer-secret +1 -0
  27. data/server/instances/662/notifications/logging_yaml/producer-secret +1 -0
  28. data/server/instances/662/notifications/logging_yaml/subscription.xml +7 -0
  29. data/server/instances/662/properties.xml +427 -0
  30. data/server/instances/663/properties.xml +31 -0
  31. data/server/instances/664/properties.xml +425 -0
  32. data/server/instances/665/properties.xml +425 -0
  33. data/server/instances/666/properties.xml +427 -0
  34. data/server/instances/667/properties.xml +427 -0
  35. data/server/instances/668/properties.xml +425 -0
  36. data/server/instances/669/properties.xml +425 -0
  37. data/server/instances/670/properties.xml +31 -0
  38. data/server/instances/671/properties.xml +158 -0
  39. data/server/instances/672/properties.xml +199 -0
  40. data/server/instances/673/properties.xml +52 -0
  41. metadata +49 -5
  42. data/server/instances/33/notifications/d1b6606197334cda2bffaa2ea02707bf/consumer-secret +0 -1
  43. data/server/instances/33/notifications/d1b6606197334cda2bffaa2ea02707bf/producer-secret +0 -1
  44. data/server/instances/33/notifications/d1b6606197334cda2bffaa2ea02707bf/subscription.xml +0 -42
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 38413f92e302fc63a78864e0537885f8a5d0f0cf
4
- data.tar.gz: 90d61bb9af4d1564861bb745b9ad8bf4ba0ebea2
3
+ metadata.gz: c23db9cd13cd8f8fdfcdd918d389f58ca66024fd
4
+ data.tar.gz: 5676d9a8d659f96c1f63cddd723fe94c06c96d04
5
5
  SHA512:
6
- metadata.gz: cd123692bd6ff071f6b31a5d5142ce73e4e5e08209d6cf10f238de53c6939df84ea8b0cafb1fc6e5ac7266d1a0cc77104c37da6b3ee931c38c41fdc98a6676e6
7
- data.tar.gz: 3c00f77e0ecca15c19b2a56780ffb78b1fe8a33d47390ec2673fd982d690e749bc20b7ade0478065a6e183086bc58028e7417cae0b652d4e7a1c74c8876ec234
6
+ metadata.gz: f2bc178e35aa0482f6485e2f13596390c00506e40c131f346998c17e5179ff4ac93fd7fc68eaad82eb0560fc02857c5ee41d3fad96000d636d1d58c680a3dc89
7
+ data.tar.gz: a9c21bed26e25f5f820dc8415b33aef41606f006d0f7e932d0a141a083743e5f423d81bf04e5782f3e5403abc9d32d7b5b564e025003e67a423ff566ea4a0cfc
@@ -85,8 +85,8 @@ $(document).ready(function() {// {{{
85
85
  });
86
86
  var q = $.parseQuerySimple();
87
87
  if (q.min || q.min == "") {
88
- ui_toggle_vis_tab($('#instance ui-tabbar'));
89
- ui_toggle_vis_tab($('#parameters ui-tabbar'));
88
+ ui_toggle_vis_tab($('#instance'));
89
+ ui_toggle_vis_tab($('#parameters'));
90
90
  }
91
91
  if (q.monitor && q.load) {
92
92
  $("input[name=instance-url]").val(q.monitor);
@@ -208,7 +208,7 @@ function monitor_instance(load,exec) {// {{{
208
208
  history.replaceState({}, '', '?' + (q.min || q.min=="" ? "min&" : "") + 'monitor='+url);
209
209
 
210
210
  // Change url to return to current instance when reloading (because new subscription is made)
211
- $("input[name=votecontinue]").removeAttr('checked');
211
+ $("input[name=votecontinue]").prop( "checked", false );
212
212
  subscription_state = 'less';
213
213
 
214
214
  $.ajax({
@@ -179,10 +179,11 @@ function WfIllustrator(wf_adaptor) { // View {{{
179
179
  } // }}}
180
180
  // }}}
181
181
  // Helper Functions {{{
182
- var draw_label = this.draw.draw_label = function (row, col, label, group, where) { // {{{
182
+ var draw_label = this.draw.draw_label = function (tname, id, label, row, col, group) { // {{{
183
183
  var g = $X('<text class="label" transform="translate(' + String((col*self.width)-((self.width*0.39))) + ',' + String(row*self.height+20-((self.height*0.74))) + ')" xmlns="http://www.w3.org/2000/svg"></text>');
184
184
  g.text((label != '' ? '◤ ' : '') + label);
185
- if(group) { group.find('g.element[element-id=' + where + ']').append(g); }
185
+ bind_event(g,tname);
186
+ if(group) { group.find('g.element[element-id=' + id + ']').append(g); }
186
187
  else {self.svg.container.children('g:first').append(g);}
187
188
  return g;
188
189
  } // }}}
@@ -205,14 +206,18 @@ function WfIllustrator(wf_adaptor) { // View {{{
205
206
  $(g[0].childNodes[0]).append(sym);
206
207
 
207
208
  // Binding events for symbol
208
- for(event_name in adaptor.elements[tname]) {
209
- sym.bind(event_name, {'function_call':adaptor.elements[tname][event_name]}, function(e) { e.data.function_call($(this).parents('.element:first').attr('element-id'),e)});
210
- if(event_name == 'mousedown') sym.bind('contextmenu', false);
211
- }
209
+ bind_event(sym,tname);
210
+
212
211
  if(group) {group.append(g);}
213
212
  else {self.svg.container.children('g:first').append(g);}
214
213
  return g;
215
214
  } // }}}
215
+ var bind_event = this.draw.bind_event = function(sym,tname) { //{{{
216
+ for(event_name in adaptor.elements[tname]) {
217
+ sym.bind(event_name, {'function_call':adaptor.elements[tname][event_name]}, function(e) { e.data.function_call($(this).parents('.element:first').attr('element-id'),e)});
218
+ if(event_name == 'mousedown') sym.bind('contextmenu', false);
219
+ }
220
+ } //}}}
216
221
  var draw_border = this.draw.draw_border = function(id, p1, p2, group) { // {{{
217
222
  group.prepend($X('<rect element-id="' + id + '" x="' + (p1.col-0.50)*self.width + '" ' +
218
223
  'y="' + (p1.row-0.80)*self.height + '" ' +
@@ -306,7 +311,7 @@ function WfDescription(wf_adaptor, wf_illustrator) { // Model {{{
306
311
  if (illustrator.compact == false) {
307
312
  if (labels.length > 0) {
308
313
  _.each(labels,function(a,key) {
309
- illustrator.draw.draw_label(a.row, graph.max.col + 1, a.label, graph.svg, a.element_id);
314
+ illustrator.draw.draw_label(a.tname, a.element_id, a.label, a.row, graph.max.col + 1, graph.svg);
310
315
  });
311
316
  graph.max.col += 4;
312
317
  }
@@ -509,7 +514,7 @@ function WfDescription(wf_adaptor, wf_illustrator) { // Model {{{
509
514
  if (illustrator.elements[tname].label) {
510
515
  var lab = illustrator.elements[tname].label(this);
511
516
  $(this).attr('svg-label', lab);
512
- labels.push({row: pos.row, element_id: $(this).attr('svg-id'), label: lab});
517
+ labels.push({row: pos.row, element_id: $(this).attr('svg-id'), tname: tname, label: lab});
513
518
  } else {
514
519
  $(this).attr('svg-label', '');
515
520
  } // }}}
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = "cpee"
3
- s.version = "1.3.220"
3
+ s.version = "1.3.221"
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"
@@ -25,4 +25,5 @@ Gem::Specification.new do |s|
25
25
  s.add_runtime_dependency 'weel', '~> 1.99'
26
26
  s.add_runtime_dependency 'savon', '~> 2'
27
27
  s.add_runtime_dependency 'highline', '~> 1.6'
28
+ s.add_runtime_dependency 'json', '~>2.1'
28
29
  end
@@ -0,0 +1,27 @@
1
+ <declaration xmlns="http://riddl.org/ns/declaration/1.0" xmlns:xi="http://www.w3.org/2001/XInclude">
2
+ <interface name="events">
3
+ <xi:include href="http://www.riddl.org/ns/common-patterns/notifications-consumer/1.0/consumer.xml"/>
4
+ </interface>
5
+ <interface name="cpee" location="http://cpee.org:9298">
6
+ <xi:include href="http://cpee.org:9298/?riddl-description"/>
7
+ </interface>
8
+ <interface name="logoverlay">
9
+ <xi:include href="logoverlay.xml"/>
10
+ </interface>
11
+
12
+ <facade>
13
+ <tile>
14
+ <layer name="cpee"/>
15
+ </tile>
16
+ <tile>
17
+ <layer name="events">
18
+ <apply-to>/log</apply-to>
19
+ </layer>
20
+ </tile>
21
+ <tile>
22
+ <layer name="logoverlay">
23
+ <apply-to>/chain</apply-to>
24
+ </layer>
25
+ </tile>
26
+ </facade>
27
+ </declaration>
@@ -1,6 +1,6 @@
1
- <description datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes" xmlns="http://riddl.org/ns/description/1.0" xmlns:xi="http://www.w3.org/2001/XInclude">
1
+ <description datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes" xmlns="http://riddl.org/ns/description/1.0" xmlns:xi="http://www.w3.org/2001/XInclude">
2
2
  <message name="logresponse">
3
- <parameter name="file" mimetype="text/xml"/>
3
+ <parameter name="file" mimetype="*"/>
4
4
  </message>
5
5
 
6
6
  <resource>
@@ -0,0 +1,156 @@
1
+ #!/usr/bin/ruby
2
+ require 'pp'
3
+ require 'json'
4
+ require 'rubygems'
5
+ require 'fileutils'
6
+ require 'riddl/server'
7
+ require 'riddl/client'
8
+ require 'riddl/utils/notifications_producer'
9
+ require 'riddl/utils/properties'
10
+ require 'riddl/utils/downloadify'
11
+ require 'riddl/utils/turtle'
12
+ require 'time'
13
+
14
+ class FileServe < Riddl::Implementation
15
+ def response
16
+ path = File.file?(@a[0]) ? @a[0] : "#{@a[0]}/#{@r[@match.length-1..-1].join('/')}".gsub(/\/+/,'/')
17
+
18
+ if File.directory?(path)
19
+ @status = 404
20
+ return []
21
+ end
22
+ if File.exists?(path)
23
+ fmt = @a[1] || begin
24
+ mt = MIME::Types.type_for(path).first
25
+ if mt.nil?
26
+ 'text/plain;charset=utf-8'
27
+ else
28
+ apx = ''
29
+ if mt.ascii?
30
+ tstr = File.read(path,CharlockHolmes::EncodingDetector::DEFAULT_BINARY_SCAN_LEN)
31
+ apx = ';charset=' + CharlockHolmes::EncodingDetector.detect(tstr)[:encoding]
32
+ end
33
+ mt.to_s + apx
34
+ end
35
+ end
36
+ return Riddl::Parameter::Complex.new('file',fmt,File.open(path,'r'))
37
+ end
38
+ @status = 404
39
+ end
40
+ end
41
+
42
+ class Logging < Riddl::Implementation #{{{
43
+ LOGTEMPLATE = {"log" =>
44
+ {"extension" =>
45
+ { "time" =>"http://www.xes-standard.org/time.xesext",
46
+ "concept" => "http://www.xes-standard.org/concept.xesext",
47
+ "organisational" => "http://www.xes-standard.org/org.xesext",
48
+ "lifecylce" => "http://www.xes-standard.org/lifecycle.xesext"
49
+ },
50
+ "global" =>
51
+ {
52
+ "trace" =>{"concept:name" => "__INVALID__"},
53
+ "event"=> {
54
+ "concept:name"=>"__INVALID__",
55
+ "concept:endpoint" => "",
56
+ "id:id" => "",
57
+ "lifecycle:transition" => "complete",
58
+ "time:timestamp" => ""
59
+ }
60
+ },
61
+ "classifier" =>{
62
+ "Data" => "data_send data_received",
63
+ "Data_Received"=>"data_receiver",
64
+ "Data_Send" => "data_send"
65
+ },
66
+ "trace" => {}
67
+ }
68
+ }
69
+
70
+
71
+
72
+ def doc(event_name,log_dir,instancenr,notification)
73
+ x = Time.now
74
+ log = LOGTEMPLATE
75
+ uuid = notification['instance_uuid']
76
+ activity = notification["activity"]
77
+ parameters = notification['parameters']
78
+ receiving = notification['received']
79
+ time_added=false
80
+ log["log"]["trace"]["concept:name"] ||= "Instance #{instancenr}" unless log["log"]["trace"]["concept:name"]
81
+ if File.exists? log_dir+'/log.xes'
82
+ previous_hash = File.read(log_dir+'/last.event').strip
83
+ else
84
+ File.open(log_dir+'/log.xes','w'){|f| f.puts log.to_yaml}
85
+ previous_hash = "0"
86
+ end
87
+ event = {}
88
+ event["trace:id"] = instancenr
89
+ if parameters && parameters.has_key?('label')
90
+ event["concept:name"] = parameters["label"]
91
+ else
92
+ event["concept:name"]= log["log"]["trace"]["concept:name"]
93
+ end
94
+ event["concept:endpoint"] = notification["endpoint"] if notification["endpoint"]
95
+ event["id:id"] = activity
96
+ unless event_name=='receiving'
97
+ event["lifecycle:transition"]= event_name=='done'?"complete":"start"
98
+ else
99
+ event["lifecycle:transition"]="unknown"
100
+ end
101
+ data_send = ((parameters["arguments"].nil? ? [] : parameters["arguments"]) rescue [])
102
+ event["list"] = {"data_send" => data_send} unless data_send.empty?
103
+ if receiving && receiving.any?
104
+ if event.has_key? "list"
105
+ event["list"]["data_received"] ||= receiving
106
+ else
107
+ event["list"] = {"data_receiver" => receiving}
108
+ end
109
+ end
110
+ event["time:timestamp"]= Time.now.iso8601 unless time_added
111
+ event["bc:hash"]= calc_hash(event.to_yaml,previous_hash)
112
+ event["bc:previous_hash"]= previous_hash
113
+ File.open(log_dir+'/log.xes',"a") do |f|
114
+ f << {'event' => event}.to_yaml
115
+ end
116
+ File.open(log_dir+'/last.event',"w"){ |fl| fl << event["bc:hash"] }
117
+ end
118
+
119
+ def calc_hash(data, previous_hash) # data includes timestamp, index and payload
120
+ sha = Digest::SHA256.new
121
+ sha.update(data.to_s + previous_hash)
122
+ sha.hexdigest
123
+ end
124
+
125
+ def response
126
+ log_dir = @a[0]
127
+ library = Riddl::Client.new(@h['CPEE_INSTANCE'] + "/properties/values/attributes/bc")
128
+ status, res = library.get
129
+ if status == 200
130
+ topic = @p[1].value
131
+ event_name = @p[2].value
132
+ notification = JSON.parse(@p[3].value)
133
+ if topic == 'state' && notification['state'] == 'ready' && XML::Smart.string(res[0].value.read).find('string(/*)') == "start"
134
+ FileUtils.rm_f Dir.glob(log_dir+'/*')
135
+ end
136
+ if topic == 'activity'
137
+ instancenr = @h['CPEE_INSTANCE'].split('/').last
138
+ doc(event_name,log_dir,instancenr,notification)
139
+ end
140
+ end
141
+ end
142
+ end #}}}
143
+
144
+ Riddl::Server.new(::File.dirname(__FILE__) + '/chain.xml', :host => "coruscant.wst.univie.ac.at", :port => 9399) do #{{{
145
+ accessible_description true
146
+ cross_site_xhr true
147
+
148
+ @riddl_opts[:log_dir] = ::File.dirname(__FILE__) + "/non_tamp"
149
+
150
+ interface 'events' do
151
+ run Logging, @riddl_opts[:log_dir] if post 'event'
152
+ end
153
+ interface 'logoverlay' do |r|
154
+ run FileServe, "#{@riddl_opts[:log_dir]}/log.xes","application/x-yaml" if get '*'
155
+ end
156
+ end.loop! #}}}
@@ -13,20 +13,20 @@ require 'riddl/utils/turtle'
13
13
  require 'time'
14
14
 
15
15
  class Logging < Riddl::Implementation #{{{
16
- LOGTEMPLATE = {"log" =>
16
+ LOGTEMPLATE = {"log" =>
17
17
  {"extension" =>
18
- { "time" =>"http://www.xes-standard.org/time.xesext",
19
- "concept" => "http://www.xes-standard.org/concept.xesext",
20
- "organisational" => "http://www.xes-standard.org/org.xesext",
18
+ { "time" =>"http://www.xes-standard.org/time.xesext",
19
+ "concept" => "http://www.xes-standard.org/concept.xesext",
20
+ "organisational" => "http://www.xes-standard.org/org.xesext",
21
21
  "lifecylce" => "http://www.xes-standard.org/lifecycle.xesext"
22
22
  },
23
- "global" =>
23
+ "global" =>
24
24
  {
25
25
  "trace" =>{"concept:name" => "__INVALID__"},
26
26
  "event"=> {
27
27
  "concept:name"=>"__INVALID__",
28
- "concept:endpoint" => "",
29
- "id:id" => "",
28
+ "concept:endpoint" => "",
29
+ "id:id" => "",
30
30
  "lifecycle:transition" => "complete",
31
31
  "time:timestamp" => ""
32
32
  }
@@ -68,9 +68,9 @@ class Logging < Riddl::Implementation #{{{
68
68
  event["list"] = {"data_send" => data_send} unless data_send.empty?
69
69
  if receiving && receiving.any?
70
70
  if event.has_key? "list"
71
- event["list"]["data_received"] ||= receiving
71
+ event["list"]["data_received"] ||= receiving
72
72
  else
73
- event["list"] = {"data_receiver" => receiving}
73
+ event["list"] = {"data_receiver" => receiving}
74
74
  end
75
75
  end
76
76
  event["time:timestamp"]= Time.now.iso8601 unless time_added
@@ -83,7 +83,7 @@ class Logging < Riddl::Implementation #{{{
83
83
  z = y-x
84
84
  File.open(log_dir+'/'+uuid+'/time.file',"a+"){ |f| f<< z << "\n" }
85
85
  end
86
-
86
+
87
87
  def rec_unjson(value,list,key)
88
88
  case value
89
89
  when Array then
@@ -115,13 +115,13 @@ end #}}}
115
115
  Riddl::Server.new(::File.dirname(__FILE__) + '/log.xml', :host => "coruscant.wst.univie.ac.at", :port => 9300) do #{{{
116
116
  accessible_description true
117
117
  cross_site_xhr true
118
- log_path = "/home/demo/Projects/cpee-helpers/log/logs_yaml"
118
+ log_dir = "/home/demo/Projects/cpee-helpers/log/logs_yaml"
119
119
 
120
120
  interface 'events' do
121
121
  run Logging if post 'event'
122
122
  end
123
123
  interface 'logoverlay' do |r|
124
- run Riddl::Utils::FileServe, log_path + r[:h]["RIDDL_DECLARATION_PATH"]+ ".xes","text/xml" if get
124
+ run Riddl::Utils::FileServe, log_dir + r[:h]["RIDDL_DECLARATION_PATH"]+ ".xes","text/xml" if get
125
125
  end
126
126
 
127
127
 
@@ -0,0 +1 @@
1
+ f7c77861ac613eeac8fb9829c9a545a2
@@ -0,0 +1 @@
1
+ 2a24d172b1aeb05fe94fdc5e095dec32
@@ -0,0 +1,7 @@
1
+ <subscription xmlns="http://riddl.org/ns/common-patterns/notifications-producer/1.0" url="http://cpee.org:9129">
2
+ <topic id="activity">
3
+ <event>calling</event>
4
+ <event>receiving</event>
5
+ <event>done</event>
6
+ </topic>
7
+ </subscription>
@@ -0,0 +1 @@
1
+ f7c77861ac613eeac8fb9829c9a545a2
@@ -0,0 +1 @@
1
+ 2a24d172b1aeb05fe94fdc5e095dec32
@@ -0,0 +1,7 @@
1
+ <subscription xmlns="http://riddl.org/ns/common-patterns/notifications-producer/1.0" url="http://cpee.org:9299/log">
2
+ <topic id="activity">
3
+ <event>calling</event>
4
+ <event>receiving</event>
5
+ <event>done</event>
6
+ </topic>
7
+ </subscription>
@@ -0,0 +1 @@
1
+ f7c77861ac613eeac8fb9829c9a545a2
@@ -0,0 +1 @@
1
+ 2a24d172b1aeb05fe94fdc5e095dec32
@@ -0,0 +1,7 @@
1
+ <subscription xmlns="http://riddl.org/ns/common-patterns/notifications-producer/1.0" url="http://cpee.org:9300/log">
2
+ <topic id="activity">
3
+ <event>calling</event>
4
+ <event>receiving</event>
5
+ <event>done</event>
6
+ </topic>
7
+ </subscription>
@@ -0,0 +1,524 @@
1
+ <properties xmlns="http://riddl.org/ns/common-patterns/properties/1.0">
2
+ <attributes>
3
+ <uuid>d68fff80-2238-426f-9579-e3e7e0ee46eb</uuid>
4
+ <info>a01406222</info>
5
+ <modeltype>CPEE</modeltype>
6
+ <theme>default</theme>
7
+ </attributes>
8
+ <state>stopped</state>
9
+ <handlerwrapper>DefaultHandlerWrapper</handlerwrapper>
10
+ <positions>
11
+ <a9>after</a9>
12
+ </positions>
13
+ <dataelements>
14
+ <runtime>45</runtime>
15
+ <timeleft>51</timeleft>
16
+ <traintime>15</traintime>
17
+ <startblock>B</startblock>
18
+ <startnumber>28</startnumber>
19
+ <runsteps>9518</runsteps>
20
+ <contact>Desktopapp</contact>
21
+ <drink>what</drink>
22
+ <gothere>from where</gothere>
23
+ </dataelements>
24
+ <endpoints>
25
+ <startnumber>http://wwwlab.cs.univie.ac.at/~sumeredera95/wt17/startnumber.php</startnumber>
26
+ <runtime>http://wwwlab.cs.univie.ac.at/~sumeredera95/wt17/runtime.php</runtime>
27
+ <traintime>http://wwwlab.cs.univie.ac.at/~sumeredera95/wt17/traintime.php</traintime>
28
+ <startblock>http://wwwlab.cs.univie.ac.at/~sumeredera95/wt17/startblock.php</startblock>
29
+ <timeleft>http://wwwlab.cs.univie.ac.at/~sumeredera95/wt17/timeleft.php</timeleft>
30
+ <result>http://wwwlab.cs.univie.ac.at/~sumeredera95/wt17/result.php</result>
31
+ <run>http://wwwlab.cs.univie.ac.at/~sumeredera95/wt17/run.php</run>
32
+ <contactapp>http://wwwlab.cs.univie.ac.at/~sumeredera95/wt17/contactapp.php</contactapp>
33
+ <drink>http://wwwlab.cs.univie.ac.at/~sumeredera95/wt17/drink.php</drink>
34
+ <gothere>http://wwwlab.cs.univie.ac.at/~sumeredera95/wt17/gothere.php</gothere>
35
+ <saveblock>http://wwwlab.cs.univie.ac.at/~sumeredera95/wt17/saveblock.php</saveblock>
36
+ </endpoints>
37
+ <dsl>call :a1, :startblock, parameters: { :label =&gt; "select starting block", :method =&gt; :get, :arguments =&gt; [⭐(:name =&gt; :role, :value =&gt; "Runner"), ⭐(:name =&gt; :organization, :value =&gt; "Privat"), ⭐(:name =&gt; :link, :value =&gt; "http://wwwlab.cs.univie.ac.at/~sumeredera95/wt17/startblockChose.html")] }, finalize: &lt;&lt;-END
38
+ data.startblock = result
39
+ END
40
+ call :a2, :saveblock, parameters: { :label =&gt; "save starting block", :method =&gt; :post, :arguments =&gt; [⭐(:name =&gt; :startblock, :value =&gt; data.startblock)] }
41
+ parallel :wait =&gt; -1 do
42
+ parallel_branch do ||
43
+ call :a3, :run, parameters: { :label =&gt; "run", :method =&gt; :get, :arguments =&gt; [⭐(:name =&gt; :role, :value =&gt; "Runner"), ⭐(:name =&gt; :organization, :value =&gt; "Privat"), ⭐(:name =&gt; :link, :value =&gt; "http://wwwlab.cs.univie.ac.at/~sumeredera95/wt17/startblockChose.html")] }, finalize: &lt;&lt;-END
44
+ data.runsteps = data.runsteps + result;
45
+ END
46
+ end
47
+ parallel_branch do ||
48
+ call :a4, :traintime, parameters: { :label =&gt; "measure time", :method =&gt; :get, :arguments =&gt; nil }, finalize: &lt;&lt;-END
49
+ data.traintime = result
50
+ END
51
+ end
52
+ end
53
+ loop pre_test{data.traintime &gt; 25} do
54
+ parallel :wait =&gt; -1 do
55
+ parallel_branch do ||
56
+ call :a5, :run, parameters: { :label =&gt; "run", :method =&gt; :get, :arguments =&gt; [⭐(:name =&gt; :role, :value =&gt; "Runner"), ⭐(:name =&gt; :organization, :value =&gt; "Privat"), ⭐(:name =&gt; :link, :value =&gt; "http://wwwlab.cs.univie.ac.at/~sumeredera95/wt17/startblockChose.html")] }, finalize: &lt;&lt;-END
57
+ data.runsteps = data.runsteps + result;
58
+ END
59
+ end
60
+ parallel_branch do ||
61
+ call :a6, :traintime, parameters: { :label =&gt; "measure time", :method =&gt; :get, :arguments =&gt; nil }, finalize: &lt;&lt;-END
62
+ data.traintime = result
63
+ END
64
+ end
65
+ end
66
+ end
67
+ call :a7, :contactapp, parameters: { :label =&gt; "contact app", :method =&gt; :get, :arguments =&gt; [⭐(:name =&gt; :role, :value =&gt; "Runner"), ⭐(:name =&gt; :organization, :value =&gt; "Privat"), ⭐(:name =&gt; :link, :value =&gt; "http://wwwlab.cs.univie.ac.at/~sumeredera95/wt17/startblockChose.html")] }, finalize: &lt;&lt;-END
68
+ data.contact = result
69
+ END
70
+ call :a8, :startnumber, parameters: { :label =&gt; "allocate start number", :method =&gt; :get, :arguments =&gt; nil }, finalize: &lt;&lt;-END
71
+ data.startnumber= result
72
+ END
73
+ call :a16, :timeleft, parameters: { :label =&gt; "timeLeftERSATZ", :method =&gt; :post, :arguments =&gt; nil }, finalize: &lt;&lt;-END
74
+ data.timeleft = result
75
+ END
76
+ choose :exclusive do
77
+ alternative test{data.timeleft &gt; 60} do
78
+ call :a10, :gothere, parameters: { :label =&gt; "go home", :method =&gt; :post, :arguments =&gt; [⭐(:name =&gt; :home, :value =&gt; yes), ⭐(:name =&gt; :role, :value =&gt; "Runner"), ⭐(:name =&gt; :organization, :value =&gt; "Privat"), ⭐(:name =&gt; :link, :value =&gt; "http://wwwlab.cs.univie.ac.at/~sumeredera95/wt17/startblockChose.html")] }, finalize: &lt;&lt;-END
79
+ data.gothere = result
80
+ END
81
+ end
82
+ otherwise do
83
+ call :a11, :gothere, parameters: { :label =&gt; "go there directly", :method =&gt; :post, :arguments =&gt; [⭐(:name =&gt; :role, :value =&gt; "Runner"), ⭐(:name =&gt; :organization, :value =&gt; "Privat"), ⭐(:name =&gt; :link, :value =&gt; "http://wwwlab.cs.univie.ac.at/~sumeredera95/wt17/startblockChose.html"), ⭐(:name =&gt; :home, :value =&gt; no)] }, finalize: &lt;&lt;-END
84
+ data.gothere = result
85
+ END
86
+ end
87
+ end
88
+ parallel :wait =&gt; -1 do
89
+ parallel_branch do ||
90
+ call :a12, :run, parameters: { :label =&gt; "run", :method =&gt; :post, :arguments =&gt; [⭐(:name =&gt; :role, :value =&gt; "Runner"), ⭐(:name =&gt; :organization, :value =&gt; "Privat"), ⭐(:name =&gt; :link, :value =&gt; "http://wwwlab.cs.univie.ac.at/~sumeredera95/wt17/startblockChose.html")] }, finalize: &lt;&lt;-END
91
+ data.runsteps = data.runsteps + result;
92
+ END
93
+ end
94
+ parallel_branch do ||
95
+ call :a13, :runtime, parameters: { :label =&gt; "measure time", :method =&gt; :get, :arguments =&gt; nil }, finalize: &lt;&lt;-END
96
+ data.runtime = result
97
+ END
98
+ end
99
+ parallel_branch do ||
100
+ call :a14, :drink, parameters: { :label =&gt; "drink", :method =&gt; :get, :arguments =&gt; [⭐(:name =&gt; :role, :value =&gt; "Runner"), ⭐(:name =&gt; :organization, :value =&gt; "Privat"), ⭐(:name =&gt; :link, :value =&gt; "http://wwwlab.cs.univie.ac.at/~sumeredera95/wt17/startblockChose.html")] }, finalize: &lt;&lt;-END
101
+ data.drink = result
102
+ END
103
+ end
104
+ end
105
+ call :a15, :result, parameters: { :label =&gt; "read results", :method =&gt; :post, :arguments =&gt; [⭐(:name =&gt; :runtime, :value =&gt; data.runtime)] }
106
+ </dsl>
107
+ <dslx>
108
+ <description xmlns="http://cpee.org/ns/description/1.0">
109
+ <call id="a1" endpoint="startblock">
110
+ <parameters>
111
+ <label>select starting block</label>
112
+ <method>:get</method>
113
+ <arguments>
114
+ <role>"Runner"</role>
115
+ <organization>"Privat"</organization>
116
+ <link>"http://wwwlab.cs.univie.ac.at/~sumeredera95/wt17/startblockChose.html"</link>
117
+ </arguments>
118
+ </parameters>
119
+ <finalize output="result">data.startblock = result</finalize>
120
+ <update output="result"/>
121
+ </call>
122
+ <call id="a2" endpoint="saveblock">
123
+ <parameters>
124
+ <label>save starting block</label>
125
+ <method>:post</method>
126
+ <arguments>
127
+ <startblock>data.startblock</startblock>
128
+ </arguments>
129
+ </parameters>
130
+ <finalize output="result"/>
131
+ <update output="result"/>
132
+ </call>
133
+ <parallel wait="-1">
134
+ <parallel_branch pass="" local="">
135
+ <call id="a3" endpoint="run">
136
+ <parameters>
137
+ <label>run</label>
138
+ <method>:get</method>
139
+ <arguments>
140
+ <role>"Runner"</role>
141
+ <organization>"Privat"</organization>
142
+ <link>"http://wwwlab.cs.univie.ac.at/~sumeredera95/wt17/startblockChose.html"</link>
143
+ </arguments>
144
+ </parameters>
145
+ <finalize output="result">data.runsteps = data.runsteps + result;</finalize>
146
+ <update output="result"/>
147
+ </call>
148
+ </parallel_branch>
149
+ <parallel_branch pass="" local="">
150
+ <call id="a4" endpoint="traintime">
151
+ <parameters>
152
+ <label>measure time</label>
153
+ <method>:get</method>
154
+ <arguments/>
155
+ </parameters>
156
+ <finalize output="result">data.traintime = result</finalize>
157
+ <update output="result"/>
158
+ </call>
159
+ </parallel_branch>
160
+ </parallel>
161
+ <loop mode="pre_test" condition="data.traintime &gt; 25">
162
+ <parallel wait="-1">
163
+ <parallel_branch pass="" local="">
164
+ <call id="a5" endpoint="run">
165
+ <parameters>
166
+ <label>run</label>
167
+ <method>:get</method>
168
+ <arguments>
169
+ <role>"Runner"</role>
170
+ <organization>"Privat"</organization>
171
+ <link>"http://wwwlab.cs.univie.ac.at/~sumeredera95/wt17/startblockChose.html"</link>
172
+ </arguments>
173
+ </parameters>
174
+ <finalize output="result">data.runsteps = data.runsteps + result;</finalize>
175
+ <update output="result"/>
176
+ </call>
177
+ </parallel_branch>
178
+ <parallel_branch pass="" local="">
179
+ <call id="a6" endpoint="traintime">
180
+ <parameters>
181
+ <label>measure time</label>
182
+ <method>:get</method>
183
+ <arguments/>
184
+ </parameters>
185
+ <finalize output="result">data.traintime = result</finalize>
186
+ <update output="result"/>
187
+ </call>
188
+ </parallel_branch>
189
+ </parallel>
190
+ </loop>
191
+ <call id="a7" endpoint="contactapp">
192
+ <parameters>
193
+ <label>contact app</label>
194
+ <method>:get</method>
195
+ <arguments>
196
+ <role>"Runner"</role>
197
+ <organization>"Privat"</organization>
198
+ <link>"http://wwwlab.cs.univie.ac.at/~sumeredera95/wt17/startblockChose.html"</link>
199
+ </arguments>
200
+ </parameters>
201
+ <finalize output="result">data.contact = result</finalize>
202
+ <update output="result"/>
203
+ </call>
204
+ <call id="a8" endpoint="startnumber">
205
+ <parameters>
206
+ <label>allocate start number</label>
207
+ <method>:get</method>
208
+ <arguments/>
209
+ </parameters>
210
+ <finalize output="result">data.startnumber= result</finalize>
211
+ <update output="result"/>
212
+ </call>
213
+ <call id="a16" endpoint="timeleft">
214
+ <parameters>
215
+ <label>timeLeftERSATZ</label>
216
+ <method>:post</method>
217
+ <arguments/>
218
+ </parameters>
219
+ <finalize output="result">data.timeleft = result</finalize>
220
+ <update output="result"/>
221
+ </call>
222
+ <choose mode="exclusive">
223
+ <alternative condition="data.timeleft &gt; 60">
224
+ <call id="a10" endpoint="gothere">
225
+ <parameters>
226
+ <label>go home</label>
227
+ <method>:post</method>
228
+ <arguments>
229
+ <home>yes</home>
230
+ <role>"Runner"</role>
231
+ <organization>"Privat"</organization>
232
+ <link>"http://wwwlab.cs.univie.ac.at/~sumeredera95/wt17/startblockChose.html"</link>
233
+ </arguments>
234
+ </parameters>
235
+ <finalize output="result">data.gothere = result</finalize>
236
+ <update output="result"/>
237
+ </call>
238
+ </alternative>
239
+ <otherwise>
240
+ <call id="a11" endpoint="gothere">
241
+ <parameters>
242
+ <label>go there directly</label>
243
+ <method>:post</method>
244
+ <arguments>
245
+ <role>"Runner"</role>
246
+ <organization>"Privat"</organization>
247
+ <link>"http://wwwlab.cs.univie.ac.at/~sumeredera95/wt17/startblockChose.html"</link>
248
+ <home>no</home>
249
+ </arguments>
250
+ </parameters>
251
+ <finalize output="result">data.gothere = result</finalize>
252
+ <update output="result"/>
253
+ </call>
254
+ </otherwise>
255
+ </choose>
256
+ <parallel wait="-1">
257
+ <parallel_branch pass="" local="">
258
+ <call id="a12" endpoint="run">
259
+ <parameters>
260
+ <label>run</label>
261
+ <method>:post</method>
262
+ <arguments>
263
+ <role>"Runner"</role>
264
+ <organization>"Privat"</organization>
265
+ <link>"http://wwwlab.cs.univie.ac.at/~sumeredera95/wt17/startblockChose.html"</link>
266
+ </arguments>
267
+ </parameters>
268
+ <finalize output="result">data.runsteps = data.runsteps + result;</finalize>
269
+ <update output="result"/>
270
+ </call>
271
+ </parallel_branch>
272
+ <parallel_branch pass="" local="">
273
+ <call id="a13" endpoint="runtime">
274
+ <parameters>
275
+ <label>measure time</label>
276
+ <method>:get</method>
277
+ <arguments/>
278
+ </parameters>
279
+ <finalize output="result">data.runtime = result</finalize>
280
+ <update output="result"/>
281
+ </call>
282
+ </parallel_branch>
283
+ <parallel_branch pass="" local="">
284
+ <call id="a14" endpoint="drink">
285
+ <parameters>
286
+ <label>drink</label>
287
+ <method>:get</method>
288
+ <arguments>
289
+ <role>"Runner"</role>
290
+ <organization>"Privat"</organization>
291
+ <link>"http://wwwlab.cs.univie.ac.at/~sumeredera95/wt17/startblockChose.html"</link>
292
+ </arguments>
293
+ </parameters>
294
+ <finalize output="result">data.drink = result</finalize>
295
+ <update output="result"/>
296
+ </call>
297
+ </parallel_branch>
298
+ </parallel>
299
+ <call id="a15" endpoint="result">
300
+ <parameters>
301
+ <label>read results</label>
302
+ <method>:post</method>
303
+ <arguments>
304
+ <runtime>data.runtime</runtime>
305
+ </arguments>
306
+ </parameters>
307
+ <finalize output="result"/>
308
+ </call>
309
+ </description>
310
+ </dslx>
311
+ <status>
312
+ <id>0</id>
313
+ <message>undefined</message>
314
+ </status>
315
+ <description>
316
+ <description xmlns="http://cpee.org/ns/description/1.0">
317
+ <call id="a1" endpoint="startblock">
318
+ <parameters>
319
+ <label>select starting block</label>
320
+ <method>:get</method>
321
+ <arguments>
322
+ <role>"Runner"</role>
323
+ <organization>"Privat"</organization>
324
+ <link>"http://wwwlab.cs.univie.ac.at/~sumeredera95/wt17/startblockChose.html"</link>
325
+ </arguments>
326
+ </parameters>
327
+ <finalize output="result">data.startblock = result</finalize>
328
+ <update output="result"/>
329
+ </call>
330
+ <call id="a2" endpoint="saveblock">
331
+ <parameters>
332
+ <label>save starting block</label>
333
+ <method>:post</method>
334
+ <arguments>
335
+ <startblock>data.startblock</startblock>
336
+ </arguments>
337
+ </parameters>
338
+ <finalize output="result"/>
339
+ <update output="result"/>
340
+ </call>
341
+ <parallel wait="-1">
342
+ <parallel_branch pass="" local="">
343
+ <call id="a3" endpoint="run">
344
+ <parameters>
345
+ <label>run</label>
346
+ <method>:get</method>
347
+ <arguments>
348
+ <role>"Runner"</role>
349
+ <organization>"Privat"</organization>
350
+ <link>"http://wwwlab.cs.univie.ac.at/~sumeredera95/wt17/startblockChose.html"</link>
351
+ </arguments>
352
+ </parameters>
353
+ <finalize output="result">data.runsteps = data.runsteps + result;</finalize>
354
+ <update output="result"/>
355
+ </call>
356
+ </parallel_branch>
357
+ <parallel_branch pass="" local="">
358
+ <call id="a4" endpoint="traintime">
359
+ <parameters>
360
+ <label>measure time</label>
361
+ <method>:get</method>
362
+ <arguments/>
363
+ </parameters>
364
+ <finalize output="result">data.traintime = result</finalize>
365
+ <update output="result"/>
366
+ </call>
367
+ </parallel_branch>
368
+ </parallel>
369
+ <loop mode="pre_test" condition="data.traintime &gt; 25">
370
+ <parallel wait="-1">
371
+ <parallel_branch pass="" local="">
372
+ <call id="a5" endpoint="run">
373
+ <parameters>
374
+ <label>run</label>
375
+ <method>:get</method>
376
+ <arguments>
377
+ <role>"Runner"</role>
378
+ <organization>"Privat"</organization>
379
+ <link>"http://wwwlab.cs.univie.ac.at/~sumeredera95/wt17/startblockChose.html"</link>
380
+ </arguments>
381
+ </parameters>
382
+ <finalize output="result">data.runsteps = data.runsteps + result;</finalize>
383
+ <update output="result"/>
384
+ </call>
385
+ </parallel_branch>
386
+ <parallel_branch pass="" local="">
387
+ <call id="a6" endpoint="traintime">
388
+ <parameters>
389
+ <label>measure time</label>
390
+ <method>:get</method>
391
+ <arguments/>
392
+ </parameters>
393
+ <finalize output="result">data.traintime = result</finalize>
394
+ <update output="result"/>
395
+ </call>
396
+ </parallel_branch>
397
+ </parallel>
398
+ </loop>
399
+ <call id="a7" endpoint="contactapp">
400
+ <parameters>
401
+ <label>contact app</label>
402
+ <method>:get</method>
403
+ <arguments>
404
+ <role>"Runner"</role>
405
+ <organization>"Privat"</organization>
406
+ <link>"http://wwwlab.cs.univie.ac.at/~sumeredera95/wt17/startblockChose.html"</link>
407
+ </arguments>
408
+ </parameters>
409
+ <finalize output="result">data.contact = result</finalize>
410
+ <update output="result"/>
411
+ </call>
412
+ <call id="a8" endpoint="startnumber">
413
+ <parameters>
414
+ <label>allocate start number</label>
415
+ <method>:get</method>
416
+ <arguments/>
417
+ </parameters>
418
+ <finalize output="result">data.startnumber= result</finalize>
419
+ <update output="result"/>
420
+ </call>
421
+ <call id="a16" endpoint="timeleft">
422
+ <parameters>
423
+ <label>timeLeftERSATZ</label>
424
+ <method>:post</method>
425
+ <arguments/>
426
+ </parameters>
427
+ <finalize output="result">data.timeleft = result</finalize>
428
+ <update output="result"/>
429
+ </call>
430
+ <choose mode="exclusive">
431
+ <alternative condition="data.timeleft &gt; 60">
432
+ <call id="a10" endpoint="gothere">
433
+ <parameters>
434
+ <label>go home</label>
435
+ <method>:post</method>
436
+ <arguments>
437
+ <home>yes</home>
438
+ <role>"Runner"</role>
439
+ <organization>"Privat"</organization>
440
+ <link>"http://wwwlab.cs.univie.ac.at/~sumeredera95/wt17/startblockChose.html"</link>
441
+ </arguments>
442
+ </parameters>
443
+ <finalize output="result">data.gothere = result</finalize>
444
+ <update output="result"/>
445
+ </call>
446
+ </alternative>
447
+ <otherwise>
448
+ <call id="a11" endpoint="gothere">
449
+ <parameters>
450
+ <label>go there directly</label>
451
+ <method>:post</method>
452
+ <arguments>
453
+ <role>"Runner"</role>
454
+ <organization>"Privat"</organization>
455
+ <link>"http://wwwlab.cs.univie.ac.at/~sumeredera95/wt17/startblockChose.html"</link>
456
+ <home>no</home>
457
+ </arguments>
458
+ </parameters>
459
+ <finalize output="result">data.gothere = result</finalize>
460
+ <update output="result"/>
461
+ </call>
462
+ </otherwise>
463
+ </choose>
464
+ <parallel wait="-1">
465
+ <parallel_branch pass="" local="">
466
+ <call id="a12" endpoint="run">
467
+ <parameters>
468
+ <label>run</label>
469
+ <method>:post</method>
470
+ <arguments>
471
+ <role>"Runner"</role>
472
+ <organization>"Privat"</organization>
473
+ <link>"http://wwwlab.cs.univie.ac.at/~sumeredera95/wt17/startblockChose.html"</link>
474
+ </arguments>
475
+ </parameters>
476
+ <finalize output="result">data.runsteps = data.runsteps + result;</finalize>
477
+ <update output="result"/>
478
+ </call>
479
+ </parallel_branch>
480
+ <parallel_branch pass="" local="">
481
+ <call id="a13" endpoint="runtime">
482
+ <parameters>
483
+ <label>measure time</label>
484
+ <method>:get</method>
485
+ <arguments/>
486
+ </parameters>
487
+ <finalize output="result">data.runtime = result</finalize>
488
+ <update output="result"/>
489
+ </call>
490
+ </parallel_branch>
491
+ <parallel_branch pass="" local="">
492
+ <call id="a14" endpoint="drink">
493
+ <parameters>
494
+ <label>drink</label>
495
+ <method>:get</method>
496
+ <arguments>
497
+ <role>"Runner"</role>
498
+ <organization>"Privat"</organization>
499
+ <link>"http://wwwlab.cs.univie.ac.at/~sumeredera95/wt17/startblockChose.html"</link>
500
+ </arguments>
501
+ </parameters>
502
+ <finalize output="result">data.drink = result</finalize>
503
+ <update output="result"/>
504
+ </call>
505
+ </parallel_branch>
506
+ </parallel>
507
+ <call id="a15" endpoint="result">
508
+ <parameters>
509
+ <label>read results</label>
510
+ <method>:post</method>
511
+ <arguments>
512
+ <runtime>data.runtime</runtime>
513
+ </arguments>
514
+ </parameters>
515
+ <finalize output="result"/>
516
+ </call>
517
+ </description>
518
+ </description>
519
+ <transformation>
520
+ <description type="copy"/>
521
+ <dataelements type="none"/>
522
+ <endpoints type="none"/>
523
+ </transformation>
524
+ </properties>