cpee 2.0.25 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (375) hide show
  1. checksums.yaml +4 -4
  2. data/cockpit/css/ui.css +27 -4
  3. data/cockpit/css/wfadaptor.css +11 -0
  4. data/cockpit/edit.html +10 -10
  5. data/cockpit/graph.html +3 -3
  6. data/cockpit/index.html +9 -6
  7. data/cockpit/js/details.js +0 -1
  8. data/cockpit/js/instance.js +26 -19
  9. data/cockpit/js/model.js +6 -11
  10. data/cockpit/js/parameters.js +6 -4
  11. data/cockpit/js/wfadaptor.js +2 -0
  12. data/cockpit/model.html +4 -3
  13. data/cockpit/replay.html +3 -2
  14. data/cockpit/templates.legacy/Async.xml +12 -12
  15. data/cockpit/templates.legacy/BCO.xml +9 -11
  16. data/cockpit/templates.legacy/BCS.xml +9 -11
  17. data/cockpit/templates.legacy/Centurio.xml +7 -7
  18. data/cockpit/templates.legacy/Concurrent.xml +7 -7
  19. data/cockpit/templates.legacy/Coopis Testset.xml +7 -7
  20. data/cockpit/templates.legacy/Endpoints and Data Manipulation.xml +6 -7
  21. data/cockpit/templates.legacy/ICSOC Testset.xml +7 -7
  22. data/cockpit/templates.legacy/Infinity.xml +7 -7
  23. data/cockpit/templates.legacy/Lego Boxer.xml +13 -13
  24. data/cockpit/templates.legacy/Lego Conveyor.xml +13 -13
  25. data/cockpit/templates.legacy/Lego Crane.xml +16 -16
  26. data/cockpit/templates.legacy/Lego Ejector.xml +16 -16
  27. data/cockpit/templates.legacy/Lego Full.xml +12 -12
  28. data/cockpit/templates.legacy/Lego Liddy.xml +13 -13
  29. data/cockpit/templates.legacy/Lego Plate.xml +13 -13
  30. data/cockpit/templates.legacy/Lego Transporter.xml +14 -14
  31. data/cockpit/templates.legacy/Lego_Part_1.xml +12 -12
  32. data/cockpit/templates.legacy/LgLinear.xml +7 -10
  33. data/cockpit/templates.legacy/Linear.xml +11 -14
  34. data/cockpit/templates.legacy/Log.xml +11 -12
  35. data/cockpit/templates.legacy/Mangler 1.xml +7 -7
  36. data/cockpit/templates.legacy/Mangler 2.xml +7 -7
  37. data/cockpit/templates.legacy/Manuel Labels.xml +11 -11
  38. data/cockpit/templates.legacy/Promise.xml +30 -30
  39. data/cockpit/templates.legacy/SOPROMO Test Sonification.xml +7 -7
  40. data/cockpit/templates.legacy/Subprocess.xml +15 -15
  41. data/cockpit/templates.legacy/Syncing P34 1.xml +8 -11
  42. data/cockpit/templates.legacy/Syncing P34 2.xml +8 -11
  43. data/cockpit/templates.legacy/Syncing P34 3.xml +8 -11
  44. data/cockpit/templates.legacy/Syncing P34.xml +8 -11
  45. data/cockpit/templates.legacy/TEST - Bad Loop.xml +7 -7
  46. data/cockpit/templates.legacy/TEST - Wrong Positions.xml +7 -7
  47. data/cockpit/templates.legacy/Take_5.xml +14 -14
  48. data/cockpit/templates.legacy/Update.xml +11 -11
  49. data/cockpit/templates.legacy/Worklist Parallel.xml +17 -17
  50. data/cockpit/templates.legacy/Worklist Test CPEE.xml +14 -14
  51. data/cockpit/templates.legacy/Worklist Test.xml +14 -14
  52. data/cockpit/templates.legacy/Worklist Test2.xml +14 -14
  53. data/cockpit/templates/Coopis 2010.xml +7 -7
  54. data/cockpit/templates/IUPC arXiv:1104.3609 P34 1.xml +9 -12
  55. data/cockpit/templates/IUPC arXiv:1104.3609 P34 2.xml +9 -12
  56. data/cockpit/templates/IUPC arXiv:1104.3609 P34 3.xml +9 -12
  57. data/cockpit/templates/Track Test Local.xml +8 -4
  58. data/cockpit/templates/Track Test.xml +6 -2
  59. data/cockpit/templates/UR-VUE 2020 Manual Adjust.xml +6 -2
  60. data/cockpit/templates/UR-VUE 2020 Solution Baseline.xml +9 -5
  61. data/cockpit/templates/UR-VUE 2020 Solution NN.xml +9 -5
  62. data/cockpit/templates/UR-VUE 2020 Solution View.xml +9 -5
  63. data/cockpit/templates/UR-VUE 2020.xml +9 -5
  64. data/cockpit/templates/Worklist.xml +14 -14
  65. data/cockpit/templates/instantiate.local/Take_Sub.xml +2 -2
  66. data/cockpit/templates/instantiate/Take_Perf.xml +1 -1
  67. data/cockpit/templates/instantiate/Take_Sub.xml +2 -2
  68. data/cockpit/templates/instantiate/Take_X.xml +2 -2
  69. data/cockpit/themes/compact/rngs/parallel.rng +6 -0
  70. data/cockpit/themes/compact/rngs/start.rng +83 -0
  71. data/cockpit/themes/compact/symbols/parallel_branch_event.svg +2 -2
  72. data/cockpit/themes/compact/symbols/parallel_eventbased_exclusive.svg +9 -0
  73. data/cockpit/themes/compact/symbols/parallel_eventbased_parallel.svg +8 -0
  74. data/cockpit/themes/compact/symbols/start.svg +1 -1
  75. data/cockpit/themes/compact/theme.js +45 -2
  76. data/cockpit/themes/control/rngs/parallel.rng +6 -0
  77. data/cockpit/themes/control/rngs/start.rng +83 -0
  78. data/cockpit/themes/control/symbols/parallel_branch_event.svg +2 -2
  79. data/cockpit/themes/control/symbols/parallel_eventbased_exclusive.svg +9 -0
  80. data/cockpit/themes/control/symbols/parallel_eventbased_parallel.svg +8 -0
  81. data/cockpit/themes/control/symbols/start.svg +1 -1
  82. data/cockpit/themes/control/theme.js +45 -2
  83. data/cockpit/themes/default/rngs/parallel.rng +6 -0
  84. data/cockpit/themes/default/rngs/start.rng +83 -0
  85. data/cockpit/themes/default/symbols/parallel_branch_event.svg +2 -2
  86. data/cockpit/themes/default/symbols/parallel_eventbased_exclusive.svg +9 -0
  87. data/cockpit/themes/default/symbols/parallel_eventbased_parallel.svg +8 -0
  88. data/cockpit/themes/default/symbols/start.svg +1 -1
  89. data/cockpit/themes/default/theme.js +46 -3
  90. data/cockpit/themes/extended/rngs/parallel.rng +6 -0
  91. data/cockpit/themes/extended/rngs/start.rng +83 -0
  92. data/cockpit/themes/extended/symbols/parallel_branch_event.svg +2 -2
  93. data/cockpit/themes/extended/symbols/parallel_eventbased_exclusive.svg +9 -0
  94. data/cockpit/themes/extended/symbols/parallel_eventbased_parallel.svg +8 -0
  95. data/cockpit/themes/extended/symbols/start.svg +1 -1
  96. data/cockpit/themes/extended/theme.js +45 -2
  97. data/cockpit/themes/model/symbols/parallel_branch_event.svg +2 -2
  98. data/cockpit/themes/model/symbols/parallel_eventbased_exclusive.svg +9 -0
  99. data/cockpit/themes/model/symbols/parallel_eventbased_parallel.svg +8 -0
  100. data/cockpit/themes/model/symbols/start.svg +1 -1
  101. data/cockpit/themes/model/theme.js +45 -2
  102. data/cockpit/themes/packed/rngs/parallel.rng +6 -0
  103. data/cockpit/themes/packed/rngs/start.rng +83 -0
  104. data/cockpit/themes/packed/symbols/parallel_branch_event.svg +2 -2
  105. data/cockpit/themes/packed/symbols/parallel_eventbased_exclusive.svg +9 -0
  106. data/cockpit/themes/packed/symbols/parallel_eventbased_parallel.svg +8 -0
  107. data/cockpit/themes/packed/symbols/start.svg +1 -1
  108. data/cockpit/themes/packed/theme.js +45 -2
  109. data/cockpit/themes/preset/rngs/parallel.rng +6 -0
  110. data/cockpit/themes/preset/rngs/start.rng +83 -0
  111. data/cockpit/themes/preset/symbols/parallel_branch_event.svg +2 -2
  112. data/cockpit/themes/preset/symbols/parallel_eventbased_exclusive.svg +9 -0
  113. data/cockpit/themes/preset/symbols/parallel_eventbased_parallel.svg +8 -0
  114. data/cockpit/themes/preset/symbols/start.svg +1 -1
  115. data/cockpit/themes/preset/theme.js +46 -3
  116. data/cockpit/track.html +3 -3
  117. data/cpee.gemspec +3 -3
  118. data/lib/cpee/attributes_helper.rb +14 -0
  119. data/lib/cpee/implementation.rb +10 -8
  120. data/lib/cpee/implementation_callbacks.rb +28 -7
  121. data/lib/cpee/implementation_notifications.rb +20 -2
  122. data/lib/cpee/implementation_properties.rb +128 -24
  123. data/lib/cpee/persistence.rb +0 -27
  124. data/lib/cpee/statemachine.rb +14 -0
  125. data/lib/cpee/value_helper.rb +14 -0
  126. data/lib/properties.xml +4 -4
  127. data/lib/properties/{handlerwrapper.rng → executionhandler.rng} +2 -2
  128. data/lib/properties/properties.rng +2 -2
  129. data/lib/properties/set-properties.rng +2 -2
  130. data/lib/properties/set-some-properties.rng +2 -2
  131. data/server/{resources → executionhandlers/ruby}/backend/README.md +0 -0
  132. data/server/{resources → executionhandlers/ruby}/backend/instance.template +2 -4
  133. data/server/{resources → executionhandlers/ruby}/backend/opts.yaml +2 -2
  134. data/server/executionhandlers/ruby/backend/run +37 -0
  135. data/server/{handlerwrappers/default.rb → executionhandlers/ruby/connection.rb} +7 -3
  136. data/server/executionhandlers/ruby/controller.rb +195 -0
  137. data/server/{resources/transformation_dslx.xsl → executionhandlers/ruby/dsl_to_dslx.xsl} +57 -8
  138. data/server/executionhandlers/ruby/execution.rb +81 -0
  139. data/server/resources/properties.empty +1 -1
  140. data/server/resources/properties.init +1 -1
  141. data/server/resources/topics.xml +2 -2
  142. data/server/routing/end.rb +1 -0
  143. data/server/routing/forward-votes.rb +6 -5
  144. data/server/routing/persist.rb +4 -4
  145. data/tools/cpee +9 -3
  146. data/tools/server/cpee +1 -1
  147. data/tools/server/resources/properties.init +1 -1
  148. metadata +35 -239
  149. data/cockpit/templates.legacy/convert_cpee2.rb +0 -15
  150. data/lib/cpee/controller.rb +0 -199
  151. data/lib/cpee/transform.rb +0 -95
  152. data/server/resources/backend/instance.rb +0 -23
  153. data/server/resources/backend/run +0 -33
  154. data/server/routing/end.pid +0 -1
  155. data/server/routing/forward-events.pid +0 -1
  156. data/server/routing/forward-votes.pid +0 -1
  157. data/server/routing/persist.pid +0 -1
  158. data/server/server.pid +0 -1
  159. data/tools/test/README +0 -4
  160. data/tools/test/config.json +0 -3
  161. data/tools/test/contrib/graph_example.svg +0 -1166
  162. data/tools/test/contrib/legend.svg +0 -817
  163. data/tools/test/contrib/symbols.svg +0 -224
  164. data/tools/test/contrib/transformation1.xsl +0 -264
  165. data/tools/test/contrib/transformation2.xsl +0 -10
  166. data/tools/test/contrib/tree_example.svg +0 -788
  167. data/tools/test/css/model.css +0 -24
  168. data/tools/test/css/track.css +0 -60
  169. data/tools/test/css/ui.css +0 -214
  170. data/tools/test/css/wfadaptor.css +0 -422
  171. data/tools/test/edit.html +0 -258
  172. data/tools/test/graph.html +0 -69
  173. data/tools/test/index.html +0 -258
  174. data/tools/test/js/details.js +0 -109
  175. data/tools/test/js/instance.js +0 -1344
  176. data/tools/test/js/model.js +0 -41
  177. data/tools/test/js/parameters.js +0 -82
  178. data/tools/test/js/track.js +0 -18
  179. data/tools/test/js/ui.js +0 -104
  180. data/tools/test/js/wfadaptor.js +0 -763
  181. data/tools/test/js_libs.zip +0 -0
  182. data/tools/test/js_libs/Makefile +0 -2
  183. data/tools/test/js_libs/ansi_up.js +0 -333
  184. data/tools/test/js_libs/console.js +0 -80
  185. data/tools/test/js_libs/custommenu.css +0 -84
  186. data/tools/test/js_libs/custommenu.js +0 -104
  187. data/tools/test/js_libs/experiments1/relaxngui.css +0 -185
  188. data/tools/test/js_libs/experiments1/relaxngui.js +0 -488
  189. data/tools/test/js_libs/experiments1/rngtest9.html +0 -60
  190. data/tools/test/js_libs/experiments1/rngtest9.rng +0 -35
  191. data/tools/test/js_libs/experiments1/rngtest9.xml +0 -8
  192. data/tools/test/js_libs/jquery-2.2.4.min.js +0 -4
  193. data/tools/test/js_libs/jquery-3.2.1.min.js +0 -4
  194. data/tools/test/js_libs/jquery-3.3.1.min.js +0 -2
  195. data/tools/test/js_libs/jquery.browser.js +0 -40
  196. data/tools/test/js_libs/jquery.caret.min.js +0 -10
  197. data/tools/test/js_libs/jquery.cookie.js +0 -117
  198. data/tools/test/js_libs/jquery.min.js +0 -1
  199. data/tools/test/js_libs/jquery.svg.min.js +0 -6
  200. data/tools/test/js_libs/jquery.svgdom.min.js +0 -6
  201. data/tools/test/js_libs/markdown.min.js +0 -1
  202. data/tools/test/js_libs/parsequery.js +0 -21
  203. data/tools/test/js_libs/printf.js +0 -368
  204. data/tools/test/js_libs/relaxngui.css +0 -213
  205. data/tools/test/js_libs/relaxngui.js +0 -543
  206. data/tools/test/js_libs/strftime.min.js +0 -1
  207. data/tools/test/js_libs/tests/dataelements.html +0 -59
  208. data/tools/test/js_libs/tests/dataelements.rng +0 -8
  209. data/tools/test/js_libs/tests/dataelements.xml +0 -3
  210. data/tools/test/js_libs/tests/relaxngui.css +0 -203
  211. data/tools/test/js_libs/tests/relaxngui.js +0 -502
  212. data/tools/test/js_libs/tests/rngtest1.html +0 -66
  213. data/tools/test/js_libs/tests/rngtest1.rng +0 -147
  214. data/tools/test/js_libs/tests/rngtest1.xml +0 -13
  215. data/tools/test/js_libs/tests/rngtest2.html +0 -60
  216. data/tools/test/js_libs/tests/rngtest2.rng +0 -6
  217. data/tools/test/js_libs/tests/rngtest2.xml +0 -3
  218. data/tools/test/js_libs/tests/rngtest3.html +0 -60
  219. data/tools/test/js_libs/tests/rngtest3.rng +0 -23
  220. data/tools/test/js_libs/tests/rngtest3.xml +0 -9
  221. data/tools/test/js_libs/tests/rngtest4.html +0 -60
  222. data/tools/test/js_libs/tests/rngtest4.rng +0 -19
  223. data/tools/test/js_libs/tests/rngtest4.xml +0 -12
  224. data/tools/test/js_libs/tests/rngtest5.html +0 -60
  225. data/tools/test/js_libs/tests/rngtest5.rng +0 -75
  226. data/tools/test/js_libs/tests/rngtest5.xml +0 -40
  227. data/tools/test/js_libs/tests/rngtest6.html +0 -60
  228. data/tools/test/js_libs/tests/rngtest6.rng +0 -24
  229. data/tools/test/js_libs/tests/rngtest6.xml +0 -6
  230. data/tools/test/js_libs/tests/rngtest8.html +0 -60
  231. data/tools/test/js_libs/tests/rngtest8.rng +0 -13
  232. data/tools/test/js_libs/tests/rngtest8.xml +0 -2
  233. data/tools/test/js_libs/tests/rngtest9.html +0 -60
  234. data/tools/test/js_libs/tests/rngtest9.rng +0 -31
  235. data/tools/test/js_libs/tests/rngtest9.xml +0 -8
  236. data/tools/test/js_libs/ui.css +0 -333
  237. data/tools/test/js_libs/ui.html +0 -168
  238. data/tools/test/js_libs/ui.js +0 -177
  239. data/tools/test/js_libs/underscore.min.js +0 -27
  240. data/tools/test/js_libs/util.js +0 -81
  241. data/tools/test/js_libs/vkbeautify.0.99.00.beta.js +0 -358
  242. data/tools/test/js_libs/vkbeautify.js +0 -1
  243. data/tools/test/js_libs/webcomponents.min.js +0 -196
  244. data/tools/test/model.html +0 -192
  245. data/tools/test/rngs/attributes.rng +0 -8
  246. data/tools/test/rngs/dataelements.rng +0 -8
  247. data/tools/test/rngs/endpoints.rng +0 -8
  248. data/tools/test/templates.legacy/Async.xml +0 -46
  249. data/tools/test/templates.legacy/BCO.xml +0 -70
  250. data/tools/test/templates.legacy/BCS.xml +0 -70
  251. data/tools/test/templates.legacy/Centurio.xml +0 -75
  252. data/tools/test/templates.legacy/Concurrent.xml +0 -40
  253. data/tools/test/templates.legacy/Coopis Testset.xml +0 -76
  254. data/tools/test/templates.legacy/Endpoints and Data Manipulation.xml +0 -30
  255. data/tools/test/templates.legacy/ICSOC Testset.xml +0 -95
  256. data/tools/test/templates.legacy/Infinity.xml +0 -28
  257. data/tools/test/templates.legacy/Lego Boxer.xml +0 -31
  258. data/tools/test/templates.legacy/Lego Conveyor.xml +0 -31
  259. data/tools/test/templates.legacy/Lego Crane.xml +0 -87
  260. data/tools/test/templates.legacy/Lego Ejector.xml +0 -55
  261. data/tools/test/templates.legacy/Lego Full.xml +0 -142
  262. data/tools/test/templates.legacy/Lego Liddy.xml +0 -40
  263. data/tools/test/templates.legacy/Lego Plate.xml +0 -31
  264. data/tools/test/templates.legacy/Lego Transporter.xml +0 -43
  265. data/tools/test/templates.legacy/Lego_Part_1.xml +0 -85
  266. data/tools/test/templates.legacy/LgLinear.xml +0 -65
  267. data/tools/test/templates.legacy/Linear.xml +0 -77
  268. data/tools/test/templates.legacy/Log.xml +0 -117
  269. data/tools/test/templates.legacy/Mangler 1.xml +0 -87
  270. data/tools/test/templates.legacy/Mangler 2.xml +0 -103
  271. data/tools/test/templates.legacy/Manuel Labels.xml +0 -55
  272. data/tools/test/templates.legacy/Promise.xml +0 -275
  273. data/tools/test/templates.legacy/SOPROMO Test Sonification.xml +0 -83
  274. data/tools/test/templates.legacy/Subprocess.xml +0 -56
  275. data/tools/test/templates.legacy/Syncing P34 1.xml +0 -77
  276. data/tools/test/templates.legacy/Syncing P34 2.xml +0 -77
  277. data/tools/test/templates.legacy/Syncing P34 3.xml +0 -77
  278. data/tools/test/templates.legacy/Syncing P34.xml +0 -77
  279. data/tools/test/templates.legacy/TEST - Bad Loop.xml +0 -173
  280. data/tools/test/templates.legacy/TEST - Wrong Positions.xml +0 -174
  281. data/tools/test/templates.legacy/Take_5.xml +0 -48
  282. data/tools/test/templates.legacy/Update.xml +0 -32
  283. data/tools/test/templates.legacy/Worklist Parallel.xml +0 -104
  284. data/tools/test/templates.legacy/Worklist Test CPEE.xml +0 -40
  285. data/tools/test/templates.legacy/Worklist Test.xml +0 -42
  286. data/tools/test/templates.legacy/Worklist Test2.xml +0 -43
  287. data/tools/test/templates.legacy/convert_cpee2.rb +0 -15
  288. data/tools/test/templates.legacy/convert_preset.rb +0 -32
  289. data/tools/test/templates.legacy/testsets.xml +0 -37
  290. data/tools/test/templates.legacy/transformations.xml +0 -4
  291. data/tools/test/templates/Coopis 2010.xml +0 -76
  292. data/tools/test/templates/IUPC arXiv:1104.3609 P34 1.xml +0 -77
  293. data/tools/test/templates/IUPC arXiv:1104.3609 P34 2.xml +0 -77
  294. data/tools/test/templates/IUPC arXiv:1104.3609 P34 3.xml +0 -77
  295. data/tools/test/templates/Track Test Local.xml +0 -82
  296. data/tools/test/templates/Track Test.xml +0 -82
  297. data/tools/test/templates/UR-VUE 2020 Manual Adjust.xml +0 -182
  298. data/tools/test/templates/UR-VUE 2020 Solution Baseline.xml +0 -203
  299. data/tools/test/templates/UR-VUE 2020 Solution NN.xml +0 -197
  300. data/tools/test/templates/UR-VUE 2020 Solution View.xml +0 -151
  301. data/tools/test/templates/UR-VUE 2020.xml +0 -26
  302. data/tools/test/templates/Worklist.xml +0 -42
  303. data/tools/test/templates/instantiate.local/Take_Sub.xml +0 -59
  304. data/tools/test/templates/instantiate/Take_Perf.xml +0 -46
  305. data/tools/test/templates/instantiate/Take_Sub.xml +0 -58
  306. data/tools/test/templates/instantiate/Take_X.xml +0 -48
  307. data/tools/test/themes/compact/theme.js +0 -1285
  308. data/tools/test/themes/diana/theme.js +0 -1650
  309. data/tools/test/themes/extended/theme.js +0 -1325
  310. data/tools/test/themes/model/rngs/alternative.rng +0 -1
  311. data/tools/test/themes/model/rngs/call.rng +0 -67
  312. data/tools/test/themes/model/rngs/callmanipulate.rng +0 -72
  313. data/tools/test/themes/model/rngs/choose.rng +0 -1
  314. data/tools/test/themes/model/rngs/critical.rng +0 -1
  315. data/tools/test/themes/model/rngs/escape.rng +0 -1
  316. data/tools/test/themes/model/rngs/group.rng +0 -1
  317. data/tools/test/themes/model/rngs/loop.rng +0 -1
  318. data/tools/test/themes/model/rngs/manipulate.rng +0 -1
  319. data/tools/test/themes/model/rngs/otherwise.rng +0 -1
  320. data/tools/test/themes/model/rngs/parallel.rng +0 -1
  321. data/tools/test/themes/model/rngs/parallel_branch.rng +0 -1
  322. data/tools/test/themes/model/rngs/scripts.rng +0 -7
  323. data/tools/test/themes/model/rngs/stop.rng +0 -1
  324. data/tools/test/themes/model/rngs/terminate.rng +0 -1
  325. data/tools/test/themes/model/theme.js +0 -1268
  326. data/tools/test/themes/packed/theme.js +0 -1286
  327. data/tools/test/themes/preset/rngs/alternative.rng +0 -25
  328. data/tools/test/themes/preset/rngs/call.rng +0 -122
  329. data/tools/test/themes/preset/rngs/callmanipulate.rng +0 -145
  330. data/tools/test/themes/preset/rngs/choose.rng +0 -14
  331. data/tools/test/themes/preset/rngs/closed_loop.rng +0 -62
  332. data/tools/test/themes/preset/rngs/closed_loop_cancel.rng +0 -5
  333. data/tools/test/themes/preset/rngs/closed_loop_control.rng +0 -31
  334. data/tools/test/themes/preset/rngs/closed_loop_measuring.rng +0 -12
  335. data/tools/test/themes/preset/rngs/critical.rng +0 -5
  336. data/tools/test/themes/preset/rngs/escape.rng +0 -1
  337. data/tools/test/themes/preset/rngs/group.rng +0 -3
  338. data/tools/test/themes/preset/rngs/loop.rng +0 -22
  339. data/tools/test/themes/preset/rngs/manipulate.rng +0 -9
  340. data/tools/test/themes/preset/rngs/otherwise.rng +0 -22
  341. data/tools/test/themes/preset/rngs/parallel.rng +0 -21
  342. data/tools/test/themes/preset/rngs/parallel_branch.rng +0 -8
  343. data/tools/test/themes/preset/rngs/scripts.rng +0 -23
  344. data/tools/test/themes/preset/rngs/stop.rng +0 -5
  345. data/tools/test/themes/preset/rngs/terminate.rng +0 -1
  346. data/tools/test/themes/preset/symbols/alternative.svg +0 -5
  347. data/tools/test/themes/preset/symbols/arrow.svg +0 -3
  348. data/tools/test/themes/preset/symbols/call.svg +0 -6
  349. data/tools/test/themes/preset/symbols/callmanipulate.svg +0 -8
  350. data/tools/test/themes/preset/symbols/choose.svg +0 -5
  351. data/tools/test/themes/preset/symbols/choose_exclusive.svg +0 -5
  352. data/tools/test/themes/preset/symbols/choose_inclusive.svg +0 -4
  353. data/tools/test/themes/preset/symbols/closed_loop.svg +0 -5
  354. data/tools/test/themes/preset/symbols/closed_loop_cancel.svg +0 -5
  355. data/tools/test/themes/preset/symbols/closed_loop_control.svg +0 -5
  356. data/tools/test/themes/preset/symbols/closed_loop_measuring.svg +0 -6
  357. data/tools/test/themes/preset/symbols/complex.svg +0 -8
  358. data/tools/test/themes/preset/symbols/critical.svg +0 -4
  359. data/tools/test/themes/preset/symbols/end.svg +0 -3
  360. data/tools/test/themes/preset/symbols/escape.svg +0 -5
  361. data/tools/test/themes/preset/symbols/event_end.svg +0 -3
  362. data/tools/test/themes/preset/symbols/loop.svg +0 -5
  363. data/tools/test/themes/preset/symbols/manipulate.svg +0 -4
  364. data/tools/test/themes/preset/symbols/otherwise.svg +0 -5
  365. data/tools/test/themes/preset/symbols/parallel.svg +0 -5
  366. data/tools/test/themes/preset/symbols/parallel_branch.svg +0 -5
  367. data/tools/test/themes/preset/symbols/parallel_branch_compact.svg +0 -4
  368. data/tools/test/themes/preset/symbols/parallel_branch_event.svg +0 -14
  369. data/tools/test/themes/preset/symbols/parallel_branch_normal.svg +0 -5
  370. data/tools/test/themes/preset/symbols/scripts.svg +0 -4
  371. data/tools/test/themes/preset/symbols/start.svg +0 -3
  372. data/tools/test/themes/preset/symbols/stop.svg +0 -5
  373. data/tools/test/themes/preset/symbols/terminate.svg +0 -4
  374. data/tools/test/themes/preset/theme.js +0 -1287
  375. data/tools/test/track.html +0 -142
@@ -12,7 +12,7 @@
12
12
  # CPEE (file COPYING in the main directory). If not, see
13
13
  # <http://www.gnu.org/licenses/>.
14
14
 
15
- class DefaultHandlerWrapper < WEEL::HandlerWrapperBase
15
+ class ConnectionWrapper < WEEL::ConnectionWrapperBase
16
16
  def self::loop_guard(arguments,id,count) # {{{
17
17
  controller = arguments[0]
18
18
  tsn = Time.now
@@ -30,11 +30,11 @@ class DefaultHandlerWrapper < WEEL::HandlerWrapperBase
30
30
  controller = arguments[0]
31
31
  controller.notify("description/error", :message => err.message)
32
32
  end# }}}
33
- def self::inform_handlerwrapper_error(arguments,err) # {{{
33
+ def self::inform_connectionwrapper_error(arguments,err) # {{{
34
34
  controller = arguments[0]
35
35
  p err.message
36
36
  p err.backtrace
37
- controller.notify("handlerwrapper/error", :message => err.message)
37
+ controller.notify("executionhandler/error", :message => err.message)
38
38
  end # }}}
39
39
  def self::inform_position_change(arguments,ipc={}) # {{{
40
40
  controller = arguments[0]
@@ -72,6 +72,10 @@ class DefaultHandlerWrapper < WEEL::HandlerWrapperBase
72
72
  params
73
73
  end #}}}
74
74
 
75
+ def additional #{{{
76
+ { :attributes => @controller.attributes }
77
+ end #}}}
78
+
75
79
  def proto_curl(parameters) #{{{
76
80
  params = []
77
81
  callback = Digest::MD5.hexdigest(Kernel::rand().to_s)
@@ -0,0 +1,195 @@
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 'cpee/value_helper'
21
+ require 'cpee/attributes_helper'
22
+ require 'cpee/message'
23
+ require 'cpee/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
+ class Controller
35
+ def initialize(id,dir,opts)
36
+ CPEE::redis_connect(opts)
37
+
38
+ @redis = opts[:redis]
39
+ @votes = []
40
+
41
+ @id = id
42
+
43
+ @attributes = {}
44
+ @redis.keys("instance:#{id}/attributes/*").each do |key|
45
+ @attributes[File.basename(key)] = @redis.get(key)
46
+ end
47
+
48
+ @attributes_helper = AttributesHelper.new
49
+ @thread = nil
50
+ @opts = opts
51
+ @instance = nil
52
+ @loop_guard = {}
53
+
54
+ @callback_keys = {}
55
+ @psredis = @opts[:redis_dyn].call
56
+
57
+ Thread.new do
58
+ @psredis.psubscribe('callback-response:*','callback-end:*') do |on|
59
+ on.pmessage do |pat, what, message|
60
+ if pat == 'callback-response:*' && @callback_keys.has_key?(what[18..-1])
61
+ index = message.index(' ')
62
+ mess = message[index+1..-1]
63
+ instance = message[0...index]
64
+ m = JSON.parse(mess)
65
+ resp = []
66
+ m['content']['values'].each do |e|
67
+ if e[1][0] == 'simple'
68
+ resp << Riddl::Parameter::Simple.new(e[0],e[1][1])
69
+ elsif e[1][0] == 'complex'
70
+ resp << Riddl::Parameter::Complex.new(e[0],e[1][1],File.open(e[1][2]))
71
+ end
72
+ end
73
+ @callback_keys[what[18..-1]].send(:callback,resp,m['content']['headers'])
74
+ end
75
+ if pat == 'callback-end:*'
76
+ @callback_keys.delete(what[13..-1])
77
+ end
78
+ end
79
+ end
80
+ end
81
+ end
82
+
83
+ attr_reader :id
84
+ attr_reader :attributes
85
+ attr_reader :loop_guard
86
+
87
+ def uuid
88
+ @attributes['uuid']
89
+ end
90
+
91
+ def attributes_translated
92
+ @attributes_helper.translate(attributes,dataelements,endpoints)
93
+ end
94
+
95
+ def host
96
+ @opts[:host]
97
+ end
98
+ def base_url
99
+ @opts[:url]
100
+ end
101
+ def instance_url
102
+ File.join(@opts[:url].to_s,@id.to_s)
103
+ end
104
+ def instance_id
105
+ @id
106
+ end
107
+ def base
108
+ base_url
109
+ end
110
+ def instance=(inst)
111
+ @instance = inst
112
+ end
113
+ def endpoints
114
+ @instance.endpoints
115
+ end
116
+ def dataelements
117
+ @instance.data
118
+ end
119
+
120
+ def start
121
+ if vote("state/change", :state => 'running')
122
+ @thread = @instance.start
123
+ @thread.join
124
+ else
125
+ @thread = @instance.stop
126
+ @thread.join
127
+ end
128
+ end
129
+
130
+ def stop
131
+ ### tell the instance to stop
132
+ @instance.stop
133
+ ### end all votes or it will not work
134
+ Thread.new do # doing stuff in trap context is a nono. but in a thread its fine :-)
135
+ @votes.each do |key|
136
+ CPEE::Message::send(:'vote-response',key,base,@id,uuid,info,true,@redis)
137
+ end
138
+ end
139
+ @thread.join if !@thread.nil? && @thread.alive?
140
+ end
141
+
142
+ def info
143
+ @attributes['info']
144
+ end
145
+
146
+ def notify(what,content={})
147
+ content[:attributes] = attributes_translated
148
+ CPEE::Message::send(:event,what,base,@id,uuid,info,content,@redis)
149
+ end
150
+
151
+ def vote(what,content={})
152
+ topic, name = what.split('/')
153
+ handler = File.join(topic,'vote',name)
154
+ votes = []
155
+ @redis.smembers("instance:#{id}/handlers/#{handler}").each do |client|
156
+ voteid = Digest::MD5.hexdigest(Kernel::rand().to_s)
157
+ content[:key] = voteid
158
+ content[:attributes] = attributes_translated
159
+ content[:subscription] = client
160
+ votes << voteid
161
+ CPEE::Message::send(:vote,what,base,@id,uuid,info,content,@redis)
162
+ end
163
+
164
+ if votes.length > 0
165
+ @votes += votes
166
+ psredis = @opts[:redis_dyn].call
167
+ collect = []
168
+ psredis.subscribe(votes.map{|e| ['vote-response:' + e.to_s] }.flatten) do |on|
169
+ on.message do |what, message|
170
+ index = message.index(' ')
171
+ mess = message[index+1..-1]
172
+ m = JSON.parse(mess)
173
+ collect << ((m['content'] == true || m['content'] == 'true') || false)
174
+ @votes.delete m['name']
175
+ cancel_callback m['name']
176
+ if collect.length >= votes.length
177
+ psredis.unsubscribe
178
+ end
179
+ end
180
+ end
181
+ !collect.include?(false)
182
+ else
183
+ true
184
+ end
185
+ end
186
+
187
+ def callback(hw,key,content)
188
+ CPEE::Message::send(:callback,'activity/content',base,@id,uuid,info,content.merge(:key => key),@redis)
189
+ @callback_keys[key] = hw
190
+ end
191
+
192
+ def cancel_callback(key)
193
+ CPEE::Message::send(:'callback-end',key,base,@id,uuid,info,{},@redis)
194
+ end
195
+ end
@@ -4,24 +4,27 @@
4
4
  <xsl:strip-space elements="*"/>
5
5
  <xsl:variable name="myspacemultiplier">2</xsl:variable>
6
6
  <xsl:template match="/">
7
+ <xsl:text>control flow do</xsl:text>
8
+ <xsl:call-template name="print-newline"/>
7
9
  <xsl:apply-templates select="//d:description"/>
10
+ <xsl:text>end</xsl:text>
8
11
  </xsl:template>
9
12
  <xsl:template match="//d:description">
10
13
  <xsl:apply-templates>
11
14
  <xsl:with-param name="myspace">
12
- <xsl:value-of select="-1*$myspacemultiplier"/>
15
+ <xsl:value-of select="0*$myspacemultiplier"/>
13
16
  </xsl:with-param>
14
17
  </xsl:apply-templates>
15
18
  </xsl:template>
16
19
  <xsl:template match="*">
17
20
  <xsl:param name="myspace"/>
18
- <xsl:call-template name="print-space">
19
- <xsl:with-param name="i">1</xsl:with-param>
20
- <xsl:with-param name="count">
21
- <xsl:value-of select="$myspace+$myspacemultiplier"/>
22
- </xsl:with-param>
23
- </xsl:call-template>
24
21
  <xsl:if test="name()='call' or name()='manipulate'">
22
+ <xsl:call-template name="print-space">
23
+ <xsl:with-param name="i">1</xsl:with-param>
24
+ <xsl:with-param name="count">
25
+ <xsl:value-of select="$myspace+$myspacemultiplier"/>
26
+ </xsl:with-param>
27
+ </xsl:call-template>
25
28
  <xsl:value-of select="name()"/>
26
29
  <xsl:text> :</xsl:text>
27
30
  <xsl:value-of select="@id"/>
@@ -94,26 +97,54 @@
94
97
  <xsl:value-of select="$myspace"/>
95
98
  </xsl:with-param>
96
99
  </xsl:call-template>
97
- <xsl:call-template name="print-newline"/>
100
+ <xsl:call-template name="print-newline"></xsl:call-template>
98
101
  </xsl:if>
99
102
  <xsl:if test="name()='terminate'">
103
+ <xsl:call-template name="print-space">
104
+ <xsl:with-param name="i">1</xsl:with-param>
105
+ <xsl:with-param name="count">
106
+ <xsl:value-of select="$myspace+$myspacemultiplier"/>
107
+ </xsl:with-param>
108
+ </xsl:call-template>
100
109
  <xsl:text>terminate</xsl:text>
101
110
  <xsl:call-template name="print-newline"/>
102
111
  </xsl:if>
103
112
  <xsl:if test="name()='stop'">
113
+ <xsl:call-template name="print-space">
114
+ <xsl:with-param name="i">1</xsl:with-param>
115
+ <xsl:with-param name="count">
116
+ <xsl:value-of select="$myspace+$myspacemultiplier"/>
117
+ </xsl:with-param>
118
+ </xsl:call-template>
104
119
  <xsl:text>stop :</xsl:text>
105
120
  <xsl:value-of select="@id"/>
106
121
  <xsl:call-template name="print-newline"/>
107
122
  </xsl:if>
108
123
  <xsl:if test="name()='escape'">
124
+ <xsl:call-template name="print-space">
125
+ <xsl:with-param name="i">1</xsl:with-param>
126
+ <xsl:with-param name="count">
127
+ <xsl:value-of select="$myspace+$myspacemultiplier"/>
128
+ </xsl:with-param>
129
+ </xsl:call-template>
109
130
  <xsl:text>escape</xsl:text>
110
131
  <xsl:call-template name="print-newline"/>
111
132
  </xsl:if>
112
133
  <xsl:if test="name()='parallel'">
134
+ <xsl:call-template name="print-space">
135
+ <xsl:with-param name="i">1</xsl:with-param>
136
+ <xsl:with-param name="count">
137
+ <xsl:value-of select="$myspace+$myspacemultiplier"/>
138
+ </xsl:with-param>
139
+ </xsl:call-template>
113
140
  <xsl:text>parallel</xsl:text>
114
141
  <xsl:if test="@wait">
115
142
  <xsl:text> :wait =&gt; </xsl:text>
116
143
  <xsl:value-of select="@wait"/>
144
+ <xsl:if test="@cancel">
145
+ <xsl:text>, :cancel =&gt; :</xsl:text>
146
+ <xsl:value-of select="@cancel"/>
147
+ </xsl:if>
117
148
  </xsl:if>
118
149
  <xsl:text> do</xsl:text>
119
150
  <xsl:call-template name="print-newline"/>
@@ -132,6 +163,12 @@
132
163
  <xsl:call-template name="print-newline"/>
133
164
  </xsl:if>
134
165
  <xsl:if test="name()='loop'">
166
+ <xsl:call-template name="print-space">
167
+ <xsl:with-param name="i">1</xsl:with-param>
168
+ <xsl:with-param name="count">
169
+ <xsl:value-of select="$myspace+$myspacemultiplier"/>
170
+ </xsl:with-param>
171
+ </xsl:call-template>
135
172
  <xsl:text>loop </xsl:text>
136
173
  <xsl:if test="@mode='pre_test'">
137
174
  <xsl:choose>
@@ -185,6 +222,12 @@
185
222
  <xsl:call-template name="print-newline"/>
186
223
  </xsl:if>
187
224
  <xsl:if test="name()='choose'">
225
+ <xsl:call-template name="print-space">
226
+ <xsl:with-param name="i">1</xsl:with-param>
227
+ <xsl:with-param name="count">
228
+ <xsl:value-of select="$myspace+$myspacemultiplier"/>
229
+ </xsl:with-param>
230
+ </xsl:call-template>
188
231
  <xsl:text>choose </xsl:text>
189
232
  <xsl:choose>
190
233
  <xsl:when test="@mode='exclusive'">
@@ -219,6 +262,12 @@
219
262
  <xsl:call-template name="print-newline"/>
220
263
  </xsl:if>
221
264
  <xsl:if test="name()='critical'">
265
+ <xsl:call-template name="print-space">
266
+ <xsl:with-param name="i">1</xsl:with-param>
267
+ <xsl:with-param name="count">
268
+ <xsl:value-of select="$myspace+$myspacemultiplier"/>
269
+ </xsl:with-param>
270
+ </xsl:call-template>
222
271
  <xsl:text>critical :</xsl:text>
223
272
  <xsl:value-of select="@sid"/>
224
273
  <xsl:text> do</xsl:text>
@@ -0,0 +1,81 @@
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
+ module CPEE
16
+
17
+ module ExecutionHandler
18
+
19
+ module Ruby
20
+ BACKEND_INSTANCE = 'instance.rb'
21
+ BACKEND_OPTS = 'opts.yaml'
22
+ DSL_TO_DSLX_XSL = File.expand_path(File.join(__dir__,'dsl_to_dslx.xsl'))
23
+ BACKEND_RUN = File.expand_path(File.join(__dir__,'backend','run'))
24
+ BACKEND_TEMPLATE = File.expand_path(File.join(__dir__,'backend','instance.template'))
25
+
26
+ def self::dslx_to_dsl(dslx) # transpile
27
+ trans = XML::Smart::open_unprotected(ExecutionHandler::Ruby::DSL_TO_DSLX_XSL)
28
+ dslx.transform_with(trans).to_s
29
+ end
30
+
31
+ def self::prepare(id,opts) # write result to disk
32
+ Dir.mkdir(File.join(opts[:instances],id.to_s)) rescue nil
33
+ FileUtils.copy(ExecutionHandler::Ruby::BACKEND_RUN,File.join(opts[:instances],id.to_s))
34
+ dsl = CPEE::Persistence::extract_item(id,opts,'dsl')
35
+ hw = CPEE::Persistence::extract_item(id,opts,'executionhandler')
36
+ endpoints = CPEE::Persistence::extract_list(id,opts,'endpoints')
37
+ dataelements = CPEE::Persistence::extract_list(id,opts,'dataelements')
38
+ positions = CPEE::Persistence::extract_set(id,opts,'positions')
39
+ positions.map! do |k, v|
40
+ [ k, v, CPEE::Persistence::extract_item(id,opts,File.join('positions',k,'@passthrough')) ]
41
+ end
42
+ File.open(File.join(opts[:instances],id.to_s,ExecutionHandler::Ruby::BACKEND_OPTS),'w') do |f|
43
+ YAML::dump({
44
+ :host => opts[:host],
45
+ :url => opts[:url],
46
+ :redis_url => opts[:redis_url],
47
+ :redis_path => File.join(opts[:basepath],opts[:redis_path]),
48
+ :redis_db => opts[:redis_db],
49
+ :global_executionhandlers => opts[:global_executionhandlers],
50
+ :executionhandlers => opts[:executionhandlers],
51
+ :executionhandler => hw
52
+ },f)
53
+ end
54
+ template = ERB.new(File.read(ExecutionHandler::Ruby::BACKEND_TEMPLATE), trim_mode: '-')
55
+ res = template.result_with_hash(dsl: dsl, dataelements: dataelements, endpoints: endpoints, positions: positions)
56
+ File.write(File.join(opts[:instances],id.to_s,ExecutionHandler::Ruby::BACKEND_INSTANCE),res)
57
+ end
58
+
59
+ def self::run(id,opts)
60
+ exe = File.join(opts[:instances],id.to_s,File.basename(ExecutionHandler::Ruby::BACKEND_RUN))
61
+ pid = Kernel.spawn(exe , :pgroup => true, :in => '/dev/null', :out => exe + '.out', :err => exe + '.err')
62
+ Process.detach pid
63
+ File.write(exe + '.pid',pid)
64
+ end
65
+
66
+ def self::stop(id,opts) ### return: bool to tell if manually changing redis is necessary
67
+ exe = File.join(opts[:instances],id.to_s,File.basename(ExecutionHandler::Ruby::BACKEND_RUN))
68
+ pid = File.read(exe + '.pid') rescue nil
69
+ if pid && (Process.kill(0, pid.to_i) rescue false)
70
+ Process.kill('HUP', pid.to_i) rescue nil
71
+ false
72
+ else # its not running, so clean up
73
+ File.unlink(exe + '.pid') rescue nil
74
+ true
75
+ end
76
+ end
77
+ end
78
+
79
+ end
80
+
81
+ end
@@ -22,7 +22,7 @@
22
22
  <id>0</id>
23
23
  <message>undefined</message>
24
24
  </status>
25
- <handlerwrapper>DefaultHandlerWrapper</handlerwrapper>
25
+ <executionhandler>ruby</executionhandler>
26
26
  <positions/>
27
27
  <dataelements/>
28
28
  <endpoints/>