cpee 2.0.19 → 2.0.24

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 (317) hide show
  1. checksums.yaml +4 -4
  2. data/cockpit/css/model.css +2 -0
  3. data/cockpit/css/replay.css +55 -0
  4. data/cockpit/css/wfadaptor.css +17 -0
  5. data/cockpit/edit.html +1 -1
  6. data/cockpit/index.html +2 -0
  7. data/cockpit/js/instance.js +8 -20
  8. data/cockpit/js/replay.js +40 -0
  9. data/cockpit/js_libs.zip +0 -0
  10. data/cockpit/model.html +3 -1
  11. data/cockpit/replay.html +52 -0
  12. data/cockpit/templates/.CPEE.xml +8 -0
  13. data/cockpit/templates/.Signavio.xml +8 -0
  14. data/cockpit/templates/.templates.xml +13 -0
  15. data/cockpit/templates/.transformations.xml +4 -0
  16. data/cockpit/templates/instantiate.local/Take_Sub.xml +1 -1
  17. data/cockpit/themes/compact/rngs/call.rng +67 -40
  18. data/cockpit/themes/compact/rngs/callmanipulate.rng +81 -38
  19. data/cockpit/themes/control/rngs/alternative.rng +25 -0
  20. data/cockpit/themes/control/rngs/call.rng +149 -0
  21. data/cockpit/themes/control/rngs/callmanipulate.rng +188 -0
  22. data/cockpit/themes/control/rngs/choose.rng +14 -0
  23. data/cockpit/themes/control/rngs/closed_loop.rng +62 -0
  24. data/cockpit/themes/control/rngs/closed_loop_cancel.rng +5 -0
  25. data/cockpit/themes/control/rngs/closed_loop_control.rng +31 -0
  26. data/cockpit/themes/control/rngs/closed_loop_measuring.rng +12 -0
  27. data/cockpit/themes/control/rngs/critical.rng +5 -0
  28. data/cockpit/themes/control/rngs/escape.rng +1 -0
  29. data/cockpit/themes/control/rngs/group.rng +3 -0
  30. data/cockpit/themes/control/rngs/loop.rng +22 -0
  31. data/cockpit/themes/control/rngs/manipulate.rng +9 -0
  32. data/cockpit/themes/control/rngs/otherwise.rng +22 -0
  33. data/cockpit/themes/control/rngs/parallel.rng +21 -0
  34. data/cockpit/themes/control/rngs/parallel_branch.rng +8 -0
  35. data/cockpit/themes/control/rngs/scripts.rng +23 -0
  36. data/cockpit/themes/control/rngs/stop.rng +5 -0
  37. data/cockpit/themes/control/rngs/terminate.rng +1 -0
  38. data/cockpit/themes/control/symbols/alternative.svg +5 -0
  39. data/cockpit/themes/control/symbols/arrow.svg +3 -0
  40. data/cockpit/themes/control/symbols/call.svg +6 -0
  41. data/cockpit/themes/control/symbols/callmanipulate.svg +8 -0
  42. data/cockpit/themes/control/symbols/choose.svg +5 -0
  43. data/cockpit/themes/control/symbols/choose_exclusive.svg +5 -0
  44. data/cockpit/themes/control/symbols/choose_inclusive.svg +4 -0
  45. data/cockpit/themes/control/symbols/closed_loop.svg +5 -0
  46. data/cockpit/themes/control/symbols/closed_loop_cancel.svg +5 -0
  47. data/cockpit/themes/control/symbols/closed_loop_control.svg +5 -0
  48. data/cockpit/themes/control/symbols/closed_loop_measuring.svg +6 -0
  49. data/cockpit/themes/control/symbols/complex.svg +8 -0
  50. data/cockpit/themes/control/symbols/critical.svg +4 -0
  51. data/cockpit/themes/control/symbols/end.svg +3 -0
  52. data/cockpit/themes/control/symbols/escape.svg +5 -0
  53. data/cockpit/themes/control/symbols/event_end.svg +3 -0
  54. data/cockpit/themes/control/symbols/loop.svg +5 -0
  55. data/cockpit/themes/control/symbols/manipulate.svg +4 -0
  56. data/cockpit/themes/control/symbols/otherwise.svg +5 -0
  57. data/cockpit/themes/control/symbols/parallel.svg +5 -0
  58. data/cockpit/themes/control/symbols/parallel_branch.svg +5 -0
  59. data/cockpit/themes/control/symbols/parallel_branch_compact.svg +4 -0
  60. data/cockpit/themes/control/symbols/parallel_branch_event.svg +14 -0
  61. data/cockpit/themes/control/symbols/parallel_branch_normal.svg +5 -0
  62. data/cockpit/themes/control/symbols/scripts.svg +4 -0
  63. data/cockpit/themes/control/symbols/start.svg +3 -0
  64. data/cockpit/themes/control/symbols/stop.svg +5 -0
  65. data/cockpit/themes/control/symbols/terminate.svg +4 -0
  66. data/cockpit/themes/control/theme.js +1665 -0
  67. data/cockpit/themes/default/rngs/call.rng +67 -40
  68. data/cockpit/themes/default/rngs/callmanipulate.rng +81 -38
  69. data/cockpit/themes/default/theme.js +1287 -0
  70. data/cockpit/themes/diana/rngs/call.rng +67 -40
  71. data/cockpit/themes/diana/rngs/callmanipulate.rng +81 -38
  72. data/cockpit/themes/extended/rngs/call.rng +67 -40
  73. data/cockpit/themes/extended/rngs/callmanipulate.rng +81 -38
  74. data/cockpit/themes/model/rngs/call.rng +2 -1
  75. data/cockpit/themes/model/rngs/callmanipulate.rng +2 -1
  76. data/cockpit/themes/model/theme.js +1 -1
  77. data/cockpit/themes/packed/rngs/call.rng +67 -40
  78. data/cockpit/themes/packed/rngs/callmanipulate.rng +81 -38
  79. data/cockpit/themes/preset/rngs/call.rng +67 -40
  80. data/cockpit/themes/preset/rngs/callmanipulate.rng +81 -38
  81. data/cockpit/track.html +0 -7
  82. data/cpee.gemspec +2 -2
  83. data/lib/cpee/controller.rb +6 -3
  84. data/lib/cpee/implementation.rb +23 -8
  85. data/lib/cpee/implementation_notifications.rb +1 -1
  86. data/lib/cpee/persistence.rb +2 -1
  87. data/lib/cpee/redis.rb +57 -0
  88. data/server/handlerwrappers/default.rb +2 -2
  89. data/server/resources/notifications/logging/subscription.xml +6 -0
  90. data/server/routing/end.pid +1 -0
  91. data/server/routing/end.rb +16 -4
  92. data/server/routing/forward-events.pid +1 -0
  93. data/server/routing/forward-events.rb +19 -7
  94. data/server/routing/forward-votes.pid +1 -0
  95. data/server/routing/forward-votes.rb +19 -7
  96. data/server/routing/persist.pid +1 -0
  97. data/server/routing/persist.rb +26 -14
  98. data/server/server.pid +1 -0
  99. data/tools/cpee +5 -5
  100. data/tools/test/README +4 -0
  101. data/tools/test/config.json +3 -0
  102. data/tools/test/contrib/graph_example.svg +1166 -0
  103. data/tools/test/contrib/legend.svg +817 -0
  104. data/tools/test/contrib/symbols.svg +224 -0
  105. data/tools/test/contrib/transformation1.xsl +264 -0
  106. data/tools/test/contrib/transformation2.xsl +10 -0
  107. data/tools/test/contrib/tree_example.svg +788 -0
  108. data/tools/test/css/model.css +24 -0
  109. data/tools/test/css/track.css +60 -0
  110. data/tools/test/css/ui.css +214 -0
  111. data/tools/test/css/wfadaptor.css +422 -0
  112. data/tools/test/edit.html +258 -0
  113. data/tools/test/graph.html +69 -0
  114. data/tools/test/index.html +258 -0
  115. data/tools/test/js/details.js +109 -0
  116. data/tools/test/js/instance.js +1344 -0
  117. data/tools/test/js/model.js +41 -0
  118. data/tools/test/js/parameters.js +82 -0
  119. data/tools/test/js/track.js +18 -0
  120. data/tools/test/js/ui.js +104 -0
  121. data/tools/test/js/wfadaptor.js +763 -0
  122. data/tools/test/js_libs.zip +0 -0
  123. data/tools/test/js_libs/Makefile +2 -0
  124. data/tools/test/js_libs/ansi_up.js +333 -0
  125. data/tools/test/js_libs/console.js +80 -0
  126. data/tools/test/js_libs/custommenu.css +84 -0
  127. data/tools/test/js_libs/custommenu.js +104 -0
  128. data/tools/test/js_libs/experiments1/relaxngui.css +185 -0
  129. data/tools/test/js_libs/experiments1/relaxngui.js +488 -0
  130. data/tools/test/js_libs/experiments1/rngtest9.html +60 -0
  131. data/tools/test/js_libs/experiments1/rngtest9.rng +35 -0
  132. data/tools/test/js_libs/experiments1/rngtest9.xml +8 -0
  133. data/tools/test/js_libs/jquery-2.2.4.min.js +4 -0
  134. data/tools/test/js_libs/jquery-3.2.1.min.js +4 -0
  135. data/tools/test/js_libs/jquery-3.3.1.min.js +2 -0
  136. data/tools/test/js_libs/jquery.browser.js +40 -0
  137. data/tools/test/js_libs/jquery.caret.min.js +10 -0
  138. data/tools/test/js_libs/jquery.cookie.js +117 -0
  139. data/tools/test/js_libs/jquery.min.js +1 -0
  140. data/tools/test/js_libs/jquery.svg.min.js +6 -0
  141. data/tools/test/js_libs/jquery.svgdom.min.js +6 -0
  142. data/tools/test/js_libs/markdown.min.js +1 -0
  143. data/tools/test/js_libs/parsequery.js +21 -0
  144. data/tools/test/js_libs/printf.js +368 -0
  145. data/tools/test/js_libs/relaxngui.css +213 -0
  146. data/tools/test/js_libs/relaxngui.js +543 -0
  147. data/tools/test/js_libs/strftime.min.js +1 -0
  148. data/tools/test/js_libs/tests/dataelements.html +59 -0
  149. data/tools/test/js_libs/tests/dataelements.rng +8 -0
  150. data/tools/test/js_libs/tests/dataelements.xml +3 -0
  151. data/tools/test/js_libs/tests/relaxngui.css +203 -0
  152. data/tools/test/js_libs/tests/relaxngui.js +502 -0
  153. data/tools/test/js_libs/tests/rngtest1.html +66 -0
  154. data/tools/test/js_libs/tests/rngtest1.rng +147 -0
  155. data/tools/test/js_libs/tests/rngtest1.xml +13 -0
  156. data/tools/test/js_libs/tests/rngtest2.html +60 -0
  157. data/tools/test/js_libs/tests/rngtest2.rng +6 -0
  158. data/tools/test/js_libs/tests/rngtest2.xml +3 -0
  159. data/tools/test/js_libs/tests/rngtest3.html +60 -0
  160. data/tools/test/js_libs/tests/rngtest3.rng +23 -0
  161. data/tools/test/js_libs/tests/rngtest3.xml +9 -0
  162. data/tools/test/js_libs/tests/rngtest4.html +60 -0
  163. data/tools/test/js_libs/tests/rngtest4.rng +19 -0
  164. data/tools/test/js_libs/tests/rngtest4.xml +12 -0
  165. data/tools/test/js_libs/tests/rngtest5.html +60 -0
  166. data/tools/test/js_libs/tests/rngtest5.rng +75 -0
  167. data/tools/test/js_libs/tests/rngtest5.xml +40 -0
  168. data/tools/test/js_libs/tests/rngtest6.html +60 -0
  169. data/tools/test/js_libs/tests/rngtest6.rng +24 -0
  170. data/tools/test/js_libs/tests/rngtest6.xml +6 -0
  171. data/tools/test/js_libs/tests/rngtest8.html +60 -0
  172. data/tools/test/js_libs/tests/rngtest8.rng +13 -0
  173. data/tools/test/js_libs/tests/rngtest8.xml +2 -0
  174. data/tools/test/js_libs/tests/rngtest9.html +60 -0
  175. data/tools/test/js_libs/tests/rngtest9.rng +31 -0
  176. data/tools/test/js_libs/tests/rngtest9.xml +8 -0
  177. data/tools/test/js_libs/ui.css +333 -0
  178. data/tools/test/js_libs/ui.html +168 -0
  179. data/tools/test/js_libs/ui.js +177 -0
  180. data/tools/test/js_libs/underscore.min.js +27 -0
  181. data/tools/test/js_libs/util.js +81 -0
  182. data/tools/test/js_libs/vkbeautify.0.99.00.beta.js +358 -0
  183. data/tools/test/js_libs/vkbeautify.js +1 -0
  184. data/tools/test/js_libs/webcomponents.min.js +196 -0
  185. data/tools/test/model.html +192 -0
  186. data/tools/test/rngs/attributes.rng +8 -0
  187. data/tools/test/rngs/dataelements.rng +8 -0
  188. data/tools/test/rngs/endpoints.rng +8 -0
  189. data/tools/test/templates.legacy/Async.xml +46 -0
  190. data/tools/test/templates.legacy/BCO.xml +70 -0
  191. data/tools/test/templates.legacy/BCS.xml +70 -0
  192. data/tools/test/templates.legacy/Centurio.xml +75 -0
  193. data/tools/test/templates.legacy/Concurrent.xml +40 -0
  194. data/tools/test/templates.legacy/Coopis Testset.xml +76 -0
  195. data/tools/test/templates.legacy/Endpoints and Data Manipulation.xml +30 -0
  196. data/tools/test/templates.legacy/ICSOC Testset.xml +95 -0
  197. data/tools/test/templates.legacy/Infinity.xml +28 -0
  198. data/tools/test/templates.legacy/Lego Boxer.xml +31 -0
  199. data/tools/test/templates.legacy/Lego Conveyor.xml +31 -0
  200. data/tools/test/templates.legacy/Lego Crane.xml +87 -0
  201. data/tools/test/templates.legacy/Lego Ejector.xml +55 -0
  202. data/tools/test/templates.legacy/Lego Full.xml +142 -0
  203. data/tools/test/templates.legacy/Lego Liddy.xml +40 -0
  204. data/tools/test/templates.legacy/Lego Plate.xml +31 -0
  205. data/tools/test/templates.legacy/Lego Transporter.xml +43 -0
  206. data/tools/test/templates.legacy/Lego_Part_1.xml +85 -0
  207. data/tools/test/templates.legacy/LgLinear.xml +65 -0
  208. data/tools/test/templates.legacy/Linear.xml +77 -0
  209. data/tools/test/templates.legacy/Log.xml +117 -0
  210. data/tools/test/templates.legacy/Mangler 1.xml +87 -0
  211. data/tools/test/templates.legacy/Mangler 2.xml +103 -0
  212. data/tools/test/templates.legacy/Manuel Labels.xml +55 -0
  213. data/tools/test/templates.legacy/Promise.xml +275 -0
  214. data/tools/test/templates.legacy/SOPROMO Test Sonification.xml +83 -0
  215. data/tools/test/templates.legacy/Subprocess.xml +56 -0
  216. data/tools/test/templates.legacy/Syncing P34 1.xml +77 -0
  217. data/tools/test/templates.legacy/Syncing P34 2.xml +77 -0
  218. data/tools/test/templates.legacy/Syncing P34 3.xml +77 -0
  219. data/tools/test/templates.legacy/Syncing P34.xml +77 -0
  220. data/tools/test/templates.legacy/TEST - Bad Loop.xml +173 -0
  221. data/tools/test/templates.legacy/TEST - Wrong Positions.xml +174 -0
  222. data/tools/test/templates.legacy/Take_5.xml +48 -0
  223. data/tools/test/templates.legacy/Update.xml +32 -0
  224. data/tools/test/templates.legacy/Worklist Parallel.xml +104 -0
  225. data/tools/test/templates.legacy/Worklist Test CPEE.xml +40 -0
  226. data/tools/test/templates.legacy/Worklist Test.xml +42 -0
  227. data/tools/test/templates.legacy/Worklist Test2.xml +43 -0
  228. data/tools/test/templates.legacy/convert_cpee2.rb +15 -0
  229. data/tools/test/templates.legacy/convert_preset.rb +32 -0
  230. data/tools/test/templates.legacy/testsets.xml +37 -0
  231. data/tools/test/templates.legacy/transformations.xml +4 -0
  232. data/tools/test/templates/Coopis 2010.xml +76 -0
  233. data/tools/test/templates/IUPC arXiv:1104.3609 P34 1.xml +77 -0
  234. data/tools/test/templates/IUPC arXiv:1104.3609 P34 2.xml +77 -0
  235. data/tools/test/templates/IUPC arXiv:1104.3609 P34 3.xml +77 -0
  236. data/tools/test/templates/Track Test Local.xml +82 -0
  237. data/tools/test/templates/Track Test.xml +82 -0
  238. data/tools/test/templates/UR-VUE 2020 Manual Adjust.xml +182 -0
  239. data/tools/test/templates/UR-VUE 2020 Solution Baseline.xml +203 -0
  240. data/tools/test/templates/UR-VUE 2020 Solution NN.xml +197 -0
  241. data/tools/test/templates/UR-VUE 2020 Solution View.xml +151 -0
  242. data/tools/test/templates/UR-VUE 2020.xml +26 -0
  243. data/tools/test/templates/Worklist.xml +42 -0
  244. data/tools/test/templates/instantiate.local/Take_Sub.xml +59 -0
  245. data/tools/test/templates/instantiate/Take_Perf.xml +46 -0
  246. data/tools/test/templates/instantiate/Take_Sub.xml +58 -0
  247. data/tools/test/templates/instantiate/Take_X.xml +48 -0
  248. data/tools/test/themes/compact/theme.js +1285 -0
  249. data/tools/test/themes/diana/theme.js +1650 -0
  250. data/tools/test/themes/extended/theme.js +1325 -0
  251. data/tools/test/themes/model/rngs/alternative.rng +1 -0
  252. data/tools/test/themes/model/rngs/call.rng +67 -0
  253. data/tools/test/themes/model/rngs/callmanipulate.rng +72 -0
  254. data/tools/test/themes/model/rngs/choose.rng +1 -0
  255. data/tools/test/themes/model/rngs/critical.rng +1 -0
  256. data/tools/test/themes/model/rngs/escape.rng +1 -0
  257. data/tools/test/themes/model/rngs/group.rng +1 -0
  258. data/tools/test/themes/model/rngs/loop.rng +1 -0
  259. data/tools/test/themes/model/rngs/manipulate.rng +1 -0
  260. data/tools/test/themes/model/rngs/otherwise.rng +1 -0
  261. data/tools/test/themes/model/rngs/parallel.rng +1 -0
  262. data/tools/test/themes/model/rngs/parallel_branch.rng +1 -0
  263. data/tools/test/themes/model/rngs/scripts.rng +7 -0
  264. data/tools/test/themes/model/rngs/stop.rng +1 -0
  265. data/tools/test/themes/model/rngs/terminate.rng +1 -0
  266. data/tools/test/themes/model/theme.js +1268 -0
  267. data/tools/test/themes/packed/theme.js +1286 -0
  268. data/tools/test/themes/preset/rngs/alternative.rng +25 -0
  269. data/tools/test/themes/preset/rngs/call.rng +122 -0
  270. data/tools/test/themes/preset/rngs/callmanipulate.rng +145 -0
  271. data/tools/test/themes/preset/rngs/choose.rng +14 -0
  272. data/tools/test/themes/preset/rngs/closed_loop.rng +62 -0
  273. data/tools/test/themes/preset/rngs/closed_loop_cancel.rng +5 -0
  274. data/tools/test/themes/preset/rngs/closed_loop_control.rng +31 -0
  275. data/tools/test/themes/preset/rngs/closed_loop_measuring.rng +12 -0
  276. data/tools/test/themes/preset/rngs/critical.rng +5 -0
  277. data/tools/test/themes/preset/rngs/escape.rng +1 -0
  278. data/tools/test/themes/preset/rngs/group.rng +3 -0
  279. data/tools/test/themes/preset/rngs/loop.rng +22 -0
  280. data/tools/test/themes/preset/rngs/manipulate.rng +9 -0
  281. data/tools/test/themes/preset/rngs/otherwise.rng +22 -0
  282. data/tools/test/themes/preset/rngs/parallel.rng +21 -0
  283. data/tools/test/themes/preset/rngs/parallel_branch.rng +8 -0
  284. data/tools/test/themes/preset/rngs/scripts.rng +23 -0
  285. data/tools/test/themes/preset/rngs/stop.rng +5 -0
  286. data/tools/test/themes/preset/rngs/terminate.rng +1 -0
  287. data/tools/test/themes/preset/symbols/alternative.svg +5 -0
  288. data/tools/test/themes/preset/symbols/arrow.svg +3 -0
  289. data/tools/test/themes/preset/symbols/call.svg +6 -0
  290. data/tools/test/themes/preset/symbols/callmanipulate.svg +8 -0
  291. data/tools/test/themes/preset/symbols/choose.svg +5 -0
  292. data/tools/test/themes/preset/symbols/choose_exclusive.svg +5 -0
  293. data/tools/test/themes/preset/symbols/choose_inclusive.svg +4 -0
  294. data/tools/test/themes/preset/symbols/closed_loop.svg +5 -0
  295. data/tools/test/themes/preset/symbols/closed_loop_cancel.svg +5 -0
  296. data/tools/test/themes/preset/symbols/closed_loop_control.svg +5 -0
  297. data/tools/test/themes/preset/symbols/closed_loop_measuring.svg +6 -0
  298. data/tools/test/themes/preset/symbols/complex.svg +8 -0
  299. data/tools/test/themes/preset/symbols/critical.svg +4 -0
  300. data/tools/test/themes/preset/symbols/end.svg +3 -0
  301. data/tools/test/themes/preset/symbols/escape.svg +5 -0
  302. data/tools/test/themes/preset/symbols/event_end.svg +3 -0
  303. data/tools/test/themes/preset/symbols/loop.svg +5 -0
  304. data/tools/test/themes/preset/symbols/manipulate.svg +4 -0
  305. data/tools/test/themes/preset/symbols/otherwise.svg +5 -0
  306. data/tools/test/themes/preset/symbols/parallel.svg +5 -0
  307. data/tools/test/themes/preset/symbols/parallel_branch.svg +5 -0
  308. data/tools/test/themes/preset/symbols/parallel_branch_compact.svg +4 -0
  309. data/tools/test/themes/preset/symbols/parallel_branch_event.svg +14 -0
  310. data/tools/test/themes/preset/symbols/parallel_branch_normal.svg +5 -0
  311. data/tools/test/themes/preset/symbols/scripts.svg +4 -0
  312. data/tools/test/themes/preset/symbols/start.svg +3 -0
  313. data/tools/test/themes/preset/symbols/stop.svg +5 -0
  314. data/tools/test/themes/preset/symbols/terminate.svg +4 -0
  315. data/tools/test/themes/preset/theme.js +1287 -0
  316. data/tools/test/track.html +142 -0
  317. metadata +282 -2
@@ -26,7 +26,8 @@
26
26
  </zeroOrMore>
27
27
  </element>
28
28
  <element name="stream" rngui:header="Data Stream Handling" rngui:fold="closed">
29
- <element name="sensors" rngui:header="Sensors" rngui:fold="closed">
29
+
30
+ <element name="sensors" rngui:header="Sensor Data Streams" rngui:fold="closed">
30
31
  <zeroOrMore rngui:label="Add Sensor">
31
32
  <element name="sensor">
32
33
  <element name="name" rngui:label="Label">
@@ -35,13 +36,18 @@
35
36
  <element name="extractor_url" rngui:label="Extractor Url">
36
37
  <data type="string" rngui:label="Service Url"/>
37
38
  </element>
38
- <element name="extractor_arg" rngui:label="Extractor Argument">
39
- <data type="string" rngui:label="Value / Json"/>
39
+ <element name="extractor_params" rngui:label="Extractor Arguments:">
40
+ <zeroOrMore rngui:label="Create Extractor Argument Pairs">
41
+ <element rngui:label="Name">
42
+ <anyName/>
43
+ <data type="string" rngui:label="Value / Json"/>
44
+ </element>
45
+ </zeroOrMore>
40
46
  </element>
41
47
  <element name="visualizer_url" rngui:label="Visualizer Url">
42
48
  <data type="string" rngui:label="Service Url"/>
43
49
  </element>
44
- <element name="visualizer_params" rngui:header="Visualizer Arguments">
50
+ <element name="visualizer_params" rngui:label="Visualizer Arguments">
45
51
  <zeroOrMore rngui:label="Create Visualizer Argument Pairs">
46
52
  <element rngui:label="Name">
47
53
  <anyName/>
@@ -52,42 +58,44 @@
52
58
  </element>
53
59
  </zeroOrMore>
54
60
  </element>
55
- <element name="aggregators" rngui:header="Aggregators" rngui:fold="closed">
56
- <zeroOrMore rngui:label="Add Aggregator">
57
- <element name="aggregator">
58
- <element name="name" rngui:label="Label">
59
- <data type="string" rngui:label="Label"/>
60
- </element>
61
- <element name="aggregator_url" rngui:label="Aggregator Url">
62
- <data type="string" rngui:label="Service Url"/>
63
- </element>
64
- <element name="aggregator_arg" rngui:label="Aggregator Argument">
65
- <data type="string" rngui:label="Value / Json"/>
66
- </element>
67
- </element>
68
- </zeroOrMore>
69
- </element>
70
- <element name="costs" rngui:header="Costs" rngui:fold="closed">
71
- <zeroOrMore rngui:label="Create Cost Factor">
72
- <element name="cost_factor">
61
+
62
+ <element name="ips" rngui:header="Impact Profiles" rngui:fold="closed">
63
+ <zeroOrMore rngui:label="Add Impact Profile">
64
+ <element name="ip">
73
65
  <element name="name" rngui:label="Label">
74
66
  <data type="string" rngui:label="Label"/>
75
67
  </element>
76
68
  <element name="target" rngui:label="Target Value">
77
69
  <data type="string" rngui:label="Value"/>
78
70
  </element>
79
- <element name="vfunc_url" rngui:label="Violation Function Url">
80
- <data type="string" rngui:label="Service Url"/>
81
- </element>
82
- <element name="vfunc_arg" rngui:label="Violation Function Argument">
83
- <data type="string" rngui:label="Service Url"/>
71
+ <element name="ifs" rngui:header="Impact Factors">
72
+ <zeroOrMore rngui:label="Add Impact Factor">
73
+ <element name="if">
74
+ <element name="ivs" rngui:header="Impact Values">
75
+ <zeroOrMore rngui:label="Add Impact Value ">
76
+ <element name="iv">
77
+ <element name="extractor_url" rngui:label="Extractor Url">
78
+ <data type="string" rngui:label="Service Url + Parameters"/>
79
+ </element>
80
+ <element name="aggregator_url" rngui:label="Aggregator Url">
81
+ <data type="string" rngui:label="Service Url + Parameters"/>
82
+ </element>
83
+ </element>
84
+ </zeroOrMore>
85
+ </element>
86
+ <element name="aggregator_url" rngui:label="Impact Function Url">
87
+ <data type="string" rngui:label="Service Url + Parameters"/>
88
+ </element>
89
+ </element>
90
+ </zeroOrMore>
84
91
  </element>
85
- <element name="vcost" rngui:label="Violation Cost">
86
- <data type="string" rngui:label="Value"/>
92
+ <element name="vfunc_url" rngui:label="Violation Function Url">
93
+ <data type="string" rngui:label="Service Url + Parameters"/>
87
94
  </element>
88
95
  </element>
89
96
  </zeroOrMore>
90
97
  </element>
98
+
91
99
  </element>
92
100
  <element name="report" rngui:header="Reporting Annotation" rngui:fold="closed">
93
101
  <element name="url" rngui:label='HTML Snippet'>
@@ -97,21 +105,40 @@
97
105
  </element>
98
106
  <element name="annotations" rngui:header="Annotations">
99
107
  <element name="_timing" rngui:header="Timing" rngui:fold="closed">
100
- <element name="_timing_wait" rngui:label="&#x3C9; - Wait">
101
- <data type="float" rngui:label="[0,1]" rngui:default="0.5"/>
102
- </element>
103
- <element name="_timing_threshold" rngui:label="&#x3BA; - Threshold">
104
- <data type="float" rngui:label="[0,3,n]" rngui:default="3"/>
105
- </element>
106
- <element name="_timing_min" rngui:label="Min in min">
107
- <data type="float" rngui:label="Minutes"/>
108
- </element>
109
- <element name="_timing_max" rngui:label="Max in min">
110
- <data type="float" rngui:label="Minutes"/>
108
+ <element name="_timing_weight" rngui:label="&#x3C9; - Weight">
109
+ <data type="float" rngui:label="[0,1]"/>
111
110
  </element>
112
111
  <element name="_timing_avg" rngui:label="Avg in min">
113
112
  <data type="float" rngui:label="Minutes"/>
114
113
  </element>
114
+ <element name="explanations" rngui:header="Explanations">
115
+ <zeroOrMore rngui:label="Add Explanation">
116
+ <element name="explanation">
117
+ <element name="type" rngui:label="Type">
118
+ <choice>
119
+ <value>&gt;</value>
120
+ <value>&lt;</value>
121
+ </choice>
122
+ </element>
123
+ <element name="deviation" rngui:label="Deviation">
124
+ <data type="float" rngui:label="Minutes"/>
125
+ </element>
126
+ <element name="behaviour" rngui:label="Behaviour">
127
+ <choice>
128
+ <value>Immediately</value>
129
+ <value>Wait until next</value>
130
+ <value>Use grace period value</value>
131
+ </choice>
132
+ </element>
133
+ <element name="grace" rngui:label="Grace Period" rngui:default="0.0">
134
+ <data type="float" rngui:label="Minutes"/>
135
+ </element>
136
+ <element name="text" rngui:label="Explanation">
137
+ <data type="string" rngui:label="Patterns"/>
138
+ </element>
139
+ </element>
140
+ </zeroOrMore>
141
+ </element>
115
142
  </element>
116
143
  <element name="_notes" rngui:header="Notes" rngui:fold="closed">
117
144
  <element name="_notes_general" rngui:label="General">
@@ -26,7 +26,8 @@
26
26
  </zeroOrMore>
27
27
  </element>
28
28
  <element name="stream" rngui:header="Data Stream Handling" rngui:fold="closed">
29
- <element name="sensors" rngui:header="Sensors" rngui:fold="closed">
29
+
30
+ <element name="sensors" rngui:header="Sensor Data Streams" rngui:fold="closed">
30
31
  <zeroOrMore rngui:label="Add Sensor">
31
32
  <element name="sensor">
32
33
  <element name="name" rngui:label="Label">
@@ -35,8 +36,13 @@
35
36
  <element name="extractor_url" rngui:label="Extractor Url">
36
37
  <data type="string" rngui:label="Service Url"/>
37
38
  </element>
38
- <element name="extractor_arg" rngui:label="Extractor Argument">
39
- <data type="string" rngui:label="Value / Json"/>
39
+ <element name="extractor_params" rngui:label="Extractor Arguments:">
40
+ <zeroOrMore rngui:label="Create Extractor Argument Pairs">
41
+ <element rngui:label="Name">
42
+ <anyName/>
43
+ <data type="string" rngui:label="Value / Json"/>
44
+ </element>
45
+ </zeroOrMore>
40
46
  </element>
41
47
  <element name="visualizer_url" rngui:label="Visualizer Url">
42
48
  <data type="string" rngui:label="Service Url"/>
@@ -52,42 +58,60 @@
52
58
  </element>
53
59
  </zeroOrMore>
54
60
  </element>
55
- <element name="aggregators" rngui:header="Aggregators" rngui:fold="closed">
56
- <zeroOrMore rngui:label="Add Aggregator">
57
- <element name="aggregator">
58
- <element name="name" rngui:label="Label">
59
- <data type="string" rngui:label="Label"/>
60
- </element>
61
- <element name="aggregator_url" rngui:label="Aggregator Url">
62
- <data type="string" rngui:label="Service Url"/>
63
- </element>
64
- <element name="aggregator_arg" rngui:label="Aggregator Argument">
65
- <data type="string" rngui:label="Value / Json"/>
66
- </element>
67
- </element>
68
- </zeroOrMore>
69
- </element>
70
- <element name="costs" rngui:header="Costs" rngui:fold="closed">
71
- <zeroOrMore rngui:label="Create Cost Factor">
72
- <element name="cost_factor">
61
+
62
+ <element name="ips" rngui:header="Impact Profiles" rngui:fold="closed">
63
+ <zeroOrMore rngui:label="Add Impact Profile">
64
+ <element name="ip">
73
65
  <element name="name" rngui:label="Label">
74
66
  <data type="string" rngui:label="Label"/>
75
67
  </element>
76
68
  <element name="target" rngui:label="Target Value">
77
69
  <data type="string" rngui:label="Value"/>
78
70
  </element>
79
- <element name="vfunc_url" rngui:label="Violation Function Url">
80
- <data type="string" rngui:label="Service Url"/>
81
- </element>
82
- <element name="vfunc_arg" rngui:label="Violation Function Argument">
83
- <data type="string" rngui:label="Service Url"/>
71
+ <element name="ifs" rngui:header="Impact Factors">
72
+ <zeroOrMore rngui:label="Add Impact Factor">
73
+ <element name="if">
74
+ <element name="ivs" rngui:header="Impact Values">
75
+ <zeroOrMore rngui:label="Add Impact Value ">
76
+ <element name="iv">
77
+ <element name="extractor_url" rngui:label="Extractor Url">
78
+ <data type="string" rngui:label="Service Url + Parameters"/>
79
+ </element>
80
+ <element name="extractor_params" rngui:header="Extractor Arguments">
81
+ <zeroOrMore rngui:label="Create Extractor Argument Pairs">
82
+ <element rngui:label="Name">
83
+ <anyName/>
84
+ <data type="string" rngui:label="Value / Json"/>
85
+ </element>
86
+ </zeroOrMore>
87
+ </element>
88
+ <element name="aggregator_url" rngui:label="Aggregator Url">
89
+ <data type="string" rngui:label="Service Url + Parameters"/>
90
+ </element>
91
+ <element name="aggregator_params" rngui:header="Extractor Arguments">
92
+ <zeroOrMore rngui:label="Create Aggregator Argument Pairs">
93
+ <element rngui:label="Name">
94
+ <anyName/>
95
+ <data type="string" rngui:label="Value / Json"/>
96
+ </element>
97
+ </zeroOrMore>
98
+ </element>
99
+ </element>
100
+ </zeroOrMore>
101
+ </element>
102
+ <element name="aggregator_url" rngui:label="Impact Function Url">
103
+ <data type="string" rngui:label="Service Url + Parameters"/>
104
+ </element>
105
+ </element>
106
+ </zeroOrMore>
84
107
  </element>
85
- <element name="vcost" rngui:label="Violation Cost">
86
- <data type="string" rngui:label="Value"/>
108
+ <element name="vfunc_url" rngui:label="Violation Function Url">
109
+ <data type="string" rngui:label="Service Url + Parameters"/>
87
110
  </element>
88
111
  </element>
89
112
  </zeroOrMore>
90
113
  </element>
114
+
91
115
  </element>
92
116
  <element name="report" rngui:header="Reporting Annotation" rngui:fold="closed">
93
117
  <element name="url" rngui:label='HTML Snippet'>
@@ -120,21 +144,40 @@
120
144
  </element>
121
145
  <element name="annotations" rngui:header="Annotations">
122
146
  <element name="_timing" rngui:header="Timing" rngui:fold="closed">
123
- <element name="_timing_wait" rngui:label="&#x3C9; - Wait">
147
+ <element name="_timing_weight" rngui:label="&#x3C9; - Weight">
124
148
  <data type="float" rngui:label="[0,1]"/>
125
149
  </element>
126
- <element name="_timing_threshold" rngui:label="&#x3BA; - Threshold">
127
- <data type="float" rngui:label="[0,3,n]"/>
128
- </element>
129
- <element name="_timing_min" rngui:label="Min in min">
130
- <data type="float" rngui:label="Minutes"/>
131
- </element>
132
- <element name="_timing_max" rngui:label="Max in min">
133
- <data type="float" rngui:label="Minutes"/>
134
- </element>
135
150
  <element name="_timing_avg" rngui:label="Avg in min">
136
151
  <data type="float" rngui:label="Minutes"/>
137
152
  </element>
153
+ <element name="explanations" rngui:header="Explanations">
154
+ <zeroOrMore rngui:label="Add Explanation">
155
+ <element name="explanation">
156
+ <element name="type" rngui:label="Type">
157
+ <choice>
158
+ <value>&gt;</value>
159
+ <value>&lt;</value>
160
+ </choice>
161
+ </element>
162
+ <element name="deviation" rngui:label="Deviation">
163
+ <data type="float" rngui:label="Minutes"/>
164
+ </element>
165
+ <element name="behaviour" rngui:label="Behaviour">
166
+ <choice>
167
+ <value>Immediately</value>
168
+ <value>Wait until next</value>
169
+ <value>Use grace period value</value>
170
+ </choice>
171
+ </element>
172
+ <element name="grace" rngui:label="Grace Period" rngui:default="0.0">
173
+ <data type="float" rngui:label="Minutes"/>
174
+ </element>
175
+ <element name="text" rngui:label="Explanation">
176
+ <data type="string" rngui:label="Patterns"/>
177
+ </element>
178
+ </element>
179
+ </zeroOrMore>
180
+ </element>
138
181
  </element>
139
182
  <element name="_notes" rngui:header="Notes" rngui:fold="closed">
140
183
  <element name="_notes_general" rngui:label="General">
@@ -111,13 +111,6 @@
111
111
  </svg>
112
112
  </button>
113
113
  <span id="state_extended">
114
- <button name="state_replay" title='replay'>
115
- <svg viewBox="0 -1.5 7 12" width="10" height="16">
116
- <path
117
- style="fill:#000000;fill-rule:evenodd;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
118
- d="m -0.24999978,8.9999993 c 0,-2.7488167 0,-5.4976332 0,-8.24644997 C 1.1183278,0.76955385 2.4884861,0.71666052 3.8555376,0.79065567 4.5083287,0.83810218 5.2238942,1.0790874 5.5755039,1.7307256 6.1661398,2.7080902 6.0299484,4.2180754 5.1108772,4.9019222 4.7622397,5.1617467 4.3480204,5.2956156 3.9336064,5.3605366 4.9287868,5.9394132 5.4254071,7.0996814 6.0167729,8.0858876 6.1549588,8.3769029 6.4657247,8.7723933 6.5,8.9999999 c -0.5944185,0 -1.1888371,0 -1.7832559,0 C 4.0758679,7.9893475 3.4946311,6.9294648 2.7923497,5.9678488 2.4230355,5.5319748 1.8508715,5.5458842 1.3513114,5.5576027 c -0.1507526,-0.00412 -0.044576,0.272902 -0.076255,0.3990664 0,1.0144436 0,2.028887 0,3.0433307 -0.50835205,-3e-7 -1.01670555,8e-7 -1.52505618,-5e-7 z M 1.2750578,4.2411336 C 2.111059,4.2189781 2.9581852,4.3060525 3.7849326,4.1387394 4.4863715,3.8915585 4.5732952,2.6432813 3.9026802,2.2941453 3.5098807,2.068434 3.050719,2.1857044 2.6267379,2.1489138 c -0.4505578,-0.00242 -0.90112,0.00147 -1.3516801,-3.456e-4 0,0.6975176 0,1.3950347 0,2.0925522 z"
119
- </svg>
120
- </button>
121
114
  <button name="state_abandon" title='abandon'>
122
115
  <svg viewBox="0 -1.5 7 12" width="10" height="16">
123
116
  <path
@@ -1,13 +1,13 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = "cpee"
3
- s.version = "2.0.19"
3
+ s.version = "2.0.24"
4
4
  s.platform = Gem::Platform::RUBY
5
5
  s.license = "LGPL-3.0"
6
6
  s.summary = "Preliminary release of cloud process execution engine (cpee.org). If you just need workflow execution, without a rest service exposing it, then use WEEL."
7
7
 
8
8
  s.description = "see http://cpee.org"
9
9
 
10
- s.files = Dir['{example/**/*,server/**/*,tools/**/*,tools/archive,lib/**/*,cockpit/**/*,cockpit/themes/*/*/*,contrib/logo*,contrib/Screen*}'] - Dir['{server/instances/**/*,cockpit/js_libs/**/*}'] + %w(COPYING FEATURES.md INSTALL.md Rakefile cpee.gemspec README.md AUTHORS)
10
+ s.files = Dir['{example/**/*,server/**/*,tools/**/*,tools/archive,lib/**/*,cockpit/**/*,cockpit/templates/.templates.xml,cockpit/templates/.transformations.xml,cockpit/templates/.Signavio.xml,cockpit/templates/.CPEE.xml,cockpit/*.html,cockpit/themes/*/*,cockpit/themes/*/*/*,contrib/logo*,contrib/Screen*}'] - Dir['{server/instances/**/*,cockpit/js_libs/**/*,server/redis*}'] + %w(COPYING FEATURES.md INSTALL.md Rakefile cpee.gemspec README.md AUTHORS)
11
11
  s.require_path = 'lib'
12
12
  s.extra_rdoc_files = ['README.md']
13
13
  s.bindir = 'tools'
@@ -20,6 +20,7 @@ require 'riddl/client'
20
20
  require_relative 'value_helper'
21
21
  require_relative 'attributes_helper'
22
22
  require_relative 'message'
23
+ require_relative 'redis'
23
24
 
24
25
  require 'ostruct'
25
26
  class ParaStruct < OpenStruct
@@ -34,7 +35,9 @@ module CPEE
34
35
 
35
36
  class Controller
36
37
  def initialize(id,dir,opts)
37
- @redis = Redis.new(path: opts[:redis_path], db: opts[:redis_db])
38
+ CPEE::redis_connect(opts)
39
+
40
+ @redis = opts[:redis]
38
41
  @votes = []
39
42
 
40
43
  @id = id
@@ -134,7 +137,7 @@ module CPEE
134
137
 
135
138
  if votes.length > 0
136
139
  @votes += votes
137
- psredis = Redis.new(path: @opts[:redis_path], db: @opts[:redis_db])
140
+ psredis = @opts[:redis_dyn].call
138
141
  collect = []
139
142
  psredis.subscribe(votes.map{|e| ['vote-response:' + e.to_s, 'vote-end:' + e.to_s] }.flatten) do |on|
140
143
  on.message do |what, message|
@@ -158,7 +161,7 @@ module CPEE
158
161
  def callback(hw,key,content)
159
162
  CPEE::Message::send(:callback,'activity/content',base,@id,uuid,info,content.merge(:key => key),@redis)
160
163
 
161
- psredis = Redis.new(path: @opts[:redis_path], db: @opts[:redis_db])
164
+ psredis = @opts[:redis_dyn].call
162
165
  response = nil
163
166
  Thread.new do
164
167
  psredis.subscribe('callback-response:' + key, 'callback-end:' + key) do |on|
@@ -16,6 +16,7 @@ require 'fileutils'
16
16
  require 'redis'
17
17
  require 'riddl/server'
18
18
  require 'riddl/client'
19
+ require_relative 'redis'
19
20
  require_relative 'message'
20
21
  require_relative 'persistence'
21
22
  require_relative 'statemachine'
@@ -70,12 +71,22 @@ module CPEE
70
71
  opts[:watchdog_start_off] ||= false
71
72
  opts[:backend_instance] ||= 'instance.rb'
72
73
  opts[:infinite_loop_stop] ||= 10000
73
- opts[:redis_path] ||= '/tmp/redis.sock'
74
- opts[:redis_db] ||= 3
75
- opts[:sse_keepalive_frequency] ||= 10
76
74
 
75
+ ### set redis_cmd to nil if you want to do global
76
+ ### at least redis_path or redis_url and redis_db have to be set if you do global
77
+ opts[:redis_path] ||= 'redis.sock' # use e.g. /tmp/redis.sock for global stuff. Look it up in your redis config
78
+ opts[:redis_db] ||= 0
79
+ ### optional redis stuff
80
+ opts[:redis_url] ||= nil
81
+ opts[:redis_cmd] ||= 'redis-server --port 0 --unixsocket #redis_path# --unixsocketperm 600 --pidfile #redis_pid# --dir #redis_db_dir# --dbfilename #redis_db_name# --databases 1 --save 900 1 --save 300 10 --save 60 10000 --rdbcompression yes --daemonize yes'
82
+ opts[:redis_pid] ||= 'redis.pid' # use e.g. /var/run/redis.pid if you do global. Look it up in your redis config
83
+ opts[:redis_db_name] ||= 'redis.rdb' # use e.g. /var/lib/redis.rdb for global stuff. Look it up in your redis config
84
+
85
+ CPEE::redis_connect opts
86
+
87
+ opts[:sse_keepalive_frequency] ||= 10
77
88
  opts[:sse_connections] = {}
78
- opts[:redis] = Redis.new(path: opts[:redis_path], db: opts[:redis_db])
89
+
79
90
  opts[:statemachine] = CPEE::StateMachine.new opts[:states], %w{running simulating replaying finishing stopping abandoned finished} do |id|
80
91
  opts[:redis].get("instance:#{id}/state")
81
92
  end
@@ -90,9 +101,9 @@ module CPEE
90
101
 
91
102
  Proc.new do
92
103
  parallel do
93
- CPEE::watch_services(opts[:watchdog_start_off])
104
+ CPEE::watch_services(opts[:watchdog_start_off],opts[:redis_url],File.join(opts[:basepath],opts[:redis_path]),opts[:redis_db])
94
105
  EM.add_periodic_timer(opts[:watchdog_frequency]) do ### start services
95
- CPEE::watch_services(opts[:watchdog_start_off])
106
+ CPEE::watch_services(opts[:watchdog_start_off],opts[:redis_url],File.join(opts[:basepath],opts[:redis_path]),opts[:redis_db])
96
107
  end
97
108
  EM.defer do ### catch all sse connections
98
109
  CPEE::Notifications::sse_distributor(opts)
@@ -132,14 +143,18 @@ module CPEE
132
143
  end
133
144
  end
134
145
 
135
- def self::watch_services(watchdog_start_off)
146
+ def self::watch_services(watchdog_start_off,url,path,db)
136
147
  return if watchdog_start_off
137
148
  EM.defer do
138
149
  Dir[File.join(__dir__,'..','..','server','routing','*.rb')].each do |s|
139
150
  s = s.sub(/\.rb$/,'')
140
151
  pid = (File.read(s + '.pid').to_i rescue nil)
141
152
  if (pid.nil? || !(Process.kill(0, pid) rescue false)) && !File.exist?(s + '.lock')
142
- system "#{s}.rb restart 1>/dev/null 2>&1"
153
+ if url.nil?
154
+ system "#{s}.rb -p \"#{path}\" -d #{db} restart 1>/dev/null 2>&1"
155
+ else
156
+ system "#{s}.rb -u \"#{url}\" -d #{db} restart 1>/dev/null 2>&1"
157
+ end
143
158
  puts "➡ Service #{File.basename(s,'.rb')} started ..."
144
159
  end
145
160
  end
@@ -165,7 +165,7 @@ module CPEE
165
165
  end #}}}
166
166
 
167
167
  def self::sse_distributor(opts) #{{{
168
- conn = Redis.new(path: opts[:redis_path], db: opts[:redis_db])
168
+ conn = opts[:redis_dyn].call
169
169
  conn.psubscribe('forward:*','event:state/change') do |on|
170
170
  on.pmessage do |pat, what, message|
171
171
  if pat == 'forward:*'