cpee 2.0.24 → 2.0.25

Sign up to get free protection for your applications and to get access to all the features.
Files changed (98) hide show
  1. checksums.yaml +4 -4
  2. data/cockpit/{templates/.CPEE.xml → CPEE.xml} +1 -1
  3. data/cockpit/{templates/.Signavio.xml → Signavio.xml} +1 -1
  4. data/cockpit/css/model.css +1 -1
  5. data/cockpit/css/ui.css +3 -1
  6. data/cockpit/edit.html +260 -0
  7. data/cockpit/index.html +0 -2
  8. data/cockpit/js/edit.js +32 -0
  9. data/cockpit/js/instance.js +28 -19
  10. data/cockpit/js/model.js +0 -25
  11. data/cockpit/js/parameters.js +3 -0
  12. data/cockpit/js/ui.js +7 -0
  13. data/cockpit/model.html +1 -0
  14. data/cockpit/themes/compact/rngs/call.rng +26 -1
  15. data/cockpit/themes/compact/rngs/callmanipulate.rng +32 -2
  16. data/cockpit/themes/compact/theme.js +57 -25
  17. data/cockpit/themes/control/rngs/call.rng +26 -1
  18. data/cockpit/themes/control/rngs/callmanipulate.rng +32 -2
  19. data/cockpit/themes/control/theme.js +50 -19
  20. data/cockpit/themes/default/rngs/call.rng +26 -1
  21. data/cockpit/themes/default/rngs/callmanipulate.rng +32 -2
  22. data/cockpit/themes/default/theme.js +49 -18
  23. data/cockpit/themes/extended/rngs/call.rng +26 -1
  24. data/cockpit/themes/extended/rngs/callmanipulate.rng +32 -2
  25. data/cockpit/themes/extended/theme.js +50 -19
  26. data/cockpit/themes/model/rngs/call.rng +21 -20
  27. data/cockpit/themes/model/rngs/callmanipulate.rng +23 -22
  28. data/cockpit/themes/model/theme.js +51 -20
  29. data/cockpit/themes/packed/rngs/call.rng +26 -1
  30. data/cockpit/themes/packed/rngs/callmanipulate.rng +32 -2
  31. data/cockpit/themes/packed/theme.js +50 -19
  32. data/cockpit/themes/preset/rngs/call.rng +26 -1
  33. data/cockpit/themes/preset/rngs/callmanipulate.rng +32 -2
  34. data/cockpit/themes/preset/theme.js +49 -18
  35. data/cockpit/{templates/.transformations.xml → transformations.xml} +0 -0
  36. data/cpee.gemspec +1 -1
  37. data/lib/callbacks.xml +5 -0
  38. data/lib/cpee/controller.rb +29 -27
  39. data/lib/cpee/implementation_callbacks.rb +53 -0
  40. data/server/handlerwrappers/default.rb +15 -3
  41. data/server/resources/transformation_dslx.xsl +1 -1
  42. data/server/routing/end.pid +1 -1
  43. data/server/routing/forward-events.pid +1 -1
  44. data/server/routing/forward-votes.pid +1 -1
  45. data/server/routing/persist.pid +1 -1
  46. data/server/routing/persist.rb +3 -3
  47. data/server/server.pid +1 -1
  48. metadata +6 -54
  49. data/cockpit/edit.html +0 -1
  50. data/cockpit/templates/.templates.xml +0 -13
  51. data/cockpit/themes/diana/rngs/alternative.rng +0 -25
  52. data/cockpit/themes/diana/rngs/call.rng +0 -149
  53. data/cockpit/themes/diana/rngs/callmanipulate.rng +0 -188
  54. data/cockpit/themes/diana/rngs/choose.rng +0 -14
  55. data/cockpit/themes/diana/rngs/closed_loop.rng +0 -62
  56. data/cockpit/themes/diana/rngs/closed_loop_cancel.rng +0 -5
  57. data/cockpit/themes/diana/rngs/closed_loop_control.rng +0 -31
  58. data/cockpit/themes/diana/rngs/closed_loop_measuring.rng +0 -12
  59. data/cockpit/themes/diana/rngs/critical.rng +0 -5
  60. data/cockpit/themes/diana/rngs/escape.rng +0 -1
  61. data/cockpit/themes/diana/rngs/group.rng +0 -3
  62. data/cockpit/themes/diana/rngs/loop.rng +0 -22
  63. data/cockpit/themes/diana/rngs/manipulate.rng +0 -9
  64. data/cockpit/themes/diana/rngs/otherwise.rng +0 -22
  65. data/cockpit/themes/diana/rngs/parallel.rng +0 -21
  66. data/cockpit/themes/diana/rngs/parallel_branch.rng +0 -8
  67. data/cockpit/themes/diana/rngs/scripts.rng +0 -23
  68. data/cockpit/themes/diana/rngs/stop.rng +0 -5
  69. data/cockpit/themes/diana/rngs/terminate.rng +0 -1
  70. data/cockpit/themes/diana/symbols/alternative.svg +0 -5
  71. data/cockpit/themes/diana/symbols/arrow.svg +0 -3
  72. data/cockpit/themes/diana/symbols/call.svg +0 -6
  73. data/cockpit/themes/diana/symbols/callmanipulate.svg +0 -8
  74. data/cockpit/themes/diana/symbols/choose.svg +0 -5
  75. data/cockpit/themes/diana/symbols/choose_exclusive.svg +0 -5
  76. data/cockpit/themes/diana/symbols/choose_inclusive.svg +0 -4
  77. data/cockpit/themes/diana/symbols/closed_loop.svg +0 -5
  78. data/cockpit/themes/diana/symbols/closed_loop_cancel.svg +0 -5
  79. data/cockpit/themes/diana/symbols/closed_loop_control.svg +0 -5
  80. data/cockpit/themes/diana/symbols/closed_loop_measuring.svg +0 -6
  81. data/cockpit/themes/diana/symbols/complex.svg +0 -8
  82. data/cockpit/themes/diana/symbols/critical.svg +0 -4
  83. data/cockpit/themes/diana/symbols/end.svg +0 -3
  84. data/cockpit/themes/diana/symbols/escape.svg +0 -5
  85. data/cockpit/themes/diana/symbols/event_end.svg +0 -3
  86. data/cockpit/themes/diana/symbols/loop.svg +0 -5
  87. data/cockpit/themes/diana/symbols/manipulate.svg +0 -4
  88. data/cockpit/themes/diana/symbols/otherwise.svg +0 -5
  89. data/cockpit/themes/diana/symbols/parallel.svg +0 -5
  90. data/cockpit/themes/diana/symbols/parallel_branch.svg +0 -5
  91. data/cockpit/themes/diana/symbols/parallel_branch_compact.svg +0 -4
  92. data/cockpit/themes/diana/symbols/parallel_branch_event.svg +0 -14
  93. data/cockpit/themes/diana/symbols/parallel_branch_normal.svg +0 -5
  94. data/cockpit/themes/diana/symbols/scripts.svg +0 -4
  95. data/cockpit/themes/diana/symbols/start.svg +0 -3
  96. data/cockpit/themes/diana/symbols/stop.svg +0 -5
  97. data/cockpit/themes/diana/symbols/terminate.svg +0 -4
  98. data/cockpit/themes/diana/theme.js +0 -1650
@@ -97,7 +97,7 @@
97
97
  </element>
98
98
 
99
99
  </element>
100
- <element name="report" rngui:header="Reporting Annotation" rngui:fold="closed">
100
+ <element name="report" rngui:header="Reporting" rngui:fold="closed">
101
101
  <element name="url" rngui:label='HTML Snippet'>
102
102
  <data type="string" rngui:label="url to report snippet"/>
103
103
  </element>
@@ -146,4 +146,29 @@
146
146
  </element>
147
147
  </element>
148
148
  </element>
149
+ <element name="input" rngui:header="Input Arguments Documentation" rngui:fold="closed">
150
+ <zeroOrMore rngui:label="Create Argument">
151
+ <element name="item" rngui:label="Description">
152
+ <attribute name="label" rngui:label="Name">
153
+ <data type="string"/>
154
+ </attribute>
155
+ <text rngui:wrap="true" rngui:label="What does it do?"/>
156
+ </element>
157
+ </zeroOrMore>
158
+ </element>
159
+ <element name="output" rngui:header="Output Elements Documentation" rngui:fold="closed">
160
+ <zeroOrMore rngui:label="Create Element">
161
+ <element name="item" rngui:label="Description">
162
+ <attribute name="label" rngui:label="Name">
163
+ <data type="string"/>
164
+ </attribute>
165
+ <text rngui:wrap="true" rngui:label="What does it do?"/>
166
+ </element>
167
+ </zeroOrMore>
168
+ </element>
169
+ <element name="implementation" rngui:header="Implementation Documentation" rngui:fold="closed">
170
+ <element name="description" rngui:label="Description">
171
+ <text rngui:wrap="true" rngui:label="What is supposed to happen?"/>
172
+ </element>
173
+ </element>
149
174
  </element>
@@ -113,13 +113,13 @@
113
113
  </element>
114
114
 
115
115
  </element>
116
- <element name="report" rngui:header="Reporting Annotation" rngui:fold="closed">
116
+ <element name="report" rngui:header="Reporting" rngui:fold="closed">
117
117
  <element name="url" rngui:label='HTML Snippet'>
118
118
  <data type="string" rngui:label="url to report snippet"/>
119
119
  </element>
120
120
  </element>
121
121
  </element>
122
- <element name="code" rngui:header="Implementation">
122
+ <element name="code" rngui:header="Output Handling">
123
123
  <element name="prepare" rngui:header="Prepare" rngui:label="Code" rngui:fold="closed_conditional">
124
124
  <text rngui:label="Script that is executed, before a service call"/>
125
125
  </element>
@@ -185,4 +185,34 @@
185
185
  </element>
186
186
  </element>
187
187
  </element>
188
+ <element name="input" rngui:header="Input Arguments Documentation" rngui:fold="closed">
189
+ <zeroOrMore rngui:label="Create Argument">
190
+ <element name="item" rngui:label="Description">
191
+ <attribute name="label" rngui:label="Name">
192
+ <data type="string"/>
193
+ </attribute>
194
+ <text rngui:wrap="true" rngui:label="What does it do?"/>
195
+ </element>
196
+ </zeroOrMore>
197
+ </element>
198
+ <element name="output" rngui:header="Output Elements Documentation" rngui:fold="closed">
199
+ <zeroOrMore rngui:label="Create Element">
200
+ <element name="item" rngui:label="Description">
201
+ <attribute name="label" rngui:label="Name">
202
+ <data type="string"/>
203
+ </attribute>
204
+ <text rngui:wrap="true" rngui:label="What does it do?"/>
205
+ </element>
206
+ </zeroOrMore>
207
+ </element>
208
+ <element name="implementation" rngui:header="Implementation Documentation" rngui:fold="closed">
209
+ <element name="description" rngui:label="Description">
210
+ <text rngui:wrap="true" rngui:label="What is supposed to happen?"/>
211
+ </element>
212
+ </element>
213
+ <element name="code" rngui:header="Output Handling Documentation" rngui:fold="closed">
214
+ <element name="description" rngui:label="Description">
215
+ <text rngui:wrap="true" rngui:label="Which output elements are important? How to transform and save them?"/>
216
+ </element>
217
+ </element>
188
218
  </element>
@@ -49,6 +49,16 @@ function WFAdaptorManifestation(adaptor) {
49
49
  });
50
50
  return svgid;
51
51
  }; //}}}
52
+ //{{{ Return the json for all marked tasks
53
+ this.marked_text = function(){
54
+ var nodes = [];
55
+ var markymark = _.uniq(self.marked());
56
+ $(markymark).each(function(key,svgid){
57
+ var node = self.adaptor.description.get_node_by_svg_id(svgid);
58
+ nodes.push($(node).serializePrettyXML());
59
+ });
60
+ return JSON.stringify(nodes);
61
+ }; //}}}
52
62
  //{{{ Render the details from rng (right hand side of graph tab)
53
63
  this.update_details = function(svgid){
54
64
  var tab = $('#dat_details');
@@ -76,35 +86,46 @@ function WFAdaptorManifestation(adaptor) {
76
86
  }; //}}}
77
87
 
78
88
  function copyOrMove(menu,group,xml_node,mode) { //{{{
79
- var markymark = _.uniq(self.marked());
89
+ var nodes = localStorage.getItem('marked');
90
+
91
+ if (typeof(nodes) != "string") { return; }
92
+
93
+ nodes = JSON.parse(nodes);
94
+ $(nodes).each(function(key,str) {
95
+ nodes[key] = $X(str);;
96
+ });
97
+
80
98
  var check1 = [];
81
99
  var check2 = [];
82
- $(markymark).each(function(key,svgid){
83
- var node = self.adaptor.description.get_node_by_svg_id(svgid);
100
+ $(nodes).each(function(key,node){
84
101
  check1.push($(node).attr('svg-type'));
85
102
  });
86
103
  $(group).each(function(key,value){
87
104
  check2.push(value.type);
88
105
  });
89
106
 
90
- if (markymark.length > 0 && _.uniq(check1).length == _.intersection(check1,check2).length) {
91
- var nodes = [];
92
- $(markymark).each(function(key,svgid){
93
- var node = self.adaptor.description.get_node_by_svg_id(svgid);
94
- nodes.unshift(node);
95
- });
96
-
107
+ if (nodes.length > 0 && _.uniq(check1).length == _.intersection(check1,check2).length) {
108
+ if (myid == localStorage.getItem('marked_from')) {
109
+ $(nodes).each(function(key,node){
110
+ nodes[key] = self.adaptor.description.get_node_by_svg_id($(node).attr('svg-id'));
111
+ });
112
+ }
113
+ nodes.reverse();
97
114
  var iconm = self.resources['arrow'].clone();
98
115
  var iconc = self.resources['arrow'].clone();
99
116
  iconm.children('.rfill').addClass('menu');
117
+ if (myid == localStorage.getItem('marked_from')) {
118
+ menu.push(
119
+ {
120
+ 'label': '<em>Move Marked Elements</em>',
121
+ 'function_call': mode,
122
+ 'menu_icon': iconm,
123
+ 'type': undefined,
124
+ 'params': [nodes, xml_node]
125
+ }
126
+ );
127
+ }
100
128
  menu.push(
101
- {
102
- 'label': '<em>Move Marked Elements</em>',
103
- 'function_call': mode,
104
- 'menu_icon': iconm,
105
- 'type': undefined,
106
- 'params': [nodes, xml_node]
107
- },
108
129
  {
109
130
  'label': '<em>Copy Marked Elements</em>',
110
131
  'function_call': mode,
@@ -223,10 +244,20 @@ function WFAdaptorManifestation(adaptor) {
223
244
  tab.empty();
224
245
  var vtarget = self.adaptor.illustrator.get_node_by_svg_id(svgid);
225
246
  if (vtarget.length > 0) {
226
- vtarget.parents('g.element[element-id]').toggleClass('marked');
247
+ var vt = vtarget.parents('g.element[element-id]');
248
+ vt.toggleClass('marked');
249
+ if (vt.hasClass('marked')) {
250
+ localStorage.setItem('marked',self.marked_text());
251
+ localStorage.setItem('marked_from',myid);
252
+ } else {
253
+ localStorage.removeItem('marked');
254
+ localStorage.removeItem('marked_from');
255
+ }
227
256
  }
228
257
  } else {
229
258
  self.adaptor.illustrator.get_elements().removeClass('marked');
259
+ localStorage.removeItem('marked');
260
+ localStorage.removeItem('marked_from');
230
261
 
231
262
  var vtarget = self.adaptor.illustrator.get_node_by_svg_id(svgid);
232
263
  if (vtarget.length > 0) {
@@ -97,7 +97,7 @@
97
97
  </element>
98
98
 
99
99
  </element>
100
- <element name="report" rngui:header="Reporting Annotation" rngui:fold="closed">
100
+ <element name="report" rngui:header="Reporting" rngui:fold="closed">
101
101
  <element name="url" rngui:label='HTML Snippet'>
102
102
  <data type="string" rngui:label="url to report snippet"/>
103
103
  </element>
@@ -146,4 +146,29 @@
146
146
  </element>
147
147
  </element>
148
148
  </element>
149
+ <element name="input" rngui:header="Input Arguments Documentation" rngui:fold="closed">
150
+ <zeroOrMore rngui:label="Create Argument">
151
+ <element name="item" rngui:label="Description">
152
+ <attribute name="label" rngui:label="Name">
153
+ <data type="string"/>
154
+ </attribute>
155
+ <text rngui:wrap="true" rngui:label="What does it do?"/>
156
+ </element>
157
+ </zeroOrMore>
158
+ </element>
159
+ <element name="output" rngui:header="Output Elements Documentation" rngui:fold="closed">
160
+ <zeroOrMore rngui:label="Create Element">
161
+ <element name="item" rngui:label="Description">
162
+ <attribute name="label" rngui:label="Name">
163
+ <data type="string"/>
164
+ </attribute>
165
+ <text rngui:wrap="true" rngui:label="What does it do?"/>
166
+ </element>
167
+ </zeroOrMore>
168
+ </element>
169
+ <element name="implementation" rngui:header="Implementation Documentation" rngui:fold="closed">
170
+ <element name="description" rngui:label="Description">
171
+ <text rngui:wrap="true" rngui:label="What is supposed to happen?"/>
172
+ </element>
173
+ </element>
149
174
  </element>
@@ -113,13 +113,13 @@
113
113
  </element>
114
114
 
115
115
  </element>
116
- <element name="report" rngui:header="Reporting Annotation" rngui:fold="closed">
116
+ <element name="report" rngui:header="Reporting" rngui:fold="closed">
117
117
  <element name="url" rngui:label='HTML Snippet'>
118
118
  <data type="string" rngui:label="url to report snippet"/>
119
119
  </element>
120
120
  </element>
121
121
  </element>
122
- <element name="code" rngui:header="Implementation">
122
+ <element name="code" rngui:header="Output Handling">
123
123
  <element name="prepare" rngui:header="Prepare" rngui:label="Code" rngui:fold="closed_conditional">
124
124
  <text rngui:label="Script that is executed, before a service call"/>
125
125
  </element>
@@ -185,4 +185,34 @@
185
185
  </element>
186
186
  </element>
187
187
  </element>
188
+ <element name="input" rngui:header="Input Arguments Documentation" rngui:fold="closed">
189
+ <zeroOrMore rngui:label="Create Argument">
190
+ <element name="item" rngui:label="Description">
191
+ <attribute name="label" rngui:label="Name">
192
+ <data type="string"/>
193
+ </attribute>
194
+ <text rngui:wrap="true" rngui:label="What does it do?"/>
195
+ </element>
196
+ </zeroOrMore>
197
+ </element>
198
+ <element name="output" rngui:header="Output Elements Documentation" rngui:fold="closed">
199
+ <zeroOrMore rngui:label="Create Element">
200
+ <element name="item" rngui:label="Description">
201
+ <attribute name="label" rngui:label="Name">
202
+ <data type="string"/>
203
+ </attribute>
204
+ <text rngui:wrap="true" rngui:label="What does it do?"/>
205
+ </element>
206
+ </zeroOrMore>
207
+ </element>
208
+ <element name="implementation" rngui:header="Implementation Documentation" rngui:fold="closed">
209
+ <element name="description" rngui:label="Description">
210
+ <text rngui:wrap="true" rngui:label="What is supposed to happen?"/>
211
+ </element>
212
+ </element>
213
+ <element name="code" rngui:header="Output Handling Documentation" rngui:fold="closed">
214
+ <element name="description" rngui:label="Description">
215
+ <text rngui:wrap="true" rngui:label="Which output elements are important? How to transform and save them?"/>
216
+ </element>
217
+ </element>
188
218
  </element>
@@ -49,6 +49,16 @@ function WFAdaptorManifestation(adaptor) {
49
49
  });
50
50
  return svgid;
51
51
  }; //}}}
52
+ //{{{ Return the json for all marked tasks
53
+ this.marked_text = function(){
54
+ var nodes = [];
55
+ var markymark = _.uniq(self.marked());
56
+ $(markymark).each(function(key,svgid){
57
+ var node = self.adaptor.description.get_node_by_svg_id(svgid);
58
+ nodes.push($(node).serializePrettyXML());
59
+ });
60
+ return JSON.stringify(nodes);
61
+ }; //}}}
52
62
  //{{{ Render the details from rng (right hand side of graph tab)
53
63
  this.update_details = function(svgid){
54
64
  var tab = $('#dat_details');
@@ -76,35 +86,46 @@ function WFAdaptorManifestation(adaptor) {
76
86
  }; //}}}
77
87
 
78
88
  function copyOrMove(menu,group,xml_node,mode) { //{{{
79
- var markymark = _.uniq(self.marked());
89
+ var nodes = localStorage.getItem('marked');
90
+
91
+ if (typeof(nodes) != "string") { return; }
92
+
93
+ nodes = JSON.parse(nodes);
94
+ $(nodes).each(function(key,str) {
95
+ nodes[key] = $X(str);;
96
+ });
97
+
80
98
  var check1 = [];
81
99
  var check2 = [];
82
- $(markymark).each(function(key,svgid){
83
- var node = self.adaptor.description.get_node_by_svg_id(svgid);
100
+ $(nodes).each(function(key,node){
84
101
  check1.push($(node).attr('svg-type'));
85
102
  });
86
103
  $(group).each(function(key,value){
87
104
  check2.push(value.type);
88
105
  });
89
106
 
90
- if (markymark.length > 0 && _.uniq(check1).length == _.intersection(check1,check2).length) {
91
- var nodes = [];
92
- $(markymark).each(function(key,svgid){
93
- var node = self.adaptor.description.get_node_by_svg_id(svgid);
94
- nodes.unshift(node);
95
- });
96
-
107
+ if (nodes.length > 0 && _.uniq(check1).length == _.intersection(check1,check2).length) {
108
+ if (myid == localStorage.getItem('marked_from')) {
109
+ $(nodes).each(function(key,node){
110
+ nodes[key] = self.adaptor.description.get_node_by_svg_id($(node).attr('svg-id'));
111
+ });
112
+ }
113
+ nodes.reverse();
97
114
  var iconm = self.resources['arrow'].clone();
98
115
  var iconc = self.resources['arrow'].clone();
99
116
  iconm.children('.rfill').addClass('menu');
117
+ if (myid == localStorage.getItem('marked_from')) {
118
+ menu.push(
119
+ {
120
+ 'label': '<em>Move Marked Elements</em>',
121
+ 'function_call': mode,
122
+ 'menu_icon': iconm,
123
+ 'type': undefined,
124
+ 'params': [nodes, xml_node]
125
+ }
126
+ );
127
+ }
100
128
  menu.push(
101
- {
102
- 'label': '<em>Move Marked Elements</em>',
103
- 'function_call': mode,
104
- 'menu_icon': iconm,
105
- 'type': undefined,
106
- 'params': [nodes, xml_node]
107
- },
108
129
  {
109
130
  'label': '<em>Copy Marked Elements</em>',
110
131
  'function_call': mode,
@@ -217,16 +238,26 @@ function WFAdaptorManifestation(adaptor) {
217
238
  self.adaptor.illustrator.get_elements().removeClass('selected');
218
239
  self.adaptor.illustrator.get_labels().removeClass('selected');
219
240
 
220
- if (e && e.ctrlKey) {
241
+ if (e && (e.ctrlKey || e.metaKey)) {
221
242
  if (save['state'] != "ready" && save['state'] != "stopped") { return false; }
222
243
  var tab = $('#dat_details');
223
244
  tab.empty();
224
245
  var vtarget = self.adaptor.illustrator.get_node_by_svg_id(svgid);
225
246
  if (vtarget.length > 0) {
226
- vtarget.parents('g.element[element-id]').toggleClass('marked');
247
+ var vt = vtarget.parents('g.element[element-id]');
248
+ vt.toggleClass('marked');
249
+ if (vt.hasClass('marked')) {
250
+ localStorage.setItem('marked',self.marked_text());
251
+ localStorage.setItem('marked_from',myid);
252
+ } else {
253
+ localStorage.removeItem('marked');
254
+ localStorage.removeItem('marked_from');
255
+ }
227
256
  }
228
257
  } else {
229
258
  self.adaptor.illustrator.get_elements().removeClass('marked');
259
+ localStorage.removeItem('marked');
260
+ localStorage.removeItem('marked_from');
230
261
 
231
262
  var vtarget = self.adaptor.illustrator.get_node_by_svg_id(svgid);
232
263
  if (vtarget.length > 0) {
@@ -13,6 +13,7 @@
13
13
  <value id="plc">PLC</value>
14
14
  <value id="send">Send Message</value>
15
15
  <value id="receive">Receive Message</value>
16
+ <value id="wait">Wait</value>
16
17
  </choice>
17
18
  </attribute>
18
19
  <element name="parameters" rngui:header="Properties">
@@ -20,26 +21,26 @@
20
21
  <data type="string" rngui:label="Short description of the task"/>
21
22
  </element>
22
23
  <element name="arguments"/>
23
- <element name="input" rngui:header="Input Arguments">
24
- <zeroOrMore rngui:label="Create Argument">
25
- <element name="item" rngui:label="Description">
26
- <attribute name="label" rngui:label="Name">
27
- <data type="string"/>
28
- </attribute>
29
- <text rngui:wrap="true" rngui:label="What does it do?"/>
30
- </element>
31
- </zeroOrMore>
32
- </element>
33
- <element name="output" rngui:header="Output Elements">
34
- <zeroOrMore rngui:label="Create Element">
35
- <element name="item" rngui:label="Description">
36
- <attribute name="label" rngui:label="Name">
37
- <data type="string"/>
38
- </attribute>
39
- <text rngui:wrap="true" rngui:label="What does it do?"/>
40
- </element>
41
- </zeroOrMore>
42
- </element>
24
+ </element>
25
+ <element name="input" rngui:header="Input Arguments">
26
+ <zeroOrMore rngui:label="Create Argument">
27
+ <element name="item" rngui:label="Description">
28
+ <attribute name="label" rngui:label="Name">
29
+ <data type="string"/>
30
+ </attribute>
31
+ <text rngui:wrap="true" rngui:label="What does it do?"/>
32
+ </element>
33
+ </zeroOrMore>
34
+ </element>
35
+ <element name="output" rngui:header="Output Elements">
36
+ <zeroOrMore rngui:label="Create Element">
37
+ <element name="item" rngui:label="Description">
38
+ <attribute name="label" rngui:label="Name">
39
+ <data type="string"/>
40
+ </attribute>
41
+ <text rngui:wrap="true" rngui:label="What does it do?"/>
42
+ </element>
43
+ </zeroOrMore>
43
44
  </element>
44
45
  <element name="implementation" rngui:header="Implementation">
45
46
  <element name="description" rngui:label="Description">
@@ -13,6 +13,7 @@
13
13
  <value id="plc">PLC</value>
14
14
  <value id="send">Send Message</value>
15
15
  <value id="receive">Receive Message</value>
16
+ <value id="wait">Wait</value>
16
17
  </choice>
17
18
  </attribute>
18
19
  <element name="parameters" rngui:header="Properties">
@@ -20,35 +21,35 @@
20
21
  <data type="string" rngui:label="Short description of the task"/>
21
22
  </element>
22
23
  <element name="arguments"/>
23
- <element name="input" rngui:header="Input Arguments">
24
- <zeroOrMore rngui:label="Create Argument">
25
- <element name="item" rngui:label="Description">
26
- <attribute name="label" rngui:label="Name">
27
- <data type="string"/>
28
- </attribute>
29
- <text rngui:wrap="true" rngui:label="What does it do?"/>
30
- </element>
31
- </zeroOrMore>
32
- </element>
33
- <element name="output" rngui:header="Output Elements">
34
- <zeroOrMore rngui:label="Create Element">
35
- <element name="item" rngui:label="Description">
36
- <attribute name="label" rngui:label="Name">
37
- <data type="string"/>
38
- </attribute>
39
- <text rngui:wrap="true" rngui:label="What does it do?"/>
40
- </element>
41
- </zeroOrMore>
42
- </element>
24
+ </element>
25
+ <element name="input" rngui:header="Input Arguments">
26
+ <zeroOrMore rngui:label="Create Argument">
27
+ <element name="item" rngui:label="Description">
28
+ <attribute name="label" rngui:label="Name">
29
+ <data type="string"/>
30
+ </attribute>
31
+ <text rngui:wrap="true" rngui:label="What does it do?"/>
32
+ </element>
33
+ </zeroOrMore>
34
+ </element>
35
+ <element name="output" rngui:header="Output Elements">
36
+ <zeroOrMore rngui:label="Create Element">
37
+ <element name="item" rngui:label="Description">
38
+ <attribute name="label" rngui:label="Name">
39
+ <data type="string"/>
40
+ </attribute>
41
+ <text rngui:wrap="true" rngui:label="What does it do?"/>
42
+ </element>
43
+ </zeroOrMore>
43
44
  </element>
44
45
  <element name="implementation" rngui:header="Implementation">
45
46
  <element name="description" rngui:label="Description">
46
47
  <text rngui:wrap="true" rngui:label="What is supposed to happen?"/>
47
48
  </element>
48
49
  </element>
49
- <element name="code" rngui:header="Output Transformation">
50
+ <element name="code" rngui:header="Output Handling">
50
51
  <element name="description" rngui:label="Description">
51
- <text rngui:wrap="true" rngui:label="Which output elements are important? How to transform them?"/>
52
+ <text rngui:wrap="true" rngui:label="Which output elements are important? How to transform and save them?"/>
52
53
  </element>
53
54
  </element>
54
55
  <element name="annotations" rngui:header="Annotations">