cpee 2.0.25 → 2.1.0

Sign up to get free protection for your applications and to get access to all the features.
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/>