cpee 1.3.228 → 1.3.230
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.
- checksums.yaml +4 -4
- data/cockpit/css/wfadaptor.css +11 -0
- data/cockpit/graph.html +2 -1
- data/cockpit/index.html +1 -1
- data/cockpit/js/instance.js +50 -56
- data/cockpit/js/ui.js +2 -0
- data/cockpit/js/wfadaptor.js +21 -9
- data/cockpit/themes/compact/theme.js +12 -71
- data/cockpit/themes/default/rngs/choose.rng +4 -0
- data/cockpit/themes/default/rngs/parallel.rng +8 -0
- data/cockpit/themes/default/rngs/stop.rng +5 -0
- data/cockpit/themes/default/rngs/terminate.rng +1 -0
- data/cockpit/themes/default/symbols/stop.svg +5 -0
- data/cockpit/themes/default/symbols/terminate.svg +4 -0
- data/cockpit/themes/default/theme.js +104 -3
- data/cpee.gemspec +1 -1
- data/lib/cpee/instantiation.rb +116 -56
- data/lib/instantiation.xml +55 -15
- data/log/log.xml +1 -15
- data/log/template.xes_xml +23 -0
- data/log/template.xes_yaml +26 -0
- data/log/{server.rb → xes_xml.rb} +11 -42
- data/log/xes_yaml.rb +111 -0
- data/server/handlerwrappers/default.rb +19 -10
- data/server/resources/properties.schema.active +18 -17
- data/server/resources/properties.schema.finished +18 -17
- data/server/resources/properties.schema.inactive +18 -17
- data/server/resources/transformation_dslx.xsl +29 -5
- data/server/server.rb +1 -1
- data/tools/instantiation/instantiation +1 -1
- data/tools/server/server.rb +1 -1
- metadata +10 -19
- data/cockpit/themes/default/rngs/callmanipulateworkqueue.rng +0 -122
- data/cockpit/themes/default/rngs/callworkqueue.rng +0 -107
- data/cockpit/themes/default/symbols/callcorrelationreceive.svg +0 -6
- data/cockpit/themes/default/symbols/callcorrelationsend.svg +0 -6
- data/cockpit/themes/default/symbols/callinstantiation.svg +0 -3
- data/cockpit/themes/default/symbols/callmanipulateworklist.svg +0 -6
- data/cockpit/themes/default/symbols/callmanipulateworkqueue.svg +0 -6
- data/cockpit/themes/default/symbols/callworklist.svg +0 -4
- data/cockpit/themes/default/symbols/callworkqueue.svg +0 -4
- data/log/logoverlay.xml +0 -10
- data/log/template.xes +0 -6
- data/log/yaml/log.xml +0 -27
- data/log/yaml/logoverlay.xml +0 -10
- data/log/yaml/server.rb +0 -128
- data/log/yaml/topics.xml +0 -22
- data/log/yaml/yaml.rb +0 -19
|
@@ -2,4 +2,12 @@
|
|
|
2
2
|
<attribute name="wait" rngui:label="Wait" rngui:default="-1" rngui:hint="-1 to wait for all branches.">
|
|
3
3
|
<data type="integer"/>
|
|
4
4
|
</attribute>
|
|
5
|
+
<element name="parallel_branch">
|
|
6
|
+
<attribute name="pass"><data type="string"/></attribute>
|
|
7
|
+
<attribute name="local"><data type="string"/></attribute>
|
|
8
|
+
</element>
|
|
9
|
+
<element name="parallel_branch">
|
|
10
|
+
<attribute name="pass"><data type="string"/></attribute>
|
|
11
|
+
<attribute name="local"><data type="string"/></attribute>
|
|
12
|
+
</element>
|
|
5
13
|
</element>
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
<element rngui:version="1.2" name="stop" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes" xmlns="http://relaxng.org/ns/structure/1.0" xmlns:rngui="http://rngui.org">
|
|
2
|
+
<attribute name="id" rngui:label="ID" rngui:default="javascript:get_free_id()">
|
|
3
|
+
<data type="string" rngui:readonly="true"/>
|
|
4
|
+
</attribute>
|
|
5
|
+
</element>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<element rngui:version="1.2" name="terminate" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes" xmlns="http://relaxng.org/ns/structure/1.0" xmlns:rngui="http://rngui.org"/>
|
|
@@ -59,10 +59,10 @@ function WFAdaptorManifestation(adaptor) {
|
|
|
59
59
|
var tab = $('#dat_details');
|
|
60
60
|
var node = self.adaptor.description.get_node_by_svg_id(svgid).get(0);
|
|
61
61
|
tab.empty();
|
|
62
|
-
if (self.adaptor.description.elements[$(node).attr('svg-
|
|
62
|
+
if (self.adaptor.description.elements[$(node).attr('svg-subtype')]) {
|
|
63
63
|
save['details_target'] = { 'svgid': svgid, 'model': self.adaptor.description };
|
|
64
|
-
var rng = self.adaptor.description.elements[$(node).attr('svg-
|
|
65
|
-
if (save['endpoints_cache'][$(node).attr('endpoint')]) {
|
|
64
|
+
var rng = self.adaptor.description.elements[$(node).attr('svg-subtype')].clone();
|
|
65
|
+
if (save['endpoints_cache'][$(node).attr('endpoint')] && save['endpoints_cache'][$(node).attr('endpoint')].schema) {
|
|
66
66
|
var schema = save['endpoints_cache'][$(node).attr('endpoint')].schema.documentElement;
|
|
67
67
|
$(rng).find(' > element[name="parameters"] > element[name="arguments"]').replaceWith($(schema).clone());
|
|
68
68
|
}
|
|
@@ -275,6 +275,37 @@ function WFAdaptorManifestation(adaptor) {
|
|
|
275
275
|
'click': self.events.click,
|
|
276
276
|
}//}}}
|
|
277
277
|
}; /*}}}*/
|
|
278
|
+
this.elements.stop = { /*{{{*/
|
|
279
|
+
'type': 'primitive',
|
|
280
|
+
'illustrator': {//{{{
|
|
281
|
+
'endnodes': 'this',
|
|
282
|
+
'svg': self.adaptor.theme_dir + 'symbols/stop.svg'
|
|
283
|
+
},//}}}
|
|
284
|
+
'description': self.adaptor.theme_dir + 'rngs/stop.rng',
|
|
285
|
+
'permissible_children': function(node,mode) { //{{{
|
|
286
|
+
return [];
|
|
287
|
+
}, //}}}
|
|
288
|
+
'adaptor': {//{{{
|
|
289
|
+
'mousedown': function (node,e) { self.events.mousedown(node,e,false,true); },
|
|
290
|
+
'click': self.events.click,
|
|
291
|
+
}//}}}
|
|
292
|
+
}; /*}}}*/
|
|
293
|
+
this.elements.terminate = { /*{{{*/
|
|
294
|
+
'type': 'primitive',
|
|
295
|
+
'illustrator': {//{{{
|
|
296
|
+
'endnodes': 'this',
|
|
297
|
+
'final': true,
|
|
298
|
+
'svg': self.adaptor.theme_dir + 'symbols/terminate.svg'
|
|
299
|
+
},//}}}
|
|
300
|
+
'description': self.adaptor.theme_dir + 'rngs/terminate.rng',
|
|
301
|
+
'permissible_children': function(node,mode) { //{{{
|
|
302
|
+
return [];
|
|
303
|
+
}, //}}}
|
|
304
|
+
'adaptor': {//{{{
|
|
305
|
+
'mousedown': function (node,e) { self.events.mousedown(node,e,false,true); },
|
|
306
|
+
'click': self.events.click,
|
|
307
|
+
}//}}}
|
|
308
|
+
}; /*}}}*/
|
|
278
309
|
|
|
279
310
|
// Complex Elements
|
|
280
311
|
this.elements.choose = { /*{{{*/
|
|
@@ -390,6 +421,16 @@ function WFAdaptorManifestation(adaptor) {
|
|
|
390
421
|
'menu_icon': self.elements.loop.illustrator.svg.clone(),
|
|
391
422
|
'type': 'loop',
|
|
392
423
|
'params': [self.adaptor.description.elements.loop, node]},
|
|
424
|
+
{'label': 'Terminate',
|
|
425
|
+
'function_call': func,
|
|
426
|
+
'menu_icon': self.elements.terminate.illustrator.svg.clone(),
|
|
427
|
+
'type': 'terminate',
|
|
428
|
+
'params': [self.adaptor.description.elements.terminate, node]},
|
|
429
|
+
{'label': 'Stop',
|
|
430
|
+
'function_call': func,
|
|
431
|
+
'menu_icon': self.elements.stop.illustrator.svg.clone(),
|
|
432
|
+
'type': 'stop',
|
|
433
|
+
'params': [self.adaptor.description.elements.stop, node]},
|
|
393
434
|
{'label': 'Critical',
|
|
394
435
|
'function_call': func,
|
|
395
436
|
'menu_icon': self.elements.critical.illustrator.svg.clone(),
|
|
@@ -463,6 +504,16 @@ function WFAdaptorManifestation(adaptor) {
|
|
|
463
504
|
'menu_icon': self.elements.loop.illustrator.svg.clone(),
|
|
464
505
|
'type': 'loop',
|
|
465
506
|
'params': [self.adaptor.description.elements.loop, node]},
|
|
507
|
+
{'label': 'Terminate',
|
|
508
|
+
'function_call': func,
|
|
509
|
+
'menu_icon': self.elements.terminate.illustrator.svg.clone(),
|
|
510
|
+
'type': 'terminate',
|
|
511
|
+
'params': [self.adaptor.description.elements.terminate, node]},
|
|
512
|
+
{'label': 'Stop',
|
|
513
|
+
'function_call': func,
|
|
514
|
+
'menu_icon': self.elements.stop.illustrator.svg.clone(),
|
|
515
|
+
'type': 'stop',
|
|
516
|
+
'params': [self.adaptor.description.elements.stop, node]},
|
|
466
517
|
{'label': 'Critical',
|
|
467
518
|
'function_call': func,
|
|
468
519
|
'menu_icon': self.elements.critical.illustrator.svg.clone(),
|
|
@@ -525,6 +576,16 @@ function WFAdaptorManifestation(adaptor) {
|
|
|
525
576
|
'menu_icon': self.elements.loop.illustrator.svg.clone(),
|
|
526
577
|
'type': 'loop',
|
|
527
578
|
'params': [self.adaptor.description.elements.loop, node]},
|
|
579
|
+
{'label': 'Terminate',
|
|
580
|
+
'function_call': func,
|
|
581
|
+
'menu_icon': self.elements.terminate.illustrator.svg.clone(),
|
|
582
|
+
'type': 'terminate',
|
|
583
|
+
'params': [self.adaptor.description.elements.terminate, node]},
|
|
584
|
+
{'label': 'Stop',
|
|
585
|
+
'function_call': func,
|
|
586
|
+
'menu_icon': self.elements.stop.illustrator.svg.clone(),
|
|
587
|
+
'type': 'stop',
|
|
588
|
+
'params': [self.adaptor.description.elements.stop, node]},
|
|
528
589
|
{'label': 'Critical',
|
|
529
590
|
'function_call': func,
|
|
530
591
|
'menu_icon': self.elements.critical.illustrator.svg.clone(),
|
|
@@ -602,6 +663,16 @@ function WFAdaptorManifestation(adaptor) {
|
|
|
602
663
|
'menu_icon': self.elements.loop.illustrator.svg.clone(),
|
|
603
664
|
'type': 'loop',
|
|
604
665
|
'params': [self.adaptor.description.elements.loop, node]},
|
|
666
|
+
{'label': 'Terminate',
|
|
667
|
+
'function_call': self.adaptor.description.insert_last_into,
|
|
668
|
+
'menu_icon': self.elements.terminate.illustrator.svg.clone(),
|
|
669
|
+
'type': 'terminate',
|
|
670
|
+
'params': [self.adaptor.description.elements.terminate, node]},
|
|
671
|
+
{'label': 'Stop',
|
|
672
|
+
'function_call': self.adaptor.description.insert_last_into,
|
|
673
|
+
'menu_icon': self.elements.stop.illustrator.svg.clone(),
|
|
674
|
+
'type': 'stop',
|
|
675
|
+
'params': [self.adaptor.description.elements.stop, node]},
|
|
605
676
|
{'label': 'Critical',
|
|
606
677
|
'function_call': self.adaptor.description.insert_last_into,
|
|
607
678
|
'menu_icon': self.elements.critical.illustrator.svg.clone(),
|
|
@@ -683,6 +754,16 @@ function WFAdaptorManifestation(adaptor) {
|
|
|
683
754
|
'menu_icon': self.elements.loop.illustrator.svg.clone(),
|
|
684
755
|
'type': 'loop',
|
|
685
756
|
'params': [self.adaptor.description.elements.loop, node]},
|
|
757
|
+
{'label': 'Terminate',
|
|
758
|
+
'function_call': func,
|
|
759
|
+
'menu_icon': self.elements.terminate.illustrator.svg.clone(),
|
|
760
|
+
'type': 'terminate',
|
|
761
|
+
'params': [self.adaptor.description.elements.terminate, node]},
|
|
762
|
+
{'label': 'Stop',
|
|
763
|
+
'function_call': func,
|
|
764
|
+
'menu_icon': self.elements.stop.illustrator.svg.clone(),
|
|
765
|
+
'type': 'stop',
|
|
766
|
+
'params': [self.adaptor.description.elements.stop, node]},
|
|
686
767
|
{'label': 'Critical',
|
|
687
768
|
'function_call': func,
|
|
688
769
|
'menu_icon': self.elements.critical.illustrator.svg.clone(),
|
|
@@ -758,6 +839,16 @@ function WFAdaptorManifestation(adaptor) {
|
|
|
758
839
|
'menu_icon': self.elements.loop.illustrator.svg.clone(),
|
|
759
840
|
'type': 'loop',
|
|
760
841
|
'params': [self.adaptor.description.elements.loop, node]},
|
|
842
|
+
{'label': 'Terminate',
|
|
843
|
+
'function_call': func,
|
|
844
|
+
'menu_icon': self.elements.terminate.illustrator.svg.clone(),
|
|
845
|
+
'type': 'terminate',
|
|
846
|
+
'params': [self.adaptor.description.elements.terminate, node]},
|
|
847
|
+
{'label': 'Stop',
|
|
848
|
+
'function_call': func,
|
|
849
|
+
'menu_icon': self.elements.stop.illustrator.svg.clone(),
|
|
850
|
+
'type': 'stop',
|
|
851
|
+
'params': [self.adaptor.description.elements.stop, node]},
|
|
761
852
|
{'label': 'Critical',
|
|
762
853
|
'function_call': func,
|
|
763
854
|
'menu_icon': self.elements.critical.illustrator.svg.clone(),
|
|
@@ -856,6 +947,16 @@ function WFAdaptorManifestation(adaptor) {
|
|
|
856
947
|
'menu_icon': self.elements.loop.illustrator.svg.clone(),
|
|
857
948
|
'type': 'loop',
|
|
858
949
|
'params': [self.adaptor.description.elements.loop, node]},
|
|
950
|
+
{'label': 'Terminate',
|
|
951
|
+
'function_call': func,
|
|
952
|
+
'menu_icon': self.elements.terminate.illustrator.svg.clone(),
|
|
953
|
+
'type': 'terminate',
|
|
954
|
+
'params': [self.adaptor.description.elements.terminate, node]},
|
|
955
|
+
{'label': 'Stop',
|
|
956
|
+
'function_call': func,
|
|
957
|
+
'menu_icon': self.elements.stop.illustrator.svg.clone(),
|
|
958
|
+
'type': 'stop',
|
|
959
|
+
'params': [self.adaptor.description.elements.stop, node]},
|
|
859
960
|
{'label': 'Critical',
|
|
860
961
|
'function_call': func,
|
|
861
962
|
'menu_icon': self.elements.critical.illustrator.svg.clone(),
|
data/cpee.gemspec
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Gem::Specification.new do |s|
|
|
2
2
|
s.name = "cpee"
|
|
3
|
-
s.version = "1.3.
|
|
3
|
+
s.version = "1.3.230"
|
|
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"
|
data/lib/cpee/instantiation.rb
CHANGED
|
@@ -23,9 +23,8 @@ module CPEE
|
|
|
23
23
|
|
|
24
24
|
SERVER = File.expand_path(__dir__ + '/../instantiation.xml')
|
|
25
25
|
|
|
26
|
-
module
|
|
27
|
-
|
|
28
|
-
def self::load(tdoc,cpee)
|
|
26
|
+
module Helpers #{{{
|
|
27
|
+
def load_testset(tdoc,cpee) #{{{
|
|
29
28
|
ins = -1
|
|
30
29
|
XML::Smart.string(tdoc) do |doc|
|
|
31
30
|
doc.register_namespace 'desc', 'http://cpee.org/ns/description/1.0'
|
|
@@ -70,75 +69,136 @@ module CPEE
|
|
|
70
69
|
end
|
|
71
70
|
end
|
|
72
71
|
return ins
|
|
73
|
-
end
|
|
72
|
+
end #}}}
|
|
73
|
+
private :load_testset
|
|
74
|
+
def handle_waiting(cpee,instance,behavior) #{{{
|
|
75
|
+
if behavior =~ /^wait/
|
|
76
|
+
condition = behavior.match(/_([^_]+)_/)&.[](1) || 'finished'
|
|
77
|
+
@headers << Riddl::Header.new('CPEE_CALLBACK','true')
|
|
78
|
+
cb = @h['CPEE_CALLBACK']
|
|
74
79
|
|
|
80
|
+
if cb
|
|
81
|
+
srv = Riddl::Client.new(cpee, cpee + "?riddl-description")
|
|
82
|
+
status, response = srv.resource("/#{instance}/notifications/subscriptions/").post [
|
|
83
|
+
Riddl::Parameter::Simple.new("topic","state"),
|
|
84
|
+
Riddl::Parameter::Simple.new("events","change"),
|
|
85
|
+
]
|
|
86
|
+
key = response.first.value
|
|
87
|
+
|
|
88
|
+
srv.resource("/#{instance}/notifications/subscriptions/#{key}/ws/").ws do |conn|
|
|
89
|
+
conn.on :message do |msg|
|
|
90
|
+
if JSON::parse(XML::Smart::string(msg.data).find('string(/event/notification)'))['state'] == condition
|
|
91
|
+
conn.close
|
|
92
|
+
Riddl::Client.new(cb).put [
|
|
93
|
+
# TODO extract all dataelements from instance
|
|
94
|
+
Riddl::Parameter::Simple.new('instance',instance)
|
|
95
|
+
]
|
|
96
|
+
end
|
|
97
|
+
end
|
|
98
|
+
end
|
|
99
|
+
end
|
|
100
|
+
end
|
|
101
|
+
end #}}}
|
|
102
|
+
private :handle_waiting
|
|
103
|
+
def handle_starting(cpee,instance,behavior) #{{{
|
|
104
|
+
if behavior =~ /_running$/
|
|
105
|
+
srv = Riddl::Client.new(cpee, cpee + "?riddl-description")
|
|
106
|
+
res = srv.resource("/#{instance}/properties/values")
|
|
107
|
+
status, response = res.put [
|
|
108
|
+
Riddl::Parameter::Simple.new('name', 'state'),
|
|
109
|
+
Riddl::Parameter::Simple.new('value','running')
|
|
110
|
+
]
|
|
111
|
+
end
|
|
112
|
+
end #}}}
|
|
113
|
+
private :handle_starting
|
|
114
|
+
def handle_data(cpee,instance,data)
|
|
115
|
+
if data
|
|
116
|
+
srv = Riddl::Client.new(cpee, cpee + "?riddl-description")
|
|
117
|
+
JSON::parse(data).each do |k,v|
|
|
118
|
+
res = srv.resource("/#{instance}/properties/values/dataelements/#{k}")
|
|
119
|
+
status, response = res.put [
|
|
120
|
+
Riddl::Parameter::Simple.new('value',v)
|
|
121
|
+
]
|
|
122
|
+
end rescue nil
|
|
123
|
+
end
|
|
124
|
+
end
|
|
75
125
|
end #}}}
|
|
76
126
|
|
|
77
|
-
class
|
|
127
|
+
class InstantiateUrl < Riddl::Implementation #{{{
|
|
128
|
+
include Helpers
|
|
129
|
+
|
|
78
130
|
def response
|
|
79
131
|
cpee = @a[0]
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
else
|
|
86
|
-
(@status = 500) && return
|
|
87
|
-
end
|
|
88
|
-
when 'xml'
|
|
89
|
-
if @p[@p.length - 1].additional =~ /base64/
|
|
90
|
-
Base64.decode64(@p[@p.length - 1].value.read)
|
|
91
|
-
else
|
|
92
|
-
@p[@p.length - 1].value.read
|
|
93
|
-
end
|
|
132
|
+
status, res = Riddl::Client.new(@p[1].value).get
|
|
133
|
+
tdoc = if status >= 200 && status < 300
|
|
134
|
+
res[0].value.read
|
|
135
|
+
else
|
|
136
|
+
(@status = 500) && return
|
|
94
137
|
end
|
|
95
138
|
|
|
96
|
-
if (
|
|
139
|
+
if (instance = load_testset(tdoc,cpee)) == -1
|
|
97
140
|
@status = 500
|
|
98
141
|
else
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
if cb
|
|
104
|
-
srv = Riddl::Client.new(cpee, cpee + "?riddl-description")
|
|
105
|
-
status, response = srv.resource("/#{ins}/notifications/subscriptions/").post [
|
|
106
|
-
Riddl::Parameter::Simple.new("topic","state"),
|
|
107
|
-
Riddl::Parameter::Simple.new("events","change"),
|
|
108
|
-
]
|
|
109
|
-
key = response.first.value
|
|
110
|
-
|
|
111
|
-
srv.resource("/#{ins}/notifications/subscriptions/#{key}/ws/").ws do |conn|
|
|
112
|
-
conn.on :message do |msg|
|
|
113
|
-
if JSON::parse(XML::Smart::string(msg.data).find('string(/event/notification)'))['state'] == 'finished'
|
|
114
|
-
conn.close
|
|
115
|
-
Riddl::Client.new(cb).put [
|
|
116
|
-
# TODO extract all dataelements from instance
|
|
117
|
-
Riddl::Parameter::Simple.new('instance',ins)
|
|
118
|
-
]
|
|
119
|
-
end
|
|
120
|
-
end
|
|
121
|
-
end
|
|
122
|
-
end
|
|
123
|
-
end
|
|
124
|
-
if @p.length > 1 && @p[0].value =~ /_running$/
|
|
125
|
-
srv = Riddl::Client.new(cpee, cpee + "?riddl-description")
|
|
126
|
-
res = srv.resource("/#{ins}/properties/values")
|
|
127
|
-
status, response = res.put [
|
|
128
|
-
Riddl::Parameter::Simple.new('name', 'state'),
|
|
129
|
-
Riddl::Parameter::Simple.new('value','running')
|
|
130
|
-
]
|
|
131
|
-
end
|
|
132
|
-
return Riddl::Parameter::Simple.new("url",cpee + ins)
|
|
142
|
+
handle_data cpee, instance, @p[2]&.value
|
|
143
|
+
handle_waiting cpee, instance, @p[0].value
|
|
144
|
+
handle_starting cpee, instance, @p[0].value
|
|
145
|
+
return Riddl::Parameter::Simple.new("url",cpee + instance)
|
|
133
146
|
end
|
|
134
147
|
end
|
|
135
|
-
end
|
|
148
|
+
end #}}}
|
|
149
|
+
|
|
150
|
+
class InstantiateXML < Riddl::Implementation #{{{
|
|
151
|
+
include Helpers
|
|
152
|
+
|
|
153
|
+
def response
|
|
154
|
+
cpee = @a[0]
|
|
155
|
+
behavior = @a[1] ? 'fork_ready' : @p[0].value
|
|
156
|
+
data = @a[1] ? 0 : 1
|
|
157
|
+
tdoc = if @p[data].additional =~ /base64/
|
|
158
|
+
Base64.decode64(@p[data].value.read)
|
|
159
|
+
else
|
|
160
|
+
@p[data].value.read
|
|
161
|
+
end
|
|
162
|
+
|
|
163
|
+
if (instance = load_testset(tdoc,cpee)) == -1
|
|
164
|
+
@status = 500
|
|
165
|
+
else
|
|
166
|
+
handle_data cpee, instance, @p[data+1]&.value
|
|
167
|
+
handle_waiting cpee, instance, behavior
|
|
168
|
+
handle_starting cpee, instance, behavior
|
|
169
|
+
return Riddl::Parameter::Simple.new("url",cpee + instance)
|
|
170
|
+
end
|
|
171
|
+
end
|
|
172
|
+
end #}}}
|
|
173
|
+
|
|
174
|
+
class HandleInstance < Riddl::Implementation #{{{
|
|
175
|
+
include Helpers
|
|
176
|
+
|
|
177
|
+
def response
|
|
178
|
+
cpee = @a[0]
|
|
179
|
+
instance = @p[1].value
|
|
180
|
+
|
|
181
|
+
handle_data cpee, instance, @p[2]&.value
|
|
182
|
+
handle_waiting cpee, instance, @p[0].value
|
|
183
|
+
handle_starting cpee, instance, @p[0].value
|
|
184
|
+
return Riddl::Parameter::Simple.new("url",cpee + instance)
|
|
185
|
+
end
|
|
186
|
+
end #}}}
|
|
136
187
|
|
|
137
188
|
def self::implementation(opts)
|
|
138
189
|
opts[:cpee] ||= 'http://localhost:9298/'
|
|
139
190
|
Proc.new do
|
|
140
191
|
on resource do
|
|
141
|
-
run
|
|
192
|
+
run InstantiateXML, opts[:cpee],true if post 'xmlsimple'
|
|
193
|
+
on resource 'xml' do
|
|
194
|
+
run InstantiateXML, opts[:cpee], false if post 'xml'
|
|
195
|
+
end
|
|
196
|
+
on resource 'url' do
|
|
197
|
+
run InstantiateUrl, opts[:cpee] if post 'url'
|
|
198
|
+
end
|
|
199
|
+
on resource 'instance' do
|
|
200
|
+
run HandleInstance, opts[:cpee] if post 'instance'
|
|
201
|
+
end
|
|
142
202
|
end
|
|
143
203
|
end
|
|
144
204
|
end
|
data/lib/instantiation.xml
CHANGED
|
@@ -1,28 +1,68 @@
|
|
|
1
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
|
|
|
3
|
-
<message name="
|
|
3
|
+
<message name="xmlsimple">
|
|
4
|
+
<parameter name="xml" mimetype="*/xml"/>
|
|
5
|
+
</message>
|
|
6
|
+
<message name="xml">
|
|
7
|
+
<parameter name="behavior" type="string">
|
|
8
|
+
<choice>
|
|
9
|
+
<value>fork_ready</value>
|
|
10
|
+
<value>fork_running</value>
|
|
11
|
+
<value>wait_ready</value>
|
|
12
|
+
<value>wait_running</value>
|
|
13
|
+
</choice>
|
|
14
|
+
</parameter>
|
|
15
|
+
<parameter name="xml" mimetype="*/xml"/>
|
|
4
16
|
<optional>
|
|
5
|
-
<parameter name="
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
</
|
|
12
|
-
|
|
17
|
+
<parameter name="init" type="string"/>
|
|
18
|
+
</optional>
|
|
19
|
+
</message>
|
|
20
|
+
<message name="url">
|
|
21
|
+
<parameter name="behavior" type="string">
|
|
22
|
+
<choice>
|
|
23
|
+
<value>fork_ready</value>
|
|
24
|
+
<value>fork_running</value>
|
|
25
|
+
<value>wait_ready</value>
|
|
26
|
+
<value>wait_running</value>
|
|
27
|
+
</choice>
|
|
28
|
+
</parameter>
|
|
29
|
+
<parameter name="url" type="string"/>
|
|
30
|
+
<optional>
|
|
31
|
+
<parameter name="init" type="string"/>
|
|
13
32
|
</optional>
|
|
14
|
-
<choice>
|
|
15
|
-
<parameter name="xml" mimetype="*/xml"/>
|
|
16
|
-
<parameter name="url" type="string"/>
|
|
17
|
-
</choice>
|
|
18
33
|
</message>
|
|
19
|
-
|
|
20
34
|
<message name="instance">
|
|
35
|
+
<parameter name="behavior" type="string">
|
|
36
|
+
<choice>
|
|
37
|
+
<value>fork_ready</value>
|
|
38
|
+
<value>fork_running</value>
|
|
39
|
+
<value>wait_ready</value>
|
|
40
|
+
<value>wait_running</value>
|
|
41
|
+
<value>wait_stopped_running</value>
|
|
42
|
+
<value>wait_finished_running</value>
|
|
43
|
+
</choice>
|
|
44
|
+
</parameter>
|
|
45
|
+
<parameter name="instance" type="integer"/>
|
|
46
|
+
<optional>
|
|
47
|
+
<parameter name="init" type="string"/>
|
|
48
|
+
</optional>
|
|
49
|
+
</message>
|
|
50
|
+
|
|
51
|
+
<message name="result">
|
|
21
52
|
<parameter name="url" type="anyURI"/>
|
|
22
53
|
</message>
|
|
23
54
|
|
|
24
55
|
<resource>
|
|
25
|
-
<post in="
|
|
56
|
+
<post in="xmlsimple" out="result"/>
|
|
57
|
+
<resource relative="xml">
|
|
58
|
+
<post in="xml" out="result"/>
|
|
59
|
+
</resource>
|
|
60
|
+
<resource relative="instance">
|
|
61
|
+
<post in="instance" out="result"/>
|
|
62
|
+
</resource>
|
|
63
|
+
<resource relative="url">
|
|
64
|
+
<post in="url" out="result"/>
|
|
65
|
+
</resource>
|
|
26
66
|
</resource>
|
|
27
67
|
|
|
28
68
|
</description>
|