cpee 1.4.32 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: cc0378a344f36f63688176739300a794d7382bd0b64328f77268a86d7793b600
4
- data.tar.gz: dc7386cf36ec7fa429869d574f0fcf00100e7f6e557a40659ffad85d14578059
3
+ metadata.gz: f1a67a57df57f103e16d89aed2ad52661c1f461d04679c1938ce1718eaf87b25
4
+ data.tar.gz: dcccdb2185dcc3815e0639d9dea9f790a7a235ce58cd6a6b53526950463559bf
5
5
  SHA512:
6
- metadata.gz: 9752ddc5b88787159245f8cf00fc4ac5bde112bae2bd663d6f2c0ce79fd92e2298e83acc28a806a5828560fbcedb71b16b2e4ff9ddf22666cc02d49104cafd71
7
- data.tar.gz: cc8b6d31edf48155691537d23ecb959ef86c98d8cdbe0ae94361d81f9b5d1fbc14eedbda84215372ef8422c38c02a2cc7410b91bc08e87da24c827b633d47e4b
6
+ metadata.gz: a4684d331a2d9595b2d2bd2604ae04e2226b3348ec8a8fd73504320475130ad885b03b45013501f3779b43e02e72ed8c2c16de4eef5530656b7cc50193a259d0
7
+ data.tar.gz: '039bb234831d978fea5e05457ac80e9142052f7fdd14592bc05da276ae4389abe3f6b5345155c1823088ced6673dcb24a8f7f785dd2efec0037c98faf29c4147'
@@ -19,6 +19,12 @@ $(document).ready(function() {
19
19
  do_main_save();
20
20
  }
21
21
  });
22
+ $(document).on('keypress','#dat_details [contenteditable]',function(e){
23
+ if (e.keyCode == 13) {
24
+ document.execCommand('insertText', false, '\n');
25
+ return false;
26
+ }
27
+ });
22
28
  $(document).on('relaxngui_remove', '#dat_details', function(e){
23
29
  clearTimeout(timer);
24
30
  do_main_save();
@@ -75,7 +75,7 @@ function WFAdaptorManifestation(adaptor) {
75
75
  }; //}}}
76
76
 
77
77
  function copyOrMove(menu,group,xml_node,mode) { //{{{
78
- var markymark = self.marked();
78
+ var markymark = _.uniq(self.marked());
79
79
  var check1 = [];
80
80
  var check2 = [];
81
81
  $(markymark).each(function(key,svgid){
@@ -471,7 +471,7 @@ function WFAdaptorManifestation(adaptor) {
471
471
  'menu_icon': self.elements.alternative.illustrator.svg.clone(),
472
472
  'type': 'alternative',
473
473
  'params': [self.adaptor.description.elements.alternative, node]}];
474
- if((node.children('otherwise').length == 0) && node.parents('parallel').length == node.parents('parallel_branch').length)
474
+ if((node.children('otherwise').length == 0) && node.parents('parallel').length == node.parents('parallel_branch').length && node.parent('choose').length == 0)
475
475
  childs.push({'label': 'Otherwise',
476
476
  'function_call': self.adaptor.description.insert_last_into,
477
477
  'menu_icon': self.elements.otherwise.illustrator.svg.clone(),
@@ -653,7 +653,7 @@ function WFAdaptorManifestation(adaptor) {
653
653
  }, //}}}
654
654
  'adaptor': {//{{{
655
655
  'mousedown': function (node,e) {
656
- self.events.mousedown(node,e,true,false);
656
+ self.events.mousedown(node,e,true,true);
657
657
  },
658
658
  'click': self.events.click,
659
659
  'dblclick': self.events.dblclick,
@@ -54,6 +54,21 @@
54
54
  </element>
55
55
  </zeroOrMore>
56
56
  </element>
57
+ <element name="aggregators" rngui:header="Aggregators">
58
+ <zeroOrMore rngui:label="Add Aggregator">
59
+ <element name="aggregator">
60
+ <element name="name" rngui:label="Label">
61
+ <data type="string" rngui:label="Label"/>
62
+ </element>
63
+ <element name="aggregator_url" rngui:label="Aggregator Url">
64
+ <data type="string" rngui:label="Url"/>
65
+ </element>
66
+ <element name="aggregator_arg" rngui:label="Aggregator Argument">
67
+ <data type="string" rngui:label="Path"/>
68
+ </element>
69
+ </element>
70
+ </zeroOrMore>
71
+ </element>
57
72
  </element>
58
73
  <element name="_timing" rngui:header="Timing">
59
74
  <element name="_timing_min" rngui:label='Min in min'>
@@ -66,6 +81,24 @@
66
81
  <data type='float' rngui:label='Minutes'/>
67
82
  </element>
68
83
  </element>
84
+ <element name="_cost" rngui:header="Costs">
85
+ <zeroOrMore rngui:label="Create Cost Factor">
86
+ <element name='_cost_factor'>
87
+ <element name="name" rngui:label="Label">
88
+ <data type="string" rngui:label="Label"/>
89
+ </element>
90
+ <element name="target" rngui:label="Target Value">
91
+ <data type="string" rngui:label="Value"/>
92
+ </element>
93
+ <element name="vfunc" rngui:label="Violation Function">
94
+ <data type="string" rngui:label="Url"/>
95
+ </element>
96
+ <element name="vcost" rngui:label="Violation Cost">
97
+ <data type="string" rngui:label="Value"/>
98
+ </element>
99
+ </element>
100
+ </zeroOrMore>
101
+ </element>
69
102
  <element name="_notes" rngui:header="Notes">
70
103
  <element name="_notes_general" rngui:label='General'>
71
104
  <text rngui:wrap='true' rngui:label='Notes'/>
@@ -54,6 +54,21 @@
54
54
  </element>
55
55
  </zeroOrMore>
56
56
  </element>
57
+ <element name="aggregators" rngui:header="Aggregators">
58
+ <zeroOrMore rngui:label="Add Aggregator">
59
+ <element name="aggregator">
60
+ <element name="name" rngui:label="Label">
61
+ <data type="string" rngui:label="Label"/>
62
+ </element>
63
+ <element name="aggregator_url" rngui:label="Aggregator Url">
64
+ <data type="string" rngui:label="Url"/>
65
+ </element>
66
+ <element name="aggregator_arg" rngui:label="Aggregator Argument">
67
+ <data type="string" rngui:label="Path"/>
68
+ </element>
69
+ </element>
70
+ </zeroOrMore>
71
+ </element>
57
72
  </element>
58
73
  <element name="finalize" rngui:header="Finalize" rngui:label="Code">
59
74
  <attribute name="output" rngui:label="Access Variable" rngui:default="result">
@@ -78,6 +93,24 @@
78
93
  <data type='float' rngui:label='Minutes'/>
79
94
  </element>
80
95
  </element>
96
+ <element name="_cost" rngui:header="Costs">
97
+ <zeroOrMore rngui:label="Create Cost Factor">
98
+ <element name='_cost_factor'>
99
+ <element name="name" rngui:label="Label">
100
+ <data type="string" rngui:label="Label"/>
101
+ </element>
102
+ <element name="target" rngui:label="Target Value">
103
+ <data type="string" rngui:label="Value"/>
104
+ </element>
105
+ <element name="vfunc" rngui:label="Violation Function">
106
+ <data type="string" rngui:label="Url"/>
107
+ </element>
108
+ <element name="vcost" rngui:label="Violation Cost">
109
+ <data type="string" rngui:label="Value"/>
110
+ </element>
111
+ </element>
112
+ </zeroOrMore>
113
+ </element>
81
114
  <element name="_notes" rngui:header="Notes">
82
115
  <element name="_notes_general" rngui:label='General'>
83
116
  <text rngui:wrap='true' rngui:label='Notes'/>
@@ -75,7 +75,7 @@ function WFAdaptorManifestation(adaptor) {
75
75
  }; //}}}
76
76
 
77
77
  function copyOrMove(menu,group,xml_node,mode) { //{{{
78
- var markymark = self.marked();
78
+ var markymark = _.uniq(self.marked());
79
79
  var check1 = [];
80
80
  var check2 = [];
81
81
  $(markymark).each(function(key,svgid){
@@ -472,7 +472,7 @@ function WFAdaptorManifestation(adaptor) {
472
472
  'menu_icon': self.elements.alternative.illustrator.svg.clone(),
473
473
  'type': 'alternative',
474
474
  'params': [self.adaptor.description.elements.alternative, node]}];
475
- if((node.children('otherwise').length == 0) && node.parents('parallel').length == node.parents('parallel_branch').length)
475
+ if((node.children('otherwise').length == 0) && node.parents('parallel').length == node.parents('parallel_branch').length && node.parent('choose').length == 0)
476
476
  childs.push({'label': 'Otherwise',
477
477
  'function_call': self.adaptor.description.insert_last_into,
478
478
  'menu_icon': self.elements.otherwise.illustrator.svg.clone(),
@@ -654,7 +654,7 @@ function WFAdaptorManifestation(adaptor) {
654
654
  }, //}}}
655
655
  'adaptor': {//{{{
656
656
  'mousedown': function (node,e) {
657
- self.events.mousedown(node,e,true,false);
657
+ self.events.mousedown(node,e,true,true);
658
658
  },
659
659
  'click': self.events.click,
660
660
  'dblclick': self.events.dblclick,
@@ -75,7 +75,7 @@ function WFAdaptorManifestation(adaptor) {
75
75
  }; //}}}
76
76
 
77
77
  function copyOrMove(menu,group,xml_node,mode) { //{{{
78
- var markymark = self.marked();
78
+ var markymark = _.uniq(self.marked());
79
79
  var check1 = [];
80
80
  var check2 = [];
81
81
  $(markymark).each(function(key,svgid){
@@ -504,7 +504,7 @@ function WFAdaptorManifestation(adaptor) {
504
504
  'menu_icon': self.elements.alternative.illustrator.svg.clone(),
505
505
  'type': 'alternative',
506
506
  'params': [self.adaptor.description.elements.alternative, node]}];
507
- if((node.children('otherwise').length == 0) && node.parents('parallel').length == node.parents('parallel_branch').length)
507
+ if((node.children('otherwise').length == 0) && node.parents('parallel').length == node.parents('parallel_branch').length && node.parent('choose').length == 0)
508
508
  childs.push({'label': 'Otherwise',
509
509
  'function_call': self.adaptor.description.insert_last_into,
510
510
  'menu_icon': self.elements.otherwise.illustrator.svg.clone(),
@@ -694,7 +694,7 @@ function WFAdaptorManifestation(adaptor) {
694
694
  }, //}}}
695
695
  'adaptor': {//{{{
696
696
  'mousedown': function (node,e) {
697
- self.events.mousedown(node,e,true,false);
697
+ self.events.mousedown(node,e,true,true);
698
698
  },
699
699
  'click': self.events.click,
700
700
  'dblclick': self.events.dblclick,
@@ -75,7 +75,7 @@ function WFAdaptorManifestation(adaptor) {
75
75
  }; //}}}
76
76
 
77
77
  function copyOrMove(menu,group,xml_node,mode) { //{{{
78
- var markymark = self.marked();
78
+ var markymark = _.uniq(self.marked());
79
79
  var check1 = [];
80
80
  var check2 = [];
81
81
  $(markymark).each(function(key,svgid){
@@ -471,7 +471,7 @@ function WFAdaptorManifestation(adaptor) {
471
471
  'menu_icon': self.elements.alternative.illustrator.svg.clone(),
472
472
  'type': 'alternative',
473
473
  'params': [self.adaptor.description.elements.alternative, node]}];
474
- if((node.children('otherwise').length == 0) && node.parents('parallel').length == node.parents('parallel_branch').length)
474
+ if((node.children('otherwise').length == 0) && node.parents('parallel').length == node.parents('parallel_branch').length && node.parent('choose').length == 0)
475
475
  childs.push({'label': 'Otherwise',
476
476
  'function_call': self.adaptor.description.insert_last_into,
477
477
  'menu_icon': self.elements.otherwise.illustrator.svg.clone(),
@@ -653,7 +653,7 @@ function WFAdaptorManifestation(adaptor) {
653
653
  }, //}}}
654
654
  'adaptor': {//{{{
655
655
  'mousedown': function (node,e) {
656
- self.events.mousedown(node,e,true,false);
656
+ self.events.mousedown(node,e,true,true);
657
657
  },
658
658
  'click': self.events.click,
659
659
  'dblclick': self.events.dblclick,
@@ -0,0 +1 @@
1
+ ../../default/rngs/alternative.rng
@@ -0,0 +1,121 @@
1
+ <element rngui:version="1.2" name="call" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes" xmlns="http://relaxng.org/ns/structure/1.0" xmlns:rngui="http://rngui.org">
2
+ <attribute name="id" rngui:label="ID" rngui:default="javascript:get_free_id()">
3
+ <data type="string" rngui:readonly="true"/>
4
+ </attribute>
5
+ <attribute name="endpoint" rngui:label="Endpoint">
6
+ <data type="string"/>
7
+ </attribute>
8
+ <element name='parameters' rngui:header="Properties">
9
+ <element name="label" rngui:label="Label">
10
+ <data type="string" rngui:label="Short description of the task"/>
11
+ </element>
12
+ <element name="method" rngui:label="Method">
13
+ <choice>
14
+ <value>:post</value>
15
+ <value>:get</value>
16
+ <value>:put</value>
17
+ <value>:delete</value>
18
+ </choice>
19
+ </element>
20
+ <element name="arguments" rngui:header="Arguments">
21
+ <zeroOrMore rngui:label="Create Argument Pair">
22
+ <element rngui:label='Name'>
23
+ <anyName/>
24
+ <data type="string" rngui:label="Value"/>
25
+ </element>
26
+ </zeroOrMore>
27
+ </element>
28
+ <element name="stream" rngui:header="Data Stream Handling" rngui:fold="closed">
29
+ <element name="sensors" rngui:header="Sensors" rngui:fold="closed">
30
+ <zeroOrMore rngui:label="Add Sensor">
31
+ <element name="sensor">
32
+ <element name="name" rngui:label="Label">
33
+ <data type="string" rngui:label="Label"/>
34
+ </element>
35
+ <element name="extractor_url" rngui:label="Extractor Url">
36
+ <data type="string" rngui:label="Service Url"/>
37
+ </element>
38
+ <element name="extractor_arg" rngui:label="Extractor Argument">
39
+ <data type="string" rngui:label="Value / Json"/>
40
+ </element>
41
+ <element name="visualizer_url" rngui:label="Visualizer Url">
42
+ <data type="string" rngui:label="Service Url"/>
43
+ </element>
44
+ <element name="visualizer_params" rngui:header="Visualizer Arguments">
45
+ <zeroOrMore rngui:label="Create Visualizer Argument Pairs">
46
+ <element rngui:label='Name'>
47
+ <anyName/>
48
+ <data type="string" rngui:label="Value / Json"/>
49
+ </element>
50
+ </zeroOrMore>
51
+ </element>
52
+ </element>
53
+ </zeroOrMore>
54
+ </element>
55
+ <element name="aggregators" rngui:header="Aggregators" rngui:fold="closed">
56
+ <zeroOrMore rngui:label="Add Aggregator">
57
+ <element name="aggregator">
58
+ <element name="name" rngui:label="Label">
59
+ <data type="string" rngui:label="Label"/>
60
+ </element>
61
+ <element name="aggregator_url" rngui:label="Aggregator Url">
62
+ <data type="string" rngui:label="Service Url"/>
63
+ </element>
64
+ <element name="aggregator_arg" rngui:label="Aggregator Argument">
65
+ <data type="string" rngui:label="Value / Json"/>
66
+ </element>
67
+ </element>
68
+ </zeroOrMore>
69
+ </element>
70
+ <element name="_cost" rngui:header="Costs" rngui:fold="closed">
71
+ <zeroOrMore rngui:label="Create Cost Factor">
72
+ <element name='_cost_factor'>
73
+ <element name="name" rngui:label="Label">
74
+ <data type="string" rngui:label="Label"/>
75
+ </element>
76
+ <element name="target" rngui:label="Target Value">
77
+ <data type="string" rngui:label="Value"/>
78
+ </element>
79
+ <element name="vfunc_url" rngui:label="Violation Function Url">
80
+ <data type="string" rngui:label="Service Url"/>
81
+ </element>
82
+ <element name="vfunc_arg" rngui:label="Violation Function Argument">
83
+ <data type="string" rngui:label="Service Url"/>
84
+ </element>
85
+ <element name="vcost" rngui:label="Violation Cost">
86
+ <data type="string" rngui:label="Value"/>
87
+ </element>
88
+ </element>
89
+ </zeroOrMore>
90
+ </element>
91
+ </element>
92
+ </element>
93
+ <element name="annotations" rngui:header="Annotations">
94
+ <element name="_timing" rngui:header="Timing" rngui:fold="closed">
95
+ <element name="_timing_min" rngui:label='Min in min'>
96
+ <data type='float' rngui:label='Minutes'/>
97
+ </element>
98
+ <element name="_timing_max" rngui:label='Max in min'>
99
+ <data type='float' rngui:label='Minutes'/>
100
+ </element>
101
+ <element name="_timing_avg" rngui:label='Avg in min'>
102
+ <data type='float' rngui:label='Minutes'/>
103
+ </element>
104
+ </element>
105
+ <element name="_notes" rngui:header="Notes" rngui:fold="closed">
106
+ <element name="_notes_general" rngui:label='General'>
107
+ <text rngui:wrap='true' rngui:label='Notes'/>
108
+ </element>
109
+ <element name="_attachments">
110
+ <zeroOrMore rngui:label="Create Attachment">
111
+ <element name='_attachment' rngui:label='Attachment'>
112
+ <attribute name="label" rngui:label="Note">
113
+ <data type="string"/>
114
+ </attribute>
115
+ <data type="string" rngui:label="Url"/>
116
+ </element>
117
+ </zeroOrMore>
118
+ </element>
119
+ </element>
120
+ </element>
121
+ </element>
@@ -0,0 +1,147 @@
1
+ <element rngui:version="1.2" name="call" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes" xmlns="http://relaxng.org/ns/structure/1.0" xmlns:rngui="http://rngui.org">
2
+ <attribute name="id" rngui:label="ID" rngui:default="javascript:get_free_id()">
3
+ <data type="string" rngui:readonly="true"/>
4
+ </attribute>
5
+ <attribute name="endpoint" rngui:label="Endpoint">
6
+ <data type="string"/>
7
+ </attribute>
8
+ <element name='parameters' rngui:header="Properties">
9
+ <element name="label" rngui:label="Label">
10
+ <data type="string" rngui:label="Short description of the task"/>
11
+ </element>
12
+ <element name="method" rngui:label="Method">
13
+ <choice>
14
+ <value>:post</value>
15
+ <value>:get</value>
16
+ <value>:put</value>
17
+ <value>:delete</value>
18
+ </choice>
19
+ </element>
20
+ <element name="arguments" rngui:header="Arguments">
21
+ <zeroOrMore rngui:label="Create Argument Pair">
22
+ <element rngui:label='Name'>
23
+ <anyName/>
24
+ <data type="string" rngui:label="Value"/>
25
+ </element>
26
+ </zeroOrMore>
27
+ </element>
28
+ <element name="stream" rngui:header="Data Stream Handling" rngui:fold="closed">
29
+ <element name="sensors" rngui:header="Sensors" rngui:fold="closed">
30
+ <zeroOrMore rngui:label="Add Sensor">
31
+ <element name="sensor">
32
+ <element name="name" rngui:label="Label">
33
+ <data type="string" rngui:label="Label"/>
34
+ </element>
35
+ <element name="extractor_url" rngui:label="Extractor Url">
36
+ <data type="string" rngui:label="Service Url"/>
37
+ </element>
38
+ <element name="extractor_arg" rngui:label="Extractor Argument">
39
+ <data type="string" rngui:label="Value / Json"/>
40
+ </element>
41
+ <element name="visualizer_url" rngui:label="Visualizer Url">
42
+ <data type="string" rngui:label="Service Url"/>
43
+ </element>
44
+ <element name="visualizer_params" rngui:header="Visualizer Arguments">
45
+ <zeroOrMore rngui:label="Create Visualizer Argument Pairs">
46
+ <element rngui:label='Name'>
47
+ <anyName/>
48
+ <data type="string" rngui:label="Value / Json"/>
49
+ </element>
50
+ </zeroOrMore>
51
+ </element>
52
+ </element>
53
+ </zeroOrMore>
54
+ </element>
55
+ <element name="aggregators" rngui:header="Aggregators" rngui:fold="closed">
56
+ <zeroOrMore rngui:label="Add Aggregator">
57
+ <element name="aggregator">
58
+ <element name="name" rngui:label="Label">
59
+ <data type="string" rngui:label="Label"/>
60
+ </element>
61
+ <element name="aggregator_url" rngui:label="Aggregator Url">
62
+ <data type="string" rngui:label="Service Url"/>
63
+ </element>
64
+ <element name="aggregator_arg" rngui:label="Aggregator Argument">
65
+ <data type="string" rngui:label="Value / Json"/>
66
+ </element>
67
+ </element>
68
+ </zeroOrMore>
69
+ </element>
70
+ <element name="_cost" rngui:header="Costs" rngui:fold="closed">
71
+ <zeroOrMore rngui:label="Create Cost Factor">
72
+ <element name='_cost_factor'>
73
+ <element name="name" rngui:label="Label">
74
+ <data type="string" rngui:label="Label"/>
75
+ </element>
76
+ <element name="target" rngui:label="Target Value">
77
+ <data type="string" rngui:label="Value"/>
78
+ </element>
79
+ <element name="vfunc_url" rngui:label="Violation Function Url">
80
+ <data type="string" rngui:label="Service Url"/>
81
+ </element>
82
+ <element name="vfunc_arg" rngui:label="Violation Function Argument">
83
+ <data type="string" rngui:label="Service Url"/>
84
+ </element>
85
+ <element name="vcost" rngui:label="Violation Cost">
86
+ <data type="string" rngui:label="Value"/>
87
+ </element>
88
+ </element>
89
+ </zeroOrMore>
90
+ </element>
91
+ </element>
92
+ </element>
93
+ <element name="code" rngui:header="Implementation">
94
+ <element name="prepare" rngui:header="Prepare" rngui:label="Code" rngui:fold='closed_conditional'>
95
+ <text rngui:label='Script that is executed, before a service call'/>
96
+ </element>
97
+ <element name="finalize" rngui:header="Finalize" rngui:label="Code" rngui:fold='closed_conditional'>
98
+ <attribute name="output" rngui:label="Access Variable" rngui:default="result">
99
+ <data type="string" rngui:readonly="true"/>
100
+ </attribute>
101
+ <text rngui:label='Script that is executed, when a service returns data'/>
102
+ </element>
103
+ <element name="update" rngui:header="Update" rngui:label="Code" rngui:fold='closed_conditional'>
104
+ <attribute name="output" rngui:label="Access Variable" rngui:default="result">
105
+ <data type="string" rngui:readonly="true"/>
106
+ </attribute>
107
+ <text rngui:label='Script that is executed, when a service sends intermediate data'/>
108
+ </element>
109
+ <element name="rescue" rngui:header="Rescue" rngui:label="Code" rngui:fold='closed_conditional'>
110
+ <attribute name="output" rngui:label="Access Variable" rngui:default="result">
111
+ <data type="string" rngui:readonly="true"/>
112
+ </attribute>
113
+ <text rngui:label='Script that is executed, if a service call fails'/>
114
+ </element>
115
+ </element>
116
+ <element name="annotations" rngui:header="Annotations">
117
+ <element name="_timing" rngui:header="Timing" rngui:fold="closed">
118
+ <element name="_timing_min" rngui:label='Min in min'>
119
+ <data type='float' rngui:label='Minutes'/>
120
+ </element>
121
+ <element name="_timing_max" rngui:label='Max in min'>
122
+ <data type='float' rngui:label='Minutes'/>
123
+ </element>
124
+ <element name="_timing_avg" rngui:label='Avg in min'>
125
+ <data type='float' rngui:label='Minutes'/>
126
+ </element>
127
+ </element>
128
+ <element name="_notes" rngui:header="Notes" rngui:fold="closed">
129
+ <element name="_notes_general" rngui:label='General'>
130
+ <text rngui:wrap='true' rngui:label='Notes'/>
131
+ </element>
132
+ <element name="_notes_output" rngui:label='Output'>
133
+ <text rngui:wrap='true' rngui:label='Notes'/>
134
+ </element>
135
+ <element name="_attachments">
136
+ <zeroOrMore rngui:label="Create Attachment">
137
+ <element name='_attachment' rngui:label='Attachment'>
138
+ <attribute name="label" rngui:label="Note">
139
+ <data type="string"/>
140
+ </attribute>
141
+ <data type="string" rngui:label="Url"/>
142
+ </element>
143
+ </zeroOrMore>
144
+ </element>
145
+ </element>
146
+ </element>
147
+ </element>