cpee 2.1.93 → 2.1.96
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/cockpit/css/{resources-label.css → extended_columns-label.css} +4 -0
- data/cockpit/css/ui.css +2 -1
- data/cockpit/css/wfadaptor.css +8 -11
- data/cockpit/david.html +292 -0
- data/cockpit/edit.html +16 -7
- data/cockpit/graph.html +3 -3
- data/cockpit/index.html +15 -7
- data/cockpit/js/details.js +2 -1
- data/cockpit/js/extended_columns.js +233 -0
- data/cockpit/js/instance.js +45 -161
- data/cockpit/js/ui.js +0 -27
- data/cockpit/js/wfadaptor.js +25 -14
- data/cockpit/llm.html +3 -3
- data/cockpit/llm_alternative.html +3 -3
- data/cockpit/model.html +2 -2
- data/cockpit/only_llm.html +16 -7
- data/cockpit/templates/Coopis 2010.xml +11 -4
- data/cockpit/templates/Frames.xml +78 -10
- data/cockpit/templates/Track Test.xml +1 -1
- data/cockpit/themes/base.js +11 -7
- data/cockpit/themes/control/rngs/call.rng +8 -0
- data/cockpit/themes/control/rngs/callmanipulate.rng +9 -1
- data/cockpit/themes/control/rngs/loop.rng +7 -0
- data/cockpit/themes/control/rngs/manipulate.rng +57 -2
- data/cockpit/themes/dataflow/rngs/call.rng +8 -0
- data/cockpit/themes/dataflow/rngs/callmanipulate.rng +9 -1
- data/cockpit/themes/dataflow/rngs/loop.rng +7 -0
- data/cockpit/themes/dataflow/rngs/manipulate.rng +57 -2
- data/cockpit/themes/dataflow/theme.js +4 -4
- data/cockpit/themes/default/rngs/call.rng +8 -0
- data/cockpit/themes/default/rngs/callmanipulate.rng +9 -1
- data/cockpit/themes/default/rngs/loop.rng +7 -0
- data/cockpit/themes/default/rngs/manipulate.rng +57 -2
- data/cockpit/themes/extended/rngs/call.rng +8 -0
- data/cockpit/themes/extended/rngs/callmanipulate.rng +9 -1
- data/cockpit/themes/extended/rngs/loop.rng +7 -0
- data/cockpit/themes/extended/rngs/manipulate.rng +57 -2
- data/cockpit/themes/packed/rngs/call.rng +8 -0
- data/cockpit/themes/packed/rngs/callmanipulate.rng +9 -1
- data/cockpit/themes/packed/rngs/loop.rng +7 -0
- data/cockpit/themes/packed/rngs/manipulate.rng +57 -2
- data/cockpit/themes/preset/rngs/call.rng +8 -0
- data/cockpit/themes/preset/rngs/callmanipulate.rng +9 -1
- data/cockpit/themes/preset/rngs/loop.rng +7 -0
- data/cockpit/themes/preset/rngs/manipulate.rng +57 -2
- data/cockpit/themes/presetaltid/rngs/call.rng +8 -0
- data/cockpit/themes/presetaltid/rngs/callmanipulate.rng +9 -1
- data/cockpit/themes/presetaltid/rngs/loop.rng +7 -0
- data/cockpit/themes/presetaltid/rngs/manipulate.rng +57 -2
- data/cockpit/themes/presetaltid/theme.js +27 -3
- data/cockpit/themes/presetid/rngs/call.rng +8 -0
- data/cockpit/themes/presetid/rngs/callmanipulate.rng +9 -1
- data/cockpit/themes/presetid/rngs/loop.rng +7 -0
- data/cockpit/themes/presetid/rngs/manipulate.rng +57 -2
- data/cockpit/themes/reduced/rngs/call.rng +8 -0
- data/cockpit/themes/reduced/rngs/callmanipulate.rng +9 -1
- data/cockpit/themes/reduced/rngs/loop.rng +7 -0
- data/cockpit/themes/reduced/rngs/manipulate.rng +57 -2
- data/cockpit/track.html +3 -3
- data/cpee.gemspec +1 -1
- data/lib/cpee/implementation.rb +25 -38
- data/server/executionhandlers/ruby/connection.rb +7 -3
- data/server/executionhandlers/ruby/dsl_to_dslx.xsl +2 -2
- data/server/routing/end.pid +1 -1
- data/server/routing/forward-events-00.pid +1 -1
- data/server/routing/forward-events-01.pid +1 -0
- data/server/routing/forward-events-02.pid +1 -0
- data/server/routing/forward-events-03.pid +1 -0
- data/server/routing/forward-events-04.pid +1 -0
- data/server/routing/forward-events-05.pid +1 -0
- data/server/routing/forward-events-06.pid +1 -0
- data/server/routing/forward-votes.pid +1 -1
- data/server/routing/persist.pid +1 -1
- metadata +11 -4
- data/cockpit/js/resources.js +0 -64
- /data/cockpit/css/{resources-svg.css → extended_columns-svg.css} +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<element xmlns="http://relaxng.org/ns/structure/1.0" xmlns:rngui="http://rngui.org" rngui:version="1.2" name="manipulate"
|
|
1
|
+
<element xmlns="http://relaxng.org/ns/structure/1.0" xmlns:rngui="http://rngui.org" rngui:version="1.2" name="manipulate" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes" ns="http://cpee.org/ns/description/1.0">
|
|
2
2
|
<attribute name="id" rngui:label="ID" rngui:default="javascript:get_free_id()">
|
|
3
3
|
<data type="string" rngui:readonly="true"/>
|
|
4
4
|
</attribute>
|
|
@@ -19,5 +19,60 @@
|
|
|
19
19
|
<value>#f57aa9</value>
|
|
20
20
|
</choice>
|
|
21
21
|
</attribute>
|
|
22
|
-
<
|
|
22
|
+
<element name="code" rngui:label="Script" rngui:header="Code">
|
|
23
|
+
<text rngui:label="Script that is executed"/>
|
|
24
|
+
</element>
|
|
25
|
+
<element name="annotations" rngui:header="Annotations">
|
|
26
|
+
<element name="_logging_behavior" rngui:header="Logging Behavior" rngui:fold="closed">
|
|
27
|
+
<element name="_exclude" rngui:label="Exclude from log">
|
|
28
|
+
<data type="boolean" rngui:label="Exclude from log"/>
|
|
29
|
+
</element>
|
|
30
|
+
</element>
|
|
31
|
+
<element name="_context_data_analysis" rngui:header="Context Data Analysis" rngui:hint="All data objects (written in this task and otherwise) can be consumed and transformed in data probes. All probes can be the basis for impact factors. Please go to start to define instance data probes.">
|
|
32
|
+
|
|
33
|
+
<element name="probes" rngui:header="Data Probes - Context Data Extraction" rngui:fold="closed_conditional">
|
|
34
|
+
<zeroOrMore rngui:label="Add Probe">
|
|
35
|
+
<element name="probe">
|
|
36
|
+
<element name="id" rngui:label="ID">
|
|
37
|
+
<data type="string" rngui:label="ID"/>
|
|
38
|
+
</element>
|
|
39
|
+
<element name="source" rngui:label="Source">
|
|
40
|
+
<data type="string" rngui:label="Where does the sensor value come from?"/>
|
|
41
|
+
</element>
|
|
42
|
+
<element name="extractor_type" rngui:label="Extractor Type">
|
|
43
|
+
<choice>
|
|
44
|
+
<value rngui:label='Intrinsic'>intrinsic</value>
|
|
45
|
+
</choice>
|
|
46
|
+
</element>
|
|
47
|
+
<element name="extractor_code" rngui:label="Extractor Code" rngui:hint='For intrinsic & extrinsic data'>
|
|
48
|
+
<text rngui:label="Code"/>
|
|
49
|
+
</element>
|
|
50
|
+
<element name="extractor_url" rngui:label="Extractor Service" rngui:hint='For separate data'>
|
|
51
|
+
<data type="string" rngui:label="Service Url"/>
|
|
52
|
+
</element>
|
|
53
|
+
<element name="extractor_params" rngui:label="Extractor Service Arguments:">
|
|
54
|
+
<zeroOrMore rngui:label="Create Argument Pairs">
|
|
55
|
+
<element rngui:label="Name">
|
|
56
|
+
<anyName/>
|
|
57
|
+
<data type="string" rngui:label="Value / Json"/>
|
|
58
|
+
</element>
|
|
59
|
+
</zeroOrMore>
|
|
60
|
+
</element>
|
|
61
|
+
<element name="visualizer_url" rngui:label="Visualizer Url">
|
|
62
|
+
<data type="string" rngui:label="Service Url"/>
|
|
63
|
+
</element>
|
|
64
|
+
<element name="visualizer_params" rngui:label="Visualizer Arguments">
|
|
65
|
+
<zeroOrMore rngui:label="Create Argument Pairs">
|
|
66
|
+
<element rngui:label="Name">
|
|
67
|
+
<anyName/>
|
|
68
|
+
<data type="string" rngui:label="Value / Json"/>
|
|
69
|
+
</element>
|
|
70
|
+
</zeroOrMore>
|
|
71
|
+
</element>
|
|
72
|
+
</element>
|
|
73
|
+
</zeroOrMore>
|
|
74
|
+
</element>
|
|
75
|
+
|
|
76
|
+
</element>
|
|
77
|
+
</element>
|
|
23
78
|
</element>
|
|
@@ -4,13 +4,37 @@ WFAdaptorManifestation = class extends WFAdaptorManifestationBase {
|
|
|
4
4
|
this.compact = true;
|
|
5
5
|
this.rotated_labels = false;
|
|
6
6
|
this.elements.call.illustrator.label = function(node) { //{{{
|
|
7
|
-
return [ { column: 'Label', value: $('> label',$(node).children('parameters')).text().replace(/^['"]/,'').replace(/['"]$/,'') + ' (' + $(node).attr('a:
|
|
7
|
+
return [ { column: 'Label', value: $('> label',$(node).children('parameters')).text().replace(/^['"]/,'').replace(/['"]$/,'') + ' (' + $(node).attr('a:alt_id') + ')' } ];
|
|
8
|
+
}; //}}}
|
|
9
|
+
this.elements.call.illustrator.info = function(node) { //{{{
|
|
10
|
+
return { 'element-endpoint': $(node).attr('endpoint'), 'element-alt_id': $(node).attr('a:alt_id') };
|
|
11
|
+
}; //}}}
|
|
12
|
+
this.elements.callmanipulate.illustrator.label = function(node) { //{{{
|
|
13
|
+
return [ { column: 'Label', value: $('> label',$(node).children('parameters')).text().replace(/^['"]/,'').replace(/['"]$/,'') + ' (' + $(node).attr('a:alt_id') + ')' } ];
|
|
14
|
+
}; //}}}
|
|
15
|
+
this.elements.callmanipulate.illustrator.info = function(node) { //{{{
|
|
16
|
+
return { 'element-endpoint': $(node).attr('endpoint'), 'element-alt_id': $(node).attr('a:alt_id') };
|
|
8
17
|
}; //}}}
|
|
9
18
|
this.elements.stop.illustrator.label = function(node) { //{{{
|
|
10
|
-
return [ { column: 'Label', value: $('> label',$(node).children('parameters')).text().replace(/^['"]/,'').replace(/['"]$/,'') + ' (' + $(node).attr('a:
|
|
19
|
+
return [ { column: 'Label', value: $('> label',$(node).children('parameters')).text().replace(/^['"]/,'').replace(/['"]$/,'') + ' (' + $(node).attr('a:alt_id') + ')' } ];
|
|
20
|
+
}; //}}}
|
|
21
|
+
this.elements.stop.illustrator.info = function(node) { //{{{
|
|
22
|
+
return { 'element-alt_id': $(node).attr('a:alt_id') };
|
|
11
23
|
}; //}}}
|
|
12
24
|
this.elements.wait_for_signal.illustrator.label = function(node) { //{{{
|
|
13
|
-
return [ { column: 'Label', value: $('> label',$(node).children('parameters')).text().replace(/^['"]/,'').replace(/['"]$/,'') + ' (' + $(node).attr('a:
|
|
25
|
+
return [ { column: 'Label', value: $('> label',$(node).children('parameters')).text().replace(/^['"]/,'').replace(/['"]$/,'') + ' (' + $(node).attr('a:alt_id') + ')' } ];
|
|
26
|
+
}; //}}}
|
|
27
|
+
this.elements.wait_for_signal.illustrator.info = function(node) { //{{{
|
|
28
|
+
return { 'element-alt_id': $(node).attr('a:alt_id') };
|
|
29
|
+
}; //}}}
|
|
30
|
+
this.elements.choose.illustrator.info = function(node) { //{{{
|
|
31
|
+
return { 'element-alt_id': $(node).attr('a:alt_id') };
|
|
32
|
+
}; //}}}
|
|
33
|
+
this.elements.loop.illustrator.info = function(node) { //{{{
|
|
34
|
+
return { 'element-alt_id': $(node).attr('a:alt_id') };
|
|
35
|
+
}; //}}}
|
|
36
|
+
this.elements.parallel.illustrator.info = function(node) { //{{{
|
|
37
|
+
return { 'element-alt_id': $(node).attr('a:alt_id') };
|
|
14
38
|
}; //}}}
|
|
15
39
|
}
|
|
16
40
|
}
|
|
@@ -52,6 +52,14 @@
|
|
|
52
52
|
</element>
|
|
53
53
|
</zeroOrMore>
|
|
54
54
|
</element>
|
|
55
|
+
<element name="_logging_behavior" rngui:header="Logging Behavior" rngui:fold="closed">
|
|
56
|
+
<element name="_exclude" rngui:label="Exclude from log">
|
|
57
|
+
<data type="boolean" rngui:label="Exclude from log"/>
|
|
58
|
+
</element>
|
|
59
|
+
<element name="_include" rngui:label="Include nested events">
|
|
60
|
+
<data type="boolean" rngui:label="Include nested events"/>
|
|
61
|
+
</element>
|
|
62
|
+
</element>
|
|
55
63
|
<element name="_timing" rngui:header="Timing" rngui:fold="closed">
|
|
56
64
|
<element name="_timing_weight" rngui:label="ω - Weight">
|
|
57
65
|
<data type="float" rngui:label="[0,1]"/>
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
</element>
|
|
45
45
|
</element>
|
|
46
46
|
<element name="code" rngui:header="Data Handling">
|
|
47
|
-
<element name="signal" rngui:label="Signal after
|
|
47
|
+
<element name="signal" rngui:label="Signal after finalize/update">
|
|
48
48
|
<data type="boolean" rngui:label="A signal is sent every time the activity changes a data object"/>
|
|
49
49
|
</element>
|
|
50
50
|
<element name="prepare" rngui:header="Prepare" rngui:label="Code" rngui:fold="closed_conditional">
|
|
@@ -78,6 +78,14 @@
|
|
|
78
78
|
</element>
|
|
79
79
|
</zeroOrMore>
|
|
80
80
|
</element>
|
|
81
|
+
<element name="_logging_behavior" rngui:header="Logging Behavior" rngui:fold="closed">
|
|
82
|
+
<element name="_exclude" rngui:label="Exclude from log">
|
|
83
|
+
<data type="boolean" rngui:label="Exclude from log"/>
|
|
84
|
+
</element>
|
|
85
|
+
<element name="_include" rngui:label="Include nested events">
|
|
86
|
+
<data type="boolean" rngui:label="Include nested events"/>
|
|
87
|
+
</element>
|
|
88
|
+
</element>
|
|
81
89
|
<element name="_timing" rngui:header="Timing" rngui:fold="closed">
|
|
82
90
|
<element name="_timing_weight" rngui:label="ω - Weight">
|
|
83
91
|
<data type="float" rngui:label="[0,1]"/>
|
|
@@ -19,4 +19,11 @@
|
|
|
19
19
|
<data type="nonNegativeInteger" rngui:label="Times"/>
|
|
20
20
|
</element>
|
|
21
21
|
</element>
|
|
22
|
+
<element name="_annotations" rngui:header="Annotations">
|
|
23
|
+
<element name="_logging_behavior" rngui:header="Logging Behavior" rngui:fold="closed">
|
|
24
|
+
<element name="_iteration" rngui:label="Log per iteration">
|
|
25
|
+
<data type="boolean" rngui:label="Log per iteration"/>
|
|
26
|
+
</element>
|
|
27
|
+
</element>
|
|
28
|
+
</element>
|
|
22
29
|
</element>
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<element xmlns="http://relaxng.org/ns/structure/1.0" xmlns:rngui="http://rngui.org" rngui:version="1.2" name="manipulate"
|
|
1
|
+
<element xmlns="http://relaxng.org/ns/structure/1.0" xmlns:rngui="http://rngui.org" rngui:version="1.2" name="manipulate" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes" ns="http://cpee.org/ns/description/1.0">
|
|
2
2
|
<attribute name="id" rngui:label="ID" rngui:default="javascript:get_free_id()">
|
|
3
3
|
<data type="string" rngui:readonly="true"/>
|
|
4
4
|
</attribute>
|
|
@@ -19,5 +19,60 @@
|
|
|
19
19
|
<value>#f57aa9</value>
|
|
20
20
|
</choice>
|
|
21
21
|
</attribute>
|
|
22
|
-
<
|
|
22
|
+
<element name="code" rngui:label="Script" rngui:header="Code">
|
|
23
|
+
<text rngui:label="Script that is executed"/>
|
|
24
|
+
</element>
|
|
25
|
+
<element name="annotations" rngui:header="Annotations">
|
|
26
|
+
<element name="_logging_behavior" rngui:header="Logging Behavior" rngui:fold="closed">
|
|
27
|
+
<element name="_exclude" rngui:label="Exclude from log">
|
|
28
|
+
<data type="boolean" rngui:label="Exclude from log"/>
|
|
29
|
+
</element>
|
|
30
|
+
</element>
|
|
31
|
+
<element name="_context_data_analysis" rngui:header="Context Data Analysis" rngui:hint="All data objects (written in this task and otherwise) can be consumed and transformed in data probes. All probes can be the basis for impact factors. Please go to start to define instance data probes.">
|
|
32
|
+
|
|
33
|
+
<element name="probes" rngui:header="Data Probes - Context Data Extraction" rngui:fold="closed_conditional">
|
|
34
|
+
<zeroOrMore rngui:label="Add Probe">
|
|
35
|
+
<element name="probe">
|
|
36
|
+
<element name="id" rngui:label="ID">
|
|
37
|
+
<data type="string" rngui:label="ID"/>
|
|
38
|
+
</element>
|
|
39
|
+
<element name="source" rngui:label="Source">
|
|
40
|
+
<data type="string" rngui:label="Where does the sensor value come from?"/>
|
|
41
|
+
</element>
|
|
42
|
+
<element name="extractor_type" rngui:label="Extractor Type">
|
|
43
|
+
<choice>
|
|
44
|
+
<value rngui:label='Intrinsic'>intrinsic</value>
|
|
45
|
+
</choice>
|
|
46
|
+
</element>
|
|
47
|
+
<element name="extractor_code" rngui:label="Extractor Code" rngui:hint='For intrinsic & extrinsic data'>
|
|
48
|
+
<text rngui:label="Code"/>
|
|
49
|
+
</element>
|
|
50
|
+
<element name="extractor_url" rngui:label="Extractor Service" rngui:hint='For separate data'>
|
|
51
|
+
<data type="string" rngui:label="Service Url"/>
|
|
52
|
+
</element>
|
|
53
|
+
<element name="extractor_params" rngui:label="Extractor Service Arguments:">
|
|
54
|
+
<zeroOrMore rngui:label="Create Argument Pairs">
|
|
55
|
+
<element rngui:label="Name">
|
|
56
|
+
<anyName/>
|
|
57
|
+
<data type="string" rngui:label="Value / Json"/>
|
|
58
|
+
</element>
|
|
59
|
+
</zeroOrMore>
|
|
60
|
+
</element>
|
|
61
|
+
<element name="visualizer_url" rngui:label="Visualizer Url">
|
|
62
|
+
<data type="string" rngui:label="Service Url"/>
|
|
63
|
+
</element>
|
|
64
|
+
<element name="visualizer_params" rngui:label="Visualizer Arguments">
|
|
65
|
+
<zeroOrMore rngui:label="Create Argument Pairs">
|
|
66
|
+
<element rngui:label="Name">
|
|
67
|
+
<anyName/>
|
|
68
|
+
<data type="string" rngui:label="Value / Json"/>
|
|
69
|
+
</element>
|
|
70
|
+
</zeroOrMore>
|
|
71
|
+
</element>
|
|
72
|
+
</element>
|
|
73
|
+
</zeroOrMore>
|
|
74
|
+
</element>
|
|
75
|
+
|
|
76
|
+
</element>
|
|
77
|
+
</element>
|
|
23
78
|
</element>
|
|
@@ -52,6 +52,14 @@
|
|
|
52
52
|
</element>
|
|
53
53
|
</zeroOrMore>
|
|
54
54
|
</element>
|
|
55
|
+
<element name="_logging_behavior" rngui:header="Logging Behavior" rngui:fold="closed">
|
|
56
|
+
<element name="_exclude" rngui:label="Exclude from log">
|
|
57
|
+
<data type="boolean" rngui:label="Exclude from log"/>
|
|
58
|
+
</element>
|
|
59
|
+
<element name="_include" rngui:label="Include nested events">
|
|
60
|
+
<data type="boolean" rngui:label="Include nested events"/>
|
|
61
|
+
</element>
|
|
62
|
+
</element>
|
|
55
63
|
<element name="_timing" rngui:header="Timing" rngui:fold="closed">
|
|
56
64
|
<element name="_timing_weight" rngui:label="ω - Weight">
|
|
57
65
|
<data type="float" rngui:label="[0,1]"/>
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
</element>
|
|
45
45
|
</element>
|
|
46
46
|
<element name="code" rngui:header="Data Handling">
|
|
47
|
-
<element name="signal" rngui:label="Signal after
|
|
47
|
+
<element name="signal" rngui:label="Signal after finalize/update">
|
|
48
48
|
<data type="boolean" rngui:label="A signal is sent every time the activity changes a data object"/>
|
|
49
49
|
</element>
|
|
50
50
|
<element name="prepare" rngui:header="Prepare" rngui:label="Code" rngui:fold="closed_conditional">
|
|
@@ -78,6 +78,14 @@
|
|
|
78
78
|
</element>
|
|
79
79
|
</zeroOrMore>
|
|
80
80
|
</element>
|
|
81
|
+
<element name="_logging_behavior" rngui:header="Logging Behavior" rngui:fold="closed">
|
|
82
|
+
<element name="_exclude" rngui:label="Exclude from log">
|
|
83
|
+
<data type="boolean" rngui:label="Exclude from log"/>
|
|
84
|
+
</element>
|
|
85
|
+
<element name="_include" rngui:label="Include nested events">
|
|
86
|
+
<data type="boolean" rngui:label="Include nested events"/>
|
|
87
|
+
</element>
|
|
88
|
+
</element>
|
|
81
89
|
<element name="_timing" rngui:header="Timing" rngui:fold="closed">
|
|
82
90
|
<element name="_timing_weight" rngui:label="ω - Weight">
|
|
83
91
|
<data type="float" rngui:label="[0,1]"/>
|
|
@@ -19,4 +19,11 @@
|
|
|
19
19
|
<data type="nonNegativeInteger" rngui:label="Times"/>
|
|
20
20
|
</element>
|
|
21
21
|
</element>
|
|
22
|
+
<element name="_annotations" rngui:header="Annotations">
|
|
23
|
+
<element name="_logging_behavior" rngui:header="Logging Behavior" rngui:fold="closed">
|
|
24
|
+
<element name="_iteration" rngui:label="Log per iteration">
|
|
25
|
+
<data type="boolean" rngui:label="Log per iteration"/>
|
|
26
|
+
</element>
|
|
27
|
+
</element>
|
|
28
|
+
</element>
|
|
22
29
|
</element>
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<element xmlns="http://relaxng.org/ns/structure/1.0" xmlns:rngui="http://rngui.org" rngui:version="1.2" name="manipulate"
|
|
1
|
+
<element xmlns="http://relaxng.org/ns/structure/1.0" xmlns:rngui="http://rngui.org" rngui:version="1.2" name="manipulate" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes" ns="http://cpee.org/ns/description/1.0">
|
|
2
2
|
<attribute name="id" rngui:label="ID" rngui:default="javascript:get_free_id()">
|
|
3
3
|
<data type="string" rngui:readonly="true"/>
|
|
4
4
|
</attribute>
|
|
@@ -19,5 +19,60 @@
|
|
|
19
19
|
<value>#f57aa9</value>
|
|
20
20
|
</choice>
|
|
21
21
|
</attribute>
|
|
22
|
-
<
|
|
22
|
+
<element name="code" rngui:label="Script" rngui:header="Code">
|
|
23
|
+
<text rngui:label="Script that is executed"/>
|
|
24
|
+
</element>
|
|
25
|
+
<element name="annotations" rngui:header="Annotations">
|
|
26
|
+
<element name="_logging_behavior" rngui:header="Logging Behavior" rngui:fold="closed">
|
|
27
|
+
<element name="_exclude" rngui:label="Exclude from log">
|
|
28
|
+
<data type="boolean" rngui:label="Exclude from log"/>
|
|
29
|
+
</element>
|
|
30
|
+
</element>
|
|
31
|
+
<element name="_context_data_analysis" rngui:header="Context Data Analysis" rngui:hint="All data objects (written in this task and otherwise) can be consumed and transformed in data probes. All probes can be the basis for impact factors. Please go to start to define instance data probes.">
|
|
32
|
+
|
|
33
|
+
<element name="probes" rngui:header="Data Probes - Context Data Extraction" rngui:fold="closed_conditional">
|
|
34
|
+
<zeroOrMore rngui:label="Add Probe">
|
|
35
|
+
<element name="probe">
|
|
36
|
+
<element name="id" rngui:label="ID">
|
|
37
|
+
<data type="string" rngui:label="ID"/>
|
|
38
|
+
</element>
|
|
39
|
+
<element name="source" rngui:label="Source">
|
|
40
|
+
<data type="string" rngui:label="Where does the sensor value come from?"/>
|
|
41
|
+
</element>
|
|
42
|
+
<element name="extractor_type" rngui:label="Extractor Type">
|
|
43
|
+
<choice>
|
|
44
|
+
<value rngui:label='Intrinsic'>intrinsic</value>
|
|
45
|
+
</choice>
|
|
46
|
+
</element>
|
|
47
|
+
<element name="extractor_code" rngui:label="Extractor Code" rngui:hint='For intrinsic & extrinsic data'>
|
|
48
|
+
<text rngui:label="Code"/>
|
|
49
|
+
</element>
|
|
50
|
+
<element name="extractor_url" rngui:label="Extractor Service" rngui:hint='For separate data'>
|
|
51
|
+
<data type="string" rngui:label="Service Url"/>
|
|
52
|
+
</element>
|
|
53
|
+
<element name="extractor_params" rngui:label="Extractor Service Arguments:">
|
|
54
|
+
<zeroOrMore rngui:label="Create Argument Pairs">
|
|
55
|
+
<element rngui:label="Name">
|
|
56
|
+
<anyName/>
|
|
57
|
+
<data type="string" rngui:label="Value / Json"/>
|
|
58
|
+
</element>
|
|
59
|
+
</zeroOrMore>
|
|
60
|
+
</element>
|
|
61
|
+
<element name="visualizer_url" rngui:label="Visualizer Url">
|
|
62
|
+
<data type="string" rngui:label="Service Url"/>
|
|
63
|
+
</element>
|
|
64
|
+
<element name="visualizer_params" rngui:label="Visualizer Arguments">
|
|
65
|
+
<zeroOrMore rngui:label="Create Argument Pairs">
|
|
66
|
+
<element rngui:label="Name">
|
|
67
|
+
<anyName/>
|
|
68
|
+
<data type="string" rngui:label="Value / Json"/>
|
|
69
|
+
</element>
|
|
70
|
+
</zeroOrMore>
|
|
71
|
+
</element>
|
|
72
|
+
</element>
|
|
73
|
+
</zeroOrMore>
|
|
74
|
+
</element>
|
|
75
|
+
|
|
76
|
+
</element>
|
|
77
|
+
</element>
|
|
23
78
|
</element>
|
data/cockpit/track.html
CHANGED
|
@@ -56,11 +56,11 @@
|
|
|
56
56
|
<script type="text/javascript" src="js/parameters.js"></script>
|
|
57
57
|
<script type="text/javascript" src="js/track.js"></script>
|
|
58
58
|
<script type="text/javascript" src="js/modifiers.js"></script>
|
|
59
|
-
<script type="text/javascript" src="js/
|
|
59
|
+
<script type="text/javascript" src="js/extended_columns.js"></script>
|
|
60
60
|
<script type="text/javascript" src="themes/base.js"></script>
|
|
61
61
|
<link rel="stylesheet" href="css/ui.css" type="text/css"/>
|
|
62
|
-
<link rel="stylesheet" href="css/
|
|
63
|
-
<link rel="stylesheet" href="css/
|
|
62
|
+
<link rel="stylesheet" href="css/extended_columns-label.css" type="text/css"/>
|
|
63
|
+
<link rel="stylesheet" href="css/extended_columns-svg.css" type="text/css" data-include-export="true"/>
|
|
64
64
|
<link rel="stylesheet" href="css/track.css" type="text/css"/>
|
|
65
65
|
</head>
|
|
66
66
|
<body data-base-port="8298" data-res-port="9303" data-theme-base="themes" is="x-ui-">
|
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.96"
|
|
4
4
|
s.platform = Gem::Platform::RUBY
|
|
5
5
|
s.license = "LGPL-3.0-or-later"
|
|
6
6
|
s.summary = "The 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
|
@@ -117,7 +117,7 @@ module CPEE
|
|
|
117
117
|
Dir[File.join(opts[:global_executionhandlers],'*','execution.rb')].each do |h|
|
|
118
118
|
require h
|
|
119
119
|
end unless opts[:global_executionhandlers].nil? || opts[:global_executionhandlers].strip == ''
|
|
120
|
-
Dir[File.join(opts[:executionhandlers],'
|
|
120
|
+
Dir[File.join(opts[:executionhandlers],'**','execution.rb')].each do |h|
|
|
121
121
|
require h
|
|
122
122
|
end unless opts[:executionhandlers].nil? || opts[:executionhandlers].strip == ''
|
|
123
123
|
CPEE::Message::set_workers(opts[:workers])
|
|
@@ -316,34 +316,12 @@ module CPEE
|
|
|
316
316
|
|
|
317
317
|
doc = XML::Smart::string(@p[0].value.read)
|
|
318
318
|
doc.register_namespace 'p', 'http://cpee.org/ns/properties/2.0'
|
|
319
|
-
doc.register_namespace '
|
|
319
|
+
doc.register_namespace 'np', 'http://riddl.org/ns/common-patterns/notifications-producer/2.0'
|
|
320
320
|
|
|
321
321
|
name = doc.find('string(/*/p:attributes/p:info)')
|
|
322
322
|
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
subscriptions = []
|
|
326
|
-
(doc.find('/*/sub:subscriptions/sub:subscription') rescue []).each do |s|
|
|
327
|
-
sub = []
|
|
328
|
-
unless sub[0] = s.attributes['id']
|
|
329
|
-
sub[0] = Digest::MD5.hexdigest(Kernel::rand().to_s)
|
|
330
|
-
end
|
|
331
|
-
|
|
332
|
-
unless sub[1] = s.attributes['url']
|
|
333
|
-
raise "no url"
|
|
334
|
-
end
|
|
335
|
-
|
|
336
|
-
sub[2] = []
|
|
337
|
-
s.find('sub:topic').each do |t|
|
|
338
|
-
%w(event vote).each do |type|
|
|
339
|
-
t.find('sub:' + type).each do |e|
|
|
340
|
-
sub[2] << File.join(t.attributes['id'],type,e.text)
|
|
341
|
-
end
|
|
342
|
-
end
|
|
343
|
-
end
|
|
344
|
-
|
|
345
|
-
CPEE::Persistence::set_handler(id,opts,*sub)
|
|
346
|
-
end
|
|
323
|
+
subs = (doc.find('/*/np:subscriptions/np:subscription') rescue []).to_a
|
|
324
|
+
id, uuid = NewInstance::create(opts,redis,name,subs,doc)
|
|
347
325
|
|
|
348
326
|
content = {
|
|
349
327
|
:state => 'ready',
|
|
@@ -372,7 +350,19 @@ module CPEE
|
|
|
372
350
|
File.join(*ret.reverse)
|
|
373
351
|
end
|
|
374
352
|
|
|
375
|
-
def self::
|
|
353
|
+
def self::sub(multi,id,doc,key)
|
|
354
|
+
doc.register_namespace 'np', 'http://riddl.org/ns/common-patterns/notifications-producer/2.0'
|
|
355
|
+
url = doc.find('string(/np:subscription/@url)')
|
|
356
|
+
multi.sadd(CPEE::Persistence::obj + ":#{id}/handlers",key)
|
|
357
|
+
multi.set(CPEE::Persistence::obj + ":#{id}/handlers/#{key}/url",url)
|
|
358
|
+
doc.find('/np:subscription/np:topic/*').each do |e|
|
|
359
|
+
c = File.join(e.parent.attributes['id'],e.qname.name,e.text)
|
|
360
|
+
multi.sadd(CPEE::Persistence::obj + ":#{id}/handlers/#{key}",c)
|
|
361
|
+
multi.sadd(CPEE::Persistence::obj + ":#{id}/handlers/#{c}",key)
|
|
362
|
+
end
|
|
363
|
+
end
|
|
364
|
+
|
|
365
|
+
def self::create(opts,redis,name,subs,doc=nil)
|
|
376
366
|
doc = XML::Smart::open_unprotected(opts[:properties_init]) if doc.nil?
|
|
377
367
|
doc.register_namespace 'p', 'http://cpee.org/ns/properties/2.0'
|
|
378
368
|
id = CPEE::Persistence::new_object(opts)
|
|
@@ -399,18 +389,15 @@ module CPEE
|
|
|
399
389
|
end
|
|
400
390
|
Dir[File.join(opts[:notifications_init],'*','subscription.xml')].each do |f|
|
|
401
391
|
XML::Smart::open_unprotected(f) do |doc|
|
|
402
|
-
doc
|
|
403
|
-
key = File.basename(File.dirname(f))
|
|
404
|
-
url = doc.find('string(/np:subscription/@url)')
|
|
405
|
-
multi.sadd(CPEE::Persistence::obj + ":#{id}/handlers",key)
|
|
406
|
-
multi.set(CPEE::Persistence::obj + ":#{id}/handlers/#{key}/url",url)
|
|
407
|
-
doc.find('/np:subscription/np:topic/*').each do |e|
|
|
408
|
-
c = File.join(e.parent.attributes['id'],e.qname.name,e.text)
|
|
409
|
-
multi.sadd(CPEE::Persistence::obj + ":#{id}/handlers/#{key}",c)
|
|
410
|
-
multi.sadd(CPEE::Persistence::obj + ":#{id}/handlers/#{c}",key)
|
|
411
|
-
end
|
|
392
|
+
NewInstance::sub(multi,id,doc,File.basename(File.dirname(f)))
|
|
412
393
|
end rescue nil # all the ones that are not ok, are ignored
|
|
413
394
|
end
|
|
395
|
+
subs.each do |s|
|
|
396
|
+
begin
|
|
397
|
+
NewInstance::sub(multi,id,s.to_doc,s.attributes['id'] || Digest::MD5.hexdigest(Kernel::rand().to_s))
|
|
398
|
+
end
|
|
399
|
+
end
|
|
400
|
+
|
|
414
401
|
multi.set(File.join(instance, 'attributes', 'uuid'), uuid)
|
|
415
402
|
multi.zadd(File.join(instance, 'attributes'), -2, 'uuid')
|
|
416
403
|
multi.set(File.join(instance, 'attributes', 'info'), name)
|
|
@@ -426,7 +413,7 @@ module CPEE
|
|
|
426
413
|
redis = opts[:redis]
|
|
427
414
|
name = @p[0].value
|
|
428
415
|
|
|
429
|
-
id, uuid = NewInstance::create(opts,redis,name)
|
|
416
|
+
id, uuid = NewInstance::create(opts,redis,name,[])
|
|
430
417
|
content = {
|
|
431
418
|
:state => 'ready',
|
|
432
419
|
:attributes => CPEE::Persistence::extract_list(id,opts,'attributes').to_h
|
|
@@ -221,7 +221,8 @@ class ConnectionWrapper < WEEL::ConnectionWrapperBase
|
|
|
221
221
|
@label = parameters[:label]
|
|
222
222
|
@anno = parameters.delete(:annotations) rescue nil
|
|
223
223
|
@controller.notify("status/resource_utilization", :mib => GetProcessMem.new.mb, **Process.times.to_h)
|
|
224
|
-
@controller.notify("activity/calling", :ecid => Thread.current.__id__, :'activity-uuid' => @handler_activity_uuid, :label => @label, :activity => @handler_position, :passthrough => passthrough, :endpoint => @handler_endpoint, :parameters => parameters
|
|
224
|
+
@controller.notify("activity/calling", :ecid => Thread.current.__id__, :'activity-uuid' => @handler_activity_uuid, :label => @label, :activity => @handler_position, :passthrough => passthrough, :endpoint => @handler_endpoint, :parameters => parameters)
|
|
225
|
+
@controller.notify("activity/annotation", :ecid => Thread.current.__id__, :'activity-uuid' => @handler_activity_uuid, :label => @label, :activity => @handler_position, :annotations => @anno)
|
|
225
226
|
if passthrough.to_s.empty?
|
|
226
227
|
proto_curl parameters
|
|
227
228
|
else
|
|
@@ -231,6 +232,8 @@ class ConnectionWrapper < WEEL::ConnectionWrapperBase
|
|
|
231
232
|
end # }}}
|
|
232
233
|
def activity_manipulate_handle(parameters) #{{{
|
|
233
234
|
@label = parameters[:label]
|
|
235
|
+
@anno = parameters.delete(:annotations) rescue nil
|
|
236
|
+
@controller.notify("activity/annotation", :ecid => Thread.current.__id__, :'activity-uuid' => @handler_activity_uuid, :label => @label, :activity => @handler_position, :annotations => @anno)
|
|
234
237
|
end #}}}
|
|
235
238
|
|
|
236
239
|
def activity_result_value # {{{
|
|
@@ -269,7 +272,7 @@ class ConnectionWrapper < WEEL::ConnectionWrapperBase
|
|
|
269
272
|
end # }}}
|
|
270
273
|
def inform_manipulate_change(status,changed_dataelements,changed_endpoints,dataelements,endpoints) # {{{
|
|
271
274
|
unless status.nil?
|
|
272
|
-
@controller.notify("status/change", :ecid => Thread.current.__id__, :'activity-uuid' => @handler_activity_uuid, :endpoint => @handler_endpoint, :label => @label, :activity => @handler_position, :id => status.id, :message => status.message)
|
|
275
|
+
@controller.notify("status/change", :ecid => Thread.current.__id__, :'activity-uuid' => @handler_activity_uuid, :endpoint => @handler_endpoint, :label => @label, :activity => @handler_position, :data => { :id => status.id, :message => status.message } )
|
|
273
276
|
end
|
|
274
277
|
unless changed_dataelements.nil? || changed_dataelements.empty?
|
|
275
278
|
de = dataelements.slice(*changed_dataelements).transform_values { |v| enc = CPEE::EvalRuby::Translation::detect_encoding(v); (enc == 'OTHER' ? v : (v.encode('UTF-8',enc) rescue CPEE::EvalRuby::Translation::convert_to_base64(v))) }
|
|
@@ -295,7 +298,7 @@ class ConnectionWrapper < WEEL::ConnectionWrapperBase
|
|
|
295
298
|
nil
|
|
296
299
|
end
|
|
297
300
|
|
|
298
|
-
@controller.notify("activity/receiving", :ecid => Thread.current.__id__, :'activity-uuid' => @handler_activity_uuid, :label => @label, :activity => @handler_position, :endpoint => @handler_endpoint, :received => recv
|
|
301
|
+
@controller.notify("activity/receiving", :ecid => Thread.current.__id__, :'activity-uuid' => @handler_activity_uuid, :label => @label, :activity => @handler_position, :endpoint => @handler_endpoint, :received => recv)
|
|
299
302
|
|
|
300
303
|
@guard_files += result
|
|
301
304
|
@guard_files += ret
|
|
@@ -430,6 +433,7 @@ class ConnectionWrapper < WEEL::ConnectionWrapperBase
|
|
|
430
433
|
recv = 'false' unless recv
|
|
431
434
|
recv = (recv == 'false' || recv == 'null' || recv == 'nil' || recv == false ? false : true)
|
|
432
435
|
@controller.notify("gateway/decide", :ecid => Thread.current.__id__, :instance_uuid => @controller.uuid, :code => code, :condition => recv)
|
|
436
|
+
@controller.notify("gateway/annotation", :ecid => Thread.current.__id__, :'activity-uuid' => @handler_activity_uuid, :label => @label, :activity => @handler_position, :annotations => {})
|
|
433
437
|
recv
|
|
434
438
|
end #}}}
|
|
435
439
|
def manipulate(readonly,lock,dataelements,endpoints,status,local,additional,code,where,result=nil,options=nil) #{{{
|
|
@@ -718,7 +718,7 @@
|
|
|
718
718
|
</xsl:template>
|
|
719
719
|
<xsl:template name="print-mcontent">
|
|
720
720
|
<xsl:param name="myspace"/>
|
|
721
|
-
<xsl:if test="text()">
|
|
721
|
+
<xsl:if test="d:code/text()">
|
|
722
722
|
<xsl:choose>
|
|
723
723
|
<xsl:when test="@language='application/x-ruby'">
|
|
724
724
|
<xsl:text> do </xsl:text>
|
|
@@ -732,7 +732,7 @@
|
|
|
732
732
|
<xsl:text>, <<-END</xsl:text>
|
|
733
733
|
</xsl:otherwise>
|
|
734
734
|
</xsl:choose>
|
|
735
|
-
<xsl:for-each select="str:tokenize(text(), '
')">
|
|
735
|
+
<xsl:for-each select="str:tokenize(d:code/text(), '
')">
|
|
736
736
|
<xsl:value-of select="concat('
',concat(str:padding($myspace+$myspacemultiplier+$myspacemultiplier),str:replace(str:replace(str:replace(string(.),'\','\\'),'"','\"'),'#','\#')))" />
|
|
737
737
|
</xsl:for-each>
|
|
738
738
|
<xsl:call-template name="print-newline"/>
|
data/server/routing/end.pid
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
2372948
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
2372966
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
2372972
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
2372978
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
2372984
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
2372990
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
2372996
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
2373002
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
2372960
|
data/server/routing/persist.pid
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
2372954
|