cpee 1.4.25 → 1.4.26
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/cockpit/graph.html +0 -5
- data/cockpit/js/instance.js +111 -89
- data/cockpit/js/ui.js +8 -4
- data/cpee.gemspec +1 -1
- data/lib/cpee/implementation.rb +1 -1
- data/lib/cpee/instantiation.rb +4 -4
- data/server/instances/100/notifications/logging/consumer-secret +1 -0
- data/server/instances/100/notifications/logging/producer-secret +1 -0
- data/server/instances/100/notifications/logging/subscription.xml +19 -0
- data/server/instances/100/properties.xml +31 -0
- data/server/instances/101/notifications/logging/consumer-secret +1 -0
- data/server/instances/101/notifications/logging/producer-secret +1 -0
- data/server/instances/101/notifications/logging/subscription.xml +19 -0
- data/server/instances/101/properties.xml +31 -0
- data/server/instances/102/notifications/logging/consumer-secret +1 -0
- data/server/instances/102/notifications/logging/producer-secret +1 -0
- data/server/instances/102/notifications/logging/subscription.xml +19 -0
- data/server/instances/102/properties.xml +31 -0
- data/server/instances/103/notifications/logging/consumer-secret +1 -0
- data/server/instances/103/notifications/logging/producer-secret +1 -0
- data/server/instances/103/notifications/logging/subscription.xml +19 -0
- data/server/instances/103/properties.xml +118 -0
- data/server/instances/99/notifications/logging/consumer-secret +1 -0
- data/server/instances/99/notifications/logging/producer-secret +1 -0
- data/server/instances/99/notifications/logging/subscription.xml +19 -0
- data/server/instances/99/properties.xml +156 -0
- data/server/server.pid +1 -1
- data/tools/cpee +50 -30
- metadata +22 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8bfdf2f4eb0e174cde8d67c2551f1bb0753cae717b687f3f45079845d6823639
|
4
|
+
data.tar.gz: bbbfab5e578ac3e9bd68c3845fb17632f467460d83fc6a04f908bf8b3311ad5b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 37c394dcfb064c1c7c840d9b55bf8475ad8be8c7981fed8af8cedf92c018f7347569ed982b615180aaac105b35268181d8dc3198f4ab9d5d8d1241f936d0a750
|
7
|
+
data.tar.gz: 91e7605015c0b37494a8fc7ac64a760bc268cede9f68abac2540e14315abe1aa9e678419205b65b644632c06996183abdf8b82bdec28cd2b63d903412d809417
|
data/cockpit/graph.html
CHANGED
@@ -57,11 +57,6 @@
|
|
57
57
|
<link rel="stylesheet" href="css/ui.css" type="text/css"/>
|
58
58
|
</head>
|
59
59
|
<body data-base-port="8298" data-res-port="9303" data-theme-base="themes" is="x-ui">
|
60
|
-
<div class='hidden'>
|
61
|
-
<input name="repo-url" type="text" value=""/>
|
62
|
-
<input name="base-url" type="text" value=""/>
|
63
|
-
<input name="instance-url" type="text" value=""/>
|
64
|
-
</div>
|
65
60
|
<div id='graphcolumn' style='overflow: auto'>
|
66
61
|
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:x="http://www.w3.org/1999/xlink" id='graphcanvas' width='1' height='1'></svg>
|
67
62
|
</div>
|
data/cockpit/js/instance.js
CHANGED
@@ -63,8 +63,8 @@ var sub_less = 'topic' + '=' + 'activity' + '&' +// {{{
|
|
63
63
|
'events' + '=' + 'change';// }}}
|
64
64
|
|
65
65
|
function cockpit() { //{{{
|
66
|
-
$("button[name=base]").click(function(){ create_instance(null,false); });
|
67
|
-
$("button[name=instance]").click(function(){ ui_activate_tab("#tabinstance"); monitor_instance(false,false); });
|
66
|
+
$("button[name=base]").click(function(){ create_instance($("input[name=base-url]").val(),null,false,false); });
|
67
|
+
$("button[name=instance]").click(function(){ ui_activate_tab("#tabinstance"); monitor_instance($("input[name=instance-url]").val(),$("input[name=repo-url]").val(),false,false); });
|
68
68
|
$("button[name=loadtestset]").click(function(e){new CustomMenu(e).menu($('#predefinedtestsets'),function(){ load_testset(false) } ); });
|
69
69
|
$("button[name=loadtestsetfile]").click(load_testsetfile);
|
70
70
|
$("button[name=loadmodelfile]").click(load_modelfile);
|
@@ -89,7 +89,6 @@ function cockpit() { //{{{
|
|
89
89
|
ui_toggle_vis_tab($('#parameters'));
|
90
90
|
}
|
91
91
|
if (q.monitor && q.load) {
|
92
|
-
$("input[name=instance-url]").val(q.monitor);
|
93
92
|
if (q.load.match(/https?:\/\//)) {
|
94
93
|
$("#predefinedtestsets").attr('data-other',q.load);
|
95
94
|
} else {
|
@@ -98,7 +97,7 @@ function cockpit() { //{{{
|
|
98
97
|
});
|
99
98
|
}
|
100
99
|
ui_activate_tab("#tabexecution");
|
101
|
-
monitor_instance(true,false);
|
100
|
+
monitor_instance(q.monitor,$("body").attr('current-repo'),true,false);
|
102
101
|
} else if (q.load) {
|
103
102
|
if (q.load.match(/https?:\/\//)) {
|
104
103
|
$("#predefinedtestsets").attr('data-other',q.load);
|
@@ -108,14 +107,13 @@ function cockpit() { //{{{
|
|
108
107
|
});
|
109
108
|
}
|
110
109
|
ui_activate_tab("#tabexecution");
|
111
|
-
create_instance(q.load,false);
|
112
|
-
} else if (q.new || q.new == ""
|
110
|
+
create_instance($("body").attr('current-base'),q.load,true,false);
|
111
|
+
} else if (q.new || q.new == "") {
|
113
112
|
ui_activate_tab("#tabinstance");
|
114
|
-
create_instance("Plain Instance",false);
|
113
|
+
create_instance($("body").attr('current-base'),"Plain Instance",false,false);
|
115
114
|
} else if (q.monitor) {
|
116
|
-
$("input[name=instance-url]").val(q.monitor);
|
117
115
|
ui_activate_tab("#tabexecution");
|
118
|
-
monitor_instance(false,false);
|
116
|
+
monitor_instance(q.monitor,$("body").attr('current-repo'),false,false);
|
119
117
|
} else if (q.exec) {
|
120
118
|
if (q.exec.match(/https?:\/\//)) {
|
121
119
|
$("#predefinedtestsets").attr('data-other',q.load);
|
@@ -125,7 +123,7 @@ function cockpit() { //{{{
|
|
125
123
|
});
|
126
124
|
}
|
127
125
|
ui_activate_tab("#tabexecution");
|
128
|
-
create_instance(q.exec,true);
|
126
|
+
create_instance($("body").attr('current-base'),q.exec,true,true);
|
129
127
|
}
|
130
128
|
}
|
131
129
|
});
|
@@ -141,13 +139,12 @@ function cockpit() { //{{{
|
|
141
139
|
});
|
142
140
|
} //}}}
|
143
141
|
|
144
|
-
function sanitize_url(
|
145
|
-
var url = it.val();
|
142
|
+
function sanitize_url(url) { //{{{
|
146
143
|
var lastChar = url.substr(url.length - 1)
|
147
144
|
if (lastChar != '/') {
|
148
|
-
|
145
|
+
url = (url + '/');
|
149
146
|
}
|
150
|
-
return
|
147
|
+
return url;
|
151
148
|
}
|
152
149
|
//}}}
|
153
150
|
function check_subscription() { // {{{
|
@@ -181,19 +178,23 @@ function check_subscription() { // {{{
|
|
181
178
|
}
|
182
179
|
}// }}}
|
183
180
|
|
184
|
-
function create_instance(
|
185
|
-
var info =
|
181
|
+
function create_instance(base,name,load,exec) {// {{{
|
182
|
+
var info = name ? name : prompt("Instance info?", "Enter info here");
|
186
183
|
if (info != null) {
|
187
184
|
if (info.match(/\S/)) {
|
188
|
-
var base = $("input[name=base-url]").val();
|
189
185
|
$.ajax({
|
190
186
|
type: "POST",
|
191
187
|
url: base,
|
192
188
|
dataType: "text",
|
193
189
|
data: "info=" + info,
|
194
190
|
success: function(res){
|
195
|
-
|
196
|
-
if (
|
191
|
+
var iu = (base + "//" + res + "/").replace(/\/+/g,"/").replace(/:\//,"://");
|
192
|
+
if (name) {
|
193
|
+
monitor_instance(iu,$("body").attr('current-repo'),load,exec);
|
194
|
+
} else {
|
195
|
+
$("body").attr('current-instance', sanitize_url(iu));
|
196
|
+
$("input[name=instance-url]").val(iu);
|
197
|
+
}
|
197
198
|
},
|
198
199
|
error: function(a,b,c) {
|
199
200
|
alert("No CPEE running.");
|
@@ -229,9 +230,7 @@ function websocket() { //{{{
|
|
229
230
|
case 'attributes':
|
230
231
|
monitor_instance_values("attributes");
|
231
232
|
monitor_instance_transformation();
|
232
|
-
if (suspended_monitoring) {
|
233
|
-
suspended_monitoring = false;
|
234
|
-
} else {
|
233
|
+
if (!suspended_monitoring) { // or else it would load twice, because dsl changes also
|
235
234
|
monitor_graph_change(true);
|
236
235
|
}
|
237
236
|
break;
|
@@ -268,15 +267,18 @@ function websocket() { //{{{
|
|
268
267
|
monitor_instance_state();
|
269
268
|
} //}}}
|
270
269
|
|
271
|
-
function monitor_instance(load,exec) {// {{{
|
272
|
-
|
273
|
-
|
274
|
-
var rep = sanitize_url($("input[name=repo-url]"));
|
270
|
+
function monitor_instance(cin,rep,load,exec) {// {{{
|
271
|
+
$("body").attr('current-instance',sanitize_url(cin));
|
272
|
+
$("body").attr('current-repo', sanitize_url(rep));
|
275
273
|
|
274
|
+
$("input[name=instance-url]").val($("body").attr('current-instance'));
|
275
|
+
$("input[name=repo-url]").val($("body").attr('current-repo'));
|
276
276
|
|
277
277
|
$('.tabbehind button').hide();
|
278
278
|
$('#dat_details').empty();
|
279
279
|
|
280
|
+
url = $("body").attr('current-instance');
|
281
|
+
|
280
282
|
$.ajax({
|
281
283
|
type: "GET",
|
282
284
|
url: url + "/properties/schema/",
|
@@ -285,9 +287,6 @@ function monitor_instance(load,exec) {// {{{
|
|
285
287
|
$("ui-resizehandle.hidden").removeClass("hidden");
|
286
288
|
$("ui-tabbed ui-tab.hidden, ui-rest ui-tab.hidden").removeClass("hidden");
|
287
289
|
|
288
|
-
$("body").attr('current-instance',url);
|
289
|
-
$("body").attr('current-repo',rep);
|
290
|
-
|
291
290
|
// Change url to return to current instance when reloading
|
292
291
|
$("#current-instance").text(url);
|
293
292
|
$("#current-instance").attr('href',url);
|
@@ -332,6 +331,8 @@ function monitor_instance(load,exec) {// {{{
|
|
332
331
|
function monitor_instance_values(val) {// {{{
|
333
332
|
var url = $('body').attr('current-instance');
|
334
333
|
var rep = $('body').attr('current-repo');
|
334
|
+
var bas = $('body').attr('current-base');
|
335
|
+
|
335
336
|
$.ajax({
|
336
337
|
type: "GET",
|
337
338
|
url: url + "/properties/values/" + val + "/",
|
@@ -517,6 +518,10 @@ function monitor_instance_state_change(notification) { //{{{
|
|
517
518
|
if (notification == "ready" || notification == "stopped" || notification == "running") {
|
518
519
|
$("#state button").removeAttr('disabled');
|
519
520
|
}
|
521
|
+
// sometimes, out of sheer network routingness, stopping comes after stopped, which fucks the UI hard
|
522
|
+
// thus, we are having none of it
|
523
|
+
if (notification == 'stopping' && save['state'] == 'stopped')
|
524
|
+
return;
|
520
525
|
if (notification != save['state']) {
|
521
526
|
save['state'] = notification;
|
522
527
|
|
@@ -726,29 +731,31 @@ function save_svg() {// {{{
|
|
726
731
|
}
|
727
732
|
});
|
728
733
|
}// }}}
|
729
|
-
function set_testset(testset,exec) {// {{{
|
734
|
+
async function set_testset(testset,exec) {// {{{
|
730
735
|
var url = $('body').attr('current-instance');
|
731
736
|
suspended_monitoring = true;
|
732
737
|
|
733
|
-
|
734
|
-
|
735
|
-
|
736
|
-
|
738
|
+
var promises = [];
|
739
|
+
|
740
|
+
promises.push(
|
741
|
+
$.ajax({
|
742
|
+
type: "GET",
|
743
|
+
url: url + "/notifications/subscriptions/",
|
744
|
+
error: report_failure
|
745
|
+
}).then(async function(res) {
|
737
746
|
var rcount = 0;
|
738
747
|
var values = $("subscriptions > subscription[url]",res);
|
739
748
|
var vals = [];
|
740
749
|
values.each(function(){
|
741
750
|
vals.push($(this).attr('url'));
|
742
751
|
});
|
743
|
-
load_testset_handlers(url,testset,vals);
|
744
|
-
}
|
745
|
-
|
746
|
-
|
747
|
-
|
748
|
-
|
749
|
-
|
750
|
-
load_testset_endpoints(url,testset);
|
751
|
-
load_testset_pos(url,testset);
|
752
|
+
await load_testset_handlers(url,testset,vals);
|
753
|
+
})
|
754
|
+
)
|
755
|
+
promises.push(load_testset_dataelements(url,testset));
|
756
|
+
promises.push(load_testset_attributes(url,testset));
|
757
|
+
promises.push(load_testset_endpoints(url,testset));
|
758
|
+
promises.push(load_testset_pos(url,testset));
|
752
759
|
|
753
760
|
if ($("testset > transformation",testset).length > 0) {
|
754
761
|
var ser = '';
|
@@ -756,20 +763,24 @@ function set_testset(testset,exec) {// {{{
|
|
756
763
|
ser += $(this).serializeXML() + "\n";
|
757
764
|
});
|
758
765
|
var val = "<content>" + ser + "</content>";
|
759
|
-
|
760
|
-
|
761
|
-
|
762
|
-
|
763
|
-
|
764
|
-
|
765
|
-
}
|
766
|
-
|
767
|
-
|
766
|
+
promises.push(
|
767
|
+
$.ajax({
|
768
|
+
type: "PUT",
|
769
|
+
url: url + "/properties/values/transformation",
|
770
|
+
data: ({content: val}),
|
771
|
+
error: report_failure
|
772
|
+
}).then(async function(){
|
773
|
+
await load_testset_des(url,testset);
|
774
|
+
})
|
775
|
+
);
|
768
776
|
} else {
|
769
|
-
load_testset_des(url,testset);
|
777
|
+
promises.push(load_testset_des(url,testset));
|
770
778
|
}
|
771
779
|
|
772
|
-
load_testset_hw(url,testset);
|
780
|
+
promises.push(load_testset_hw(url,testset));
|
781
|
+
await Promise.all(promises);
|
782
|
+
suspended_monitoring = false;
|
783
|
+
|
773
784
|
$.ajax({
|
774
785
|
type: "GET",
|
775
786
|
url: url + "/properties/values/state/",
|
@@ -781,8 +792,7 @@ function set_testset(testset,exec) {// {{{
|
|
781
792
|
data: ({value: res}),
|
782
793
|
error: report_failure,
|
783
794
|
success: function(res){
|
784
|
-
|
785
|
-
if (exec) setTimeout(start_instance,2000);
|
795
|
+
if (exec) start_instance();
|
786
796
|
}
|
787
797
|
});
|
788
798
|
}
|
@@ -892,51 +902,56 @@ function load_modeltype() {// {{{
|
|
892
902
|
});
|
893
903
|
}// }}}
|
894
904
|
|
895
|
-
function load_des(url,model) { //{{{
|
905
|
+
async function load_des(url,model) { //{{{
|
896
906
|
model = model.replace(/<\?[^\?]+\?>/,'');
|
897
907
|
var val = "<content>" + model + "</content>";
|
898
|
-
$.ajax({
|
908
|
+
return $.ajax({
|
899
909
|
type: "PUT",
|
900
910
|
url: url + "/properties/values/description",
|
901
911
|
data: ({content: val}),
|
902
912
|
error: report_failure
|
903
913
|
});
|
904
|
-
}
|
914
|
+
} //}}}
|
905
915
|
|
906
|
-
function load_testset_des(url,testset) {// {{{
|
916
|
+
async function load_testset_des(url,testset) {// {{{
|
907
917
|
if ($("testset > description",testset).length == 0) { return; }
|
908
918
|
var ser = '';
|
909
919
|
$("testset > description > *",testset).each(function(){
|
910
920
|
ser += $(this).serializeXML() + "\n";
|
911
921
|
});
|
912
|
-
load_des(url,ser);
|
922
|
+
return load_des(url,ser);
|
913
923
|
} // }}}
|
914
|
-
function load_testset_hw(url,testset) {// {{{
|
924
|
+
async function load_testset_hw(url,testset) {// {{{
|
925
|
+
var promises = [];
|
915
926
|
$("testset > handlerwrapper",testset).each(function(){
|
916
927
|
var val = $(this).text();
|
917
|
-
|
918
|
-
|
919
|
-
|
920
|
-
|
921
|
-
|
922
|
-
|
928
|
+
promises.push(
|
929
|
+
$.ajax({
|
930
|
+
type: "PUT",
|
931
|
+
url: url + "/properties/values/handlerwrapper",
|
932
|
+
data: ({value: val}),
|
933
|
+
error: report_failure
|
934
|
+
})
|
935
|
+
);
|
923
936
|
});
|
937
|
+
return Promise.all(promises);
|
924
938
|
} // }}}
|
925
|
-
function load_testset_dataelements(url,testset) {// {{{
|
939
|
+
async function load_testset_dataelements(url,testset) {// {{{
|
926
940
|
if ($("testset > dataelements",testset).length == 0) { return; }
|
927
941
|
var ser = '';
|
928
942
|
$("testset > dataelements > *",testset).each(function(){
|
929
943
|
ser += $(this).serializeXML() + "\n";
|
930
944
|
});
|
931
945
|
var val = "<content>" + ser + "</content>";
|
932
|
-
$.ajax({
|
946
|
+
return $.ajax({
|
933
947
|
type: "PUT",
|
934
948
|
url: url + "/properties/values/dataelements",
|
935
949
|
data: ({content: val}),
|
936
950
|
error: report_failure
|
937
951
|
});
|
938
952
|
}// }}}
|
939
|
-
function load_testset_attributes(url,testset) {// {{{
|
953
|
+
async function load_testset_attributes(url,testset) {// {{{
|
954
|
+
var promises = [];
|
940
955
|
if ($("testset > attributes",testset).length == 0) { return; }
|
941
956
|
var ser = '';
|
942
957
|
$.ajax({
|
@@ -950,37 +965,40 @@ function load_testset_attributes(url,testset) {// {{{
|
|
950
965
|
ser += $(this).serializeXML() + "\n";
|
951
966
|
});
|
952
967
|
var val = "<content>" + ser + "</content>";
|
953
|
-
|
954
|
-
|
955
|
-
|
956
|
-
|
957
|
-
|
958
|
-
|
968
|
+
promises.push(
|
969
|
+
$.ajax({
|
970
|
+
type: "PUT",
|
971
|
+
url: url + "/properties/values/attributes",
|
972
|
+
data: ({content: val}),
|
973
|
+
error: report_failure
|
974
|
+
})
|
975
|
+
);
|
959
976
|
}
|
960
977
|
});
|
978
|
+
return Promise.all(promises);
|
961
979
|
}// }}}
|
962
|
-
function load_testset_endpoints(url,testset) {// {{{
|
980
|
+
async function load_testset_endpoints(url,testset) {// {{{
|
963
981
|
if ($("testset > endpoints",testset).length == 0) { return; }
|
964
982
|
var ser = '';
|
965
983
|
$("testset > endpoints > *",testset).each(function(){
|
966
984
|
ser += $(this).serializeXML() + "\n";
|
967
985
|
});
|
968
986
|
var val = "<content>" + ser + "</content>";
|
969
|
-
$.ajax({
|
987
|
+
return $.ajax({
|
970
988
|
type: "PUT",
|
971
989
|
url: url + "/properties/values/endpoints/",
|
972
990
|
data: ({content: val}),
|
973
991
|
error: report_failure
|
974
992
|
});
|
975
993
|
}// }}}
|
976
|
-
function load_testset_pos(url,testset) {// {{{
|
994
|
+
async function load_testset_pos(url,testset) {// {{{
|
977
995
|
if ($("testset > positions",testset).length == 0) { return; }
|
978
996
|
var ser = '';
|
979
997
|
$("testset > positions > *",testset).each(function(){
|
980
998
|
ser += $(this).serializeXML() + "\n";
|
981
999
|
});
|
982
1000
|
var val = "<content>" + ser + "</content>";
|
983
|
-
$.ajax({
|
1001
|
+
return $.ajax({
|
984
1002
|
type: "PUT",
|
985
1003
|
url: url + "/properties/values/positions/",
|
986
1004
|
data: ({content: val}),
|
@@ -988,8 +1006,9 @@ function load_testset_pos(url,testset) {// {{{
|
|
988
1006
|
error: report_failure
|
989
1007
|
});
|
990
1008
|
}// }}}
|
991
|
-
function load_testset_handlers(url,testset,vals) {// {{{
|
992
|
-
|
1009
|
+
async function load_testset_handlers(url,testset,vals) {// {{{
|
1010
|
+
var promises = [];
|
1011
|
+
$("testset > handlers > *",testset).each(async function(){
|
993
1012
|
var han = this;
|
994
1013
|
var suburl = $(han).attr('url');
|
995
1014
|
if ($.inArray(suburl,vals) == -1) {
|
@@ -998,13 +1017,16 @@ function load_testset_handlers(url,testset,vals) {// {{{
|
|
998
1017
|
inp += "&topic=" + $(this).attr('topic');
|
999
1018
|
inp += "&" + this.nodeName + "=" + $(this).text();
|
1000
1019
|
});
|
1001
|
-
|
1002
|
-
|
1003
|
-
|
1004
|
-
|
1005
|
-
|
1020
|
+
promises.push(
|
1021
|
+
$.ajax({
|
1022
|
+
type: "POST",
|
1023
|
+
url: url + "/notifications/subscriptions/",
|
1024
|
+
data: inp
|
1025
|
+
})
|
1026
|
+
)
|
1006
1027
|
}
|
1007
1028
|
});
|
1029
|
+
return Promise.all(promises);
|
1008
1030
|
}// }}}
|
1009
1031
|
|
1010
1032
|
function format_visual_add(what,cls) {//{{{
|
@@ -1025,7 +1047,7 @@ function format_visual_remove(what,cls) {//{{{
|
|
1025
1047
|
}//}}}
|
1026
1048
|
|
1027
1049
|
function scroll_into_view(what) { //{{{
|
1028
|
-
var tcontainer = $('#
|
1050
|
+
var tcontainer = $('#graphcanvas').parent()[0];
|
1029
1051
|
if ($('g[element-id="' + what + '"]').length > 0) {
|
1030
1052
|
var telement = $('g[element-id="' + what + '"]')[0].getBBox().y;
|
1031
1053
|
if (tcontainer.scrollTop > telement) {
|
data/cockpit/js/ui.js
CHANGED
@@ -20,18 +20,22 @@ $(document).ready(function() {
|
|
20
20
|
success: function(res){
|
21
21
|
$("input[name=repo-url]").val(res['repo-url']);
|
22
22
|
$("input[name=base-url]").val(res['base-url']);
|
23
|
+
$("body").attr('current-repo',res['repo-url']);
|
24
|
+
$("body").attr('current-base',res['base-url']);
|
23
25
|
$("body").attr('current-testsets',res['testsets-url']);
|
24
26
|
cockpit();
|
25
27
|
},
|
26
28
|
error: function(){
|
27
29
|
$("body").attr('current-testsets','testsets/');
|
28
30
|
if (location.protocol.match(/^file/)) {
|
29
|
-
$("
|
30
|
-
$("
|
31
|
+
$("body").attr('current-repo',"http://localhost:" + $('body').data('res-port'));
|
32
|
+
$("body").attr('current-base',"http://localhost:" + $('body').data('base-port'));
|
31
33
|
} else {
|
32
|
-
$("
|
33
|
-
$("
|
34
|
+
$("body").attr('current-repo',location.protocol + "//" + location.hostname + ":" + $('body').data('res-port'));
|
35
|
+
$("body").attr('current-base',location.protocol + "//" + location.hostname + ":" + $('body').data('base-port'));
|
34
36
|
}
|
37
|
+
$("input[name=repo-url]").val($("body").attr('current-repo'));
|
38
|
+
$("input[name=base-url]").val($("body").attr('current-base'));
|
35
39
|
cockpit();
|
36
40
|
}
|
37
41
|
});
|
data/cpee.gemspec
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = "cpee"
|
3
|
-
s.version = "1.4.
|
3
|
+
s.version = "1.4.26"
|
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/implementation.rb
CHANGED
@@ -142,7 +142,7 @@ module CPEE
|
|
142
142
|
Riddl::Parameter::Complex.new("wis","text/xml") do
|
143
143
|
ins = XML::Smart::string('<instances/>')
|
144
144
|
controller.sort{|a,b| b[0] <=> a[0] }.each do |k,v|
|
145
|
-
ins.root.add('instance', v.info, 'uuid' => v.uuid, 'id' => k, 'state' => v.state, 'state_changed' => v.state_changed )
|
145
|
+
ins.root.add('instance', v.info, 'uuid' => v.uuid, 'id' => k, 'state' => v.state, 'state_changed' => v.state_changed ) unless v.nil?
|
146
146
|
end
|
147
147
|
ins.to_s
|
148
148
|
end
|
data/lib/cpee/instantiation.rb
CHANGED
@@ -137,7 +137,7 @@ module CPEE
|
|
137
137
|
include Helpers
|
138
138
|
|
139
139
|
def response
|
140
|
-
cpee = @a[0]
|
140
|
+
cpee = @h['X_CPEE'] || @a[0]
|
141
141
|
selfurl = @a[1]
|
142
142
|
cblist = @a[2]
|
143
143
|
status, res = Riddl::Client.new(@p[2].value).get
|
@@ -170,7 +170,7 @@ module CPEE
|
|
170
170
|
include Helpers
|
171
171
|
|
172
172
|
def response
|
173
|
-
cpee = @a[0]
|
173
|
+
cpee = @h['X_CPEE'] || @a[0]
|
174
174
|
behavior = @a[1] ? 'fork_ready' : @p[0].value
|
175
175
|
data = @a[1] ? 0 : 1
|
176
176
|
selfurl = @a[2]
|
@@ -203,7 +203,7 @@ module CPEE
|
|
203
203
|
include Helpers
|
204
204
|
|
205
205
|
def response
|
206
|
-
cpee = @a[0]
|
206
|
+
cpee = @h['X_CPEE'] || @a[0]
|
207
207
|
selfurl = @a[1]
|
208
208
|
cblist = @a[2]
|
209
209
|
instance = @p[1].value
|
@@ -224,7 +224,7 @@ module CPEE
|
|
224
224
|
|
225
225
|
class ContinueTask < Riddl::Implementation #{{{
|
226
226
|
def response
|
227
|
-
cpee = @a[0]
|
227
|
+
cpee = @h['X_CPEE'] || @a[0]
|
228
228
|
cblist = @a[1]
|
229
229
|
topic = @p[1].value
|
230
230
|
event_name = @p[2].value
|
@@ -0,0 +1 @@
|
|
1
|
+
f7c77861ac613eeac8fb9829c9a545a2
|
@@ -0,0 +1 @@
|
|
1
|
+
2a24d172b1aeb05fe94fdc5e095dec32
|
@@ -0,0 +1,19 @@
|
|
1
|
+
<subscription xmlns="http://riddl.org/ns/common-patterns/notifications-producer/1.0" url="http://localhost:9299/">
|
2
|
+
<topic id="activity">
|
3
|
+
<event>calling</event>
|
4
|
+
<event>receiving</event>
|
5
|
+
<event>done</event>
|
6
|
+
</topic>
|
7
|
+
<topic id="dataelements">
|
8
|
+
<event>change</event>
|
9
|
+
</topic>
|
10
|
+
<topic id="endpoints">
|
11
|
+
<event>change</event>
|
12
|
+
</topic>
|
13
|
+
<topic id="attributes">
|
14
|
+
<event>change</event>
|
15
|
+
</topic>
|
16
|
+
<topic id="task">
|
17
|
+
<event>instantiation</event>
|
18
|
+
</topic>
|
19
|
+
</subscription>
|
@@ -0,0 +1,31 @@
|
|
1
|
+
<properties xmlns="http://riddl.org/ns/common-patterns/properties/1.0">
|
2
|
+
<attributes>
|
3
|
+
<uuid>c0638af8-c554-4953-bfab-e778c80f3661</uuid>
|
4
|
+
<info>Enter info here</info>
|
5
|
+
<modeltype>CPEE</modeltype>
|
6
|
+
<theme>default</theme>
|
7
|
+
</attributes>
|
8
|
+
<state changed="2019-03-22T15:05:20+01:00">ready</state>
|
9
|
+
<handlerwrapper>DefaultHandlerWrapper</handlerwrapper>
|
10
|
+
<positions/>
|
11
|
+
<dataelements/>
|
12
|
+
<endpoints>
|
13
|
+
<timeout>http://gruppe.wst.univie.ac.at/~mangler/services/timeout.php</timeout>
|
14
|
+
</endpoints>
|
15
|
+
<dsl/>
|
16
|
+
<dslx>
|
17
|
+
<description xmlns="http://cpee.org/ns/description/1.0"/>
|
18
|
+
</dslx>
|
19
|
+
<status>
|
20
|
+
<id>0</id>
|
21
|
+
<message>undefined</message>
|
22
|
+
</status>
|
23
|
+
<description>
|
24
|
+
<description xmlns="http://cpee.org/ns/description/1.0"/>
|
25
|
+
</description>
|
26
|
+
<transformation>
|
27
|
+
<description type="copy"/>
|
28
|
+
<dataelements type="none"/>
|
29
|
+
<endpoints type="none"/>
|
30
|
+
</transformation>
|
31
|
+
</properties>
|
@@ -0,0 +1 @@
|
|
1
|
+
f7c77861ac613eeac8fb9829c9a545a2
|
@@ -0,0 +1 @@
|
|
1
|
+
2a24d172b1aeb05fe94fdc5e095dec32
|
@@ -0,0 +1,19 @@
|
|
1
|
+
<subscription xmlns="http://riddl.org/ns/common-patterns/notifications-producer/1.0" url="http://localhost:9299/">
|
2
|
+
<topic id="activity">
|
3
|
+
<event>calling</event>
|
4
|
+
<event>receiving</event>
|
5
|
+
<event>done</event>
|
6
|
+
</topic>
|
7
|
+
<topic id="dataelements">
|
8
|
+
<event>change</event>
|
9
|
+
</topic>
|
10
|
+
<topic id="endpoints">
|
11
|
+
<event>change</event>
|
12
|
+
</topic>
|
13
|
+
<topic id="attributes">
|
14
|
+
<event>change</event>
|
15
|
+
</topic>
|
16
|
+
<topic id="task">
|
17
|
+
<event>instantiation</event>
|
18
|
+
</topic>
|
19
|
+
</subscription>
|
@@ -0,0 +1,31 @@
|
|
1
|
+
<properties xmlns="http://riddl.org/ns/common-patterns/properties/1.0">
|
2
|
+
<attributes>
|
3
|
+
<uuid>8d15136d-89b0-4823-ba76-9ae329f213e7</uuid>
|
4
|
+
<info>Enter info here</info>
|
5
|
+
<modeltype>CPEE</modeltype>
|
6
|
+
<theme>default</theme>
|
7
|
+
</attributes>
|
8
|
+
<state changed="2019-03-25T19:57:35+01:00">ready</state>
|
9
|
+
<handlerwrapper>DefaultHandlerWrapper</handlerwrapper>
|
10
|
+
<positions/>
|
11
|
+
<dataelements/>
|
12
|
+
<endpoints>
|
13
|
+
<timeout>http://gruppe.wst.univie.ac.at/~mangler/services/timeout.php</timeout>
|
14
|
+
</endpoints>
|
15
|
+
<dsl/>
|
16
|
+
<dslx>
|
17
|
+
<description xmlns="http://cpee.org/ns/description/1.0"/>
|
18
|
+
</dslx>
|
19
|
+
<status>
|
20
|
+
<id>0</id>
|
21
|
+
<message>undefined</message>
|
22
|
+
</status>
|
23
|
+
<description>
|
24
|
+
<description xmlns="http://cpee.org/ns/description/1.0"/>
|
25
|
+
</description>
|
26
|
+
<transformation>
|
27
|
+
<description type="copy"/>
|
28
|
+
<dataelements type="none"/>
|
29
|
+
<endpoints type="none"/>
|
30
|
+
</transformation>
|
31
|
+
</properties>
|
@@ -0,0 +1 @@
|
|
1
|
+
f7c77861ac613eeac8fb9829c9a545a2
|
@@ -0,0 +1 @@
|
|
1
|
+
2a24d172b1aeb05fe94fdc5e095dec32
|
@@ -0,0 +1,19 @@
|
|
1
|
+
<subscription xmlns="http://riddl.org/ns/common-patterns/notifications-producer/1.0" url="http://localhost:9299/">
|
2
|
+
<topic id="activity">
|
3
|
+
<event>calling</event>
|
4
|
+
<event>receiving</event>
|
5
|
+
<event>done</event>
|
6
|
+
</topic>
|
7
|
+
<topic id="dataelements">
|
8
|
+
<event>change</event>
|
9
|
+
</topic>
|
10
|
+
<topic id="endpoints">
|
11
|
+
<event>change</event>
|
12
|
+
</topic>
|
13
|
+
<topic id="attributes">
|
14
|
+
<event>change</event>
|
15
|
+
</topic>
|
16
|
+
<topic id="task">
|
17
|
+
<event>instantiation</event>
|
18
|
+
</topic>
|
19
|
+
</subscription>
|
@@ -0,0 +1,31 @@
|
|
1
|
+
<properties xmlns="http://riddl.org/ns/common-patterns/properties/1.0">
|
2
|
+
<attributes>
|
3
|
+
<uuid>7e9e36e0-f270-46c2-be9a-b81dd35c4fd1</uuid>
|
4
|
+
<info>Enter info here</info>
|
5
|
+
<modeltype>CPEE</modeltype>
|
6
|
+
<theme>default</theme>
|
7
|
+
</attributes>
|
8
|
+
<state changed="2019-03-25T20:04:36+01:00">ready</state>
|
9
|
+
<handlerwrapper>DefaultHandlerWrapper</handlerwrapper>
|
10
|
+
<positions/>
|
11
|
+
<dataelements/>
|
12
|
+
<endpoints>
|
13
|
+
<timeout>http://gruppe.wst.univie.ac.at/~mangler/services/timeout.php</timeout>
|
14
|
+
</endpoints>
|
15
|
+
<dsl/>
|
16
|
+
<dslx>
|
17
|
+
<description xmlns="http://cpee.org/ns/description/1.0"/>
|
18
|
+
</dslx>
|
19
|
+
<status>
|
20
|
+
<id>0</id>
|
21
|
+
<message>undefined</message>
|
22
|
+
</status>
|
23
|
+
<description>
|
24
|
+
<description xmlns="http://cpee.org/ns/description/1.0"/>
|
25
|
+
</description>
|
26
|
+
<transformation>
|
27
|
+
<description type="copy"/>
|
28
|
+
<dataelements type="none"/>
|
29
|
+
<endpoints type="none"/>
|
30
|
+
</transformation>
|
31
|
+
</properties>
|
@@ -0,0 +1 @@
|
|
1
|
+
f7c77861ac613eeac8fb9829c9a545a2
|
@@ -0,0 +1 @@
|
|
1
|
+
2a24d172b1aeb05fe94fdc5e095dec32
|
@@ -0,0 +1,19 @@
|
|
1
|
+
<subscription xmlns="http://riddl.org/ns/common-patterns/notifications-producer/1.0" url="http://localhost:9299/">
|
2
|
+
<topic id="activity">
|
3
|
+
<event>calling</event>
|
4
|
+
<event>receiving</event>
|
5
|
+
<event>done</event>
|
6
|
+
</topic>
|
7
|
+
<topic id="dataelements">
|
8
|
+
<event>change</event>
|
9
|
+
</topic>
|
10
|
+
<topic id="endpoints">
|
11
|
+
<event>change</event>
|
12
|
+
</topic>
|
13
|
+
<topic id="attributes">
|
14
|
+
<event>change</event>
|
15
|
+
</topic>
|
16
|
+
<topic id="task">
|
17
|
+
<event>instantiation</event>
|
18
|
+
</topic>
|
19
|
+
</subscription>
|
@@ -0,0 +1,118 @@
|
|
1
|
+
<properties xmlns="http://riddl.org/ns/common-patterns/properties/1.0">
|
2
|
+
<attributes>
|
3
|
+
<uuid>dd2b893a-b45b-4c73-af7d-bc2a8fc7b752</uuid>
|
4
|
+
<info>Linear</info>
|
5
|
+
<modeltype>CPEE</modeltype>
|
6
|
+
<theme>default</theme>
|
7
|
+
</attributes>
|
8
|
+
<state changed="2019-03-25T20:19:31+01:00">finished</state>
|
9
|
+
<handlerwrapper>DefaultHandlerWrapper</handlerwrapper>
|
10
|
+
<positions/>
|
11
|
+
<dataelements>
|
12
|
+
<x>a2,a3,</x>
|
13
|
+
</dataelements>
|
14
|
+
<endpoints>
|
15
|
+
<timeout>http://gruppe.wst.univie.ac.at/~mangler/services/timeout.php</timeout>
|
16
|
+
</endpoints>
|
17
|
+
<dsl>call :a1, :timeout, parameters: { :label => "Step 1", :method => :post, :arguments => [⭐(:name => :timeout, :value => "2")] }, finalize: <<-END
|
18
|
+
data.x += \"a1,\"
|
19
|
+
END
|
20
|
+
call :a2, :timeout, parameters: { :label => "Step 2", :method => :post, :arguments => [⭐(:name => :timeout, :value => "4")] }, finalize: <<-END
|
21
|
+
data.x += \"a2,\"
|
22
|
+
END
|
23
|
+
call :a3, :timeout, parameters: { :label => "Step 3", :method => :post, :arguments => [⭐(:name => :timeout, :value => "4")] }, finalize: <<-END
|
24
|
+
data.x += \"a3,\"
|
25
|
+
END
|
26
|
+
</dsl>
|
27
|
+
<dslx>
|
28
|
+
<description xmlns="http://cpee.org/ns/description/1.0">
|
29
|
+
<!--{{{-->
|
30
|
+
<call id="a1" endpoint="timeout">
|
31
|
+
<parameters>
|
32
|
+
<!--{{{-->
|
33
|
+
<label>Step 1</label>
|
34
|
+
<method>:post</method>
|
35
|
+
<arguments>
|
36
|
+
<timeout>2</timeout>
|
37
|
+
</arguments>
|
38
|
+
</parameters>
|
39
|
+
<!--}}}-->
|
40
|
+
<finalize output="result">data.x += "a1,"</finalize>
|
41
|
+
</call>
|
42
|
+
<call id="a2" endpoint="timeout">
|
43
|
+
<parameters>
|
44
|
+
<!--{{{-->
|
45
|
+
<label>Step 2</label>
|
46
|
+
<method>:post</method>
|
47
|
+
<arguments>
|
48
|
+
<timeout>4</timeout>
|
49
|
+
</arguments>
|
50
|
+
</parameters>
|
51
|
+
<!--}}}-->
|
52
|
+
<finalize output="result">data.x += "a2,"</finalize>
|
53
|
+
</call>
|
54
|
+
<call id="a3" endpoint="timeout">
|
55
|
+
<parameters>
|
56
|
+
<!--{{{-->
|
57
|
+
<label>Step 3</label>
|
58
|
+
<method>:post</method>
|
59
|
+
<arguments>
|
60
|
+
<timeout>4</timeout>
|
61
|
+
</arguments>
|
62
|
+
</parameters>
|
63
|
+
<!--}}}-->
|
64
|
+
<finalize output="result">data.x += "a3,"</finalize>
|
65
|
+
</call>
|
66
|
+
</description>
|
67
|
+
</dslx>
|
68
|
+
<status>
|
69
|
+
<id>0</id>
|
70
|
+
<message>undefined</message>
|
71
|
+
</status>
|
72
|
+
<description>
|
73
|
+
<description xmlns="http://cpee.org/ns/description/1.0">
|
74
|
+
<!--{{{-->
|
75
|
+
<call id="a1" endpoint="timeout">
|
76
|
+
<parameters>
|
77
|
+
<!--{{{-->
|
78
|
+
<label>Step 1</label>
|
79
|
+
<method>:post</method>
|
80
|
+
<arguments>
|
81
|
+
<timeout>2</timeout>
|
82
|
+
</arguments>
|
83
|
+
</parameters>
|
84
|
+
<!--}}}-->
|
85
|
+
<finalize output="result">data.x += "a1,"</finalize>
|
86
|
+
</call>
|
87
|
+
<call id="a2" endpoint="timeout">
|
88
|
+
<parameters>
|
89
|
+
<!--{{{-->
|
90
|
+
<label>Step 2</label>
|
91
|
+
<method>:post</method>
|
92
|
+
<arguments>
|
93
|
+
<timeout>4</timeout>
|
94
|
+
</arguments>
|
95
|
+
</parameters>
|
96
|
+
<!--}}}-->
|
97
|
+
<finalize output="result">data.x += "a2,"</finalize>
|
98
|
+
</call>
|
99
|
+
<call id="a3" endpoint="timeout">
|
100
|
+
<parameters>
|
101
|
+
<!--{{{-->
|
102
|
+
<label>Step 3</label>
|
103
|
+
<method>:post</method>
|
104
|
+
<arguments>
|
105
|
+
<timeout>4</timeout>
|
106
|
+
</arguments>
|
107
|
+
</parameters>
|
108
|
+
<!--}}}-->
|
109
|
+
<finalize output="result">data.x += "a3,"</finalize>
|
110
|
+
</call>
|
111
|
+
</description>
|
112
|
+
</description>
|
113
|
+
<transformation>
|
114
|
+
<description type="copy"/>
|
115
|
+
<dataelements type="rest"/>
|
116
|
+
<endpoints type="rest"/>
|
117
|
+
</transformation>
|
118
|
+
</properties>
|
@@ -0,0 +1 @@
|
|
1
|
+
f7c77861ac613eeac8fb9829c9a545a2
|
@@ -0,0 +1 @@
|
|
1
|
+
2a24d172b1aeb05fe94fdc5e095dec32
|
@@ -0,0 +1,19 @@
|
|
1
|
+
<subscription xmlns="http://riddl.org/ns/common-patterns/notifications-producer/1.0" url="http://localhost:9299/">
|
2
|
+
<topic id="activity">
|
3
|
+
<event>calling</event>
|
4
|
+
<event>receiving</event>
|
5
|
+
<event>done</event>
|
6
|
+
</topic>
|
7
|
+
<topic id="dataelements">
|
8
|
+
<event>change</event>
|
9
|
+
</topic>
|
10
|
+
<topic id="endpoints">
|
11
|
+
<event>change</event>
|
12
|
+
</topic>
|
13
|
+
<topic id="attributes">
|
14
|
+
<event>change</event>
|
15
|
+
</topic>
|
16
|
+
<topic id="task">
|
17
|
+
<event>instantiation</event>
|
18
|
+
</topic>
|
19
|
+
</subscription>
|
@@ -0,0 +1,156 @@
|
|
1
|
+
<properties xmlns="http://riddl.org/ns/common-patterns/properties/1.0">
|
2
|
+
<attributes>
|
3
|
+
<uuid>5db66753-618f-4006-80f2-fab5de741cd5</uuid>
|
4
|
+
<info>Enter info here</info>
|
5
|
+
<modeltype>CPEE</modeltype>
|
6
|
+
<theme>default</theme>
|
7
|
+
</attributes>
|
8
|
+
<state changed="2019-03-22T14:18:29+01:00">ready</state>
|
9
|
+
<handlerwrapper>DefaultHandlerWrapper</handlerwrapper>
|
10
|
+
<positions/>
|
11
|
+
<dataelements>
|
12
|
+
<persons>3</persons>
|
13
|
+
<card>Visa_12345</card>
|
14
|
+
<airline>null</airline>
|
15
|
+
<hotels>[]</hotels>
|
16
|
+
<from>Vienna</from>
|
17
|
+
<to>Prague</to>
|
18
|
+
<costs>0</costs>
|
19
|
+
</dataelements>
|
20
|
+
<endpoints>
|
21
|
+
<bookAir>http://gruppe.wst.univie.ac.at/~mangler/services/airline.php</bookAir>
|
22
|
+
<bookHotel>http://gruppe.wst.univie.ac.at/~mangler/services/hotel.php</bookHotel>
|
23
|
+
<approve>http://gruppe.wst.univie.ac.at/~mangler/services/approval.php</approve>
|
24
|
+
</endpoints>
|
25
|
+
<dsl>call :a1, :bookAir, parameters: { :label => "Book Airline", :method => :post, :arguments => [⭐(:name => :from, :value => "data.from"), ⭐(:name => :to, :value => "data.to"), ⭐(:name => :persons, :value => "data.persons")] }, finalize: <<-END
|
26
|
+
data.airline = result.value('id')
|
27
|
+
data.costs += result.value('costs').to_f
|
28
|
+
status.update 1, 'Hotel'
|
29
|
+
END
|
30
|
+
parallel do
|
31
|
+
loop pre_test("data.persons > 0") do
|
32
|
+
parallel_branch data.persons do |p|
|
33
|
+
call :a2, :bookHotel, parameters: { :label => "Book Hotel", :method => :post, :arguments => [⭐(:name => :to, :value => "data.to")] }, finalize: <<-END
|
34
|
+
data.hotels << result.value('id')
|
35
|
+
data.costs += result.value('costs').to_f
|
36
|
+
END
|
37
|
+
end
|
38
|
+
manipulate :a3, <<-END
|
39
|
+
data.persons -= 1
|
40
|
+
END
|
41
|
+
end
|
42
|
+
end
|
43
|
+
choose :inclusive do
|
44
|
+
alternative test("data.costs > 700") do
|
45
|
+
call :a4, :approve, parameters: { :label => "Approve Hotel", :method => :post, :arguments => [⭐(:name => :costs, :value => "data.costs")] }
|
46
|
+
end
|
47
|
+
end
|
48
|
+
</dsl>
|
49
|
+
<dslx>
|
50
|
+
<description xmlns="http://cpee.org/ns/description/1.0">
|
51
|
+
<call id="a1" endpoint="bookAir">
|
52
|
+
<parameters>
|
53
|
+
<label>Book Airline</label>
|
54
|
+
<method>:post</method>
|
55
|
+
<arguments>
|
56
|
+
<from>data.from</from>
|
57
|
+
<to>data.to</to>
|
58
|
+
<persons>data.persons</persons>
|
59
|
+
</arguments>
|
60
|
+
</parameters>
|
61
|
+
<finalize output="result">data.airline = result.value('id')
|
62
|
+
data.costs += result.value('costs').to_f
|
63
|
+
status.update 1, 'Hotel'</finalize>
|
64
|
+
</call>
|
65
|
+
<parallel>
|
66
|
+
<loop mode="pre_test" condition="data.persons > 0">
|
67
|
+
<parallel_branch pass="data.persons" local="p">
|
68
|
+
<call id="a2" endpoint="bookHotel">
|
69
|
+
<parameters>
|
70
|
+
<label>Book Hotel</label>
|
71
|
+
<method>:post</method>
|
72
|
+
<arguments>
|
73
|
+
<to>data.to</to>
|
74
|
+
</arguments>
|
75
|
+
</parameters>
|
76
|
+
<finalize output="result">data.hotels << result.value('id')
|
77
|
+
data.costs += result.value('costs').to_f</finalize>
|
78
|
+
</call>
|
79
|
+
</parallel_branch>
|
80
|
+
<manipulate id="a3">data.persons -= 1</manipulate>
|
81
|
+
</loop>
|
82
|
+
</parallel>
|
83
|
+
<choose mode="inclusive">
|
84
|
+
<alternative condition="data.costs > 700">
|
85
|
+
<call id="a4" endpoint="approve">
|
86
|
+
<parameters>
|
87
|
+
<label>Approve Hotel</label>
|
88
|
+
<method>:post</method>
|
89
|
+
<arguments>
|
90
|
+
<costs>data.costs</costs>
|
91
|
+
</arguments>
|
92
|
+
</parameters>
|
93
|
+
</call>
|
94
|
+
</alternative>
|
95
|
+
</choose>
|
96
|
+
</description>
|
97
|
+
</dslx>
|
98
|
+
<status>
|
99
|
+
<id>0</id>
|
100
|
+
<message>undefined</message>
|
101
|
+
</status>
|
102
|
+
<description>
|
103
|
+
<description xmlns="http://cpee.org/ns/description/1.0">
|
104
|
+
<call id="a1" endpoint="bookAir">
|
105
|
+
<parameters>
|
106
|
+
<label>Book Airline</label>
|
107
|
+
<method>:post</method>
|
108
|
+
<arguments>
|
109
|
+
<from>data.from</from>
|
110
|
+
<to>data.to</to>
|
111
|
+
<persons>data.persons</persons>
|
112
|
+
</arguments>
|
113
|
+
</parameters>
|
114
|
+
<finalize output="result">data.airline = result.value('id')
|
115
|
+
data.costs += result.value('costs').to_f
|
116
|
+
status.update 1, 'Hotel'</finalize>
|
117
|
+
</call>
|
118
|
+
<parallel>
|
119
|
+
<loop mode="pre_test" condition="data.persons > 0">
|
120
|
+
<parallel_branch pass="data.persons" local="p">
|
121
|
+
<call id="a2" endpoint="bookHotel">
|
122
|
+
<parameters>
|
123
|
+
<label>Book Hotel</label>
|
124
|
+
<method>:post</method>
|
125
|
+
<arguments>
|
126
|
+
<to>data.to</to>
|
127
|
+
</arguments>
|
128
|
+
</parameters>
|
129
|
+
<finalize output="result">data.hotels << result.value('id')
|
130
|
+
data.costs += result.value('costs').to_f</finalize>
|
131
|
+
</call>
|
132
|
+
</parallel_branch>
|
133
|
+
<manipulate id="a3">data.persons -= 1</manipulate>
|
134
|
+
</loop>
|
135
|
+
</parallel>
|
136
|
+
<choose mode="inclusive">
|
137
|
+
<alternative condition="data.costs > 700">
|
138
|
+
<call id="a4" endpoint="approve">
|
139
|
+
<parameters>
|
140
|
+
<label>Approve Hotel</label>
|
141
|
+
<method>:post</method>
|
142
|
+
<arguments>
|
143
|
+
<costs>data.costs</costs>
|
144
|
+
</arguments>
|
145
|
+
</parameters>
|
146
|
+
</call>
|
147
|
+
</alternative>
|
148
|
+
</choose>
|
149
|
+
</description>
|
150
|
+
</description>
|
151
|
+
<transformation>
|
152
|
+
<description type="copy"/>
|
153
|
+
<dataelements type="rest"/>
|
154
|
+
<endpoints type="rest"/>
|
155
|
+
</transformation>
|
156
|
+
</properties>
|
data/server/server.pid
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
1876
|
data/tools/cpee
CHANGED
@@ -49,7 +49,7 @@ ARGV.options { |opt|
|
|
49
49
|
}
|
50
50
|
if (ARGV.length == 0) ||
|
51
51
|
(ARGV.length == 1 && ARGV[0] != 'ui') ||
|
52
|
-
(ARGV.length == 2 && %w(abandon delete! cpui new).include?(ARGV[
|
52
|
+
(ARGV.length == 2 && !(%w(abandon delete! cpui new).include?(ARGV[0]))) ||
|
53
53
|
(ARGV.length == 3 && ARGV[0] != 'archive') ||
|
54
54
|
(ARGV.length > 3)
|
55
55
|
puts ARGV.options
|
@@ -76,30 +76,39 @@ elsif command == 'inst'
|
|
76
76
|
puts 'Directory already exists.'
|
77
77
|
end
|
78
78
|
elsif command == 'archive'
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
79
|
+
base = File.dirname(p2)
|
80
|
+
names = []
|
81
|
+
if File.basename(p2) =~ /(\d+)-(\d+)/
|
82
|
+
names = ($1.to_i..$2.to_i).to_a
|
83
|
+
else
|
84
|
+
names << File.basename(p2)
|
85
|
+
end
|
86
|
+
names.each do |name|
|
87
|
+
res = Typhoeus.get(File.join(base,name.to_s,'/'))
|
88
|
+
if res.success?
|
89
|
+
if res.headers['Content-Type'] =~ /^(text|application)\/xml/
|
90
|
+
XML::Smart.string(res.response_body) do |doc|
|
91
|
+
if doc.root.qname.to_s == "instances"
|
92
|
+
doc.root.children.each do |i|
|
93
|
+
if ["finished","abandoned"].include?(i.attributes['state'])
|
94
|
+
prop = Typhoeus.get(File.join(base,name.to_s,i.attributes['id'],'properties','/'))
|
95
|
+
if prop.success?
|
96
|
+
File.write(File.join(p1,i.attributes['uuid'] + '.xml'),prop.response_body) if prop.headers['Content-Type'] =~ /^(text|application)\/xml/
|
97
|
+
Typhoeus.delete(File.join(base,name.to_s,i.attributes['id'],'/'))
|
98
|
+
end
|
90
99
|
end
|
91
100
|
end
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
101
|
+
elsif doc.root.qname.to_s == "info"
|
102
|
+
prop = Typhoeus.get(File.join(base,name.to_s,'properties','/'))
|
103
|
+
if prop.success?
|
104
|
+
xprop = XML::Smart::string(prop.response_body)
|
105
|
+
xprop.register_namespace 'p', 'http://riddl.org/ns/common-patterns/properties/1.0'
|
106
|
+
if ["finished","abandoned"].include?(xprop.find("string(/p:properties/p:state)"))
|
107
|
+
uuid = xprop.find("string(/p:properties/p:attributes/p:uuid)")
|
108
|
+
id = name.to_s
|
109
|
+
File.write(File.join(p1,uuid + '.xml'),prop.response_body) if prop.headers['Content-Type'] =~ /^(text|application)\/xml/
|
110
|
+
Typhoeus.delete(File.join(base,name.to_s,'/'))
|
111
|
+
end
|
103
112
|
end
|
104
113
|
end
|
105
114
|
end
|
@@ -107,13 +116,24 @@ elsif command == 'archive'
|
|
107
116
|
end
|
108
117
|
end
|
109
118
|
elsif command == 'abandon'
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
119
|
+
base = File.dirname(p1)
|
120
|
+
names = []
|
121
|
+
if File.basename(p1) =~ /(\d+)-(\d+)/
|
122
|
+
names = ($1.to_i..$2.to_i).to_a
|
123
|
+
else
|
124
|
+
names << File.basename(p1)
|
125
|
+
end
|
126
|
+
names.each do |name|
|
127
|
+
res = Typhoeus.get(File.join(base,name.to_s,'properties','values','state','/'))
|
128
|
+
if res.success?
|
129
|
+
case res.response_body
|
130
|
+
when "ready", "stopped" then
|
131
|
+
Typhoeus.put(File.join(base,name.to_s,'properties','values','state','/'), headers: {'Content-Type' => 'application/x-www-form-urlencoded'}, body: "value=abandoned")
|
132
|
+
when "running" then
|
133
|
+
Typhoeus.put(File.join(base,name.to_s,'properties','values','state','/'), headers: {'Content-Type' => 'application/x-www-form-urlencoded'}, body: "value=stopped")
|
134
|
+
sleep 1
|
135
|
+
Typhoeus.put(File.join(base,name.to_s,'properties','values','state','/'), headers: {'Content-Type' => 'application/x-www-form-urlencoded'}, body: "value=abandoned")
|
136
|
+
end
|
117
137
|
end
|
118
138
|
end
|
119
139
|
elsif command == 'delete!'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cpee
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.4.
|
4
|
+
version: 1.4.26
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Juergen eTM Mangler
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: tools
|
13
13
|
cert_chain: []
|
14
|
-
date: 2019-
|
14
|
+
date: 2019-04-08 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: riddl
|
@@ -343,6 +343,22 @@ files:
|
|
343
343
|
- server/instances/10/notifications/logging/producer-secret
|
344
344
|
- server/instances/10/notifications/logging/subscription.xml
|
345
345
|
- server/instances/10/properties.xml
|
346
|
+
- server/instances/100/notifications/logging/consumer-secret
|
347
|
+
- server/instances/100/notifications/logging/producer-secret
|
348
|
+
- server/instances/100/notifications/logging/subscription.xml
|
349
|
+
- server/instances/100/properties.xml
|
350
|
+
- server/instances/101/notifications/logging/consumer-secret
|
351
|
+
- server/instances/101/notifications/logging/producer-secret
|
352
|
+
- server/instances/101/notifications/logging/subscription.xml
|
353
|
+
- server/instances/101/properties.xml
|
354
|
+
- server/instances/102/notifications/logging/consumer-secret
|
355
|
+
- server/instances/102/notifications/logging/producer-secret
|
356
|
+
- server/instances/102/notifications/logging/subscription.xml
|
357
|
+
- server/instances/102/properties.xml
|
358
|
+
- server/instances/103/notifications/logging/consumer-secret
|
359
|
+
- server/instances/103/notifications/logging/producer-secret
|
360
|
+
- server/instances/103/notifications/logging/subscription.xml
|
361
|
+
- server/instances/103/properties.xml
|
346
362
|
- server/instances/11/notifications/logging/consumer-secret
|
347
363
|
- server/instances/11/notifications/logging/producer-secret
|
348
364
|
- server/instances/11/notifications/logging/subscription.xml
|
@@ -862,6 +878,10 @@ files:
|
|
862
878
|
- server/instances/98/notifications/logging/producer-secret
|
863
879
|
- server/instances/98/notifications/logging/subscription.xml
|
864
880
|
- server/instances/98/properties.xml
|
881
|
+
- server/instances/99/notifications/logging/consumer-secret
|
882
|
+
- server/instances/99/notifications/logging/producer-secret
|
883
|
+
- server/instances/99/notifications/logging/subscription.xml
|
884
|
+
- server/instances/99/properties.xml
|
865
885
|
- server/resources/empty_dslx.xml
|
866
886
|
- server/resources/notifications/logging/consumer-secret
|
867
887
|
- server/resources/notifications/logging/producer-secret
|