cpee 1.3.226 → 1.3.227

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 29fda55c433e2e644eb7789d9a1d536db13159d1
4
- data.tar.gz: eaf8521b70023dd5a0834a328854718f4aee4f22
3
+ metadata.gz: 1d8244701c2e34c3f78fb8cd2f3785aae9332957
4
+ data.tar.gz: 49f6fc29090d1e7fef195c181ace1f847266d296
5
5
  SHA512:
6
- metadata.gz: ee7d33e2623ccb034ddd593aee8a5588042be884c8bef27f40b9229af6b8a938fc1b47eb5b24120b33a8d47ff97f473fccd520717aceb045cd4f7612f3e18d7a
7
- data.tar.gz: 4bf2c9318a15958b894ddd574663a33f1cb8c8916b75978bdaa61d4139888506f71ff4df10799a38dd6d6088376aaac5934d2e500d17562163094bdf49bf69e9
6
+ metadata.gz: df3e3abdf989bf14b822c2506207deda6f9f48768177f37038208ab2fea5c69240e79e259537430b3bb0c0e46f7aea7ec6c2251246efbf35e9ab55338d355b3a
7
+ data.tar.gz: 5e32adeeab2269493fce295f4c38c9b017551a4f756f5b2b7289276c5ceecd885ae4e77257269c362916c8f5f5af3f2c9a02b348546e9f1ecc8b80ff8fdfd2df
@@ -1,6 +1,7 @@
1
1
  var ws;
2
+ var suspended_monitoring = false;
2
3
  var myid = ([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g, c => (c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16));
3
- var running = false;
4
+ var loading = false;
4
5
  var subscription;
5
6
  var subscription_state = 'less';
6
7
  var save = {};
@@ -58,7 +59,7 @@ var sub_less = 'topic' + '=' + 'activity' + '&' +// {{{
58
59
  'topic' + '=' + 'handlers' + '&' +
59
60
  'events' + '=' + 'change';// }}}
60
61
 
61
- function cockpit() {
62
+ function cockpit() { //{{{
62
63
  $("button[name=base]").click(function(){ create_instance(null,false); });
63
64
  $("button[name=instance]").click(function(){ ui_activate_tab("#tabinstance"); monitor_instance(false,false); });
64
65
  $("button[name=loadtestset]").click(function(e){new CustomMenu(e).menu($('#predefinedtestsets'),function(){ load_testset(false) } ); });
@@ -123,9 +124,9 @@ function cockpit() {
123
124
  });
124
125
  }
125
126
  });
126
- }
127
+ } //}}}
127
128
 
128
- function sanitize_url() {
129
+ function sanitize_url() { //{{{
129
130
  var url = $("input[name=instance-url]").val();
130
131
  var lastChar = url.substr(url.length - 1)
131
132
  if (lastChar != '/') {
@@ -133,7 +134,7 @@ function sanitize_url() {
133
134
  }
134
135
  return $("input[name=instance-url]").val();
135
136
  }
136
-
137
+ //}}}
137
138
  function check_subscription() { // {{{
138
139
  var url = $("#current-instance").text();
139
140
  var num = 0;
@@ -189,6 +190,69 @@ function create_instance(ask,exec) {// {{{
189
190
  }
190
191
  }// }}}
191
192
 
193
+ function websocket() {
194
+ var url = $("#current-instance").text();
195
+ var Socket = "MozWebSocket" in window ? MozWebSocket : WebSocket;
196
+ if (ws) ws.close();
197
+ ws = new Socket(url.replace(/http/,'ws') + "/notifications/subscriptions/" + subscription + "/ws/");
198
+ ws.onopen = function() {
199
+ append_to_log("monitoring", "opened", "");
200
+ };
201
+ ws.onmessage = function(e) {
202
+ data = $.parseXML(e.data);
203
+ if ($('event > topic',data).length > 0) {
204
+ switch($('event > topic',data).text()) {
205
+ case 'dataelements':
206
+ monitor_instance_values("dataelements");
207
+ break;
208
+ case 'description':
209
+ monitor_instance_dsl();
210
+ break;
211
+ case 'endpoints':
212
+ monitor_instance_values("endpoints");
213
+ break;
214
+ case 'attributes':
215
+ monitor_instance_values("attributes");
216
+ monitor_instance_transformation();
217
+ if (suspended_monitoring) {
218
+ suspended_monitoring = false;
219
+ } else {
220
+ monitor_graph_change(true);
221
+ }
222
+ break;
223
+ case 'state':
224
+ monitor_instance_state_change(JSON.parse($('event > notification',data).text()).state);
225
+ break;
226
+ case 'position':
227
+ monitor_instance_pos_change($('event > notification',data).text());
228
+ break;
229
+ case 'transformation':
230
+ monitor_instance_transformation();
231
+ break;
232
+ case 'activity':
233
+ monitor_instance_running($('event > notification',data).text(),$('event > event',data).text());
234
+ break;
235
+ }
236
+ append_to_log("event", $('event > topic',data).text() + "/" + $('event > event',data).text(), $('event > notification',data).text());
237
+ }
238
+ if ($('vote > topic',data).length > 0) {
239
+ var notification = $('vote > notification',data).text();
240
+ append_to_log("vote", $('vote > topic',data).text() + "/" + $('vote > vote',data).text(), notification);
241
+ monitor_instance_vote_add(notification);
242
+ }
243
+ };
244
+ ws.onclose = function() {
245
+ append_to_log("monitoring", "closed", "server down i assume.");
246
+ };
247
+
248
+ monitor_instance_values("dataelements");
249
+ monitor_instance_values("endpoints");
250
+ monitor_instance_values("attributes");
251
+ monitor_instance_transformation();
252
+ monitor_instance_dsl();
253
+ monitor_instance_state();
254
+ }
255
+
192
256
  function monitor_instance(load,exec) {// {{{
193
257
  var url = sanitize_url();
194
258
 
@@ -231,64 +295,11 @@ function monitor_instance(load,exec) {// {{{
231
295
  }
232
296
  });
233
297
  append_to_log("monitoring", "id", subscription);
234
- var Socket = "MozWebSocket" in window ? MozWebSocket : WebSocket;
235
- if (ws) ws.close();
236
- ws = new Socket(url.replace(/http/,'ws') + "/notifications/subscriptions/" + subscription + "/ws/");
237
- ws.onopen = function() {
238
- append_to_log("monitoring", "opened", "");
239
- };
240
- ws.onmessage = function(e) {
241
- data = $.parseXML(e.data);
242
- if ($('event > topic',data).length > 0) {
243
- switch($('event > topic',data).text()) {
244
- case 'dataelements':
245
- monitor_instance_values("dataelements");
246
- break;
247
- case 'description':
248
- monitor_instance_dsl();
249
- break;
250
- case 'endpoints':
251
- monitor_instance_values("endpoints");
252
- break;
253
- case 'attributes':
254
- monitor_instance_values("attributes");
255
- monitor_instance_transformation();
256
- monitor_graph_change(true);
257
- break;
258
- case 'state':
259
- monitor_instance_state_change(JSON.parse($('event > notification',data).text()).state);
260
- break;
261
- case 'position':
262
- monitor_instance_pos_change($('event > notification',data).text());
263
- break;
264
- case 'transformation':
265
- monitor_instance_transformation();
266
- break;
267
- case 'activity':
268
- monitor_instance_running($('event > notification',data).text(),$('event > event',data).text());
269
- break;
270
- }
271
- append_to_log("event", $('event > topic',data).text() + "/" + $('event > event',data).text(), $('event > notification',data).text());
272
- }
273
- if ($('vote > topic',data).length > 0) {
274
- var notification = $('vote > notification',data).text();
275
- append_to_log("vote", $('vote > topic',data).text() + "/" + $('vote > vote',data).text(), notification);
276
- monitor_instance_vote_add(notification);
277
- }
278
- };
279
- ws.onclose = function() {
280
- append_to_log("monitoring", "closed", "server down i assume.");
281
- };
282
- if (load || exec) load_testset(exec);
298
+ websocket();
299
+ if (load || exec)
300
+ load_testset(exec);
283
301
  }
284
302
  });
285
-
286
- monitor_instance_values("dataelements");
287
- monitor_instance_values("endpoints");
288
- monitor_instance_values("attributes");
289
- monitor_instance_transformation();
290
- monitor_instance_dsl();
291
- monitor_instance_state();
292
303
  },
293
304
  error: function(a,b,c) {
294
305
  alert("This ain't no CPEE instance");
@@ -629,6 +640,7 @@ function save_svg() {// {{{
629
640
  }// }}}
630
641
  function set_testset(testset,exec) {// {{{
631
642
  var url = $("#current-instance").text();
643
+ suspended_monitoring = true;
632
644
 
633
645
  $.ajax({
634
646
  type: "GET",
@@ -689,8 +701,8 @@ function set_testset(testset,exec) {// {{{
689
701
  }// }}}
690
702
 
691
703
  function load_testsetfile_after() { //{{{
692
- if (running) return;
693
- running = true;
704
+ if (loading) return;
705
+ loading = true;
694
706
  if (typeof window.FileReader !== 'function') {
695
707
  alert('FileReader not yet supportet');
696
708
  return;
@@ -700,20 +712,20 @@ function load_testsetfile_after() { //{{{
700
712
  reader.onload = function(){
701
713
  set_testset($.parseXML(reader.result),false);
702
714
  document.getElementById('fuckchrome').reset();
703
- running = false;
715
+ loading = false;
704
716
  }
705
- reader.onerror = function(){ console.log('error reading file'); running = false; }
706
- reader.onabort = function(){ console.log('abort reading file'); running = false; }
717
+ reader.onerror = function(){ console.log('error reading file'); loading = false; }
718
+ reader.onabort = function(){ console.log('abort reading file'); loading = false; }
707
719
  reader.readAsText(files[0]);
708
720
  } //}}}
709
721
  function load_testsetfile() {// {{{
710
- if (running) return;
722
+ if (loading) return;
711
723
  document.getElementById('testsetfile').click();
712
724
  }// }}}
713
725
 
714
726
  function load_modelfile_after() { //{{{
715
- if (running) return;
716
- running = true;
727
+ if (loading) return;
728
+ loading = true;
717
729
  if (typeof window.FileReader !== 'function') {
718
730
  alert('FileReader not yet supportet');
719
731
  return;
@@ -723,20 +735,20 @@ function load_modelfile_after() { //{{{
723
735
  reader.onload = function(){
724
736
  var url = $("#current-instance").text();
725
737
  load_des(url,reader.result);
726
- running = false;
738
+ loading = false;
727
739
  }
728
- reader.onerror = function(){ running = false; }
729
- reader.onabort = function(){ running = false; }
740
+ reader.onerror = function(){ loading = false; }
741
+ reader.onabort = function(){ loading = false; }
730
742
  reader.readAsText(files[0]);
731
743
  } //}}}
732
744
  function load_modelfile() {// {{{
733
- if (running) return;
745
+ if (loading) return;
734
746
  document.getElementById('modelfile').click();
735
747
  }// }}}
736
748
 
737
749
  function load_testset(exec) {// {{{
738
- if (running) return;
739
- running = true;
750
+ if (loading) return;
751
+ loading = true;
740
752
 
741
753
  var name = $("#predefinedtestsets div.menuitem[data-selected=selected]").text();
742
754
  $.ajax({
@@ -752,14 +764,14 @@ function load_testset(exec) {// {{{
752
764
  set_testset(res,exec);
753
765
  },
754
766
  complete: function() {
755
- running = false;
767
+ loading = false;
756
768
  }
757
769
  });
758
770
  }// }}}
759
771
  function load_modeltype() {// {{{
760
- if (running) return;
772
+ if (loading) return;
761
773
  var url = $("#current-instance").text();
762
- running = true;
774
+ loading = true;
763
775
 
764
776
  var name = $("#modeltypes div.menuitem[data-selected=selected]").text();
765
777
  $.ajax({
@@ -778,7 +790,7 @@ function load_modeltype() {// {{{
778
790
  });
779
791
  },
780
792
  complete: function() {
781
- running = false;
793
+ loading = false;
782
794
  }
783
795
  });
784
796
  }// }}}
@@ -924,6 +936,10 @@ function format_visual_set(what) {//{{{
924
936
  var actives = node_state[what]['active'];
925
937
  var passives = node_state[what]['passive'];
926
938
 
939
+ // TODO scrollIntoView does not work in firefox
940
+ // $('g[element-id="' + what + '"]').each(function(a,b){ b.scrollIntoView(true); $('#graphcolumn')[0].scrollTop -= 15; });
941
+ $('g[element-id="' + what + '"]').each(function(a,b){ $('#graphcolumn')[0].scrollTop = b.getBBox().y - 10; });
942
+
927
943
  if (actives > 0 && votes > 0)
928
944
  $('g[element-id="' + what + '"] .super .colon').each(function(a,b){
929
945
  b.setAttribute('class','colon necessary');
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = "cpee"
3
- s.version = "1.3.226"
3
+ s.version = "1.3.227"
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"
@@ -0,0 +1,111 @@
1
+ # This file is part of CPEE.
2
+ #
3
+ # CPEE is free software: you can redistribute it and/or modify it under the terms
4
+ # of the GNU General Public License as published by the Free Software Foundation,
5
+ # either version 3 of the License, or (at your option) any later version.
6
+ #
7
+ # CPEE is distributed in the hope that it will be useful, but WITHOUT ANY
8
+ # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
9
+ # PARTICULAR PURPOSE. See the GNU General Public License for more details.
10
+ #
11
+ # You should have received a copy of the GNU General Public License along with
12
+ # CPEE (file COPYING in the main directory). If not, see
13
+ # <http://www.gnu.org/licenses/>.
14
+
15
+ require 'riddl/server'
16
+ require 'xml/smart'
17
+ require 'base64'
18
+ require 'uri'
19
+
20
+ module CPEE
21
+ module Instantiation
22
+
23
+ SERVER = File.expand_path(__dir__ + '/../instantiation.xml')
24
+
25
+ module Testset #{{{
26
+
27
+ def self::load(tdoc,cpee)
28
+ ins = -1
29
+ puts tdoc.to_s
30
+ XML::Smart.string(tdoc) do |doc|
31
+ doc.register_namespace 'desc', 'http://cpee.org/ns/description/1.0'
32
+ doc.register_namespace 'prop', 'http://riddl.org/ns/common-patterns/properties/1.0'
33
+
34
+ srv = Riddl::Client.new(cpee, cpee + "?riddl-description")
35
+ res = srv.resource("/")
36
+ status, response = res.post Riddl::Parameter::Simple.new("info",doc.find("string(/testset/attributes/prop:info)"))
37
+
38
+ if status == 200
39
+ ins = response.first.value
40
+ params = []
41
+
42
+ res = srv.resource("/#{ins}/properties/values")
43
+ ["handlerwrapper","positions","dataelements","endpoints","attributes","transformation"].each do |item|
44
+ if doc.find("/testset/#{item}").any?
45
+ params << Riddl::Parameter::Simple.new("name",item)
46
+ params << Riddl::Parameter::Simple.new("content",doc.find("/testset/#{item}").first.dump)
47
+ end
48
+ end
49
+ ["description"].each do |item|
50
+ if doc.find("/testset/#{item}").any?
51
+ params << Riddl::Parameter::Simple.new("name",item)
52
+ params << Riddl::Parameter::Simple.new("content","<content>" + doc.find("/testset/#{item}/desc:*").first.dump + "</content>")
53
+ end
54
+ end
55
+ status, response = res.put params
56
+ ["handlers"].each do |item|
57
+ doc.find("/testset/#{item}/handler").each do |han|
58
+ #pp han.children.first
59
+ url = han.attributes['url']
60
+ inp = "url=" + URI.encode_www_form_component(url)
61
+ inp = inp + "&topic=" + han.children.first.attributes['topic']
62
+ inp = inp + "&" + han.children.first.qname.to_s + "=" + han.children.first.to_s
63
+ pp cpee+ins+"/notifications/subscriptions/"
64
+ pp inp
65
+ status,body = Riddl::Client::new(cpee+ins+"/notifications/subscriptions/").post([Riddl::Parameter::Simple.new("url",han.attributes['url']),Riddl::Parameter::Simple.new("topic",han.children.first.attributes['topic']),Riddl::Parameter::Simple.new(han.children.first.qname.to_s,han.children.first.to_s)])
66
+ pp status
67
+ pp body
68
+ end
69
+ end
70
+ end
71
+ end
72
+ return ins
73
+ end
74
+
75
+ end #}}}
76
+
77
+ class Instantiate < Riddl::Implementation
78
+ def response
79
+ cpee = @a[0]
80
+ tdoc = @p[@p.length - 1].value.read
81
+ if @p[0].additional =~ /base64/
82
+ tdoc = Base64.decode64(tdoc)
83
+ end
84
+
85
+ if (ins = Testset::load(tdoc,cpee)) == -1
86
+ @status = 500
87
+ else
88
+ if @p.length > 1 && @p[0].value == "fork_running" && @p[0].value == "wait_running"
89
+ srv = Riddl::Client.new(cpee, cpee + "?riddl-description")
90
+ res = srv.resource("/#{ins}/properties/values")
91
+ status, response = res.put [
92
+ params << Riddl::Parameter::Simple.new('name', 'state'),
93
+ params << Riddl::Parameter::Simple.new('value','running')
94
+ ]
95
+ end
96
+ return Riddl::Parameter::Simple.new("url",cpee + ins)
97
+ end
98
+ end
99
+ end
100
+
101
+ def self::implementation(opts)
102
+ opts[:cpee] ||= 'http://localhost:9298/'
103
+ Proc.new do
104
+ on resource do
105
+ run Instantiate, opts[:cpee] if post 'instantiate'
106
+ end
107
+ end
108
+ end
109
+
110
+ end
111
+ end
@@ -0,0 +1,25 @@
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
+
3
+ <message name="instantiate">
4
+ <optional>
5
+ <parameter name="behavior" type="string">
6
+ <choice>
7
+ <value>fork_ready</value>
8
+ <value>fork_running</value>
9
+ <value>wait_ready</value>
10
+ <value>wait_running</value>
11
+ </choice>
12
+ </parameter>
13
+ </optional>
14
+ <parameter name="xml" mimetype="*/xml"/>
15
+ </message>
16
+
17
+ <message name="instance">
18
+ <parameter name="url" type="anyURI"/>
19
+ </message>
20
+
21
+ <resource>
22
+ <post in="instantiate" out="instance"/>
23
+ </resource>
24
+
25
+ </description>
@@ -58,9 +58,9 @@ class DefaultHandlerWrapper < WEEL::HandlerWrapperBase
58
58
  params << Riddl::Header.new("CPEE-BASE",@controller.base_url)
59
59
  params << Riddl::Header.new("CPEE-INSTANCE",@controller.instance_url)
60
60
  params << Riddl::Header.new("CPEE-CALLBACK",@controller.instance_url + '/callbacks/' + callback)
61
- params << Riddl::Header.new("CPEE-CALLBACK_ID",callback)
61
+ params << Riddl::Header.new("CPEE-CALLBACK-ID",callback)
62
62
  params << Riddl::Header.new("CPEE-ACTIVITY",@handler_position)
63
- params << Riddl::Header.new("CPEE-LABEL",parameters[:label])
63
+ params << Riddl::Header.new("CPEE-LABEL",parameters[:label]||'')
64
64
  @controller.attributes.each do |key,value|
65
65
  params << Riddl::Header.new("CPEE-ATTR-#{key.gsub(/_/,'-')}",value)
66
66
  end
@@ -377,9 +377,9 @@
377
377
  <xsl:text>nil</xsl:text>
378
378
  </xsl:when>
379
379
  <xsl:when test="child::node()[not(self::text())]">
380
- <xsl:text>"[</xsl:text>
380
+ <xsl:text>"[ </xsl:text>
381
381
  <xsl:apply-templates select="*" mode="JSON"/>
382
- <xsl:text> ]"</xsl:text>
382
+ <xsl:text>]"</xsl:text>
383
383
  </xsl:when>
384
384
  <xsl:otherwise>
385
385
  <xsl:choose>
@@ -486,32 +486,33 @@
486
486
 
487
487
  <!-- JSON Element -->
488
488
  <xsl:template match="*" mode="JSON">
489
- <xsl:text> { \"</xsl:text>
490
- <xsl:value-of select="name()"/>
491
- <xsl:text>\": </xsl:text>
492
- <xsl:call-template name="JSONProperties">
493
- <xsl:with-param name="parent" select="'Yes'"></xsl:with-param>
494
- </xsl:call-template>
489
+ <xsl:call-template name="JSONProperties"/>
495
490
  <xsl:choose>
496
- <xsl:when test="following-sibling::*"><xsl:text> </xsl:text></xsl:when>
491
+ <xsl:when test="following-sibling::*">, </xsl:when>
492
+ <xsl:otherwise><xsl:text> </xsl:text></xsl:otherwise>
497
493
  </xsl:choose>
498
- <xsl:text>}</xsl:text>
499
- <xsl:if test="following-sibling::*">,</xsl:if>
500
494
  </xsl:template>
501
495
 
502
496
  <xsl:template match="*" mode="JSONSUB">
503
- <xsl:text> \"</xsl:text>
497
+ <xsl:text>\"</xsl:text>
504
498
  <xsl:value-of select="name()"/>
505
499
  <xsl:text>\": </xsl:text>
506
500
  <xsl:call-template name="JSONProperties">
507
501
  <xsl:with-param name="parent" select="'Yes'"></xsl:with-param>
508
502
  </xsl:call-template>
509
- <xsl:if test="following-sibling::*">,</xsl:if>
503
+ <xsl:choose>
504
+ <xsl:when test="following-sibling::*">, </xsl:when>
505
+ <xsl:otherwise><xsl:text> </xsl:text></xsl:otherwise>
506
+ </xsl:choose>
510
507
  </xsl:template>
511
508
 
512
509
  <!-- JSON Array Element -->
513
510
  <xsl:template match="*" mode="JSONArrayElement">
514
511
  <xsl:call-template name="JSONProperties"/>
512
+ <xsl:choose>
513
+ <xsl:when test="following-sibling::*">, </xsl:when>
514
+ <xsl:otherwise><xsl:text> </xsl:text></xsl:otherwise>
515
+ </xsl:choose>
515
516
  </xsl:template>
516
517
 
517
518
  <!-- JSON Object Properties -->
@@ -555,13 +556,13 @@
555
556
  <xsl:value-of select="$childName"/>
556
557
  <xsl:text>\": [ </xsl:text>
557
558
  <xsl:apply-templates select="*" mode="JSONArrayElement"/>
558
- <xsl:text> ] }</xsl:text>
559
+ <xsl:text>] }</xsl:text>
559
560
  </xsl:when>
560
561
  <xsl:otherwise>
561
562
  <xsl:if test="text()[normalize-space(.)]">
562
563
  <xsl:text>[ </xsl:text>
563
564
  </xsl:if>
564
- <xsl:text>{</xsl:text>
565
+ <xsl:text>{ </xsl:text>
565
566
  <xsl:apply-templates select="@*" mode="JSON"/>
566
567
  <xsl:apply-templates select="*" mode="JSONSUB"/>
567
568
  <xsl:text>}</xsl:text>
@@ -570,19 +571,15 @@
570
571
  <xsl:text>\"</xsl:text>
571
572
  <xsl:value-of select="str:replace(str:replace(.,'\','\\'),'&quot;','\\\&quot;')"/>
572
573
  <xsl:text>\"</xsl:text>
573
- <xsl:text> ]</xsl:text>
574
+ <xsl:text>]</xsl:text>
574
575
  </xsl:if>
575
- <xsl:choose>
576
- <xsl:when test="following-sibling::*"></xsl:when>
577
- <xsl:otherwise><xsl:text> </xsl:text></xsl:otherwise>
578
- </xsl:choose>
579
576
  </xsl:otherwise>
580
577
  </xsl:choose>
581
578
  </xsl:template>
582
579
 
583
580
  <!-- JSON Attribute Property -->
584
581
  <xsl:template match="@*" mode="JSON">
585
- <xsl:text> \"@</xsl:text>
582
+ <xsl:text>\"@</xsl:text>
586
583
  <xsl:value-of select="name()"/>
587
584
  <xsl:text>\": </xsl:text>
588
585
  <xsl:choose>
@@ -597,7 +594,7 @@
597
594
  </xsl:choose>
598
595
  <xsl:choose>
599
596
  <xsl:when test="not(position() = last())">
600
- <xsl:text>,</xsl:text>
597
+ <xsl:text>, </xsl:text>
601
598
  </xsl:when>
602
599
  <xsl:otherwise>
603
600
  <xsl:text> </xsl:text>
data/tools/cpee CHANGED
@@ -28,6 +28,8 @@ ARGV.options { |opt|
28
28
  opt.on("")
29
29
  opt.on(wrap("[new DIR] scaffolds a sample execution engine. Everything except instances can be removed for default behaviour."))
30
30
  opt.on("")
31
+ opt.on(wrap("[inst DIR] scaffolds a sample instantiation service. Post a testset to a model to keep going in one operation."))
32
+ opt.on("")
31
33
  opt.on(wrap("[cpui DIR] scaffolds a sample html client. New versions might require manual merging if you changed something."))
32
34
  opt.on("")
33
35
  opt.on(wrap("[ui] starts a simple static web server with the ui on http://localhost:8080. Use [cpui DIR] if you want stuff in apache or nginx."))
@@ -50,6 +52,12 @@ elsif command == "cpui"
50
52
  else
51
53
  puts "Directory already exists."
52
54
  end
55
+ elsif command == "inst"
56
+ if !File.exists?(dir)
57
+ FileUtils.cp_r("#{curpath}/instantiation/",dir)
58
+ else
59
+ puts "Directory already exists."
60
+ end
53
61
  else
54
62
  if !File.exists?(dir)
55
63
  FileUtils.cp_r("#{curpath}/server/",dir)
@@ -0,0 +1,23 @@
1
+ #!/usr/bin/ruby
2
+ require 'rubygems'
3
+ require 'cpee/instantiation'
4
+
5
+ options = {
6
+ :host => 'localhost',
7
+ :port => 9296,
8
+ :secure => false
9
+ # :secure_options => {
10
+ # :private_key_file => '',
11
+ # :cert_chain_file => '',
12
+ # :verify_peer => false
13
+ # }
14
+ }
15
+
16
+ Riddl::Server.new(CPEE::Instantiation::SERVER, options) do
17
+ accessible_description true
18
+ cross_site_xhr true
19
+
20
+ @riddl_opts[:cpee] ||= 'http://localhost:9298/'
21
+
22
+ use CPEE::Instantiation::implementation(@riddl_opts)
23
+ end.loop!
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.3.226
4
+ version: 1.3.227
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: 2018-02-26 00:00:00.000000000 Z
14
+ date: 2018-03-05 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: riddl
@@ -259,6 +259,7 @@ files:
259
259
  - lib/cpee/handler_notifications.rb
260
260
  - lib/cpee/handler_properties.rb
261
261
  - lib/cpee/implementation.rb
262
+ - lib/cpee/instantiation.rb
262
263
  - lib/cpee/processtransformation/bpel/Repository/booking.bpel
263
264
  - lib/cpee/processtransformation/bpel/Repository/booking.wsdl
264
265
  - lib/cpee/processtransformation/bpel/Repository/booking/airline.wsdl
@@ -276,6 +277,7 @@ files:
276
277
  - lib/engine/callbacks.rng
277
278
  - lib/engine/instance-info.rng
278
279
  - lib/engine/instances.rng
280
+ - lib/instantiation.xml
279
281
  - log/chain.xml
280
282
  - log/log.xml
281
283
  - log/logoverlay.xml
@@ -372,6 +374,7 @@ files:
372
374
  - server/server.rb
373
375
  - test/callback.rb
374
376
  - tools/cpee
377
+ - tools/instantiation/instantiation
375
378
  - tools/server/resources/notifications/logging/consumer-secret
376
379
  - tools/server/resources/notifications/logging/producer-secret
377
380
  - tools/server/resources/notifications/logging/subscription.xml