cpee 2.0.24 → 2.0.30

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.
Files changed (144) 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 +30 -5
  6. data/cockpit/css/wfadaptor.css +11 -0
  7. data/cockpit/edit.html +260 -0
  8. data/cockpit/graph.html +3 -3
  9. data/cockpit/index.html +9 -8
  10. data/cockpit/js/details.js +0 -1
  11. data/cockpit/js/edit.js +32 -0
  12. data/cockpit/js/instance.js +51 -35
  13. data/cockpit/js/model.js +6 -36
  14. data/cockpit/js/parameters.js +9 -4
  15. data/cockpit/js/ui.js +7 -0
  16. data/cockpit/model.html +5 -3
  17. data/cockpit/replay.html +3 -2
  18. data/cockpit/templates/Coopis 2010.xml +1 -1
  19. data/cockpit/templates/IUPC arXiv:1104.3609 P34 1.xml +1 -1
  20. data/cockpit/templates/IUPC arXiv:1104.3609 P34 2.xml +1 -1
  21. data/cockpit/templates/IUPC arXiv:1104.3609 P34 3.xml +1 -1
  22. data/cockpit/templates/Track Test Local.xml +6 -2
  23. data/cockpit/templates/Track Test.xml +5 -1
  24. data/cockpit/templates/UR-VUE 2020 Manual Adjust.xml +5 -1
  25. data/cockpit/templates/UR-VUE 2020 Solution Baseline.xml +8 -4
  26. data/cockpit/templates/UR-VUE 2020 Solution NN.xml +8 -4
  27. data/cockpit/templates/UR-VUE 2020 Solution View.xml +8 -4
  28. data/cockpit/templates/UR-VUE 2020.xml +8 -4
  29. data/cockpit/themes/compact/rngs/call.rng +26 -1
  30. data/cockpit/themes/compact/rngs/callmanipulate.rng +32 -2
  31. data/cockpit/themes/compact/rngs/parallel.rng +6 -0
  32. data/cockpit/themes/compact/symbols/parallel_branch_event.svg +2 -2
  33. data/cockpit/themes/compact/symbols/parallel_eventbased_exclusive.svg +9 -0
  34. data/cockpit/themes/compact/symbols/parallel_eventbased_parallel.svg +8 -0
  35. data/cockpit/themes/compact/theme.js +102 -27
  36. data/cockpit/themes/control/rngs/call.rng +26 -1
  37. data/cockpit/themes/control/rngs/callmanipulate.rng +32 -2
  38. data/cockpit/themes/control/rngs/parallel.rng +6 -0
  39. data/cockpit/themes/control/symbols/parallel_branch_event.svg +2 -2
  40. data/cockpit/themes/control/symbols/parallel_eventbased_exclusive.svg +9 -0
  41. data/cockpit/themes/control/symbols/parallel_eventbased_parallel.svg +8 -0
  42. data/cockpit/themes/control/theme.js +95 -21
  43. data/cockpit/themes/default/rngs/call.rng +26 -1
  44. data/cockpit/themes/default/rngs/callmanipulate.rng +32 -2
  45. data/cockpit/themes/default/rngs/parallel.rng +6 -0
  46. data/cockpit/themes/default/symbols/parallel_branch_event.svg +2 -2
  47. data/cockpit/themes/default/symbols/parallel_eventbased_exclusive.svg +9 -0
  48. data/cockpit/themes/default/symbols/parallel_eventbased_parallel.svg +8 -0
  49. data/cockpit/themes/default/theme.js +94 -20
  50. data/cockpit/themes/extended/rngs/call.rng +26 -1
  51. data/cockpit/themes/extended/rngs/callmanipulate.rng +32 -2
  52. data/cockpit/themes/extended/rngs/parallel.rng +6 -0
  53. data/cockpit/themes/extended/symbols/parallel_branch_event.svg +2 -2
  54. data/cockpit/themes/extended/symbols/parallel_eventbased_exclusive.svg +9 -0
  55. data/cockpit/themes/extended/symbols/parallel_eventbased_parallel.svg +8 -0
  56. data/cockpit/themes/extended/theme.js +95 -21
  57. data/cockpit/themes/model/rngs/call.rng +21 -20
  58. data/cockpit/themes/model/rngs/callmanipulate.rng +23 -22
  59. data/cockpit/themes/model/symbols/parallel_branch_event.svg +2 -2
  60. data/cockpit/themes/model/symbols/parallel_eventbased_exclusive.svg +9 -0
  61. data/cockpit/themes/model/symbols/parallel_eventbased_parallel.svg +8 -0
  62. data/cockpit/themes/model/theme.js +96 -22
  63. data/cockpit/themes/packed/rngs/call.rng +26 -1
  64. data/cockpit/themes/packed/rngs/callmanipulate.rng +32 -2
  65. data/cockpit/themes/packed/rngs/parallel.rng +6 -0
  66. data/cockpit/themes/packed/symbols/parallel_branch_event.svg +2 -2
  67. data/cockpit/themes/packed/symbols/parallel_eventbased_exclusive.svg +9 -0
  68. data/cockpit/themes/packed/symbols/parallel_eventbased_parallel.svg +8 -0
  69. data/cockpit/themes/packed/theme.js +95 -21
  70. data/cockpit/themes/preset/rngs/call.rng +26 -1
  71. data/cockpit/themes/preset/rngs/callmanipulate.rng +32 -2
  72. data/cockpit/themes/preset/rngs/parallel.rng +6 -0
  73. data/cockpit/themes/preset/symbols/parallel_branch_event.svg +2 -2
  74. data/cockpit/themes/preset/symbols/parallel_eventbased_exclusive.svg +9 -0
  75. data/cockpit/themes/preset/symbols/parallel_eventbased_parallel.svg +8 -0
  76. data/cockpit/themes/preset/theme.js +94 -20
  77. data/cockpit/track.html +3 -3
  78. data/cockpit/{templates/.transformations.xml → transformations.xml} +0 -0
  79. data/cpee.gemspec +3 -3
  80. data/lib/callbacks.xml +5 -0
  81. data/lib/cpee/controller.rb +30 -28
  82. data/lib/cpee/implementation_callbacks.rb +60 -0
  83. data/lib/cpee/implementation_notifications.rb +6 -2
  84. data/server/handlerwrappers/default.rb +19 -3
  85. data/server/resources/transformation_dslx.xsl +5 -1
  86. data/server/routing/end.pid +1 -1
  87. data/server/routing/end.rb +1 -0
  88. data/server/routing/forward-events.pid +1 -1
  89. data/server/routing/forward-votes.pid +1 -1
  90. data/server/routing/forward-votes.rb +6 -5
  91. data/server/routing/persist.pid +1 -1
  92. data/server/routing/persist.rb +4 -4
  93. data/server/server.pid +1 -1
  94. metadata +24 -58
  95. data/cockpit/edit.html +0 -1
  96. data/cockpit/templates/.templates.xml +0 -13
  97. data/cockpit/themes/diana/rngs/alternative.rng +0 -25
  98. data/cockpit/themes/diana/rngs/call.rng +0 -149
  99. data/cockpit/themes/diana/rngs/callmanipulate.rng +0 -188
  100. data/cockpit/themes/diana/rngs/choose.rng +0 -14
  101. data/cockpit/themes/diana/rngs/closed_loop.rng +0 -62
  102. data/cockpit/themes/diana/rngs/closed_loop_cancel.rng +0 -5
  103. data/cockpit/themes/diana/rngs/closed_loop_control.rng +0 -31
  104. data/cockpit/themes/diana/rngs/closed_loop_measuring.rng +0 -12
  105. data/cockpit/themes/diana/rngs/critical.rng +0 -5
  106. data/cockpit/themes/diana/rngs/escape.rng +0 -1
  107. data/cockpit/themes/diana/rngs/group.rng +0 -3
  108. data/cockpit/themes/diana/rngs/loop.rng +0 -22
  109. data/cockpit/themes/diana/rngs/manipulate.rng +0 -9
  110. data/cockpit/themes/diana/rngs/otherwise.rng +0 -22
  111. data/cockpit/themes/diana/rngs/parallel.rng +0 -21
  112. data/cockpit/themes/diana/rngs/parallel_branch.rng +0 -8
  113. data/cockpit/themes/diana/rngs/scripts.rng +0 -23
  114. data/cockpit/themes/diana/rngs/stop.rng +0 -5
  115. data/cockpit/themes/diana/rngs/terminate.rng +0 -1
  116. data/cockpit/themes/diana/symbols/alternative.svg +0 -5
  117. data/cockpit/themes/diana/symbols/arrow.svg +0 -3
  118. data/cockpit/themes/diana/symbols/call.svg +0 -6
  119. data/cockpit/themes/diana/symbols/callmanipulate.svg +0 -8
  120. data/cockpit/themes/diana/symbols/choose.svg +0 -5
  121. data/cockpit/themes/diana/symbols/choose_exclusive.svg +0 -5
  122. data/cockpit/themes/diana/symbols/choose_inclusive.svg +0 -4
  123. data/cockpit/themes/diana/symbols/closed_loop.svg +0 -5
  124. data/cockpit/themes/diana/symbols/closed_loop_cancel.svg +0 -5
  125. data/cockpit/themes/diana/symbols/closed_loop_control.svg +0 -5
  126. data/cockpit/themes/diana/symbols/closed_loop_measuring.svg +0 -6
  127. data/cockpit/themes/diana/symbols/complex.svg +0 -8
  128. data/cockpit/themes/diana/symbols/critical.svg +0 -4
  129. data/cockpit/themes/diana/symbols/end.svg +0 -3
  130. data/cockpit/themes/diana/symbols/escape.svg +0 -5
  131. data/cockpit/themes/diana/symbols/event_end.svg +0 -3
  132. data/cockpit/themes/diana/symbols/loop.svg +0 -5
  133. data/cockpit/themes/diana/symbols/manipulate.svg +0 -4
  134. data/cockpit/themes/diana/symbols/otherwise.svg +0 -5
  135. data/cockpit/themes/diana/symbols/parallel.svg +0 -5
  136. data/cockpit/themes/diana/symbols/parallel_branch.svg +0 -5
  137. data/cockpit/themes/diana/symbols/parallel_branch_compact.svg +0 -4
  138. data/cockpit/themes/diana/symbols/parallel_branch_event.svg +0 -14
  139. data/cockpit/themes/diana/symbols/parallel_branch_normal.svg +0 -5
  140. data/cockpit/themes/diana/symbols/scripts.svg +0 -4
  141. data/cockpit/themes/diana/symbols/start.svg +0 -3
  142. data/cockpit/themes/diana/symbols/stop.svg +0 -5
  143. data/cockpit/themes/diana/symbols/terminate.svg +0 -4
  144. data/cockpit/themes/diana/theme.js +0 -1650
@@ -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">
@@ -1,8 +1,8 @@
1
1
  <svg class="clickable" xmlns="http://www.w3.org/2000/svg">
2
2
  <rect x="1" y="3" width="24" height="24" rx="4" class="hfill rfill cline stand"/>
3
3
 
4
- <circle cx="24" cy="15" r="10" class="cline rfill stand" style="stroke-dasharray: 1,3"/>
5
- <circle cx="24" cy="15" r="7" class="cline rfill stand" style="stroke-dasharray: 1,3"/>
4
+ <circle cx="24" cy="15" r="9" class="cline rfill standthin" style="stroke-dasharray: 1,2"/>
5
+ <circle cx="24" cy="15" r="7" class="cline rfill standthin" style="stroke-dasharray: 1,2"/>
6
6
  <line x1="24" y1="11" x2="20" y2="18" class="stand"/>
7
7
  <line x1="20" y1="18" x2="28" y2="18" class="stand"/>
8
8
  <line x1="28" y1="18" x2="24" y2="11" class="stand"/>
@@ -0,0 +1,9 @@
1
+ <svg class="clickable" xmlns="http://www.w3.org/2000/svg">
2
+ <rect transform="rotate(45,14,12)" x="7" y="3" width="21" height="21" class="cline hfill stand"/>
3
+ <circle cx="15.5" cy="15.5" r="8" class="standthin"/>
4
+ <circle cx="15.5" cy="15.5" r="6" class="standthin"/>
5
+ <path
6
+ d="m 15.500001,11.435193 3.825246,2.779205 -1.461114,4.496849 h -4.728265 l -1.461115,-4.496849 z"
7
+ class="stand"/>
8
+ </svg>
9
+
@@ -0,0 +1,8 @@
1
+ <svg class="clickable" xmlns="http://www.w3.org/2000/svg">
2
+ <rect transform="rotate(45,14,12)" x="7" y="3" width="21" height="21" class="cline hfill stand"/>
3
+ <circle cx="15.5" cy="15.5" r="8" class="standthin"/>
4
+ <circle cx="15.5" cy="15.5" r="6" class="standthin"/>
5
+ <line x1="12.5" y1="15.5" x2="18.5" y2="15.5" class="stand"/>
6
+ <line x1="15.5" y1="12.5" x2="15.5" y2="18.5" class="stand"/>
7
+ </svg>
8
+
@@ -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,
@@ -193,16 +214,26 @@ function WFAdaptorManifestation(adaptor) {
193
214
  self.adaptor.illustrator.get_elements().removeClass('selected');
194
215
  self.adaptor.illustrator.get_labels().removeClass('selected');
195
216
 
196
- if (e && e.ctrlKey) {
217
+ if (e && (e.ctrlKey || e.metaKey)) {
197
218
  if (save['state'] != "ready" && save['state'] != "stopped") { return false; }
198
219
  var tab = $('#dat_details');
199
220
  tab.empty();
200
221
  var vtarget = self.adaptor.illustrator.get_node_by_svg_id(svgid);
201
222
  if (vtarget.length > 0) {
202
- vtarget.parents('g.element[element-id]').toggleClass('marked');
223
+ var vt = vtarget.parents('g.element[element-id]');
224
+ vt.toggleClass('marked');
225
+ if (vt.hasClass('marked')) {
226
+ localStorage.setItem('marked',self.marked_text());
227
+ localStorage.setItem('marked_from',myid);
228
+ } else {
229
+ localStorage.removeItem('marked');
230
+ localStorage.removeItem('marked_from');
231
+ }
203
232
  }
204
233
  } else {
205
234
  self.adaptor.illustrator.get_elements().removeClass('marked');
235
+ localStorage.removeItem('marked');
236
+ localStorage.removeItem('marked_from');
206
237
 
207
238
  var vtarget = self.adaptor.illustrator.get_node_by_svg_id(svgid);
208
239
  if (vtarget.length > 0) {
@@ -241,7 +272,7 @@ function WFAdaptorManifestation(adaptor) {
241
272
  'label': function(node){
242
273
  var ret;
243
274
  if ($('> url',$(node).children('parameters').children('arguments')).length > 0) {
244
- ret = [ { column: 'Label', value: $('> label',$(node).children('parameters')).text().replace(/^['"]/,'').replace(/['"]$/,'') + ' <a target="_blank" href="' + $('> url',$(node).children('parameters').children('arguments')).text() + '"></a>' } ];
275
+ ret = [ { column: 'Label', value: $('> label',$(node).children('parameters')).text().replace(/^['"]/,'').replace(/['"]$/,'') + ' <a target="_blank" href="' + $('> url',$(node).children('parameters').children('arguments')).text() + '/open"></a>' } ];
245
276
  } else {
246
277
  ret = [ { column: 'Label', value: $('> label',$(node).children('parameters')).text().replace(/^['"]/,'').replace(/['"]$/,'') } ];
247
278
  }
@@ -431,8 +462,12 @@ function WFAdaptorManifestation(adaptor) {
431
462
  'endnodes': 'this',
432
463
  'svg': self.adaptor.theme_dir + 'symbols/parallel.svg',
433
464
  'resolve_symbol': function(node) {
434
- if($(node).attr('wait') == '-1') {
465
+ if($(node).attr('cancel') == 'last' && $(node).attr('wait') == '-1') {
435
466
  return 'parallel_simple';
467
+ } else if($(node).attr('cancel') == 'first' && $(node).attr('wait') == '-1') {
468
+ return 'parallel_event_all';
469
+ } else if($(node).attr('cancel') == 'first' && $(node).attr('wait') == '1') {
470
+ return 'parallel_event_one';
436
471
  } else {
437
472
  return 'parallel_complex';
438
473
  }
@@ -799,7 +834,16 @@ function WFAdaptorManifestation(adaptor) {
799
834
  'col_shift': function(node) {
800
835
  return true;
801
836
  },
802
- 'svg': self.adaptor.theme_dir + 'symbols/parallel.svg'
837
+ 'svg': self.adaptor.theme_dir + 'symbols/parallel.svg',
838
+ 'resolve_symbol': function(node) {
839
+ if($(node).attr('cancel') == 'last') {
840
+ return 'parallel_start';
841
+ } else if($(node).attr('cancel') == 'first' && $(node).attr('wait') == 1) {
842
+ return 'parallel_eventbased_exclusive';
843
+ } else {
844
+ return 'parallel_eventbased_parallel';
845
+ }
846
+ },
803
847
  },//}}}
804
848
  'description': self.adaptor.theme_dir + 'rngs/parallel.rng',
805
849
  'permissible_children': function(node,mode) { //{{{
@@ -1226,6 +1270,24 @@ function WFAdaptorManifestation(adaptor) {
1226
1270
  'svg': self.adaptor.theme_dir + 'symbols/choose_exclusive.svg'
1227
1271
  },//}}}
1228
1272
  }; /*}}}*/
1273
+ this.elements.parallel_start = { /*{{{*/
1274
+ 'parent': 'parallel',
1275
+ 'illustrator': {//{{{
1276
+ 'svg': self.adaptor.theme_dir + 'symbols/parallel.svg'
1277
+ }//}}}
1278
+ }; /*}}}*/
1279
+ this.elements.parallel_eventbased_exclusive = { /*{{{*/
1280
+ 'parent': 'parallel',
1281
+ 'illustrator': {//{{{
1282
+ 'svg': self.adaptor.theme_dir + 'symbols/parallel_eventbased_exclusive.svg'
1283
+ }//}}}
1284
+ }; /*}}}*/
1285
+ this.elements.parallel_eventbased_parallel = { /*{{{*/
1286
+ 'parent': 'parallel',
1287
+ 'illustrator': {//{{{
1288
+ 'svg': self.adaptor.theme_dir + 'symbols/parallel_eventbased_parallel.svg'
1289
+ }//}}}
1290
+ }; /*}}}*/
1229
1291
  this.elements.parallel_simple = { /*{{{*/
1230
1292
  'parent': 'parallel_finish',
1231
1293
  'illustrator': {//{{{
@@ -1238,6 +1300,18 @@ function WFAdaptorManifestation(adaptor) {
1238
1300
  'svg': self.adaptor.theme_dir + 'symbols/complex.svg'
1239
1301
  },//}}}
1240
1302
  }; /*}}}*/
1303
+ this.elements.parallel_event_all = { /*{{{*/
1304
+ 'parent': 'parallel_finish',
1305
+ 'illustrator': {//{{{
1306
+ 'svg': self.adaptor.theme_dir + 'symbols/parallel_eventbased_parallel.svg'
1307
+ }//}}}
1308
+ }; /*}}}*/
1309
+ this.elements.parallel_event_one = { /*{{{*/
1310
+ 'parent': 'parallel_finish',
1311
+ 'illustrator': {//{{{
1312
+ 'svg': self.adaptor.theme_dir + 'symbols/parallel_eventbased_exclusive.svg'
1313
+ }//}}}
1314
+ }; /*}}}*/
1241
1315
  this.elements.parallel_branch_normal = { /*{{{*/
1242
1316
  'parent': 'parallel_branch',
1243
1317
  'illustrator': {//{{{
@@ -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>
@@ -2,6 +2,12 @@
2
2
  <attribute name="wait" rngui:label="Wait" rngui:default="-1" rngui:hint="-1 to wait for all branches.">
3
3
  <data type="integer"/>
4
4
  </attribute>
5
+ <attribute name="cancel" rngui:label="Cancel" rngui:default="last" rngui:hint="Set 'Wait' to 1 for standard Event-based Gateway.">
6
+ <choice>
7
+ <value id='last'>After Last Task in Branch</value>
8
+ <value id='first'>After First Task in Branch (Event-Based Gateway)</value>
9
+ </choice>
10
+ </attribute>
5
11
  <element rngui:ignore="true" name="parallel_branch">
6
12
  <attribute name="pass">
7
13
  <data type="string"/>