cpee 2.1.47 → 2.1.48
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/cockpit/index.html +1 -1
- data/cockpit/js/instance.js +15 -11
- data/cockpit/js/wfadaptor.js +18 -13
- data/cockpit/templates/Subprocess.xml +35 -371
- data/cockpit/templates/Wait.xml +7 -400
- data/cockpit/themes/compact/rngs/call.rng +8 -0
- data/cockpit/themes/compact/rngs/callmanipulate.rng +8 -0
- data/cockpit/themes/compact/rngs/closed_loop_control.rng +2 -2
- data/cockpit/themes/compact/rngs/closed_loop_measuring.rng +3 -3
- data/cockpit/themes/compact/theme.js +15 -9
- data/cockpit/themes/control/rngs/call.rng +8 -0
- data/cockpit/themes/control/rngs/callmanipulate.rng +8 -0
- data/cockpit/themes/control/rngs/closed_loop_control.rng +2 -2
- data/cockpit/themes/control/rngs/closed_loop_measuring.rng +3 -3
- data/cockpit/themes/control/theme.js +17 -11
- data/cockpit/themes/default/rngs/call.rng +8 -0
- data/cockpit/themes/default/rngs/callmanipulate.rng +8 -0
- data/cockpit/themes/default/rngs/closed_loop_control.rng +2 -2
- data/cockpit/themes/default/rngs/closed_loop_measuring.rng +3 -3
- data/cockpit/themes/default/theme.js +15 -9
- data/cockpit/themes/extended/rngs/call.rng +8 -0
- data/cockpit/themes/extended/rngs/callmanipulate.rng +8 -0
- data/cockpit/themes/extended/rngs/closed_loop_control.rng +2 -2
- data/cockpit/themes/extended/rngs/closed_loop_measuring.rng +3 -3
- data/cockpit/themes/extended/theme.js +15 -9
- data/cockpit/themes/model/theme.js +15 -9
- data/cockpit/themes/packed/rngs/call.rng +8 -0
- data/cockpit/themes/packed/rngs/callmanipulate.rng +8 -0
- data/cockpit/themes/packed/rngs/closed_loop_control.rng +2 -2
- data/cockpit/themes/packed/rngs/closed_loop_measuring.rng +3 -3
- data/cockpit/themes/packed/theme.js +15 -9
- data/cockpit/themes/preset/rngs/call.rng +8 -0
- data/cockpit/themes/preset/rngs/callmanipulate.rng +8 -0
- data/cockpit/themes/preset/rngs/closed_loop_control.rng +2 -2
- data/cockpit/themes/preset/rngs/closed_loop_measuring.rng +3 -3
- data/cockpit/themes/preset/theme.js +15 -9
- data/cpee.gemspec +1 -1
- data/lib/cpee/implementation.rb +5 -5
- data/lib/cpee/persistence.rb +19 -16
- data/server/executionhandlers/ruby/connection.rb +21 -11
- data/server/executionhandlers/ruby/desc.xml +107 -0
- data/server/executionhandlers/ruby/dsl_to_dslx.xsl +61 -8
- data/server/resources/test.pdf +0 -0
- data/server/routing/end.pid +1 -1
- data/server/routing/forward-events-00.pid +1 -1
- data/server/routing/forward-votes.pid +1 -1
- data/server/routing/persist.pid +1 -1
- data/tools/cpee +40 -9
- metadata +5 -8
- data/cockpit/templates/Wait.xml.attrs +0 -16
- data/server/routing/forward-events-01.pid +0 -1
- data/server/routing/forward-events-02.pid +0 -1
- data/server/routing/forward-events-03.pid +0 -1
- data/server/routing/forward-events-04.pid +0 -1
@@ -50,6 +50,14 @@
|
|
50
50
|
</element>
|
51
51
|
</element>
|
52
52
|
<element name="annotations" rngui:header="Annotations">
|
53
|
+
<element name="_generic" rngui:header="Generic" rngui:fold="closed">
|
54
|
+
<zeroOrMore rngui:label="Create Annotation Pair">
|
55
|
+
<element rngui:label="Name" rngui:labeltype="xml">
|
56
|
+
<anyName/>
|
57
|
+
<data type="string" rngui:label="Value"/>
|
58
|
+
</element>
|
59
|
+
</zeroOrMore>
|
60
|
+
</element>
|
53
61
|
<element name="_timing" rngui:header="Timing" rngui:fold="closed">
|
54
62
|
<element name="_timing_weight" rngui:label="ω - Weight">
|
55
63
|
<data type="float" rngui:label="[0,1]"/>
|
@@ -1,6 +1,6 @@
|
|
1
1
|
<element xmlns="http://relaxng.org/ns/structure/1.0" xmlns:rngui="http://rngui.org" rngui:version="1.2" ns="http://cpee.org/ns/description/1.0" name="closed_loop_control" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
|
2
|
-
<attribute name="
|
3
|
-
<data type="
|
2
|
+
<attribute name="ctime" rngui:label="Cycle time in ms" rngui:default="100">
|
3
|
+
<data type="integer" rngui:label="ms"/>
|
4
4
|
</attribute>
|
5
5
|
<element name="_expected" rngui:header="Values Expected to Change">
|
6
6
|
<zeroOrMore rngui:label="Add Value">
|
@@ -1,8 +1,8 @@
|
|
1
1
|
<element xmlns="http://relaxng.org/ns/structure/1.0" xmlns:rngui="http://rngui.org" rngui:version="1.2" ns="http://cpee.org/ns/description/1.0" name="closed_loop_measuring" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
|
2
|
-
<attribute name="
|
3
|
-
<data type="
|
2
|
+
<attribute name="ctime" rngui:label="Cycle time in ms" rngui:default="100">
|
3
|
+
<data type="integer" rngui:label="ms"/>
|
4
4
|
</attribute>
|
5
|
-
<element name="_expected" rngui:header="Values
|
5
|
+
<element name="_expected" rngui:header="Measured Values">
|
6
6
|
<zeroOrMore rngui:label="Add Value">
|
7
7
|
<element name="value" rngui:label="Value">
|
8
8
|
<data type="string" rngui:label="a dataelement"/>
|
@@ -253,6 +253,18 @@ function WFAdaptorManifestation(adaptor) {
|
|
253
253
|
new CustomMenu(e).contextmenu(menu);
|
254
254
|
} //}}}
|
255
255
|
|
256
|
+
function positionHandling(svgid) {
|
257
|
+
var xml_node = self.adaptor.description.get_node_by_svg_id(svgid);
|
258
|
+
var vtarget = self.adaptor.illustrator.get_node_by_svg_id(svgid);
|
259
|
+
if (vtarget.length > 0) {
|
260
|
+
if (vtarget.parents('g.activities.passive, g.activities.active').length > 0) {
|
261
|
+
del_ui_pos(xml_node);
|
262
|
+
} else {
|
263
|
+
add_ui_pos(xml_node);
|
264
|
+
}
|
265
|
+
}
|
266
|
+
}
|
267
|
+
|
256
268
|
// Events
|
257
269
|
this.events.touchend = function(svgid, e) { // {{{
|
258
270
|
clearTimeout(self.presstimer);
|
@@ -264,15 +276,7 @@ function WFAdaptorManifestation(adaptor) {
|
|
264
276
|
this.events.mousedown = function(svgid, e, child, sibling) { // {{{
|
265
277
|
if(e.button == 0) { // left-click
|
266
278
|
} else if(e.button == 1) { // middle-click
|
267
|
-
|
268
|
-
var vtarget = self.adaptor.illustrator.get_node_by_svg_id(svgid);
|
269
|
-
if (vtarget.length > 0) {
|
270
|
-
if (vtarget.parents('g.activities.passive, g.activities.active').length > 0) {
|
271
|
-
del_ui_pos(xml_node);
|
272
|
-
} else {
|
273
|
-
add_ui_pos(xml_node);
|
274
|
-
}
|
275
|
-
}
|
279
|
+
positionHandling(svgid);
|
276
280
|
} else if(e.button == 2) { // right-click
|
277
281
|
contextMenuHandling(svgid,e,child,sibling);
|
278
282
|
}
|
@@ -305,6 +309,8 @@ function WFAdaptorManifestation(adaptor) {
|
|
305
309
|
localStorage.removeItem('marked_from');
|
306
310
|
}
|
307
311
|
}
|
312
|
+
} else if (e && (e.shiftKey)) {
|
313
|
+
positionHandling(svgid);
|
308
314
|
} else {
|
309
315
|
self.adaptor.illustrator.get_elements().removeClass('marked');
|
310
316
|
localStorage.removeItem('marked');
|
@@ -27,6 +27,14 @@
|
|
27
27
|
</element>
|
28
28
|
</element>
|
29
29
|
<element name="annotations" rngui:header="Annotations">
|
30
|
+
<element name="_generic" rngui:header="Generic" rngui:fold="closed">
|
31
|
+
<zeroOrMore rngui:label="Create Annotation Pair">
|
32
|
+
<element rngui:label="Name" rngui:labeltype="xml">
|
33
|
+
<anyName/>
|
34
|
+
<data type="string" rngui:label="Value"/>
|
35
|
+
</element>
|
36
|
+
</zeroOrMore>
|
37
|
+
</element>
|
30
38
|
<element name="_timing" rngui:header="Timing" rngui:fold="closed">
|
31
39
|
<element name="_timing_weight" rngui:label="ω - Weight">
|
32
40
|
<data type="float" rngui:label="[0,1]"/>
|
@@ -50,6 +50,14 @@
|
|
50
50
|
</element>
|
51
51
|
</element>
|
52
52
|
<element name="annotations" rngui:header="Annotations">
|
53
|
+
<element name="_generic" rngui:header="Generic" rngui:fold="closed">
|
54
|
+
<zeroOrMore rngui:label="Create Annotation Pair">
|
55
|
+
<element rngui:label="Name" rngui:labeltype="xml">
|
56
|
+
<anyName/>
|
57
|
+
<data type="string" rngui:label="Value"/>
|
58
|
+
</element>
|
59
|
+
</zeroOrMore>
|
60
|
+
</element>
|
53
61
|
<element name="_timing" rngui:header="Timing" rngui:fold="closed">
|
54
62
|
<element name="_timing_weight" rngui:label="ω - Weight">
|
55
63
|
<data type="float" rngui:label="[0,1]"/>
|
@@ -1,6 +1,6 @@
|
|
1
1
|
<element xmlns="http://relaxng.org/ns/structure/1.0" xmlns:rngui="http://rngui.org" rngui:version="1.2" ns="http://cpee.org/ns/description/1.0" name="closed_loop_control" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
|
2
|
-
<attribute name="
|
3
|
-
<data type="
|
2
|
+
<attribute name="ctime" rngui:label="Cycle time in ms" rngui:default="100">
|
3
|
+
<data type="integer" rngui:label="ms"/>
|
4
4
|
</attribute>
|
5
5
|
<element name="_expected" rngui:header="Values Expected to Change">
|
6
6
|
<zeroOrMore rngui:label="Add Value">
|
@@ -1,8 +1,8 @@
|
|
1
1
|
<element xmlns="http://relaxng.org/ns/structure/1.0" xmlns:rngui="http://rngui.org" rngui:version="1.2" ns="http://cpee.org/ns/description/1.0" name="closed_loop_measuring" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
|
2
|
-
<attribute name="
|
3
|
-
<data type="
|
2
|
+
<attribute name="ctime" rngui:label="Cycle time in ms" rngui:default="100">
|
3
|
+
<data type="integer" rngui:label="ms"/>
|
4
4
|
</attribute>
|
5
|
-
<element name="_expected" rngui:header="Values
|
5
|
+
<element name="_expected" rngui:header="Measured Values">
|
6
6
|
<zeroOrMore rngui:label="Add Value">
|
7
7
|
<element name="value" rngui:label="Value">
|
8
8
|
<data type="string" rngui:label="a dataelement"/>
|
@@ -253,6 +253,18 @@ function WFAdaptorManifestation(adaptor) {
|
|
253
253
|
new CustomMenu(e).contextmenu(menu);
|
254
254
|
} //}}}
|
255
255
|
|
256
|
+
function positionHandling(svgid) {
|
257
|
+
var xml_node = self.adaptor.description.get_node_by_svg_id(svgid);
|
258
|
+
var vtarget = self.adaptor.illustrator.get_node_by_svg_id(svgid);
|
259
|
+
if (vtarget.length > 0) {
|
260
|
+
if (vtarget.parents('g.activities.passive, g.activities.active').length > 0) {
|
261
|
+
del_ui_pos(xml_node);
|
262
|
+
} else {
|
263
|
+
add_ui_pos(xml_node);
|
264
|
+
}
|
265
|
+
}
|
266
|
+
}
|
267
|
+
|
256
268
|
// Events
|
257
269
|
this.events.touchend = function(svgid, e) { // {{{
|
258
270
|
clearTimeout(self.presstimer);
|
@@ -264,15 +276,7 @@ function WFAdaptorManifestation(adaptor) {
|
|
264
276
|
this.events.mousedown = function(svgid, e, child, sibling) { // {{{
|
265
277
|
if(e.button == 0) { // left-click
|
266
278
|
} else if(e.button == 1) { // middle-click
|
267
|
-
|
268
|
-
var vtarget = self.adaptor.illustrator.get_node_by_svg_id(svgid);
|
269
|
-
if (vtarget.length > 0) {
|
270
|
-
if (vtarget.parents('g.activities.passive, g.activities.active').length > 0) {
|
271
|
-
del_ui_pos(xml_node);
|
272
|
-
} else {
|
273
|
-
add_ui_pos(xml_node);
|
274
|
-
}
|
275
|
-
}
|
279
|
+
positionHandling(svgid);
|
276
280
|
} else if(e.button == 2) { // right-click
|
277
281
|
contextMenuHandling(svgid,e,child,sibling);
|
278
282
|
}
|
@@ -305,6 +309,8 @@ function WFAdaptorManifestation(adaptor) {
|
|
305
309
|
localStorage.removeItem('marked_from');
|
306
310
|
}
|
307
311
|
}
|
312
|
+
} else if (e && (e.shiftKey)) {
|
313
|
+
positionHandling(svgid);
|
308
314
|
} else {
|
309
315
|
self.adaptor.illustrator.get_elements().removeClass('marked');
|
310
316
|
localStorage.removeItem('marked');
|
@@ -229,6 +229,18 @@ function WFAdaptorManifestation(adaptor) {
|
|
229
229
|
new CustomMenu(e).contextmenu(menu);
|
230
230
|
} //}}}
|
231
231
|
|
232
|
+
function positionHandling(svgid) {
|
233
|
+
var xml_node = self.adaptor.description.get_node_by_svg_id(svgid);
|
234
|
+
var vtarget = self.adaptor.illustrator.get_node_by_svg_id(svgid);
|
235
|
+
if (vtarget.length > 0) {
|
236
|
+
if (vtarget.parents('g.activities.passive, g.activities.active').length > 0) {
|
237
|
+
del_ui_pos(xml_node);
|
238
|
+
} else {
|
239
|
+
add_ui_pos(xml_node);
|
240
|
+
}
|
241
|
+
}
|
242
|
+
}
|
243
|
+
|
232
244
|
// Events
|
233
245
|
this.events.touchend = function(svgid, e) { // {{{
|
234
246
|
clearTimeout(self.presstimer);
|
@@ -240,15 +252,7 @@ function WFAdaptorManifestation(adaptor) {
|
|
240
252
|
this.events.mousedown = function(svgid, e, child, sibling) { // {{{
|
241
253
|
if(e.button == 0) { // left-click
|
242
254
|
} else if(e.button == 1) { // middle-click
|
243
|
-
|
244
|
-
var vtarget = self.adaptor.illustrator.get_node_by_svg_id(svgid);
|
245
|
-
if (vtarget.length > 0) {
|
246
|
-
if (vtarget.parents('g.activities.passive, g.activities.active').length > 0) {
|
247
|
-
del_ui_pos(xml_node);
|
248
|
-
} else {
|
249
|
-
add_ui_pos(xml_node);
|
250
|
-
}
|
251
|
-
}
|
255
|
+
positionHandling(svgid);
|
252
256
|
} else if(e.button == 2) { // right-click
|
253
257
|
contextMenuHandling(svgid,e,child,sibling);
|
254
258
|
}
|
@@ -281,6 +285,8 @@ function WFAdaptorManifestation(adaptor) {
|
|
281
285
|
localStorage.removeItem('marked_from');
|
282
286
|
}
|
283
287
|
}
|
288
|
+
} else if (e && (e.shiftKey)) {
|
289
|
+
positionHandling(svgid);
|
284
290
|
} else {
|
285
291
|
self.adaptor.illustrator.get_elements().removeClass('marked');
|
286
292
|
localStorage.removeItem('marked');
|
@@ -27,6 +27,14 @@
|
|
27
27
|
</element>
|
28
28
|
</element>
|
29
29
|
<element name="annotations" rngui:header="Annotations">
|
30
|
+
<element name="_generic" rngui:header="Generic" rngui:fold="closed">
|
31
|
+
<zeroOrMore rngui:label="Create Annotation Pair">
|
32
|
+
<element rngui:label="Name" rngui:labeltype="xml">
|
33
|
+
<anyName/>
|
34
|
+
<data type="string" rngui:label="Value"/>
|
35
|
+
</element>
|
36
|
+
</zeroOrMore>
|
37
|
+
</element>
|
30
38
|
<element name="_timing" rngui:header="Timing" rngui:fold="closed">
|
31
39
|
<element name="_timing_weight" rngui:label="ω - Weight">
|
32
40
|
<data type="float" rngui:label="[0,1]"/>
|
@@ -50,6 +50,14 @@
|
|
50
50
|
</element>
|
51
51
|
</element>
|
52
52
|
<element name="annotations" rngui:header="Annotations">
|
53
|
+
<element name="_generic" rngui:header="Generic" rngui:fold="closed">
|
54
|
+
<zeroOrMore rngui:label="Create Annotation Pair">
|
55
|
+
<element rngui:label="Name" rngui:labeltype="xml">
|
56
|
+
<anyName/>
|
57
|
+
<data type="string" rngui:label="Value"/>
|
58
|
+
</element>
|
59
|
+
</zeroOrMore>
|
60
|
+
</element>
|
53
61
|
<element name="_timing" rngui:header="Timing" rngui:fold="closed">
|
54
62
|
<element name="_timing_weight" rngui:label="ω - Weight">
|
55
63
|
<data type="float" rngui:label="[0,1]"/>
|
@@ -1,6 +1,6 @@
|
|
1
1
|
<element xmlns="http://relaxng.org/ns/structure/1.0" xmlns:rngui="http://rngui.org" rngui:version="1.2" ns="http://cpee.org/ns/description/1.0" name="closed_loop_control" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
|
2
|
-
<attribute name="
|
3
|
-
<data type="
|
2
|
+
<attribute name="ctime" rngui:label="Cycle time in ms" rngui:default="100">
|
3
|
+
<data type="integer" rngui:label="ms"/>
|
4
4
|
</attribute>
|
5
5
|
<element name="_expected" rngui:header="Values Expected to Change">
|
6
6
|
<zeroOrMore rngui:label="Add Value">
|
@@ -1,8 +1,8 @@
|
|
1
1
|
<element xmlns="http://relaxng.org/ns/structure/1.0" xmlns:rngui="http://rngui.org" rngui:version="1.2" ns="http://cpee.org/ns/description/1.0" name="closed_loop_measuring" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
|
2
|
-
<attribute name="
|
3
|
-
<data type="
|
2
|
+
<attribute name="ctime" rngui:label="Cycle time in ms" rngui:default="100">
|
3
|
+
<data type="integer" rngui:label="ms"/>
|
4
4
|
</attribute>
|
5
|
-
<element name="_expected" rngui:header="Values
|
5
|
+
<element name="_expected" rngui:header="Measured Values">
|
6
6
|
<zeroOrMore rngui:label="Add Value">
|
7
7
|
<element name="value" rngui:label="Value">
|
8
8
|
<data type="string" rngui:label="a dataelement"/>
|
@@ -253,6 +253,18 @@ function WFAdaptorManifestation(adaptor) {
|
|
253
253
|
new CustomMenu(e).contextmenu(menu);
|
254
254
|
} //}}}
|
255
255
|
|
256
|
+
function positionHandling(svgid) {
|
257
|
+
var xml_node = self.adaptor.description.get_node_by_svg_id(svgid);
|
258
|
+
var vtarget = self.adaptor.illustrator.get_node_by_svg_id(svgid);
|
259
|
+
if (vtarget.length > 0) {
|
260
|
+
if (vtarget.parents('g.activities.passive, g.activities.active').length > 0) {
|
261
|
+
del_ui_pos(xml_node);
|
262
|
+
} else {
|
263
|
+
add_ui_pos(xml_node);
|
264
|
+
}
|
265
|
+
}
|
266
|
+
}
|
267
|
+
|
256
268
|
// Events
|
257
269
|
this.events.touchend = function(svgid, e) { // {{{
|
258
270
|
clearTimeout(self.presstimer);
|
@@ -264,15 +276,7 @@ function WFAdaptorManifestation(adaptor) {
|
|
264
276
|
this.events.mousedown = function(svgid, e, child, sibling) { // {{{
|
265
277
|
if(e.button == 0) { // left-click
|
266
278
|
} else if(e.button == 1) { // middle-click
|
267
|
-
|
268
|
-
var vtarget = self.adaptor.illustrator.get_node_by_svg_id(svgid);
|
269
|
-
if (vtarget.length > 0) {
|
270
|
-
if (vtarget.parents('g.activities.passive, g.activities.active').length > 0) {
|
271
|
-
del_ui_pos(xml_node);
|
272
|
-
} else {
|
273
|
-
add_ui_pos(xml_node);
|
274
|
-
}
|
275
|
-
}
|
279
|
+
positionHandling(svgid);
|
276
280
|
} else if(e.button == 2) { // right-click
|
277
281
|
contextMenuHandling(svgid,e,child,sibling);
|
278
282
|
}
|
@@ -305,6 +309,8 @@ function WFAdaptorManifestation(adaptor) {
|
|
305
309
|
localStorage.removeItem('marked_from');
|
306
310
|
}
|
307
311
|
}
|
312
|
+
} else if (e && (e.shiftKey)) {
|
313
|
+
positionHandling(svgid);
|
308
314
|
} else {
|
309
315
|
self.adaptor.illustrator.get_elements().removeClass('marked');
|
310
316
|
localStorage.removeItem('marked');
|
@@ -27,6 +27,14 @@
|
|
27
27
|
</element>
|
28
28
|
</element>
|
29
29
|
<element name="annotations" rngui:header="Annotations">
|
30
|
+
<element name="_generic" rngui:header="Generic" rngui:fold="closed">
|
31
|
+
<zeroOrMore rngui:label="Create Annotation Pair">
|
32
|
+
<element rngui:label="Name" rngui:labeltype="xml">
|
33
|
+
<anyName/>
|
34
|
+
<data type="string" rngui:label="Value"/>
|
35
|
+
</element>
|
36
|
+
</zeroOrMore>
|
37
|
+
</element>
|
30
38
|
<element name="_timing" rngui:header="Timing" rngui:fold="closed">
|
31
39
|
<element name="_timing_weight" rngui:label="ω - Weight">
|
32
40
|
<data type="float" rngui:label="[0,1]"/>
|
@@ -50,6 +50,14 @@
|
|
50
50
|
</element>
|
51
51
|
</element>
|
52
52
|
<element name="annotations" rngui:header="Annotations">
|
53
|
+
<element name="_generic" rngui:header="Generic" rngui:fold="closed">
|
54
|
+
<zeroOrMore rngui:label="Create Annotation Pair">
|
55
|
+
<element rngui:label="Name" rngui:labeltype="xml">
|
56
|
+
<anyName/>
|
57
|
+
<data type="string" rngui:label="Value"/>
|
58
|
+
</element>
|
59
|
+
</zeroOrMore>
|
60
|
+
</element>
|
53
61
|
<element name="_timing" rngui:header="Timing" rngui:fold="closed">
|
54
62
|
<element name="_timing_weight" rngui:label="ω - Weight">
|
55
63
|
<data type="float" rngui:label="[0,1]"/>
|
@@ -1,6 +1,6 @@
|
|
1
1
|
<element xmlns="http://relaxng.org/ns/structure/1.0" xmlns:rngui="http://rngui.org" rngui:version="1.2" ns="http://cpee.org/ns/description/1.0" name="closed_loop_control" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
|
2
|
-
<attribute name="
|
3
|
-
<data type="
|
2
|
+
<attribute name="ctime" rngui:label="Cycle time in ms" rngui:default="100">
|
3
|
+
<data type="integer" rngui:label="ms"/>
|
4
4
|
</attribute>
|
5
5
|
<element name="_expected" rngui:header="Values Expected to Change">
|
6
6
|
<zeroOrMore rngui:label="Add Value">
|
@@ -1,8 +1,8 @@
|
|
1
1
|
<element xmlns="http://relaxng.org/ns/structure/1.0" xmlns:rngui="http://rngui.org" rngui:version="1.2" ns="http://cpee.org/ns/description/1.0" name="closed_loop_measuring" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
|
2
|
-
<attribute name="
|
3
|
-
<data type="
|
2
|
+
<attribute name="ctime" rngui:label="Cycle time in ms" rngui:default="100">
|
3
|
+
<data type="integer" rngui:label="ms"/>
|
4
4
|
</attribute>
|
5
|
-
<element name="_expected" rngui:header="Values
|
5
|
+
<element name="_expected" rngui:header="Measured Values">
|
6
6
|
<zeroOrMore rngui:label="Add Value">
|
7
7
|
<element name="value" rngui:label="Value">
|
8
8
|
<data type="string" rngui:label="a dataelement"/>
|
@@ -253,6 +253,18 @@ function WFAdaptorManifestation(adaptor) {
|
|
253
253
|
new CustomMenu(e).contextmenu(menu);
|
254
254
|
} //}}}
|
255
255
|
|
256
|
+
function positionHandling(svgid) {
|
257
|
+
var xml_node = self.adaptor.description.get_node_by_svg_id(svgid);
|
258
|
+
var vtarget = self.adaptor.illustrator.get_node_by_svg_id(svgid);
|
259
|
+
if (vtarget.length > 0) {
|
260
|
+
if (vtarget.parents('g.activities.passive, g.activities.active').length > 0) {
|
261
|
+
del_ui_pos(xml_node);
|
262
|
+
} else {
|
263
|
+
add_ui_pos(xml_node);
|
264
|
+
}
|
265
|
+
}
|
266
|
+
}
|
267
|
+
|
256
268
|
// Events
|
257
269
|
this.events.touchend = function(svgid, e) { // {{{
|
258
270
|
clearTimeout(self.presstimer);
|
@@ -264,15 +276,7 @@ function WFAdaptorManifestation(adaptor) {
|
|
264
276
|
this.events.mousedown = function(svgid, e, child, sibling) { // {{{
|
265
277
|
if(e.button == 0) { // left-click
|
266
278
|
} else if(e.button == 1) { // middle-click
|
267
|
-
|
268
|
-
var vtarget = self.adaptor.illustrator.get_node_by_svg_id(svgid);
|
269
|
-
if (vtarget.length > 0) {
|
270
|
-
if (vtarget.parents('g.activities.passive, g.activities.active').length > 0) {
|
271
|
-
del_ui_pos(xml_node);
|
272
|
-
} else {
|
273
|
-
add_ui_pos(xml_node);
|
274
|
-
}
|
275
|
-
}
|
279
|
+
positionHandling(svgid);
|
276
280
|
} else if(e.button == 2) { // right-click
|
277
281
|
contextMenuHandling(svgid,e,child,sibling);
|
278
282
|
}
|
@@ -305,6 +309,8 @@ function WFAdaptorManifestation(adaptor) {
|
|
305
309
|
localStorage.removeItem('marked_from');
|
306
310
|
}
|
307
311
|
}
|
312
|
+
} else if (e && (e.shiftKey)) {
|
313
|
+
positionHandling(svgid);
|
308
314
|
} else {
|
309
315
|
self.adaptor.illustrator.get_elements().removeClass('marked');
|
310
316
|
localStorage.removeItem('marked');
|
data/cpee.gemspec
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = "cpee"
|
3
|
-
s.version = "2.1.
|
3
|
+
s.version = "2.1.48"
|
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.org). If you just need workflow execution, without a rest service exposing it, then use WEEL."
|
data/lib/cpee/implementation.rb
CHANGED
@@ -295,7 +295,7 @@ module CPEE
|
|
295
295
|
name = @p[0].value
|
296
296
|
id = CPEE::Persistence::new_object(opts)
|
297
297
|
uuid = SecureRandom.uuid
|
298
|
-
instance = CPEE::Persistence::
|
298
|
+
instance = CPEE::Persistence::obj + ':' + id.to_s
|
299
299
|
redis.multi do |multi|
|
300
300
|
multi.zadd('instances',id,id)
|
301
301
|
doc.root.find(PROPERTIES_PATHS_FULL.join(' | ')).each do |e|
|
@@ -319,12 +319,12 @@ module CPEE
|
|
319
319
|
doc.register_namespace 'np', 'http://riddl.org/ns/common-patterns/notifications-producer/2.0'
|
320
320
|
key = File.basename(File.dirname(f))
|
321
321
|
url = doc.find('string(/np:subscription/@url)')
|
322
|
-
multi.sadd(CPEE::Persistence::
|
323
|
-
multi.set(CPEE::Persistence::
|
322
|
+
multi.sadd(CPEE::Persistence::obj + ":#{id}/handlers",key)
|
323
|
+
multi.set(CPEE::Persistence::obj + ":#{id}/handlers/#{key}/url",url)
|
324
324
|
doc.find('/np:subscription/np:topic/*').each do |e|
|
325
325
|
c = File.join(e.parent.attributes['id'],e.qname.name,e.text)
|
326
|
-
multi.sadd(CPEE::Persistence::
|
327
|
-
multi.sadd(CPEE::Persistence::
|
326
|
+
multi.sadd(CPEE::Persistence::obj + ":#{id}/handlers/#{key}",c)
|
327
|
+
multi.sadd(CPEE::Persistence::obj + ":#{id}/handlers/#{c}",key)
|
328
328
|
end
|
329
329
|
end rescue nil # all the ones that are not ok, are ignored
|
330
330
|
end
|
data/lib/cpee/persistence.rb
CHANGED
@@ -15,7 +15,10 @@
|
|
15
15
|
module CPEE
|
16
16
|
|
17
17
|
module Persistence
|
18
|
-
|
18
|
+
@@obj = 'instance'
|
19
|
+
def self::obj #{{{
|
20
|
+
@@obj
|
21
|
+
end #}}}
|
19
22
|
|
20
23
|
def self::set_list(id,opts,item,values,deleted=[]) #{{{
|
21
24
|
ah = AttributesHelper.new
|
@@ -39,13 +42,13 @@ module CPEE
|
|
39
42
|
)
|
40
43
|
end #}}}
|
41
44
|
def self::extract_set(id,opts,item) #{{{
|
42
|
-
opts[:redis].smembers(
|
43
|
-
[e,opts[:redis].get(
|
45
|
+
opts[:redis].smembers(@@obj + ":#{id}/#{item}").map do |e|
|
46
|
+
[e,opts[:redis].get(@@obj + ":#{id}/#{item}/#{e}")]
|
44
47
|
end
|
45
48
|
end #}}}
|
46
49
|
def self::extract_list(id,opts,item) #{{{
|
47
|
-
opts[:redis].zrange(
|
48
|
-
[e,opts[:redis].get(
|
50
|
+
opts[:redis].zrange(@@obj + ":#{id}/#{item}",0,-1).map do |e|
|
51
|
+
[e,opts[:redis].get(@@obj + ":#{id}/#{item}/#{e}")]
|
49
52
|
end
|
50
53
|
end #}}}
|
51
54
|
|
@@ -62,32 +65,32 @@ module CPEE
|
|
62
65
|
)
|
63
66
|
end #}}}
|
64
67
|
def self::extract_item(id,opts,item) #{{{
|
65
|
-
opts[:redis].get(
|
68
|
+
opts[:redis].get(@@obj + ":#{id}/#{item}")
|
66
69
|
end #}}}
|
67
70
|
|
68
71
|
def self::exists?(id,opts) #{{{
|
69
|
-
opts[:redis].exists?(
|
72
|
+
opts[:redis].exists?(@@obj + ":#{id}/state")
|
70
73
|
end #}}}
|
71
74
|
def self::is_member?(id,opts,item,value) #{{{
|
72
|
-
opts[:redis].sismember(
|
75
|
+
opts[:redis].sismember(@@obj + ":#{id}/#{item}",value)
|
73
76
|
end #}}}
|
74
77
|
|
75
78
|
def self::each_object(opts)
|
76
|
-
opts[:redis].zrevrange(
|
79
|
+
opts[:redis].zrevrange(@@obj + 's',0,-1).each do |instance|
|
77
80
|
yield instance
|
78
81
|
end
|
79
82
|
end
|
80
83
|
|
81
84
|
def self::new_object(opts)
|
82
|
-
opts[:redis].zrevrange(
|
85
|
+
opts[:redis].zrevrange(@@obj + 's', 0, 0).first.to_i + 1
|
83
86
|
end
|
84
87
|
|
85
88
|
def self::keys(id,opts,item=nil)
|
86
|
-
opts[:redis].keys(File.join(
|
89
|
+
opts[:redis].keys(File.join(@@obj + ":#{id}",item.to_s,'*'))
|
87
90
|
end
|
88
91
|
|
89
92
|
def self::set_handler(id,opts,key,url,values,update=false) #{{{
|
90
|
-
exis = opts[:redis].smembers(
|
93
|
+
exis = opts[:redis].smembers(@@obj + ":#{id}/handlers/#{key}")
|
91
94
|
|
92
95
|
if update == false && exis.length > 0
|
93
96
|
return 405
|
@@ -120,14 +123,14 @@ module CPEE
|
|
120
123
|
200
|
121
124
|
end #}}}
|
122
125
|
def self::extract_handler(id,opts,key) #{{{
|
123
|
-
opts[:redis].smembers(
|
126
|
+
opts[:redis].smembers(@@obj + ":#{id}/handlers/#{key}")
|
124
127
|
end #}}}
|
125
128
|
def self::exists_handler?(id,opts,key) #{{{
|
126
|
-
opts[:redis].exists?(
|
129
|
+
opts[:redis].exists?(@@obj + ":#{id}/handlers/#{key}")
|
127
130
|
end #}}}
|
128
131
|
def self::extract_handlers(id,opts) #{{{
|
129
|
-
opts[:redis].smembers(
|
130
|
-
[e, opts[:redis].get(
|
132
|
+
opts[:redis].smembers(@@obj + ":#{id}/handlers").map do |e|
|
133
|
+
[e, opts[:redis].get(@@obj + ":#{id}/handlers/#{e}/url")]
|
131
134
|
end
|
132
135
|
end #}}}
|
133
136
|
end
|
@@ -64,10 +64,10 @@ class ConnectionWrapper < WEEL::ConnectionWrapperBase
|
|
64
64
|
end # }}}
|
65
65
|
|
66
66
|
def prepare(readonly, endpoints, parameters, replay=false) #{{{
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
@handler_endpoint =
|
67
|
+
@handler_endpoint = endpoints.is_a?(Array) ? endpoints.map{ |ep| readonly.endpoints[ep] }.compact : readonly.endpoints[endpoints]
|
68
|
+
if @controller.attributes['mock']
|
69
|
+
@handler_endpoint_orig = @handler_endpoint
|
70
|
+
@handler_endpoint = @controller.attributes['mock'].to_s + '?original_endpoint=' + Riddl::Protocols::Utils::escape(@handler_endpoint)
|
71
71
|
end
|
72
72
|
params = parameters.dup
|
73
73
|
params[:arguments] = params[:arguments].dup if params[:arguments]
|
@@ -131,15 +131,23 @@ class ConnectionWrapper < WEEL::ConnectionWrapperBase
|
|
131
131
|
params << Riddl::Header.new("CPEE-ATTR-#{key.to_s.gsub(/_/,'-')}",value)
|
132
132
|
end
|
133
133
|
|
134
|
-
|
135
|
-
|
134
|
+
status = result = headers = nil
|
135
|
+
catch :no_mock do
|
136
|
+
tendpoint = @handler_endpoint.sub(/^http(s)?-(get|put|post|delete):/,'http\\1:')
|
137
|
+
type = $2 || parameters[:method] || 'post'
|
138
|
+
|
139
|
+
client = Riddl::Client.new(tendpoint)
|
136
140
|
|
137
|
-
|
141
|
+
@handler_passthrough = callback
|
142
|
+
@controller.callback(self,callback,:'activity-uuid' => @handler_activity_uuid, :label => @label, :activity => @handler_position)
|
138
143
|
|
139
|
-
|
140
|
-
|
144
|
+
status, result, headers = client.request type => params
|
145
|
+
if status == 561
|
146
|
+
@handler_endpoint = @handler_endpoint_orig
|
147
|
+
throw :no_mock
|
148
|
+
end
|
149
|
+
end
|
141
150
|
|
142
|
-
status, result, headers = client.request type => params
|
143
151
|
if status < 200 || status >= 300
|
144
152
|
headers['CPEE_SALVAGE'] = true
|
145
153
|
c = result[0]&.value
|
@@ -270,7 +278,7 @@ class ConnectionWrapper < WEEL::ConnectionWrapperBase
|
|
270
278
|
enc = detect_encoding(result)
|
271
279
|
enc == 'OTHER' ? result : (result.encode('UTF-8',enc) rescue convert_to_base64(result))
|
272
280
|
else
|
273
|
-
result
|
281
|
+
Riddl::Parameter::Array[*result]
|
274
282
|
end
|
275
283
|
end
|
276
284
|
|
@@ -353,6 +361,8 @@ class ConnectionWrapper < WEEL::ConnectionWrapperBase
|
|
353
361
|
@handler_passthrough = nil
|
354
362
|
if options['CPEE_SALVAGE']
|
355
363
|
@handler_continue.continue WEEL::Signal::Salvage
|
364
|
+
elsif options['CPEE_STOP']
|
365
|
+
@handler_continue.continue WEEL::Signal::Stop
|
356
366
|
else
|
357
367
|
@handler_continue.continue
|
358
368
|
end
|