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