cpee 1.3.220 → 1.3.221

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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>