cpee 2.0.26 → 2.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (369) hide show
  1. checksums.yaml +4 -4
  2. data/cockpit/config.json.example +7 -0
  3. data/cockpit/css/ui.css +1 -0
  4. data/cockpit/css/wfadaptor.css +11 -0
  5. data/cockpit/edit.html +1 -4
  6. data/cockpit/js/instance.js +9 -4
  7. data/cockpit/js/wfadaptor.js +2 -0
  8. data/cockpit/templates.legacy/Async.xml +12 -12
  9. data/cockpit/templates.legacy/BCO.xml +9 -11
  10. data/cockpit/templates.legacy/BCS.xml +9 -11
  11. data/cockpit/templates.legacy/Centurio.xml +7 -7
  12. data/cockpit/templates.legacy/Concurrent.xml +7 -7
  13. data/cockpit/templates.legacy/Coopis Testset.xml +7 -7
  14. data/cockpit/templates.legacy/Endpoints and Data Manipulation.xml +6 -7
  15. data/cockpit/templates.legacy/ICSOC Testset.xml +7 -7
  16. data/cockpit/templates.legacy/Infinity.xml +7 -7
  17. data/cockpit/templates.legacy/Lego Boxer.xml +13 -13
  18. data/cockpit/templates.legacy/Lego Conveyor.xml +13 -13
  19. data/cockpit/templates.legacy/Lego Crane.xml +16 -16
  20. data/cockpit/templates.legacy/Lego Ejector.xml +16 -16
  21. data/cockpit/templates.legacy/Lego Full.xml +12 -12
  22. data/cockpit/templates.legacy/Lego Liddy.xml +13 -13
  23. data/cockpit/templates.legacy/Lego Plate.xml +13 -13
  24. data/cockpit/templates.legacy/Lego Transporter.xml +14 -14
  25. data/cockpit/templates.legacy/Lego_Part_1.xml +12 -12
  26. data/cockpit/templates.legacy/LgLinear.xml +7 -10
  27. data/cockpit/templates.legacy/Linear.xml +11 -14
  28. data/cockpit/templates.legacy/Log.xml +11 -12
  29. data/cockpit/templates.legacy/Mangler 1.xml +7 -7
  30. data/cockpit/templates.legacy/Mangler 2.xml +7 -7
  31. data/cockpit/templates.legacy/Manuel Labels.xml +11 -11
  32. data/cockpit/templates.legacy/Promise.xml +30 -30
  33. data/cockpit/templates.legacy/SOPROMO Test Sonification.xml +7 -7
  34. data/cockpit/templates.legacy/Subprocess.xml +15 -15
  35. data/cockpit/templates.legacy/Syncing P34 1.xml +8 -11
  36. data/cockpit/templates.legacy/Syncing P34 2.xml +8 -11
  37. data/cockpit/templates.legacy/Syncing P34 3.xml +8 -11
  38. data/cockpit/templates.legacy/Syncing P34.xml +8 -11
  39. data/cockpit/templates.legacy/TEST - Bad Loop.xml +7 -7
  40. data/cockpit/templates.legacy/TEST - Wrong Positions.xml +7 -7
  41. data/cockpit/templates.legacy/Take_5.xml +14 -14
  42. data/cockpit/templates.legacy/Update.xml +11 -11
  43. data/cockpit/templates.legacy/Worklist Parallel.xml +17 -17
  44. data/cockpit/templates.legacy/Worklist Test CPEE.xml +14 -14
  45. data/cockpit/templates.legacy/Worklist Test.xml +14 -14
  46. data/cockpit/templates.legacy/Worklist Test2.xml +14 -14
  47. data/cockpit/templates/Coopis 2010.xml +19 -11
  48. data/cockpit/templates/Coopis 2010.xml.active +1 -0
  49. data/cockpit/templates/Coopis 2010.xml.active-uuid +1 -0
  50. data/cockpit/templates/IUPC arXiv:1104.3609 P34 1.xml +13 -12
  51. data/cockpit/templates/IUPC arXiv:1104.3609 P34 2.xml +13 -12
  52. data/cockpit/templates/IUPC arXiv:1104.3609 P34 3.xml +13 -12
  53. data/cockpit/templates/Track Test Local.xml +3 -3
  54. data/cockpit/templates/Track Test.xml +2 -2
  55. data/cockpit/templates/UR-VUE 2020 Manual Adjust.xml +2 -2
  56. data/cockpit/templates/UR-VUE 2020 Solution Baseline.xml +2 -2
  57. data/cockpit/templates/UR-VUE 2020 Solution NN.xml +2 -2
  58. data/cockpit/templates/UR-VUE 2020 Solution View.xml +2 -2
  59. data/cockpit/templates/UR-VUE 2020.xml +4 -2
  60. data/cockpit/templates/Worklist.xml +19 -14
  61. data/cockpit/templates/instantiate.local/Take_Sub.xml +2 -2
  62. data/cockpit/templates/instantiate/Take_Perf.xml +1 -1
  63. data/cockpit/templates/instantiate/Take_Sub.xml +2 -2
  64. data/cockpit/templates/instantiate/Take_X.xml +2 -2
  65. data/cockpit/themes/compact/rngs/parallel.rng +6 -0
  66. data/cockpit/themes/compact/rngs/start.rng +83 -0
  67. data/cockpit/themes/compact/symbols/parallel_branch_event.svg +2 -2
  68. data/cockpit/themes/compact/symbols/parallel_eventbased_exclusive.svg +9 -0
  69. data/cockpit/themes/compact/symbols/parallel_eventbased_parallel.svg +8 -0
  70. data/cockpit/themes/compact/symbols/start.svg +1 -1
  71. data/cockpit/themes/compact/theme.js +45 -2
  72. data/cockpit/themes/control/rngs/parallel.rng +6 -0
  73. data/cockpit/themes/control/rngs/start.rng +83 -0
  74. data/cockpit/themes/control/symbols/parallel_branch_event.svg +2 -2
  75. data/cockpit/themes/control/symbols/parallel_eventbased_exclusive.svg +9 -0
  76. data/cockpit/themes/control/symbols/parallel_eventbased_parallel.svg +8 -0
  77. data/cockpit/themes/control/symbols/start.svg +1 -1
  78. data/cockpit/themes/control/theme.js +45 -2
  79. data/cockpit/themes/default/rngs/parallel.rng +6 -0
  80. data/cockpit/themes/default/rngs/start.rng +83 -0
  81. data/cockpit/themes/default/symbols/parallel_branch_event.svg +2 -2
  82. data/cockpit/themes/default/symbols/parallel_eventbased_exclusive.svg +9 -0
  83. data/cockpit/themes/default/symbols/parallel_eventbased_parallel.svg +8 -0
  84. data/cockpit/themes/default/symbols/start.svg +1 -1
  85. data/cockpit/themes/default/theme.js +46 -3
  86. data/cockpit/themes/extended/rngs/parallel.rng +6 -0
  87. data/cockpit/themes/extended/rngs/start.rng +83 -0
  88. data/cockpit/themes/extended/symbols/parallel_branch_event.svg +2 -2
  89. data/cockpit/themes/extended/symbols/parallel_eventbased_exclusive.svg +9 -0
  90. data/cockpit/themes/extended/symbols/parallel_eventbased_parallel.svg +8 -0
  91. data/cockpit/themes/extended/symbols/start.svg +1 -1
  92. data/cockpit/themes/extended/theme.js +45 -2
  93. data/cockpit/themes/model/symbols/parallel_branch_event.svg +2 -2
  94. data/cockpit/themes/model/symbols/parallel_eventbased_exclusive.svg +9 -0
  95. data/cockpit/themes/model/symbols/parallel_eventbased_parallel.svg +8 -0
  96. data/cockpit/themes/model/symbols/start.svg +1 -1
  97. data/cockpit/themes/model/theme.js +45 -2
  98. data/cockpit/themes/packed/rngs/parallel.rng +6 -0
  99. data/cockpit/themes/packed/rngs/start.rng +83 -0
  100. data/cockpit/themes/packed/symbols/parallel_branch_event.svg +2 -2
  101. data/cockpit/themes/packed/symbols/parallel_eventbased_exclusive.svg +9 -0
  102. data/cockpit/themes/packed/symbols/parallel_eventbased_parallel.svg +8 -0
  103. data/cockpit/themes/packed/symbols/start.svg +1 -1
  104. data/cockpit/themes/packed/theme.js +45 -2
  105. data/cockpit/themes/preset/rngs/parallel.rng +6 -0
  106. data/cockpit/themes/preset/rngs/start.rng +83 -0
  107. data/cockpit/themes/preset/symbols/parallel_branch_event.svg +2 -2
  108. data/cockpit/themes/preset/symbols/parallel_eventbased_exclusive.svg +9 -0
  109. data/cockpit/themes/preset/symbols/parallel_eventbased_parallel.svg +8 -0
  110. data/cockpit/themes/preset/symbols/start.svg +1 -1
  111. data/cockpit/themes/preset/theme.js +46 -3
  112. data/cpee.gemspec +3 -3
  113. data/lib/cpee/attributes_helper.rb +14 -0
  114. data/lib/cpee/implementation.rb +10 -8
  115. data/lib/cpee/implementation_callbacks.rb +14 -0
  116. data/lib/cpee/implementation_notifications.rb +14 -0
  117. data/lib/cpee/implementation_properties.rb +128 -24
  118. data/lib/cpee/persistence.rb +0 -27
  119. data/lib/cpee/statemachine.rb +14 -0
  120. data/lib/cpee/value_helper.rb +14 -0
  121. data/lib/properties.xml +4 -4
  122. data/lib/properties/{handlerwrapper.rng → executionhandler.rng} +2 -2
  123. data/lib/properties/properties.rng +2 -2
  124. data/lib/properties/set-properties.rng +2 -2
  125. data/lib/properties/set-some-properties.rng +2 -2
  126. data/server/{resources → executionhandlers/ruby}/backend/README.md +0 -0
  127. data/server/{resources → executionhandlers/ruby}/backend/instance.template +2 -4
  128. data/server/{resources → executionhandlers/ruby}/backend/opts.yaml +2 -2
  129. data/server/executionhandlers/ruby/backend/run +37 -0
  130. data/server/{handlerwrappers/default.rb → executionhandlers/ruby/connection.rb} +7 -3
  131. data/server/executionhandlers/ruby/controller.rb +195 -0
  132. data/server/{resources/transformation_dslx.xsl → executionhandlers/ruby/dsl_to_dslx.xsl} +57 -8
  133. data/server/executionhandlers/ruby/execution.rb +81 -0
  134. data/server/resources/properties.empty +1 -1
  135. data/server/resources/properties.init +1 -1
  136. data/server/resources/topics.xml +2 -2
  137. data/server/routing/persist.rb +3 -3
  138. data/tools/cpee +10 -4
  139. data/tools/server/cpee +1 -1
  140. data/tools/server/resources/properties.init +1 -1
  141. metadata +38 -240
  142. data/cockpit/js_libs.zip +0 -0
  143. data/cockpit/templates.legacy/convert_cpee2.rb +0 -15
  144. data/lib/cpee/controller.rb +0 -199
  145. data/lib/cpee/transform.rb +0 -95
  146. data/server/resources/backend/instance.rb +0 -23
  147. data/server/resources/backend/run +0 -33
  148. data/server/routing/end.pid +0 -1
  149. data/server/routing/forward-events.pid +0 -1
  150. data/server/routing/forward-votes.pid +0 -1
  151. data/server/routing/persist.pid +0 -1
  152. data/server/server.pid +0 -1
  153. data/tools/test/README +0 -4
  154. data/tools/test/config.json +0 -3
  155. data/tools/test/contrib/graph_example.svg +0 -1166
  156. data/tools/test/contrib/legend.svg +0 -817
  157. data/tools/test/contrib/symbols.svg +0 -224
  158. data/tools/test/contrib/transformation1.xsl +0 -264
  159. data/tools/test/contrib/transformation2.xsl +0 -10
  160. data/tools/test/contrib/tree_example.svg +0 -788
  161. data/tools/test/css/model.css +0 -24
  162. data/tools/test/css/track.css +0 -60
  163. data/tools/test/css/ui.css +0 -214
  164. data/tools/test/css/wfadaptor.css +0 -422
  165. data/tools/test/edit.html +0 -258
  166. data/tools/test/graph.html +0 -69
  167. data/tools/test/index.html +0 -258
  168. data/tools/test/js/details.js +0 -109
  169. data/tools/test/js/instance.js +0 -1344
  170. data/tools/test/js/model.js +0 -41
  171. data/tools/test/js/parameters.js +0 -82
  172. data/tools/test/js/track.js +0 -18
  173. data/tools/test/js/ui.js +0 -104
  174. data/tools/test/js/wfadaptor.js +0 -763
  175. data/tools/test/js_libs.zip +0 -0
  176. data/tools/test/js_libs/Makefile +0 -2
  177. data/tools/test/js_libs/ansi_up.js +0 -333
  178. data/tools/test/js_libs/console.js +0 -80
  179. data/tools/test/js_libs/custommenu.css +0 -84
  180. data/tools/test/js_libs/custommenu.js +0 -104
  181. data/tools/test/js_libs/experiments1/relaxngui.css +0 -185
  182. data/tools/test/js_libs/experiments1/relaxngui.js +0 -488
  183. data/tools/test/js_libs/experiments1/rngtest9.html +0 -60
  184. data/tools/test/js_libs/experiments1/rngtest9.rng +0 -35
  185. data/tools/test/js_libs/experiments1/rngtest9.xml +0 -8
  186. data/tools/test/js_libs/jquery-2.2.4.min.js +0 -4
  187. data/tools/test/js_libs/jquery-3.2.1.min.js +0 -4
  188. data/tools/test/js_libs/jquery-3.3.1.min.js +0 -2
  189. data/tools/test/js_libs/jquery.browser.js +0 -40
  190. data/tools/test/js_libs/jquery.caret.min.js +0 -10
  191. data/tools/test/js_libs/jquery.cookie.js +0 -117
  192. data/tools/test/js_libs/jquery.min.js +0 -1
  193. data/tools/test/js_libs/jquery.svg.min.js +0 -6
  194. data/tools/test/js_libs/jquery.svgdom.min.js +0 -6
  195. data/tools/test/js_libs/markdown.min.js +0 -1
  196. data/tools/test/js_libs/parsequery.js +0 -21
  197. data/tools/test/js_libs/printf.js +0 -368
  198. data/tools/test/js_libs/relaxngui.css +0 -213
  199. data/tools/test/js_libs/relaxngui.js +0 -543
  200. data/tools/test/js_libs/strftime.min.js +0 -1
  201. data/tools/test/js_libs/tests/dataelements.html +0 -59
  202. data/tools/test/js_libs/tests/dataelements.rng +0 -8
  203. data/tools/test/js_libs/tests/dataelements.xml +0 -3
  204. data/tools/test/js_libs/tests/relaxngui.css +0 -203
  205. data/tools/test/js_libs/tests/relaxngui.js +0 -502
  206. data/tools/test/js_libs/tests/rngtest1.html +0 -66
  207. data/tools/test/js_libs/tests/rngtest1.rng +0 -147
  208. data/tools/test/js_libs/tests/rngtest1.xml +0 -13
  209. data/tools/test/js_libs/tests/rngtest2.html +0 -60
  210. data/tools/test/js_libs/tests/rngtest2.rng +0 -6
  211. data/tools/test/js_libs/tests/rngtest2.xml +0 -3
  212. data/tools/test/js_libs/tests/rngtest3.html +0 -60
  213. data/tools/test/js_libs/tests/rngtest3.rng +0 -23
  214. data/tools/test/js_libs/tests/rngtest3.xml +0 -9
  215. data/tools/test/js_libs/tests/rngtest4.html +0 -60
  216. data/tools/test/js_libs/tests/rngtest4.rng +0 -19
  217. data/tools/test/js_libs/tests/rngtest4.xml +0 -12
  218. data/tools/test/js_libs/tests/rngtest5.html +0 -60
  219. data/tools/test/js_libs/tests/rngtest5.rng +0 -75
  220. data/tools/test/js_libs/tests/rngtest5.xml +0 -40
  221. data/tools/test/js_libs/tests/rngtest6.html +0 -60
  222. data/tools/test/js_libs/tests/rngtest6.rng +0 -24
  223. data/tools/test/js_libs/tests/rngtest6.xml +0 -6
  224. data/tools/test/js_libs/tests/rngtest8.html +0 -60
  225. data/tools/test/js_libs/tests/rngtest8.rng +0 -13
  226. data/tools/test/js_libs/tests/rngtest8.xml +0 -2
  227. data/tools/test/js_libs/tests/rngtest9.html +0 -60
  228. data/tools/test/js_libs/tests/rngtest9.rng +0 -31
  229. data/tools/test/js_libs/tests/rngtest9.xml +0 -8
  230. data/tools/test/js_libs/ui.css +0 -333
  231. data/tools/test/js_libs/ui.html +0 -168
  232. data/tools/test/js_libs/ui.js +0 -177
  233. data/tools/test/js_libs/underscore.min.js +0 -27
  234. data/tools/test/js_libs/util.js +0 -81
  235. data/tools/test/js_libs/vkbeautify.0.99.00.beta.js +0 -358
  236. data/tools/test/js_libs/vkbeautify.js +0 -1
  237. data/tools/test/js_libs/webcomponents.min.js +0 -196
  238. data/tools/test/model.html +0 -192
  239. data/tools/test/rngs/attributes.rng +0 -8
  240. data/tools/test/rngs/dataelements.rng +0 -8
  241. data/tools/test/rngs/endpoints.rng +0 -8
  242. data/tools/test/templates.legacy/Async.xml +0 -46
  243. data/tools/test/templates.legacy/BCO.xml +0 -70
  244. data/tools/test/templates.legacy/BCS.xml +0 -70
  245. data/tools/test/templates.legacy/Centurio.xml +0 -75
  246. data/tools/test/templates.legacy/Concurrent.xml +0 -40
  247. data/tools/test/templates.legacy/Coopis Testset.xml +0 -76
  248. data/tools/test/templates.legacy/Endpoints and Data Manipulation.xml +0 -30
  249. data/tools/test/templates.legacy/ICSOC Testset.xml +0 -95
  250. data/tools/test/templates.legacy/Infinity.xml +0 -28
  251. data/tools/test/templates.legacy/Lego Boxer.xml +0 -31
  252. data/tools/test/templates.legacy/Lego Conveyor.xml +0 -31
  253. data/tools/test/templates.legacy/Lego Crane.xml +0 -87
  254. data/tools/test/templates.legacy/Lego Ejector.xml +0 -55
  255. data/tools/test/templates.legacy/Lego Full.xml +0 -142
  256. data/tools/test/templates.legacy/Lego Liddy.xml +0 -40
  257. data/tools/test/templates.legacy/Lego Plate.xml +0 -31
  258. data/tools/test/templates.legacy/Lego Transporter.xml +0 -43
  259. data/tools/test/templates.legacy/Lego_Part_1.xml +0 -85
  260. data/tools/test/templates.legacy/LgLinear.xml +0 -65
  261. data/tools/test/templates.legacy/Linear.xml +0 -77
  262. data/tools/test/templates.legacy/Log.xml +0 -117
  263. data/tools/test/templates.legacy/Mangler 1.xml +0 -87
  264. data/tools/test/templates.legacy/Mangler 2.xml +0 -103
  265. data/tools/test/templates.legacy/Manuel Labels.xml +0 -55
  266. data/tools/test/templates.legacy/Promise.xml +0 -275
  267. data/tools/test/templates.legacy/SOPROMO Test Sonification.xml +0 -83
  268. data/tools/test/templates.legacy/Subprocess.xml +0 -56
  269. data/tools/test/templates.legacy/Syncing P34 1.xml +0 -77
  270. data/tools/test/templates.legacy/Syncing P34 2.xml +0 -77
  271. data/tools/test/templates.legacy/Syncing P34 3.xml +0 -77
  272. data/tools/test/templates.legacy/Syncing P34.xml +0 -77
  273. data/tools/test/templates.legacy/TEST - Bad Loop.xml +0 -173
  274. data/tools/test/templates.legacy/TEST - Wrong Positions.xml +0 -174
  275. data/tools/test/templates.legacy/Take_5.xml +0 -48
  276. data/tools/test/templates.legacy/Update.xml +0 -32
  277. data/tools/test/templates.legacy/Worklist Parallel.xml +0 -104
  278. data/tools/test/templates.legacy/Worklist Test CPEE.xml +0 -40
  279. data/tools/test/templates.legacy/Worklist Test.xml +0 -42
  280. data/tools/test/templates.legacy/Worklist Test2.xml +0 -43
  281. data/tools/test/templates.legacy/convert_cpee2.rb +0 -15
  282. data/tools/test/templates.legacy/convert_preset.rb +0 -32
  283. data/tools/test/templates.legacy/testsets.xml +0 -37
  284. data/tools/test/templates.legacy/transformations.xml +0 -4
  285. data/tools/test/templates/Coopis 2010.xml +0 -76
  286. data/tools/test/templates/IUPC arXiv:1104.3609 P34 1.xml +0 -77
  287. data/tools/test/templates/IUPC arXiv:1104.3609 P34 2.xml +0 -77
  288. data/tools/test/templates/IUPC arXiv:1104.3609 P34 3.xml +0 -77
  289. data/tools/test/templates/Track Test Local.xml +0 -82
  290. data/tools/test/templates/Track Test.xml +0 -82
  291. data/tools/test/templates/UR-VUE 2020 Manual Adjust.xml +0 -182
  292. data/tools/test/templates/UR-VUE 2020 Solution Baseline.xml +0 -203
  293. data/tools/test/templates/UR-VUE 2020 Solution NN.xml +0 -197
  294. data/tools/test/templates/UR-VUE 2020 Solution View.xml +0 -151
  295. data/tools/test/templates/UR-VUE 2020.xml +0 -26
  296. data/tools/test/templates/Worklist.xml +0 -42
  297. data/tools/test/templates/instantiate.local/Take_Sub.xml +0 -59
  298. data/tools/test/templates/instantiate/Take_Perf.xml +0 -46
  299. data/tools/test/templates/instantiate/Take_Sub.xml +0 -58
  300. data/tools/test/templates/instantiate/Take_X.xml +0 -48
  301. data/tools/test/themes/compact/theme.js +0 -1285
  302. data/tools/test/themes/diana/theme.js +0 -1650
  303. data/tools/test/themes/extended/theme.js +0 -1325
  304. data/tools/test/themes/model/rngs/alternative.rng +0 -1
  305. data/tools/test/themes/model/rngs/call.rng +0 -67
  306. data/tools/test/themes/model/rngs/callmanipulate.rng +0 -72
  307. data/tools/test/themes/model/rngs/choose.rng +0 -1
  308. data/tools/test/themes/model/rngs/critical.rng +0 -1
  309. data/tools/test/themes/model/rngs/escape.rng +0 -1
  310. data/tools/test/themes/model/rngs/group.rng +0 -1
  311. data/tools/test/themes/model/rngs/loop.rng +0 -1
  312. data/tools/test/themes/model/rngs/manipulate.rng +0 -1
  313. data/tools/test/themes/model/rngs/otherwise.rng +0 -1
  314. data/tools/test/themes/model/rngs/parallel.rng +0 -1
  315. data/tools/test/themes/model/rngs/parallel_branch.rng +0 -1
  316. data/tools/test/themes/model/rngs/scripts.rng +0 -7
  317. data/tools/test/themes/model/rngs/stop.rng +0 -1
  318. data/tools/test/themes/model/rngs/terminate.rng +0 -1
  319. data/tools/test/themes/model/theme.js +0 -1268
  320. data/tools/test/themes/packed/theme.js +0 -1286
  321. data/tools/test/themes/preset/rngs/alternative.rng +0 -25
  322. data/tools/test/themes/preset/rngs/call.rng +0 -122
  323. data/tools/test/themes/preset/rngs/callmanipulate.rng +0 -145
  324. data/tools/test/themes/preset/rngs/choose.rng +0 -14
  325. data/tools/test/themes/preset/rngs/closed_loop.rng +0 -62
  326. data/tools/test/themes/preset/rngs/closed_loop_cancel.rng +0 -5
  327. data/tools/test/themes/preset/rngs/closed_loop_control.rng +0 -31
  328. data/tools/test/themes/preset/rngs/closed_loop_measuring.rng +0 -12
  329. data/tools/test/themes/preset/rngs/critical.rng +0 -5
  330. data/tools/test/themes/preset/rngs/escape.rng +0 -1
  331. data/tools/test/themes/preset/rngs/group.rng +0 -3
  332. data/tools/test/themes/preset/rngs/loop.rng +0 -22
  333. data/tools/test/themes/preset/rngs/manipulate.rng +0 -9
  334. data/tools/test/themes/preset/rngs/otherwise.rng +0 -22
  335. data/tools/test/themes/preset/rngs/parallel.rng +0 -21
  336. data/tools/test/themes/preset/rngs/parallel_branch.rng +0 -8
  337. data/tools/test/themes/preset/rngs/scripts.rng +0 -23
  338. data/tools/test/themes/preset/rngs/stop.rng +0 -5
  339. data/tools/test/themes/preset/rngs/terminate.rng +0 -1
  340. data/tools/test/themes/preset/symbols/alternative.svg +0 -5
  341. data/tools/test/themes/preset/symbols/arrow.svg +0 -3
  342. data/tools/test/themes/preset/symbols/call.svg +0 -6
  343. data/tools/test/themes/preset/symbols/callmanipulate.svg +0 -8
  344. data/tools/test/themes/preset/symbols/choose.svg +0 -5
  345. data/tools/test/themes/preset/symbols/choose_exclusive.svg +0 -5
  346. data/tools/test/themes/preset/symbols/choose_inclusive.svg +0 -4
  347. data/tools/test/themes/preset/symbols/closed_loop.svg +0 -5
  348. data/tools/test/themes/preset/symbols/closed_loop_cancel.svg +0 -5
  349. data/tools/test/themes/preset/symbols/closed_loop_control.svg +0 -5
  350. data/tools/test/themes/preset/symbols/closed_loop_measuring.svg +0 -6
  351. data/tools/test/themes/preset/symbols/complex.svg +0 -8
  352. data/tools/test/themes/preset/symbols/critical.svg +0 -4
  353. data/tools/test/themes/preset/symbols/end.svg +0 -3
  354. data/tools/test/themes/preset/symbols/escape.svg +0 -5
  355. data/tools/test/themes/preset/symbols/event_end.svg +0 -3
  356. data/tools/test/themes/preset/symbols/loop.svg +0 -5
  357. data/tools/test/themes/preset/symbols/manipulate.svg +0 -4
  358. data/tools/test/themes/preset/symbols/otherwise.svg +0 -5
  359. data/tools/test/themes/preset/symbols/parallel.svg +0 -5
  360. data/tools/test/themes/preset/symbols/parallel_branch.svg +0 -5
  361. data/tools/test/themes/preset/symbols/parallel_branch_compact.svg +0 -4
  362. data/tools/test/themes/preset/symbols/parallel_branch_event.svg +0 -14
  363. data/tools/test/themes/preset/symbols/parallel_branch_normal.svg +0 -5
  364. data/tools/test/themes/preset/symbols/scripts.svg +0 -4
  365. data/tools/test/themes/preset/symbols/start.svg +0 -3
  366. data/tools/test/themes/preset/symbols/stop.svg +0 -5
  367. data/tools/test/themes/preset/symbols/terminate.svg +0 -4
  368. data/tools/test/themes/preset/theme.js +0 -1287
  369. data/tools/test/track.html +0 -142
data/cockpit/js_libs.zip DELETED
Binary file
@@ -1,15 +0,0 @@
1
- #!/usr/bin/ruby
2
- require 'xml/smart'
3
-
4
- Dir['*.xml'].each do |f|
5
- XML::Smart.modify(f) do |doc|
6
- doc.register_namespace 'd', 'http://cpee.org/ns/description/1.0'
7
- doc.register_namespace 'p', 'http://riddl.org/ns/common-patterns/properties/1.0'
8
- if doc.root.qname.name == 'testset'
9
- doc.find('//attributes | //endpoints | //dataelements | //positions | //transformation | //handlerwrapper | //description').each do |e|
10
- e.namespaces[nil] = 'http://cpee.org/ns/properties/2.0'
11
- e.namespace = nil
12
- end
13
- end
14
- end
15
- end
@@ -1,199 +0,0 @@
1
- # This file is part of CPEE.
2
- #
3
- # CPEE is free software: you can redistribute it and/or modify it under the terms
4
- # of the GNU General Public License as published by the Free Software Foundation,
5
- # either version 3 of the License, or (at your option) any later version.
6
- #
7
- # CPEE is distributed in the hope that it will be useful, but WITHOUT ANY
8
- # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
9
- # PARTICULAR PURPOSE. See the GNU General Public License for more details.
10
- #
11
- # You should have received a copy of the GNU General Public License along with
12
- # CPEE (file COPYING in the main directory). If not, see
13
- # <http://www.gnu.org/licenses/>.
14
-
15
- require 'weel'
16
- require 'json'
17
- require 'redis'
18
- require 'securerandom'
19
- require 'riddl/client'
20
- require_relative 'value_helper'
21
- require_relative 'attributes_helper'
22
- require_relative 'message'
23
- require_relative 'redis'
24
-
25
- require 'ostruct'
26
- class ParaStruct < OpenStruct
27
- def to_json(*a)
28
- table.to_json
29
- end
30
- end
31
- def →(a); ParaStruct.new(a); end
32
- def ⭐(a); ParaStruct.new(a); end
33
-
34
- module CPEE
35
-
36
- class Controller
37
- def initialize(id,dir,opts)
38
- CPEE::redis_connect(opts)
39
-
40
- @redis = opts[:redis]
41
- @votes = []
42
-
43
- @id = id
44
-
45
- @attributes = {}
46
- @redis.keys("instance:#{id}/attributes/*").each do |key|
47
- @attributes[File.basename(key)] = @redis.get(key)
48
- end
49
-
50
- @attributes_helper = AttributesHelper.new
51
- @thread = nil
52
- @opts = opts
53
- @instance = nil
54
- @loop_guard = {}
55
-
56
- @callback_keys = {}
57
- @psredis = @opts[:redis_dyn].call
58
-
59
- Thread.new do
60
- @psredis.psubscribe('callback-response:*','callback-end:*') do |on|
61
- on.pmessage do |pat, what, message|
62
- if pat == 'callback-response:*' && @callback_keys.has_key?(what[18..-1])
63
- index = message.index(' ')
64
- mess = message[index+1..-1]
65
- instance = message[0...index]
66
- m = JSON.parse(mess)
67
- resp = []
68
- m['content']['values'].each do |e|
69
- if e[1][0] == 'simple'
70
- resp << Riddl::Parameter::Simple.new(e[0],e[1][1])
71
- elsif e[1][0] == 'complex'
72
- resp << Riddl::Parameter::Complex.new(e[0],e[1][1],File.open(e[1][2]))
73
- end
74
- end
75
- @callback_keys[what[18..-1]].send(:callback,resp,m['content']['headers'])
76
- end
77
- if pat == 'callback-end:*'
78
- @callback_keys.delete(what[13..-1])
79
- end
80
- end
81
- end
82
- end
83
- end
84
-
85
- attr_reader :id
86
- attr_reader :attributes
87
- attr_reader :loop_guard
88
-
89
- def uuid
90
- @attributes['uuid']
91
- end
92
-
93
- def attributes_translated
94
- @attributes_helper.translate(attributes,dataelements,endpoints)
95
- end
96
-
97
- def host
98
- @opts[:host]
99
- end
100
- def base_url
101
- @opts[:url]
102
- end
103
- def instance_url
104
- File.join(@opts[:url].to_s,@id.to_s)
105
- end
106
- def instance_id
107
- @id
108
- end
109
- def base
110
- base_url
111
- end
112
- def instance=(inst)
113
- @instance = inst
114
- end
115
- def endpoints
116
- @instance.endpoints
117
- end
118
- def dataelements
119
- @instance.data
120
- end
121
-
122
- def start
123
- if vote("state/change", :state => 'running')
124
- @thread = @instance.start
125
- @thread.join
126
- else
127
- @thread = @instance.stop
128
- @thread.join
129
- end
130
- end
131
-
132
- def stop
133
- ### tell the instance to stop
134
- @instance.stop
135
- ### end all votes or it will not work
136
- Thread.new do # doing stuff in trap context is a nono. but in a thread its fine :-)
137
- @votes.each do |key|
138
- CPEE::Message::send(:'vote-response',key,base,@id,uuid,info,true,@redis)
139
- end
140
- end
141
- @thread.join if !@thread.nil? && @thread.alive?
142
- end
143
-
144
- def info
145
- @attributes['info']
146
- end
147
-
148
- def notify(what,content={})
149
- content[:attributes] = attributes_translated
150
- CPEE::Message::send(:event,what,base,@id,uuid,info,content,@redis)
151
- end
152
-
153
- def vote(what,content={})
154
- topic, name = what.split('/')
155
- handler = File.join(topic,'vote',name)
156
- votes = []
157
- @redis.smembers("instance:#{id}/handlers/#{handler}").each do |client|
158
- voteid = Digest::MD5.hexdigest(Kernel::rand().to_s)
159
- content[:key] = voteid
160
- content[:attributes] = attributes_translated
161
- content[:subscription] = client
162
- votes << voteid
163
- CPEE::Message::send(:vote,what,base,@id,uuid,info,content,@redis)
164
- end
165
-
166
- if votes.length > 0
167
- @votes += votes
168
- psredis = @opts[:redis_dyn].call
169
- collect = []
170
- psredis.subscribe(votes.map{|e| ['vote-response:' + e.to_s] }.flatten) do |on|
171
- on.message do |what, message|
172
- index = message.index(' ')
173
- mess = message[index+1..-1]
174
- m = JSON.parse(mess)
175
- collect << ((m['content'] == true || m['content'] == 'true') || false)
176
- @votes.delete m['name']
177
- cancel_callback m['name']
178
- if collect.length >= votes.length
179
- psredis.unsubscribe
180
- end
181
- end
182
- end
183
- !collect.include?(false)
184
- else
185
- true
186
- end
187
- end
188
-
189
- def callback(hw,key,content)
190
- CPEE::Message::send(:callback,'activity/content',base,@id,uuid,info,content.merge(:key => key),@redis)
191
- @callback_keys[key] = hw
192
- end
193
-
194
- def cancel_callback(key)
195
- CPEE::Message::send(:'callback-end',key,base,@id,uuid,info,{},@redis)
196
- end
197
- end
198
-
199
- end
@@ -1,95 +0,0 @@
1
- def transform(descxml,tdesc,tdesctype,tdata,tdatatype,tendp,tendptype,opts)
2
- desc = XML::Smart::string(descxml)
3
- desc.register_namespace 'p', 'http://cpee.org/ns/description/1.0'
4
-
5
- dslx = nil
6
- dsl = nil
7
- de = {}
8
- ep = {}
9
-
10
- if desc.root.children.empty?
11
- tdesctype = tdatatype = tendptype = 'clean'
12
- end
13
-
14
- ### description transformation, including dslx to dsl
15
- addit = if tdesctype == 'copy' || tdesc.empty?
16
- desc
17
- elsif tdesctype == 'rest' && !tdesc.empty?
18
- srv = Riddl::Client.interface(tdesc,opts[:transformation_service])
19
- status, res = srv.post [
20
- Riddl::Parameter::Complex.new("description","text/xml",descxml),
21
- Riddl::Parameter::Simple.new("type","description")
22
- ]
23
- if status >= 200 && status < 300
24
- XML::Smart::string(res[0].value.read).root
25
- else
26
- raise 'Could not extract dslx'
27
- end
28
- elsif tdesctype == 'xslt' && !tdesc.empty?
29
- trans = XML::Smart::open_unprotected(tdesc)
30
- desc.transform_with(trans).root
31
- elsif tdesctype == 'clean'
32
- XML::Smart::open_unprotected(opts[:empty_dslx]).root
33
- else
34
- nil
35
- end
36
- unless addit.nil?
37
- trans = XML::Smart::open_unprotected(opts[:transformation_dslx])
38
- dslx = addit.to_s
39
- dsl = addit.transform_with(trans).to_s
40
- end
41
-
42
- ### dataelements extraction
43
- addit = if tdatatype == 'rest' && !tdata.empty?
44
- srv = Riddl::Client.interface(tdata,@opts[:transformation_service])
45
- status, res = srv.post [
46
- Riddl::Parameter::Complex.new("description","text/xml",descxml),
47
- Riddl::Parameter::Simple.new("type","dataelements")
48
- ]
49
- if status >= 200 && status < 300
50
- res
51
- else
52
- raise 'Could not extract dataelements'
53
- end
54
- elsif tdatatype == 'xslt' && !tdata.empty?
55
- trans = XML::Smart::open_unprotected(tdata)
56
- desc.transform_with(trans)
57
- elsif tdatatype == 'clean'
58
- []
59
- else
60
- nil
61
- end
62
- unless addit.nil?
63
- addit.each_slice(2).each do |k,v|
64
- de[k.value.to_sym] = v.value
65
- end
66
- end
67
-
68
- ### endpoints extraction
69
- addit = if tendptype == 'rest' && !tdata.empty?
70
- srv = Riddl::Client.interface(tendp,@opts[:transformation_service])
71
- status, res = srv.post [
72
- Riddl::Parameter::Complex.new("description","text/xml",descxml),
73
- Riddl::Parameter::Simple.new("type","endpoints")
74
- ]
75
- if status >= 200 && status < 300
76
- res
77
- else
78
- raise 'Could not extract endpoints'
79
- end
80
- elsif tendptype == 'xslt' && !tdata.empty?
81
- trans = XML::Smart::open_unprotected(tendp.text)
82
- desc.transform_with(trans)
83
- elsif tendptype == 'clean'
84
- []
85
- else
86
- nil
87
- end
88
- unless addit.nil?
89
- addit.each_slice(2).each do |k,v|
90
- ep[k.value.to_sym] = v.value
91
- end
92
- end
93
-
94
- [dslx, dsl, de, ep]
95
- end
@@ -1,23 +0,0 @@
1
- class Instance < WEEL
2
- handlerwrapper DefaultHandlerWrapper
3
-
4
- endpoint :timeout => "http://gruppe.wst.univie.ac.at/~mangler/services/timeout.php"
5
- data :x => ''
6
- # search Position.new(:a1,:after,nil)
7
-
8
- control flow do
9
- call :a1, :timeout, parameters: { :label => "Step 1", :method => :post, :arguments => [⭐(:name => :timeout, :value => ->{ "2" })] }, finalize: <<-END
10
- p 'xxx1'
11
- data.x += \"a1,\"
12
- END
13
- call :a2, :timeout, parameters: { :label => "Step 2", :method => :post, :arguments => [⭐(:name => :timeout, :value => ->{ "4" })] }, finalize: <<-END
14
- p 'xxx2'
15
- data.x += \"a2,\"
16
- END
17
- call :a3, :timeout, parameters: { :label => "Step 3", :method => :post, :arguments => [⭐(:name => :timeout, :value => ->{ "4" })] }, finalize: <<-END
18
- p 'xxx3'
19
- data.x += \"a3,\"
20
- END
21
- end
22
- end
23
-
@@ -1,33 +0,0 @@
1
- #!/usr/bin/ruby
2
- require 'yaml'
3
- opts = YAML::load_file(File.join(__dir__,'opts.yaml'))
4
- opts[:pidf] = __FILE__ + '.pid'
5
- opts[:pid] = Process.pid
6
- if File.exist? '../../../lib/cpee/controller'
7
- require_relative '../../../lib/cpee/controller'
8
- else
9
- require 'cpee/controller'
10
- end
11
-
12
- Dir[File.join(opts[:global_handlerwrappers],'*.rb')].each do |h|
13
- require h
14
- end unless opts[:global_handlerwrappers].nil? || opts[:global_handlerwrappers].strip == ''
15
- Dir[File.join(opts[:handlerwrappers],'*.rb')].each do |h|
16
- require h
17
- end unless opts[:handlerwrappers].nil? || opts[:handlerwrappers].strip == ''
18
-
19
- require_relative 'instance'
20
- controller = CPEE::Controller.new(File.basename(__dir__).to_i, __dir__, opts)
21
- controller.instance = Instance.new controller
22
-
23
- File.write(opts[:pidf],opts[:pid])
24
-
25
- %w{TERM HUP INT}.each do |sig|
26
- Signal.trap(sig) do
27
- puts "Caught #{sig}!"
28
- controller.stop
29
- end
30
- end
31
-
32
- controller.start
33
- File.unlink(opts[:pidf])
@@ -1 +0,0 @@
1
- 592867
@@ -1 +0,0 @@
1
- 592855
@@ -1 +0,0 @@
1
- 592859
@@ -1 +0,0 @@
1
- 592863
data/server/server.pid DELETED
@@ -1 +0,0 @@
1
- 592827
data/tools/test/README DELETED
@@ -1,4 +0,0 @@
1
- This directory contains a copy of the CPEE cockpit. The CPEE cockpit itself is
2
- freely available and distributable, but containts some libraries, that either
3
- user APACHE 2, LGPL-3, or MIT-License. Please check the files in the
4
- subdirectories, for particular licenses of files.
@@ -1,3 +0,0 @@
1
- {
2
- "res-url": "https://cpee.org/flow/resources/"
3
- }
@@ -1,1166 +0,0 @@
1
- <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
- <svg
3
- xmlns:dc="http://purl.org/dc/elements/1.1/"
4
- xmlns:cc="http://creativecommons.org/ns#"
5
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
6
- xmlns:svg="http://www.w3.org/2000/svg"
7
- xmlns="http://www.w3.org/2000/svg"
8
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
9
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
10
- version="1.1"
11
- id="svg2"
12
- inkscape:version="0.48+devel r12739"
13
- width="100%"
14
- height="100%"
15
- sodipodi:docname="tree_example.svg">
16
- <metadata
17
- id="metadata177">
18
- <rdf:RDF>
19
- <cc:Work
20
- rdf:about="">
21
- <dc:format>image/svg+xml</dc:format>
22
- <dc:type
23
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
24
- <dc:title></dc:title>
25
- </cc:Work>
26
- </rdf:RDF>
27
- </metadata>
28
- <sodipodi:namedview
29
- pagecolor="#ffffff"
30
- bordercolor="#666666"
31
- borderopacity="1"
32
- objecttolerance="10"
33
- gridtolerance="10"
34
- guidetolerance="10"
35
- inkscape:pageopacity="0"
36
- inkscape:pageshadow="2"
37
- inkscape:window-width="640"
38
- inkscape:window-height="480"
39
- id="namedview175"
40
- showgrid="true"
41
- inkscape:zoom="2.5371828"
42
- inkscape:cx="156.38058"
43
- inkscape:cy="-1011.451"
44
- inkscape:current-layer="svg2"
45
- inkscape:snap-intersection-paths="false"
46
- inkscape:object-nodes="true"
47
- inkscape:snap-smooth-nodes="true"
48
- inkscape:snap-text-baseline="true"
49
- inkscape:snap-grids="true"
50
- inkscape:snap-center="false"
51
- showguides="true"
52
- inkscape:guide-bbox="true">
53
- <inkscape:grid
54
- type="xygrid"
55
- id="grid3639" />
56
- <sodipodi:guide
57
- orientation="0,1"
58
- position="-2,488"
59
- id="guide4752" />
60
- <sodipodi:guide
61
- orientation="1,0"
62
- position="15,630"
63
- id="guide4773" />
64
- </sodipodi:namedview>
65
- <defs
66
- id="defs4">
67
- <marker
68
- inkscape:isstock="true"
69
- style="overflow:visible;"
70
- id="marker9857"
71
- refX="0.0"
72
- refY="0.0"
73
- orient="auto"
74
- inkscape:stockid="Arrow2Mend">
75
- <path
76
- transform="scale(0.6) rotate(180) translate(0,0)"
77
- d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
78
- style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
79
- id="path9859" />
80
- </marker>
81
- <marker
82
- inkscape:isstock="true"
83
- style="overflow:visible;"
84
- id="marker9691"
85
- refX="0.0"
86
- refY="0.0"
87
- orient="auto"
88
- inkscape:stockid="Arrow2Mend">
89
- <path
90
- transform="scale(0.6) rotate(180) translate(0,0)"
91
- d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
92
- style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
93
- id="path9693" />
94
- </marker>
95
- <marker
96
- inkscape:isstock="true"
97
- style="overflow:visible;"
98
- id="marker9531"
99
- refX="0.0"
100
- refY="0.0"
101
- orient="auto"
102
- inkscape:stockid="Arrow2Mend">
103
- <path
104
- transform="scale(0.6) rotate(180) translate(0,0)"
105
- d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
106
- style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
107
- id="path9533" />
108
- </marker>
109
- <marker
110
- inkscape:isstock="true"
111
- style="overflow:visible;"
112
- id="marker9377"
113
- refX="0.0"
114
- refY="0.0"
115
- orient="auto"
116
- inkscape:stockid="Arrow2Mend">
117
- <path
118
- transform="scale(0.6) rotate(180) translate(0,0)"
119
- d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
120
- style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
121
- id="path9379" />
122
- </marker>
123
- <marker
124
- inkscape:isstock="true"
125
- style="overflow:visible;"
126
- id="marker9229"
127
- refX="0.0"
128
- refY="0.0"
129
- orient="auto"
130
- inkscape:stockid="Arrow2Mend">
131
- <path
132
- transform="scale(0.6) rotate(180) translate(0,0)"
133
- d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
134
- style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
135
- id="path9231" />
136
- </marker>
137
- <marker
138
- inkscape:isstock="true"
139
- style="overflow:visible;"
140
- id="marker9087"
141
- refX="0.0"
142
- refY="0.0"
143
- orient="auto"
144
- inkscape:stockid="Arrow2Mend">
145
- <path
146
- transform="scale(0.6) rotate(180) translate(0,0)"
147
- d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
148
- style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
149
- id="path9089" />
150
- </marker>
151
- <marker
152
- inkscape:isstock="true"
153
- style="overflow:visible;"
154
- id="marker8951"
155
- refX="0.0"
156
- refY="0.0"
157
- orient="auto"
158
- inkscape:stockid="Arrow2Mend">
159
- <path
160
- transform="scale(0.6) rotate(180) translate(0,0)"
161
- d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
162
- style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
163
- id="path8953" />
164
- </marker>
165
- <marker
166
- inkscape:isstock="true"
167
- style="overflow:visible;"
168
- id="marker8821"
169
- refX="0.0"
170
- refY="0.0"
171
- orient="auto"
172
- inkscape:stockid="Arrow2Mend">
173
- <path
174
- transform="scale(0.6) rotate(180) translate(0,0)"
175
- d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
176
- style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
177
- id="path8823" />
178
- </marker>
179
- <marker
180
- inkscape:isstock="true"
181
- style="overflow:visible;"
182
- id="marker8697"
183
- refX="0.0"
184
- refY="0.0"
185
- orient="auto"
186
- inkscape:stockid="Arrow2Mend">
187
- <path
188
- transform="scale(0.6) rotate(180) translate(0,0)"
189
- d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
190
- style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
191
- id="path8699" />
192
- </marker>
193
- <marker
194
- inkscape:isstock="true"
195
- style="overflow:visible;"
196
- id="marker8579"
197
- refX="0.0"
198
- refY="0.0"
199
- orient="auto"
200
- inkscape:stockid="Arrow2Mend">
201
- <path
202
- transform="scale(0.6) rotate(180) translate(0,0)"
203
- d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
204
- style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
205
- id="path8581" />
206
- </marker>
207
- <marker
208
- inkscape:stockid="Arrow2Mend"
209
- orient="auto"
210
- refY="0.0"
211
- refX="0.0"
212
- id="Arrow2Mend"
213
- style="overflow:visible;"
214
- inkscape:isstock="true"
215
- inkscape:collect="always">
216
- <path
217
- id="path4435"
218
- style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
219
- d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
220
- transform="scale(0.6) rotate(180) translate(0,0)" />
221
- </marker>
222
- <marker
223
- inkscape:stockid="Arrow1Send"
224
- orient="auto"
225
- refY="0.0"
226
- refX="0.0"
227
- id="Arrow1Send"
228
- style="overflow:visible;"
229
- inkscape:isstock="true">
230
- <path
231
- id="path4423"
232
- d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
233
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
234
- transform="scale(0.2) rotate(180) translate(6,0)" />
235
- </marker>
236
- <marker
237
- inkscape:stockid="Arrow1Mend"
238
- orient="auto"
239
- refY="0.0"
240
- refX="0.0"
241
- id="Arrow1Mend"
242
- style="overflow:visible;"
243
- inkscape:isstock="true">
244
- <path
245
- id="path4417"
246
- d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
247
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
248
- transform="scale(0.4) rotate(180) translate(10,0)" />
249
- </marker>
250
- <marker
251
- inkscape:stockid="Arrow2Lend"
252
- orient="auto"
253
- refY="0.0"
254
- refX="0.0"
255
- id="Arrow2Lend"
256
- style="overflow:visible;"
257
- inkscape:isstock="true">
258
- <path
259
- id="path4429"
260
- style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
261
- d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
262
- transform="scale(1.1) rotate(180) translate(1,0)" />
263
- </marker>
264
- <!--{{{-->
265
- <style
266
- type="text/css"
267
- id="style6"><![CDATA[
268
- svg rect.injected {
269
- fill: Highlight;
270
- fill-opacity: 0.2;
271
- }
272
-
273
- svg path.ourline {
274
- stroke-opacity: 0.9;
275
- stroke:#000000;
276
- stroke-width: 2;
277
- fill: none;
278
- }
279
- svg rect.block {
280
- stroke-width: 1;
281
- stroke-dasharray: 3,5;
282
- stroke: #000000;
283
- fill: none;
284
- }
285
- svg circle.stand, svg rect.stand {
286
- stroke:#000000;
287
- stroke-width:2.06896567;
288
- stroke-linecap:round;
289
- stroke-linejoin:round;
290
- stroke-miterlimit:4;
291
- stroke-opacity:1;
292
- stroke-dasharray:none;
293
- }
294
- svg text.normal {
295
- font-size:20px;
296
- font-style:normal;
297
- font-variant:normal;
298
- font-weight:bold;
299
- font-stretch:normal;
300
- text-align:center;
301
- line-height:125%;
302
- writing-mode:lr-tb;
303
- text-anchor:middle;
304
- color:#000000;
305
- fill:#000000;
306
- fill-opacity:1;
307
- stroke:none;
308
- font-family:Arial;
309
- }
310
-
311
- svg text.super {
312
- font-size:11px;
313
- font-style:normal;
314
- font-variant:normal;
315
- font-weight:bold;
316
- font-stretch:normal;
317
- text-align:center;
318
- line-height:100%;
319
- writing-mode:lr-tb;
320
- text-anchor:left;
321
- color:#000000;
322
- fill:#000000;
323
- fill-opacity:1;
324
- stroke:none;
325
- font-family:Arial;
326
- }
327
- svg tspan.active {
328
- fill:#ff0000;
329
- display: none;
330
- }
331
- svg tspan.vote {
332
- fill:#73d216;
333
- display: none;
334
- }
335
- svg tspan.colon {
336
- display: none;
337
- }
338
- svg tspan.necessary {
339
- display: inline;
340
- }
341
-
342
- svg text.normallarge {
343
- font-size:25px;
344
- font-style:normal;
345
- font-variant:normal;
346
- font-weight:bold;
347
- font-stretch:normal;
348
- text-align:center;
349
- line-height:125%;
350
- writing-mode:lr-tb;
351
- text-anchor:middle;
352
- color:#000000;
353
- fill:#000000;
354
- fill-opacity:1;
355
- stroke:none;
356
- font-family:Arial;
357
- }
358
- svg text.small {
359
- font-size:14px;
360
- font-style:normal;
361
- font-variant:normal;
362
- font-weight:bold;
363
- font-stretch:normal;
364
- text-align:center;
365
- line-height:125%;
366
- writing-mode:lr-tb;
367
- text-anchor:middle;
368
- color:#000000;
369
- fill:#000000;
370
- fill-opacity:1;
371
- stroke:none;
372
- font-family:Arial;
373
- }
374
-
375
- #arrow {
376
- stroke: #000000;
377
- stroke-width: 2;
378
- fill: #000000;
379
- }
380
- ]]></style>
381
- <!--}}}-->
382
- <symbol
383
- id="activity"
384
- class="clickable">
385
- <!-- {{{ -->
386
- <rect
387
- x="1"
388
- y="1"
389
- width="28"
390
- height="28"
391
- class="stand"
392
- id="rect9" />
393
- </symbol>
394
- <!-- }}} -->
395
- <symbol
396
- id="activitymanipulate"
397
- class="clickable">
398
- <!-- {{{ -->
399
- <rect
400
- x="1"
401
- y="1"
402
- width="28"
403
- height="28"
404
- class="stand"
405
- id="rect12" />
406
- <circle
407
- cx="28"
408
- cy="28"
409
- r="9"
410
- class="stand"
411
- id="circle14"
412
- d="m 37,28 c 0,4.970563 -4.029437,9 -9,9 -4.970563,0 -9,-4.029437 -9,-9 0,-4.970563 4.029437,-9 9,-9 4.970563,0 9,4.029437 9,9 z" />
413
- <text
414
- class="small"
415
- transform="translate(28, 32)"
416
- id="text16">m</text>
417
- </symbol>
418
- <!-- }}} -->
419
- <symbol
420
- id="call"
421
- class="clickable">
422
- <!-- {{{ -->
423
- <circle
424
- cx="15"
425
- cy="15"
426
- r="14"
427
- class="stand"
428
- id="circle19" />
429
- <text
430
- class="normal"
431
- transform="translate(15, 21)"
432
- id="text21">c</text>
433
- </symbol>
434
- <!-- }}} -->
435
- <symbol
436
- id="manipulate"
437
- class="clickable">
438
- <!-- {{{ -->
439
- <circle
440
- cx="15"
441
- cy="15"
442
- r="14"
443
- class="stand"
444
- id="circle24"
445
- d="M 29,15 C 29,22.731986 22.731986,29 15,29 7.2680135,29 1,22.731986 1,15 1,7.2680135 7.2680135,1 15,1 22.731986,1 29,7.2680135 29,15 Z" />
446
- <text
447
- class="normal"
448
- transform="translate(15, 21)"
449
- id="text26">m</text>
450
- </symbol>
451
- <!-- }}} -->
452
- <symbol
453
- id="callmanipulate"
454
- class="clickable">
455
- <!-- {{{ -->
456
- <circle
457
- cx="15"
458
- cy="15"
459
- r="14"
460
- class="stand"
461
- id="circle29"
462
- d="M 29,15 C 29,22.731986 22.731986,29 15,29 7.2680135,29 1,22.731986 1,15 1,7.2680135 7.2680135,1 15,1 22.731986,1 29,7.2680135 29,15 Z" />
463
- <text
464
- class="normal"
465
- transform="translate(15, 21)"
466
- id="text31">c</text>
467
- <circle
468
- cx="28"
469
- cy="28"
470
- r="9"
471
- class="stand"
472
- id="circle33"
473
- d="m 37,28 c 0,4.970563 -4.029437,9 -9,9 -4.970563,0 -9,-4.029437 -9,-9 0,-4.970563 4.029437,-9 9,-9 4.970563,0 9,4.029437 9,9 z" />
474
- <text
475
- class="small"
476
- transform="translate(28, 32)"
477
- id="text35">m</text>
478
- </symbol>
479
- <!-- }}} -->
480
- <symbol
481
- id="choose"
482
- class="clickable">
483
- <!-- {{{ -->
484
- <circle
485
- cx="15"
486
- cy="15"
487
- r="14"
488
- class="stand"
489
- id="circle38"
490
- d="M 29,15 C 29,22.731986 22.731986,29 15,29 7.2680135,29 1,22.731986 1,15 1,7.2680135 7.2680135,1 15,1 22.731986,1 29,7.2680135 29,15 Z" />
491
- <text
492
- class="normal"
493
- transform="translate(15, 21)"
494
- id="text40">σ</text>
495
- </symbol>
496
- <!-- }}} -->
497
- <symbol
498
- id="alternative"
499
- class="clickable">
500
- <!-- {{{ -->
501
- <circle
502
- cx="15"
503
- cy="15"
504
- r="14"
505
- class="standwithout"
506
- id="circle43"
507
- d="M 29,15 C 29,22.731986 22.731986,29 15,29 7.2680135,29 1,22.731986 1,15 1,7.2680135 7.2680135,1 15,1 22.731986,1 29,7.2680135 29,15 Z" />
508
- <text
509
- class="normal"
510
- transform="translate(15, 20)"
511
- id="text45">{..}</text>
512
- </symbol>
513
- <!-- }}} -->
514
- <symbol
515
- id="otherwise"
516
- class="clickable">
517
- <!-- {{{ -->
518
- <circle
519
- cx="15"
520
- cy="15"
521
- r="14"
522
- class="standwithout"
523
- id="circle48"
524
- d="M 29,15 C 29,22.731986 22.731986,29 15,29 7.2680135,29 1,22.731986 1,15 1,7.2680135 7.2680135,1 15,1 22.731986,1 29,7.2680135 29,15 Z" />
525
- <text
526
- class="normal"
527
- transform="translate(15, 20)"
528
- id="text50">{⁎}</text>
529
- </symbol>
530
- <!-- }}} -->
531
- <symbol
532
- id="parallel"
533
- class="clickable">
534
- <!-- {{{ -->
535
- <circle
536
- cx="15"
537
- cy="15"
538
- r="14"
539
- class="stand"
540
- id="circle53"
541
- d="M 29,15 C 29,22.731986 22.731986,29 15,29 7.2680135,29 1,22.731986 1,15 1,7.2680135 7.2680135,1 15,1 22.731986,1 29,7.2680135 29,15 Z" />
542
- <text
543
- class="normal"
544
- transform="translate(15, 21)"
545
- id="text55">||</text>
546
- </symbol>
547
- <!-- }}} -->
548
- <symbol
549
- id="parallel_branch"
550
- class="clickable">
551
- <!-- {{{ -->
552
- <circle
553
- cx="15"
554
- cy="15"
555
- r="14"
556
- class="stand"
557
- id="circle58"
558
- d="M 29,15 C 29,22.731986 22.731986,29 15,29 7.2680135,29 1,22.731986 1,15 1,7.2680135 7.2680135,1 15,1 22.731986,1 29,7.2680135 29,15 Z" />
559
- <text
560
- class="normal"
561
- transform="translate(15, 21)"
562
- id="text60">|</text>
563
- </symbol>
564
- <!-- }}} -->
565
- <symbol
566
- id="critical"
567
- class="clickable">
568
- <!-- {{{ -->
569
- <circle
570
- cx="15"
571
- cy="15"
572
- r="14"
573
- class="stand"
574
- id="circle63"
575
- d="M 29,15 C 29,22.731986 22.731986,29 15,29 7.2680135,29 1,22.731986 1,15 1,7.2680135 7.2680135,1 15,1 22.731986,1 29,7.2680135 29,15 Z" />
576
- <text
577
- class="normal"
578
- transform="translate(15, 21)"
579
- id="text65">⚠</text>
580
- </symbol>
581
- <!-- }}} -->
582
- <symbol
583
- id="loop"
584
- class="clickable">
585
- <!-- {{{ -->
586
- <circle
587
- cx="15"
588
- cy="15"
589
- r="14"
590
- class="stand"
591
- id="circle68"
592
- d="M 29,15 C 29,22.731986 22.731986,29 15,29 7.2680135,29 1,22.731986 1,15 1,7.2680135 7.2680135,1 15,1 22.731986,1 29,7.2680135 29,15 Z" />
593
- <text
594
- class="normallarge"
595
- transform="translate(15, 24)"
596
- id="text70">↺</text>
597
- </symbol>
598
- <!-- }}} -->
599
- <symbol
600
- id="end">
601
- <!-- {{{ -->
602
- <circle
603
- cx="15"
604
- cy="15"
605
- r="14"
606
- class="stand"
607
- id="circle73"
608
- d="M 29,15 C 29,22.731986 22.731986,29 15,29 7.2680135,29 1,22.731986 1,15 1,7.2680135 7.2680135,1 15,1 22.731986,1 29,7.2680135 29,15 Z" />
609
- <circle
610
- cx="15"
611
- cy="15"
612
- r="11"
613
- class="stand"
614
- id="circle75"
615
- d="M 26,15 C 26,21.075132 21.075132,26 15,26 8.9248678,26 4,21.075132 4,15 4,8.9248678 8.9248678,4 15,4 21.075132,4 26,8.9248678 26,15 Z" />
616
- <text
617
- class="normal"
618
- transform="translate(15, 21)"
619
- id="text77">Ω</text>
620
- </symbol>
621
- <!-- }}} -->
622
- <marker
623
- id="arrow"
624
- viewBox="0 0 10 10"
625
- refX="24"
626
- refY="5"
627
- orient="auto"
628
- markerUnits="strokeWidth"
629
- markerWidth="4.5"
630
- markerHeight="4.5">
631
- <path
632
- d="m 2 2 l 6 3 l -6 3 z"
633
- id="path80" />
634
- </marker>
635
- <marker
636
- inkscape:stockid="Arrow1Mend"
637
- orient="auto"
638
- refY="0"
639
- refX="0"
640
- id="Arrow1Mend-3"
641
- style="overflow:visible"
642
- inkscape:isstock="true">
643
- <path
644
- inkscape:connector-curvature="0"
645
- id="path4417-3"
646
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
647
- style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
648
- transform="matrix(-0.4,0,0,-0.4,-4,0)" />
649
- </marker>
650
- <marker
651
- inkscape:stockid="Arrow1Mend"
652
- orient="auto"
653
- refY="0"
654
- refX="0"
655
- id="Arrow1Mend-38"
656
- style="overflow:visible"
657
- inkscape:isstock="true">
658
- <path
659
- inkscape:connector-curvature="0"
660
- id="path4417-4"
661
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
662
- style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
663
- transform="matrix(-0.4,0,0,-0.4,-4,0)" />
664
- </marker>
665
- <marker
666
- inkscape:stockid="Arrow1Mend"
667
- orient="auto"
668
- refY="0"
669
- refX="0"
670
- id="Arrow1Mend-9"
671
- style="overflow:visible"
672
- inkscape:isstock="true">
673
- <path
674
- inkscape:connector-curvature="0"
675
- id="path4417-2"
676
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
677
- style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
678
- transform="matrix(-0.4,0,0,-0.4,-4,0)" />
679
- </marker>
680
- <marker
681
- inkscape:stockid="Arrow1Mend"
682
- orient="auto"
683
- refY="0"
684
- refX="0"
685
- id="Arrow1Mend-90"
686
- style="overflow:visible"
687
- inkscape:isstock="true">
688
- <path
689
- inkscape:connector-curvature="0"
690
- id="path4417-6"
691
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
692
- style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
693
- transform="matrix(-0.4,0,0,-0.4,-4,0)" />
694
- </marker>
695
- <marker
696
- inkscape:stockid="Arrow1Mend"
697
- orient="auto"
698
- refY="0"
699
- refX="0"
700
- id="Arrow1Mend-4"
701
- style="overflow:visible"
702
- inkscape:isstock="true">
703
- <path
704
- inkscape:connector-curvature="0"
705
- id="path4417-1"
706
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
707
- style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
708
- transform="matrix(-0.4,0,0,-0.4,-4,0)" />
709
- </marker>
710
- <marker
711
- inkscape:stockid="Arrow1Mend"
712
- orient="auto"
713
- refY="0"
714
- refX="0"
715
- id="Arrow1Mend-2"
716
- style="overflow:visible"
717
- inkscape:isstock="true">
718
- <path
719
- inkscape:connector-curvature="0"
720
- id="path4417-5"
721
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
722
- style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
723
- transform="matrix(-0.4,0,0,-0.4,-4,0)" />
724
- </marker>
725
- <marker
726
- inkscape:stockid="Arrow1Mend"
727
- orient="auto"
728
- refY="0"
729
- refX="0"
730
- id="Arrow1Mend-2-8"
731
- style="overflow:visible"
732
- inkscape:isstock="true">
733
- <path
734
- inkscape:connector-curvature="0"
735
- id="path4417-5-1"
736
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
737
- style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
738
- transform="matrix(-0.4,0,0,-0.4,-4,0)" />
739
- </marker>
740
- <marker
741
- inkscape:stockid="Arrow1Mend"
742
- orient="auto"
743
- refY="0"
744
- refX="0"
745
- id="Arrow1Mend-2-5"
746
- style="overflow:visible"
747
- inkscape:isstock="true">
748
- <path
749
- inkscape:connector-curvature="0"
750
- id="path4417-5-5"
751
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
752
- style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
753
- transform="matrix(-0.4,0,0,-0.4,-4,0)" />
754
- </marker>
755
- <marker
756
- inkscape:stockid="Arrow1Mend"
757
- orient="auto"
758
- refY="0"
759
- refX="0"
760
- id="Arrow1Mend-2-3"
761
- style="overflow:visible"
762
- inkscape:isstock="true">
763
- <path
764
- inkscape:connector-curvature="0"
765
- id="path4417-5-6"
766
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
767
- style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
768
- transform="matrix(-0.4,0,0,-0.4,-4,0)" />
769
- </marker>
770
- <marker
771
- inkscape:stockid="Arrow1Mend"
772
- orient="auto"
773
- refY="0"
774
- refX="0"
775
- id="Arrow1Mend-2-7"
776
- style="overflow:visible"
777
- inkscape:isstock="true">
778
- <path
779
- inkscape:connector-curvature="0"
780
- id="path4417-5-9"
781
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
782
- style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
783
- transform="matrix(-0.4,0,0,-0.4,-4,0)" />
784
- </marker>
785
- <marker
786
- inkscape:stockid="Arrow1Mend"
787
- orient="auto"
788
- refY="0"
789
- refX="0"
790
- id="Arrow1Mend-2-1"
791
- style="overflow:visible"
792
- inkscape:isstock="true">
793
- <path
794
- inkscape:connector-curvature="0"
795
- id="path4417-5-60"
796
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
797
- style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
798
- transform="matrix(-0.4,0,0,-0.4,-4,0)" />
799
- </marker>
800
- <marker
801
- inkscape:stockid="Arrow1Mend"
802
- orient="auto"
803
- refY="0"
804
- refX="0"
805
- id="Arrow1Mend-2-32"
806
- style="overflow:visible"
807
- inkscape:isstock="true">
808
- <path
809
- inkscape:connector-curvature="0"
810
- id="path4417-5-69"
811
- d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
812
- style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
813
- transform="matrix(-0.4,0,0,-0.4,-4,0)" />
814
- </marker>
815
- <marker
816
- inkscape:isstock="true"
817
- style="overflow:visible"
818
- id="marker9377-2"
819
- refX="0"
820
- refY="0"
821
- orient="auto"
822
- inkscape:stockid="Arrow2Mend">
823
- <path
824
- inkscape:connector-curvature="0"
825
- transform="scale(-0.6,-0.6)"
826
- d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
827
- style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
828
- id="path9379-9" />
829
- </marker>
830
- </defs>
831
- <text
832
- xml:space="preserve"
833
- style="font-size:15px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial"
834
- x="15"
835
- y="974"
836
- id="text4769"
837
- sodipodi:linespacing="100%"
838
- inkscape:export-xdpi="300"
839
- inkscape:export-ydpi="300"><tspan
840
- sodipodi:role="line"
841
- id="tspan4771"
842
- x="15"
843
- y="974">Graph Example:</tspan></text>
844
- <ellipse
845
- style="color:#000000;fill:#ffffff;fill-opacity:0.78431373;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
846
- id="path4459-4"
847
- inkscape:export-xdpi="300"
848
- inkscape:export-ydpi="300"
849
- cx="45"
850
- cy="999"
851
- rx="10"
852
- ry="10.000001" />
853
- <g
854
- id="g4600-3"
855
- transform="translate(200,591.63782)">
856
- <path
857
- sodipodi:nodetypes="ccccc"
858
- inkscape:connector-curvature="0"
859
- id="path3641-4"
860
- d="m 25,397.36218 10,10 -10,10 -10,-10 z"
861
- style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
862
- <text
863
- sodipodi:linespacing="100%"
864
- id="text4461-8"
865
- y="412.64661"
866
- x="25"
867
- style="font-size:15px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial"
868
- xml:space="preserve"><tspan
869
- y="412.64661"
870
- x="25"
871
- id="tspan4463-9"
872
- sodipodi:role="line">+</tspan></text>
873
- </g>
874
- <g
875
- id="g4314"
876
- transform="translate(30,-40)">
877
- <path
878
- sodipodi:nodetypes="ccccc"
879
- inkscape:connector-curvature="0"
880
- id="path3643-9"
881
- d="m 35,1029 0,20 20,0 0,-20 z"
882
- style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
883
- <text
884
- inkscape:export-ydpi="300"
885
- inkscape:export-xdpi="300"
886
- sodipodi:linespacing="100%"
887
- id="text4977"
888
- y="1044"
889
- x="45"
890
- style="font-size:15px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial"
891
- xml:space="preserve"><tspan
892
- y="1044"
893
- x="45"
894
- id="tspan4979"
895
- sodipodi:role="line">a</tspan></text>
896
- </g>
897
- <g
898
- id="g4319"
899
- transform="translate(30,-40)">
900
- <path
901
- sodipodi:nodetypes="ccccc"
902
- inkscape:connector-curvature="0"
903
- id="path3643-9-1"
904
- d="m 65,1029 0,20 20,0 0,-20 z"
905
- style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
906
- <text
907
- inkscape:export-ydpi="300"
908
- inkscape:export-xdpi="300"
909
- sodipodi:linespacing="100%"
910
- id="text4981"
911
- y="1044"
912
- x="75"
913
- style="font-size:15px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial"
914
- xml:space="preserve"><tspan
915
- y="1044"
916
- x="75"
917
- id="tspan4983"
918
- sodipodi:role="line">b</tspan></text>
919
- </g>
920
- <g
921
- id="g4198"
922
- transform="translate(50,-65)">
923
- <path
924
- sodipodi:nodetypes="ccccc"
925
- inkscape:connector-curvature="0"
926
- id="path3643-9-4-8"
927
- d="m 105,1024 0,20 20,0 0,-20 z"
928
- style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
929
- <text
930
- inkscape:export-ydpi="300"
931
- inkscape:export-xdpi="300"
932
- sodipodi:linespacing="100%"
933
- id="text4985"
934
- y="1039"
935
- x="115"
936
- style="font-size:15px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial"
937
- xml:space="preserve"><tspan
938
- y="1039"
939
- x="115"
940
- id="tspan4987"
941
- sodipodi:role="line">c</tspan></text>
942
- </g>
943
- <g
944
- id="g4203"
945
- transform="translate(50,-65)">
946
- <path
947
- sodipodi:nodetypes="ccccc"
948
- inkscape:connector-curvature="0"
949
- id="path3643-9-1-4-4"
950
- d="m 135,1024 0,20 20,0 0,-20 z"
951
- style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
952
- <text
953
- inkscape:export-ydpi="300"
954
- inkscape:export-xdpi="300"
955
- sodipodi:linespacing="100%"
956
- id="text4989"
957
- y="1039"
958
- x="145"
959
- style="font-size:15px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial"
960
- xml:space="preserve"><tspan
961
- y="1039"
962
- x="145"
963
- id="tspan4991"
964
- sodipodi:role="line">d</tspan></text>
965
- </g>
966
- <g
967
- id="g4329"
968
- transform="translate(80,-70)">
969
- <path
970
- sodipodi:nodetypes="ccccc"
971
- inkscape:connector-curvature="0"
972
- id="path3643-9-4"
973
- d="m 165,1059 0,20 20,0 0,-20 z"
974
- style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
975
- <text
976
- inkscape:export-ydpi="300"
977
- inkscape:export-xdpi="300"
978
- sodipodi:linespacing="100%"
979
- id="text4993"
980
- y="1074"
981
- x="175"
982
- style="font-size:15px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial"
983
- xml:space="preserve"><tspan
984
- y="1074"
985
- x="175"
986
- id="tspan4995"
987
- sodipodi:role="line">f</tspan></text>
988
- </g>
989
- <g
990
- id="g4324"
991
- transform="translate(80,-70)">
992
- <path
993
- sodipodi:nodetypes="ccccc"
994
- inkscape:connector-curvature="0"
995
- id="path3643-9-1-4"
996
- d="m 195,1059 0,20 20,0 0,-20 z"
997
- style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
998
- <text
999
- inkscape:export-ydpi="300"
1000
- inkscape:export-xdpi="300"
1001
- sodipodi:linespacing="100%"
1002
- id="text4997"
1003
- y="1074"
1004
- x="205"
1005
- style="font-size:15px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial"
1006
- xml:space="preserve"><tspan
1007
- y="1074"
1008
- x="205"
1009
- id="tspan4999"
1010
- sodipodi:role="line">g</tspan></text>
1011
- </g>
1012
- <g
1013
- id="g4203-5"
1014
- transform="translate(20,-5)">
1015
- <path
1016
- sodipodi:nodetypes="ccccc"
1017
- inkscape:connector-curvature="0"
1018
- id="path3643-9-1-4-4-9"
1019
- d="m 135,1024 0,20 20,0 0,-20 z"
1020
- style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
1021
- <text
1022
- inkscape:export-ydpi="300"
1023
- inkscape:export-xdpi="300"
1024
- sodipodi:linespacing="100%"
1025
- id="text4989-0"
1026
- y="1039"
1027
- x="145"
1028
- style="font-size:15px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial"
1029
- xml:space="preserve"><tspan
1030
- y="1039"
1031
- x="145"
1032
- id="tspan4991-7"
1033
- sodipodi:role="line">e</tspan></text>
1034
- </g>
1035
- <g
1036
- id="g4600-3-5"
1037
- transform="translate(110,591.63782)">
1038
- <path
1039
- sodipodi:nodetypes="ccccc"
1040
- inkscape:connector-curvature="0"
1041
- id="path3641-4-7"
1042
- d="m 25,397.36218 10,10 -10,10 -10,-10 z"
1043
- style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
1044
- <text
1045
- sodipodi:linespacing="100%"
1046
- id="text4461-8-0"
1047
- y="412.64661"
1048
- x="25"
1049
- style="font-size:15px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial"
1050
- xml:space="preserve"><tspan
1051
- y="412.64661"
1052
- x="25"
1053
- id="tspan4463-9-71"
1054
- sodipodi:role="line">+</tspan></text>
1055
- </g>
1056
- <g
1057
- id="g4385">
1058
- <path
1059
- sodipodi:nodetypes="ccccc"
1060
- inkscape:connector-curvature="0"
1061
- id="path3641-4-73"
1062
- d="m 315,989 10,10 -10,10 -10,-10 z"
1063
- style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
1064
- <text
1065
- sodipodi:linespacing="100%"
1066
- id="text4461-8-45"
1067
- y="1002.8892"
1068
- x="315"
1069
- style="font-size:15px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial"
1070
- xml:space="preserve"><tspan
1071
- y="1002.8892"
1072
- x="315"
1073
- id="tspan4463-9-0"
1074
- sodipodi:role="line">x</tspan></text>
1075
- </g>
1076
- <path
1077
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker9857)"
1078
- d="m 55,999 10,0"
1079
- id="path4402"
1080
- inkscape:connector-curvature="0" />
1081
- <path
1082
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker8579)"
1083
- d="m 85,999 10,0"
1084
- id="path4402-2"
1085
- inkscape:connector-curvature="0" />
1086
- <path
1087
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker8697)"
1088
- d="m 115,999 10,0"
1089
- id="path4402-5"
1090
- inkscape:connector-curvature="0" />
1091
- <path
1092
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Mend)"
1093
- d="m 235,999 10,0"
1094
- id="path4402-1"
1095
- inkscape:connector-curvature="0" />
1096
- <path
1097
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker9691)"
1098
- d="m 265,999 10,0"
1099
- id="path4402-7"
1100
- inkscape:connector-curvature="0" />
1101
- <path
1102
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker9531)"
1103
- d="m 295,999 10,0"
1104
- id="path4402-6"
1105
- inkscape:connector-curvature="0" />
1106
- <path
1107
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker9377)"
1108
- d="m 325,999 10,0"
1109
- id="path4402-0"
1110
- inkscape:connector-curvature="0" />
1111
- <path
1112
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker9229)"
1113
- d="m 175,969 10,0"
1114
- id="path4402-0-8"
1115
- inkscape:connector-curvature="0" />
1116
- <path
1117
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker8951)"
1118
- d="m 140,994 15,-25"
1119
- id="path4402-0-3"
1120
- inkscape:connector-curvature="0"
1121
- sodipodi:nodetypes="cc" />
1122
- <path
1123
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker8821)"
1124
- d="m 140,1004 15,25"
1125
- id="path4402-0-87"
1126
- inkscape:connector-curvature="0"
1127
- sodipodi:nodetypes="cc" />
1128
- <path
1129
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker9087)"
1130
- d="m 175,1029 31.23623,0 L 220,1004"
1131
- id="path4402-0-6"
1132
- inkscape:connector-curvature="0"
1133
- sodipodi:nodetypes="ccc" />
1134
- <path
1135
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Mend-2-1)"
1136
- d="m 205,969 15,25"
1137
- id="path4402-0-7"
1138
- inkscape:connector-curvature="0"
1139
- sodipodi:nodetypes="cc" />
1140
- <ellipse
1141
- style="color:#000000;fill:#ffffff;fill-opacity:0.78431373;fill-rule:evenodd;stroke:#000000;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
1142
- id="path4459-4-2"
1143
- inkscape:export-xdpi="300"
1144
- inkscape:export-ydpi="300"
1145
- cx="345"
1146
- cy="999"
1147
- rx="10"
1148
- ry="10.000001" />
1149
- <path
1150
- style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker9377-2)"
1151
- d="m 315,1009 0,10 -60,0 0,-10"
1152
- id="path4402-0-85"
1153
- inkscape:connector-curvature="0"
1154
- sodipodi:nodetypes="cccc" />
1155
- <text
1156
- xml:space="preserve"
1157
- style="font-size:15px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:100%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial"
1158
- x="320"
1159
- y="984"
1160
- id="text10886"
1161
- sodipodi:linespacing="100%"><tspan
1162
- sodipodi:role="line"
1163
- id="tspan10888"
1164
- x="320"
1165
- y="984" /></text>
1166
- </svg>