cpee 1.5.27 → 2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (357) hide show
  1. checksums.yaml +4 -4
  2. data/{FEATURES → FEATURES.md} +7 -6
  3. data/INSTALL.md +1 -0
  4. data/{README → README.md} +3 -3
  5. data/Rakefile +1 -0
  6. data/cockpit/index.html +7 -7
  7. data/cockpit/js/details.js +13 -14
  8. data/cockpit/js/instance.js +186 -284
  9. data/cockpit/js/parameters.js +13 -3
  10. data/cockpit/js/ui.js +2 -2
  11. data/cockpit/rngs/attributes.rng +1 -1
  12. data/cockpit/rngs/dataelements.rng +1 -1
  13. data/cockpit/rngs/endpoints.rng +1 -1
  14. data/cockpit/templates.legacy/Async.xml +7 -7
  15. data/cockpit/templates.legacy/BCO.xml +7 -10
  16. data/cockpit/templates.legacy/BCS.xml +7 -10
  17. data/cockpit/templates.legacy/Centurio.xml +6 -6
  18. data/cockpit/templates.legacy/Concurrent.xml +6 -6
  19. data/cockpit/templates.legacy/Coopis Testset.xml +6 -6
  20. data/cockpit/templates.legacy/Endpoints and Data Manipulation.xml +6 -6
  21. data/cockpit/templates.legacy/ICSOC Testset.xml +6 -6
  22. data/cockpit/templates.legacy/Infinity.xml +3 -3
  23. data/cockpit/templates.legacy/Lego Boxer.xml +7 -7
  24. data/cockpit/templates.legacy/Lego Conveyor.xml +7 -7
  25. data/cockpit/templates.legacy/Lego Crane.xml +7 -7
  26. data/cockpit/templates.legacy/Lego Ejector.xml +7 -7
  27. data/cockpit/templates.legacy/Lego Full.xml +7 -7
  28. data/cockpit/templates.legacy/Lego Liddy.xml +7 -7
  29. data/cockpit/templates.legacy/Lego Plate.xml +7 -7
  30. data/cockpit/templates.legacy/Lego Transporter.xml +7 -7
  31. data/cockpit/templates.legacy/Lego_Part_1.xml +7 -7
  32. data/cockpit/templates.legacy/LgLinear.xml +6 -10
  33. data/cockpit/templates.legacy/Linear.xml +7 -7
  34. data/cockpit/templates.legacy/Log.xml +7 -7
  35. data/cockpit/templates.legacy/Mangler 1.xml +6 -6
  36. data/cockpit/templates.legacy/Mangler 2.xml +6 -6
  37. data/cockpit/templates.legacy/Manuel Labels.xml +7 -7
  38. data/cockpit/templates.legacy/Promise.xml +7 -7
  39. data/cockpit/templates.legacy/SOPROMO Test Sonification.xml +6 -6
  40. data/cockpit/templates.legacy/Subprocess.xml +56 -0
  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 +6 -6
  46. data/cockpit/templates.legacy/TEST - Wrong Positions.xml +6 -6
  47. data/cockpit/templates.legacy/Take_5.xml +48 -0
  48. data/cockpit/templates.legacy/Update.xml +7 -7
  49. data/cockpit/templates.legacy/Worklist Parallel.xml +7 -7
  50. data/cockpit/templates.legacy/Worklist Test CPEE.xml +7 -7
  51. data/cockpit/templates.legacy/Worklist Test.xml +7 -7
  52. data/cockpit/templates.legacy/Worklist Test2.xml +7 -7
  53. data/cockpit/templates.legacy/convert_cpee2.rb +15 -0
  54. data/cockpit/templates.legacy/testsets.xml +1 -1
  55. data/cockpit/templates/BPM 2020 Manual Adjust.xml +18 -71
  56. data/cockpit/templates/BPM 2020 Solution Baseline.xml +17 -71
  57. data/cockpit/templates/BPM 2020 Solution NN.xml +25 -71
  58. data/cockpit/templates/BPM 2020 Solution View.xml +15 -71
  59. data/cockpit/templates/BPM 2020.xml +17 -6
  60. data/cockpit/templates/Coopis 2010.xml +16 -7
  61. data/cockpit/templates/IUPC arXiv:1104.3609 P34 1.xml +8 -11
  62. data/cockpit/templates/IUPC arXiv:1104.3609 P34 2.xml +8 -11
  63. data/cockpit/templates/IUPC arXiv:1104.3609 P34 3.xml +8 -11
  64. data/cockpit/templates/Worklist.xml +7 -7
  65. data/cockpit/templates/convert_cpee2.rb +15 -0
  66. data/cockpit/themes/compact/rngs/alternative.rng +25 -0
  67. data/cockpit/themes/compact/rngs/call.rng +18 -18
  68. data/cockpit/themes/compact/rngs/callmanipulate.rng +26 -26
  69. data/cockpit/themes/compact/rngs/choose.rng +14 -0
  70. data/cockpit/themes/compact/rngs/critical.rng +5 -0
  71. data/cockpit/themes/compact/rngs/escape.rng +1 -0
  72. data/cockpit/themes/compact/rngs/group.rng +3 -0
  73. data/cockpit/themes/compact/rngs/loop.rng +22 -0
  74. data/cockpit/themes/compact/rngs/manipulate.rng +9 -0
  75. data/cockpit/themes/compact/rngs/otherwise.rng +22 -0
  76. data/cockpit/themes/compact/rngs/parallel.rng +21 -0
  77. data/cockpit/themes/compact/rngs/parallel_branch.rng +8 -0
  78. data/cockpit/themes/compact/rngs/scripts.rng +10 -11
  79. data/cockpit/themes/compact/rngs/stop.rng +5 -0
  80. data/cockpit/themes/compact/rngs/terminate.rng +1 -0
  81. data/cockpit/themes/convert_cpee2.rb +8 -0
  82. data/cockpit/themes/default/rngs/alternative.rng +8 -8
  83. data/cockpit/themes/default/rngs/call.rng +85 -49
  84. data/cockpit/themes/default/rngs/callmanipulate.rng +103 -64
  85. data/cockpit/themes/default/rngs/choose.rng +5 -3
  86. data/cockpit/themes/default/rngs/critical.rng +2 -2
  87. data/cockpit/themes/default/rngs/escape.rng +1 -1
  88. data/cockpit/themes/default/rngs/group.rng +3 -3
  89. data/cockpit/themes/default/rngs/loop.rng +8 -8
  90. data/cockpit/themes/default/rngs/manipulate.rng +3 -3
  91. data/cockpit/themes/default/rngs/otherwise.rng +8 -8
  92. data/cockpit/themes/default/rngs/parallel.rng +14 -6
  93. data/cockpit/themes/default/rngs/parallel_branch.rng +2 -2
  94. data/cockpit/themes/default/rngs/scripts.rng +23 -0
  95. data/cockpit/themes/default/rngs/stop.rng +2 -2
  96. data/cockpit/themes/default/rngs/terminate.rng +1 -1
  97. data/cockpit/themes/extended/rngs/alternative.rng +25 -0
  98. data/cockpit/themes/extended/rngs/call.rng +18 -18
  99. data/cockpit/themes/extended/rngs/callmanipulate.rng +26 -26
  100. data/cockpit/themes/extended/rngs/choose.rng +14 -0
  101. data/cockpit/themes/extended/rngs/critical.rng +5 -0
  102. data/cockpit/themes/extended/rngs/escape.rng +1 -0
  103. data/cockpit/themes/extended/rngs/group.rng +3 -0
  104. data/cockpit/themes/extended/rngs/loop.rng +22 -0
  105. data/cockpit/themes/extended/rngs/manipulate.rng +9 -0
  106. data/cockpit/themes/extended/rngs/otherwise.rng +22 -0
  107. data/cockpit/themes/extended/rngs/parallel.rng +21 -0
  108. data/cockpit/themes/extended/rngs/parallel_branch.rng +8 -0
  109. data/cockpit/themes/extended/rngs/scripts.rng +10 -11
  110. data/cockpit/themes/extended/rngs/stop.rng +5 -0
  111. data/cockpit/themes/extended/rngs/terminate.rng +1 -0
  112. data/cockpit/themes/extended/theme.js +7 -6
  113. data/cockpit/themes/model/rngs/alternative.rng +1 -1
  114. data/cockpit/themes/model/rngs/call.rng +16 -16
  115. data/cockpit/themes/model/rngs/callmanipulate.rng +17 -17
  116. data/cockpit/themes/model/rngs/choose.rng +1 -1
  117. data/cockpit/themes/model/rngs/critical.rng +1 -1
  118. data/cockpit/themes/model/rngs/escape.rng +1 -1
  119. data/cockpit/themes/model/rngs/group.rng +1 -1
  120. data/cockpit/themes/model/rngs/loop.rng +1 -1
  121. data/cockpit/themes/model/rngs/manipulate.rng +1 -1
  122. data/cockpit/themes/model/rngs/otherwise.rng +1 -1
  123. data/cockpit/themes/model/rngs/parallel.rng +1 -1
  124. data/cockpit/themes/model/rngs/parallel_branch.rng +1 -1
  125. data/cockpit/themes/model/rngs/scripts.rng +3 -4
  126. data/cockpit/themes/model/rngs/stop.rng +1 -1
  127. data/cockpit/themes/model/rngs/terminate.rng +1 -1
  128. data/cockpit/themes/model/theme.js +7 -6
  129. data/cockpit/themes/packed/rngs/alternative.rng +25 -0
  130. data/cockpit/themes/packed/rngs/call.rng +18 -18
  131. data/cockpit/themes/packed/rngs/callmanipulate.rng +26 -26
  132. data/cockpit/themes/packed/rngs/choose.rng +14 -0
  133. data/cockpit/themes/packed/rngs/critical.rng +5 -0
  134. data/cockpit/themes/packed/rngs/escape.rng +1 -0
  135. data/cockpit/themes/packed/rngs/group.rng +3 -0
  136. data/cockpit/themes/packed/rngs/loop.rng +22 -0
  137. data/cockpit/themes/packed/rngs/manipulate.rng +9 -0
  138. data/cockpit/themes/packed/rngs/otherwise.rng +22 -0
  139. data/cockpit/themes/packed/rngs/parallel.rng +21 -0
  140. data/cockpit/themes/packed/rngs/parallel_branch.rng +8 -0
  141. data/cockpit/themes/packed/rngs/scripts.rng +10 -11
  142. data/cockpit/themes/packed/rngs/stop.rng +5 -0
  143. data/cockpit/themes/packed/rngs/terminate.rng +1 -0
  144. data/cockpit/themes/packed/theme.js +7 -6
  145. data/cockpit/themes/preset/rngs/alternative.rng +25 -0
  146. data/cockpit/themes/preset/rngs/call.rng +18 -18
  147. data/cockpit/themes/preset/rngs/callmanipulate.rng +26 -26
  148. data/cockpit/themes/preset/rngs/choose.rng +14 -0
  149. data/cockpit/themes/preset/rngs/critical.rng +5 -0
  150. data/cockpit/themes/preset/rngs/escape.rng +1 -0
  151. data/cockpit/themes/preset/rngs/group.rng +3 -0
  152. data/cockpit/themes/preset/rngs/loop.rng +22 -0
  153. data/cockpit/themes/preset/rngs/manipulate.rng +9 -0
  154. data/cockpit/themes/preset/rngs/otherwise.rng +22 -0
  155. data/cockpit/themes/preset/rngs/parallel.rng +21 -0
  156. data/cockpit/themes/preset/rngs/parallel_branch.rng +8 -0
  157. data/cockpit/themes/preset/rngs/scripts.rng +10 -11
  158. data/cockpit/themes/preset/rngs/stop.rng +5 -0
  159. data/cockpit/themes/preset/rngs/terminate.rng +1 -0
  160. data/cockpit/themes/preset/theme.js +7 -6
  161. data/cpee.gemspec +9 -10
  162. data/{log/topics.xml → lib/callbacks.xml} +16 -6
  163. data/lib/{engine → callbacks}/callbacks.rng +2 -8
  164. data/lib/cpee.xml +10 -4
  165. data/lib/cpee/attributes_helper.rb +27 -0
  166. data/lib/cpee/controller.rb +113 -596
  167. data/lib/cpee/implementation.rb +152 -191
  168. data/lib/cpee/implementation_callbacks.rb +77 -0
  169. data/lib/cpee/implementation_notifications.rb +189 -0
  170. data/lib/cpee/implementation_properties.rb +707 -0
  171. data/lib/cpee/{callback.rb → message.rb} +20 -18
  172. data/lib/cpee/persistence.rb +135 -0
  173. data/lib/cpee/statemachine.rb +20 -0
  174. data/lib/cpee/transform.rb +95 -0
  175. data/lib/engine.xml +1 -59
  176. data/lib/properties.xml +236 -0
  177. data/lib/properties/arbitrary.rng +26 -0
  178. data/lib/properties/attributes.rng +10 -0
  179. data/lib/properties/dataelements.rng +10 -0
  180. data/lib/properties/description.rng +8 -0
  181. data/lib/properties/dsl.rng +7 -0
  182. data/lib/properties/dslx.rng +8 -0
  183. data/lib/properties/endpoints.rng +10 -0
  184. data/lib/properties/handlerwrapper.rng +9 -0
  185. data/lib/properties/position.rng +15 -0
  186. data/lib/properties/positions.rng +10 -0
  187. data/lib/properties/properties.rng +29 -0
  188. data/lib/properties/set-properties.rng +25 -0
  189. data/lib/properties/set-some-properties.rng +45 -0
  190. data/lib/properties/simple.rng +8 -0
  191. data/lib/properties/state.rng +33 -0
  192. data/lib/properties/status.rng +12 -0
  193. data/lib/properties/t_attributes.rng +7 -0
  194. data/lib/properties/t_dataelements.rng +7 -0
  195. data/lib/properties/t_endpoints.rng +7 -0
  196. data/lib/properties/t_position.rng +7 -0
  197. data/lib/properties/t_positions.rng +7 -0
  198. data/lib/properties/t_simple.rng +7 -0
  199. data/lib/properties/t_status.rng +7 -0
  200. data/lib/properties/t_transformation.rng +7 -0
  201. data/lib/properties/transformation.rng +40 -0
  202. data/server/dev.rb +1 -0
  203. data/server/handlerwrappers/default.rb +40 -38
  204. data/server/resources/backend/README.md +17 -0
  205. data/server/resources/backend/instance.rb +23 -0
  206. data/server/resources/backend/instance.template +19 -0
  207. data/server/resources/backend/opts.yaml +6 -0
  208. data/server/resources/backend/run +29 -0
  209. data/server/resources/notifications/logging/subscription.xml +19 -0
  210. data/server/resources/properties.empty +38 -0
  211. data/server/resources/properties.init +11 -11
  212. data/server/resources/states.dot +19 -0
  213. data/server/resources/states.xml +49 -0
  214. data/server/resources/transformation_dslx.xsl +3 -12
  215. data/server/routing/end.rb +44 -0
  216. data/server/routing/forward-events.rb +59 -0
  217. data/server/routing/forward-votes.rb +108 -0
  218. data/server/routing/persist.rb +155 -0
  219. data/server/server.rb +1 -0
  220. data/tools/cpee +19 -15
  221. data/tools/instantiation/instantiation +0 -1
  222. data/tools/server/server.rb +0 -1
  223. metadata +77 -132
  224. data/INSTALL +0 -23
  225. data/cockpit/templates/convert_preset.rb +0 -32
  226. data/cockpit/templates/testsets.xml +0 -11
  227. data/cockpit/templates/transformations.xml +0 -4
  228. data/cockpit/themes/compact/rngs/alternative.rng +0 -1
  229. data/cockpit/themes/compact/rngs/choose.rng +0 -1
  230. data/cockpit/themes/compact/rngs/critical.rng +0 -1
  231. data/cockpit/themes/compact/rngs/escape.rng +0 -1
  232. data/cockpit/themes/compact/rngs/group.rng +0 -1
  233. data/cockpit/themes/compact/rngs/loop.rng +0 -1
  234. data/cockpit/themes/compact/rngs/manipulate.rng +0 -1
  235. data/cockpit/themes/compact/rngs/otherwise.rng +0 -1
  236. data/cockpit/themes/compact/rngs/parallel.rng +0 -1
  237. data/cockpit/themes/compact/rngs/parallel_branch.rng +0 -1
  238. data/cockpit/themes/compact/rngs/stop.rng +0 -1
  239. data/cockpit/themes/compact/rngs/terminate.rng +0 -1
  240. data/cockpit/themes/default/rngs/finalize.rng +0 -6
  241. data/cockpit/themes/default/rngs/update.rng +0 -6
  242. data/cockpit/themes/default/theme.js +0 -1286
  243. data/cockpit/themes/extended/rngs/alternative.rng +0 -1
  244. data/cockpit/themes/extended/rngs/choose.rng +0 -1
  245. data/cockpit/themes/extended/rngs/critical.rng +0 -1
  246. data/cockpit/themes/extended/rngs/escape.rng +0 -1
  247. data/cockpit/themes/extended/rngs/group.rng +0 -1
  248. data/cockpit/themes/extended/rngs/loop.rng +0 -1
  249. data/cockpit/themes/extended/rngs/manipulate.rng +0 -1
  250. data/cockpit/themes/extended/rngs/otherwise.rng +0 -1
  251. data/cockpit/themes/extended/rngs/parallel.rng +0 -1
  252. data/cockpit/themes/extended/rngs/parallel_branch.rng +0 -1
  253. data/cockpit/themes/extended/rngs/stop.rng +0 -1
  254. data/cockpit/themes/extended/rngs/terminate.rng +0 -1
  255. data/cockpit/themes/labels/rngs/alternative.rng +0 -25
  256. data/cockpit/themes/labels/rngs/call.rng +0 -81
  257. data/cockpit/themes/labels/rngs/callmanipulate.rng +0 -101
  258. data/cockpit/themes/labels/rngs/choose.rng +0 -12
  259. data/cockpit/themes/labels/rngs/critical.rng +0 -5
  260. data/cockpit/themes/labels/rngs/escape.rng +0 -1
  261. data/cockpit/themes/labels/rngs/finalize.rng +0 -6
  262. data/cockpit/themes/labels/rngs/group.rng +0 -3
  263. data/cockpit/themes/labels/rngs/loop.rng +0 -22
  264. data/cockpit/themes/labels/rngs/manipulate.rng +0 -9
  265. data/cockpit/themes/labels/rngs/otherwise.rng +0 -22
  266. data/cockpit/themes/labels/rngs/parallel.rng +0 -13
  267. data/cockpit/themes/labels/rngs/parallel_branch.rng +0 -8
  268. data/cockpit/themes/labels/rngs/stop.rng +0 -5
  269. data/cockpit/themes/labels/rngs/terminate.rng +0 -1
  270. data/cockpit/themes/labels/rngs/update.rng +0 -6
  271. data/cockpit/themes/labels/symbols/alternative.svg +0 -5
  272. data/cockpit/themes/labels/symbols/arrow.svg +0 -3
  273. data/cockpit/themes/labels/symbols/call.svg +0 -6
  274. data/cockpit/themes/labels/symbols/callmanipulate.svg +0 -8
  275. data/cockpit/themes/labels/symbols/choose.svg +0 -5
  276. data/cockpit/themes/labels/symbols/choose_exclusive.svg +0 -5
  277. data/cockpit/themes/labels/symbols/choose_inclusive.svg +0 -4
  278. data/cockpit/themes/labels/symbols/complex.svg +0 -8
  279. data/cockpit/themes/labels/symbols/critical.svg +0 -4
  280. data/cockpit/themes/labels/symbols/end.svg +0 -3
  281. data/cockpit/themes/labels/symbols/escape.svg +0 -5
  282. data/cockpit/themes/labels/symbols/event_end.svg +0 -3
  283. data/cockpit/themes/labels/symbols/loop.svg +0 -5
  284. data/cockpit/themes/labels/symbols/manipulate.svg +0 -4
  285. data/cockpit/themes/labels/symbols/otherwise.svg +0 -5
  286. data/cockpit/themes/labels/symbols/parallel.svg +0 -5
  287. data/cockpit/themes/labels/symbols/parallel_branch.svg +0 -5
  288. data/cockpit/themes/labels/symbols/parallel_branch_compact.svg +0 -4
  289. data/cockpit/themes/labels/symbols/parallel_branch_event.svg +0 -14
  290. data/cockpit/themes/labels/symbols/parallel_branch_normal.svg +0 -5
  291. data/cockpit/themes/labels/symbols/scripts.svg +0 -4
  292. data/cockpit/themes/labels/symbols/start.svg +0 -3
  293. data/cockpit/themes/labels/symbols/stop.svg +0 -5
  294. data/cockpit/themes/labels/symbols/terminate.svg +0 -4
  295. data/cockpit/themes/packed/rngs/alternative.rng +0 -1
  296. data/cockpit/themes/packed/rngs/choose.rng +0 -1
  297. data/cockpit/themes/packed/rngs/critical.rng +0 -1
  298. data/cockpit/themes/packed/rngs/escape.rng +0 -1
  299. data/cockpit/themes/packed/rngs/group.rng +0 -1
  300. data/cockpit/themes/packed/rngs/loop.rng +0 -1
  301. data/cockpit/themes/packed/rngs/manipulate.rng +0 -1
  302. data/cockpit/themes/packed/rngs/otherwise.rng +0 -1
  303. data/cockpit/themes/packed/rngs/parallel.rng +0 -1
  304. data/cockpit/themes/packed/rngs/parallel_branch.rng +0 -1
  305. data/cockpit/themes/packed/rngs/stop.rng +0 -1
  306. data/cockpit/themes/packed/rngs/terminate.rng +0 -1
  307. data/cockpit/themes/preset/rngs/alternative.rng +0 -1
  308. data/cockpit/themes/preset/rngs/choose.rng +0 -1
  309. data/cockpit/themes/preset/rngs/critical.rng +0 -1
  310. data/cockpit/themes/preset/rngs/escape.rng +0 -1
  311. data/cockpit/themes/preset/rngs/group.rng +0 -1
  312. data/cockpit/themes/preset/rngs/loop.rng +0 -1
  313. data/cockpit/themes/preset/rngs/manipulate.rng +0 -1
  314. data/cockpit/themes/preset/rngs/otherwise.rng +0 -1
  315. data/cockpit/themes/preset/rngs/parallel.rng +0 -1
  316. data/cockpit/themes/preset/rngs/parallel_branch.rng +0 -1
  317. data/cockpit/themes/preset/rngs/stop.rng +0 -1
  318. data/cockpit/themes/preset/rngs/terminate.rng +0 -1
  319. data/lib/cpee/empty_workflow.rb +0 -28
  320. data/lib/cpee/handler_notifications.rb +0 -47
  321. data/lib/cpee/handler_properties.rb +0 -50
  322. data/lib/cpee/instantiation.rb +0 -369
  323. data/lib/cpee/processtransformation/bpel/Repository/booking.bpel +0 -125
  324. data/lib/cpee/processtransformation/bpel/Repository/booking.wsdl +0 -72
  325. data/lib/cpee/processtransformation/bpel/Repository/booking/airline.wsdl +0 -71
  326. data/lib/cpee/processtransformation/bpel/Repository/booking/hotel.wsdl +0 -64
  327. data/lib/cpee/processtransformation/bpel/Repository/booking/report.wsdl +0 -71
  328. data/lib/cpee/processtransformation/bpel/bpel2wee.rb +0 -34
  329. data/lib/cpee/processtransformation/bpel/bpelserver.ru +0 -64
  330. data/lib/cpee/processtransformation/bpel/bpelserver.xml +0 -70
  331. data/lib/cpee/processtransformation/bpel/lib/BPEL_Transform.rb +0 -367
  332. data/lib/cpee/processtransformation/bpmn2.rb +0 -297
  333. data/lib/cpee/processtransformation/cpee.rb +0 -119
  334. data/lib/cpee/processtransformation/structures.rb +0 -465
  335. data/lib/cpee/processtransformation/target.rb +0 -50
  336. data/log/azure.rb +0 -10
  337. data/log/azure_logger.rb +0 -136
  338. data/log/chain.xml +0 -27
  339. data/log/elasticsearch.rb +0 -15
  340. data/log/elasticsearch_logging.rb +0 -377
  341. data/log/legacy/test_es.rb +0 -26
  342. data/log/legacy/test_split.rb +0 -211
  343. data/log/log.xml +0 -13
  344. data/log/non_tamp.rb +0 -156
  345. data/log/sic.rb +0 -64
  346. data/log/template.xes_xml +0 -23
  347. data/log/template.xes_yaml +0 -28
  348. data/log/trace.yaml +0 -17717
  349. data/log/trace_sic.yaml +0 -18343
  350. data/log/xes_xml.rb +0 -121
  351. data/log/xes_yaml.rb +0 -96
  352. data/server/handlerwrappers/soap.rb +0 -146
  353. data/server/resources/properties.schema.active +0 -139
  354. data/server/resources/properties.schema.finished +0 -139
  355. data/server/resources/properties.schema.inactive +0 -136
  356. data/server/transformation_dslx.xsl +0 -790
  357. data/test/callback.rb +0 -9
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: fede4165b768e1dc8caa3ab4ee1e90495e1d4ecbe0069849991f40e01b12adf1
4
- data.tar.gz: f575907e2b663e63da1a56f90f0e316d7705c38b948a298e4ae5ef2ccb3a71cc
3
+ metadata.gz: 97540332122030fa3cc477f5f47bcff6ddbd5f0977a530075c9c901cfdd2d9b1
4
+ data.tar.gz: 0a7e55a6145144ab94b304e202b0d550489dd3868b8fa0cf015bf0427c358c50
5
5
  SHA512:
6
- metadata.gz: f32fdd8a5c96a7ac9bd478113e7339fe847b79244145f505d107ea2edcfaa2da6f5a78c4459917181ff195ff501055507b796d6c412f854c25b92229446be810
7
- data.tar.gz: 54e62a9de8efddcb0149caa107b0e7d2df9ddcf678619f0ff4048052f2c8479572209110aeb7dc5cc1f73a7b7e8f3635b53866823b91417ed9099b38a5a531a8
6
+ metadata.gz: b69f463b07d093c897b2d1b39bbb089b8a9e6e32cd2ae58632111c72b3d9e0c1945f31e67059f524ba2d1b822e84e75b3cbd8150c6849ae52779ac95950aef32
7
+ data.tar.gz: ab3ab54ff2bb5956ab00fd1b5bbc1b76258fdd6e3f2b96754131d90ad29a44a36072799e2898b61b1840d87ee238d342dde66e8f94d9f265101355f24878d457
@@ -1,4 +1,4 @@
1
- CPEE Features
1
+ # CPEE Features
2
2
  * The engine itself is a RESTful web service for simple integration into
3
3
  websites and existing information systems.
4
4
  * Instances can be created, started, stopped, and modified through simple HTTP
@@ -12,18 +12,19 @@ CPEE Features
12
12
  * It provides better coverage of workflow patterns compared to Oracle BPELPM,
13
13
  jBOSS jBPM, and Apache Ode.
14
14
 
15
- CPEE Technical Details
15
+ # CPEE Technical Details
16
16
  * Reuses an existing virtual machine for executing control flow
17
17
  * Supports BPEL and other languages through transformation to a directly
18
18
  executable DSL.
19
19
  * The engine (named WEEL and available as a separate package) has a core size
20
- of ~ 700 LOC.
21
- * Uses ~ 2 MiB of RAM per instance (depending on storage backend and data
20
+ of ~ 1110 LOC.
21
+ * Each instance runs in its own OS process, can be seperately monitored and killed.
22
+ * Uses ~ 50 MiB of RAM per instance (depending on storage backend and data
22
23
  available in instance)
23
24
  * Can utilize multiple threads per instance.
24
- * Cold starts an instance in less than 50ms.
25
+ * Can be restarted in while instances are running.
25
26
 
26
- CPEE Applied Benefits
27
+ # CPEE Applied Benefits
27
28
  * Interprocess Synchronization as a Service
28
29
  * Service Replacement (Repair) Service
29
30
  * Plain HTML & JavaScript instance editor that allows to modify all aspects of
@@ -0,0 +1 @@
1
+ # TODO
@@ -1,7 +1,7 @@
1
1
  All code in this package is provided under the LGPL-3 license.
2
- Please read the file COPYING.
2
+ Please read the file COPYING in the main directory.
3
3
 
4
- Tested for MRI >= 1.9.3
4
+ Tested for MRI 2.6, 2.7
5
5
 
6
6
  Searching for mem-leaks:
7
- valgrind --num-callers=50 --error-limit=no --partial-loads-ok=yes --undef-value-errors=no ./server.rb -v start
7
+ valgrind --num-callers=50 --error-limit=no --partial-loads-ok=yes --undef-value-errors=no ./server/server.rb -v start
data/Rakefile CHANGED
@@ -12,6 +12,7 @@ spec = eval(File.read('cpee.gemspec'))
12
12
  Gem::PackageTask.new(spec) do |pkg|
13
13
  pkg.need_zip = true
14
14
  pkg.need_tar = true
15
+ puts `ls -al pkg/*`
15
16
  `rm pkg/* -rf`
16
17
  `ln -sf #{pkg.name}.gem pkg/cpee.gem`
17
18
  end
@@ -149,7 +149,7 @@
149
149
  <form id='fuckchrome'>
150
150
  <input type='file' name='testsetfile' id='testsetfile'/>
151
151
  </form>
152
- <button title='a testset includes various settings, subscriptions and a model' name="loadtestset">load template</button><button title='a testset includes various settings, subscriptions and a model' name="loadtestsetfile">load testset</button>
152
+ <button title='a template includes various settings, subscriptions or a (partial) model' name="loadtestset">load template</button><button title='a testset includes various settings, subscriptions or a model' name="loadtestsetfile">load testset</button>
153
153
  </div>
154
154
  <div>
155
155
  <input type='file' name='modelfile' id='modelfile'/>
@@ -182,15 +182,15 @@
182
182
  <td>State:</td>
183
183
  <td id='state'>
184
184
  <span id="state_text"></span>
185
- <span id="state_any">
185
+ <span id="state_any" style='display:none'>
186
186
  <span> ⇒ </span>
187
- <button name="state_start" title='start'>Start</button>
188
- <button name="state_stop" title='stop'>Stop</button>
189
- <span id="state_extended">
187
+ <button name="state_start" title='start' style='display:none'>Start</button>
188
+ <button name="state_stop" title='stop' style='display:none'>Stop</button>
189
+ <span id="state_extended" style='display:none'>
190
190
  <span> / </span>
191
- <button name="state_replay" title='replay'>Replay</button>
191
+ <button name="state_replay" title='replay' style='display:none'>Replay</button>
192
192
  <span> / </span>
193
- <button name="state_abandon" title='abandon'>Abandon</button>
193
+ <button name="state_abandon" title='abandon' style='display:none'>Abandon</button>
194
194
  </span>
195
195
  </span>
196
196
  </td>
@@ -48,27 +48,21 @@ function do_main_work() { //{{{
48
48
  var orignode = save['graph_adaptor'].illustrator.get_node_by_svg_id(svgid).parents('g.element[element-id]');
49
49
  var origtype = orignode.attr('element-type') + '_' + orignode.attr('element-endpoint');
50
50
 
51
-
52
51
  var url = $('body').attr('current-instance');
53
52
  $('#main ui-tabbar ui-behind button').removeClass('highlight');
54
53
  save['details'].set_checkpoint();
55
54
 
56
- // pull out xml and add XMLNS
57
- // sadly we have to serialze, add in string and then parse again
58
- // as adding namespaces to nodes is not supported
59
- // serialization and reparsing is faster and more robust than xslt option
60
55
  var nnew = $(save['details'].save().documentElement);
61
56
  nnew.attr('svg-id',svgid);
62
- nnew.attr('trans-xmlns','http://cpee.org/ns/description/1.0');
63
57
 
64
58
  if ($('*[svg-id]',node).length > 0) {
65
59
  nnew.append(node.children().filter(function(){ return this.attributes['svg-id'] != undefined; }));
66
60
  }
67
61
 
68
- var ntxt = nnew.serializeXML();
69
- ntxt = ntxt.replace(/trans-xmlns/,'xmlns');
70
-
71
- node.replaceWith($X(ntxt));
62
+ if (node[0].namespaceURI == nnew.attr('xmlns')) { // remove xmlns when it is the same as in the parent node
63
+ nnew[0].removeAttribute('xmlns');
64
+ }
65
+ node.replaceWith(nnew);
72
66
 
73
67
  var ttarget = manifestation.adaptor.illustrator.get_node_by_svg_id(svgid);
74
68
  var tnewnode = ttarget.parents('g.element[element-id]');
@@ -86,7 +80,10 @@ function do_main_work() { //{{{
86
80
  var newtype = newnode.attr('element-type') + '_' + newnode.attr('element-endpoint');
87
81
  var g = graphrealization.get_description();
88
82
  save['graph'] = $X(g);
89
- save['graph'].find('[xmlns]').removeAttr('xmlns');
83
+ save['graph'].removeAttr('svg-id');
84
+ save['graph'].removeAttr('svg-type');
85
+ save['graph'].removeAttr('svg-subtype');
86
+ save['graph'].removeAttr('svg-label');
90
87
 
91
88
  if (newtype != origtype) {
92
89
  manifestation.update_details(svgid);
@@ -94,11 +91,13 @@ function do_main_work() { //{{{
94
91
  } else {
95
92
  $.ajax({
96
93
  type: "PUT",
97
- url: url + "/properties/values/description/",
94
+ url: url + "/properties/description/",
95
+ contentType: 'text/xml',
98
96
  headers: {
99
- "Event-Source": myid
97
+ 'Content-ID': 'description',
98
+ 'CPEE-Event-Source': myid
100
99
  },
101
- data: ({'content': '<content>' + desc.get_description() + '</content>'})
100
+ data: desc.get_description()
102
101
  });
103
102
  adaptor_update();
104
103
  format_instance_pos();
@@ -1,4 +1,4 @@
1
- var ws;
1
+ var es;
2
2
  var suspended_monitoring = false;
3
3
  var myid = ([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g, c => (c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16));
4
4
  var paths = '#dat_details input, #dat_details textarea, #dat_details select, #dat_details button, #dat_details [contenteditable], #dat_dataelements input, #dat_dataelements textarea, #dat_dataelements select, #dat_dataelements button, #dat_dataelements [contenteditable], #dat_endpoints input, #dat_endpoints textarea, #dat_endpoints select, #dat_endpoints button, #dat_endpoints [contenteditable], #dat_attributes input, #dat_attributes textarea, #dat_attributes select, #dat_attributes button, #dat_attributes [contenteditable]';
@@ -7,20 +7,32 @@ var subscription;
7
7
  var subscription_state = 'less';
8
8
  var graph_changed = new Event("graph:changed", {"bubbles":true, "cancelable":false});
9
9
  var save = {};
10
- save['state']= undefined;
11
- save['dsl'] = undefined;
12
- save['graph'] = undefined;
13
- save['graph_theme'] = undefined;
14
- save['graph_adaptor'] = undefined;
15
10
  save['endpoints'] = undefined;
16
- save['endpoints_cache'] = {};
17
- save['endpoints_list'] = {};
18
11
  save['dataelements'] = undefined;
19
12
  save['attributes'] = undefined;
20
- save['details'] = undefined;
21
- save['details_target'] = undefined;
22
- save['instance_pos'] = [];
23
13
  var node_state = {};
14
+
15
+ function global_init() {
16
+ suspended_monitoring = false;
17
+ loading = false;
18
+ subscription = undefined;
19
+ subscription_state = 'less';
20
+ save['state']= undefined;
21
+ save['dsl'] = undefined;
22
+ save['activity_states'] = {}
23
+ save['graph'] = undefined;
24
+ save['graph_theme'] = undefined;
25
+ save['graph_adaptor'] = undefined;
26
+ save['endpoints_cache'] = {};
27
+ save['endpoints_list'] = {};
28
+ save['details'] = undefined;
29
+ save['details_target'] = undefined;
30
+ save['instance_pos'] = [];
31
+ node_state = {};
32
+ }
33
+
34
+ global_init();
35
+
24
36
  var sub_more = 'topic' + '=' + 'activity' + '&' +// {{{
25
37
  'events' + '=' + 'calling,status,manipulating,failed,done' + '&' +
26
38
  'topic' + '=' + 'activity' + '&' +
@@ -77,16 +89,16 @@ function cockpit() { //{{{
77
89
  $("button[name=loadmodeltype]").click(function(e){new CustomMenu(e).menu($('#modeltypes'),load_modeltype, $("button[name=loadmodeltype]")); });
78
90
  $("button[name=savetestsetfile]").click(function(){ save_testsetfile(); });
79
91
  $("button[name=savesvgfile]").click(function(){ save_svgfile(); });
80
- $("button[name=state_start]").click(function(){ $(this).attr("disabled","disabled");start_instance(); });
81
- $("button[name=state_stop]").click(function(){ $(this).attr("disabled","disabled");stop_instance(); });
82
- $("button[name=state_replay]").click(function(){ $(this).attr("disabled","disabled");replay_instance(); });
92
+ $("button[name=state_start]").click(function(){ $(this).parent().find('button').attr("disabled","disabled");start_instance(); });
93
+ $("button[name=state_stop]").click(function(){ $(this).parent().find('button').attr("disabled","disabled");stop_instance(); });
94
+ $("button[name=state_replay]").click(function(){ $(this).parent().find('button').attr("disabled","disabled");replay_instance(); });
83
95
  $("button[name=state_abandon]").click(function(){ aba_instance(); });
84
96
  $("input[name=votecontinue]").click(check_subscription);
85
97
  $("input[name=testsetfile]").change(load_testsetfile_after);
86
98
  $("input[name=modelfile]").change(load_modelfile_after);
87
99
 
88
100
  $.ajax({
89
- url: $('body').attr('current-testsets') + "testsets.xml",
101
+ url: $('body').attr('current-templates') + ".templates.xml",
90
102
  dataType: 'xml',
91
103
  success: function(res){
92
104
  $('testset',res).each(function(){
@@ -145,7 +157,7 @@ function cockpit() { //{{{
145
157
  }
146
158
  });
147
159
  $.ajax({
148
- url: $('body').attr('current-testsets') + "transformations.xml",
160
+ url: $('body').attr('current-templates') + ".transformations.xml",
149
161
  dataType: 'xml',
150
162
  success: function(res){
151
163
  $('transformation',res).each(function(){
@@ -171,27 +183,18 @@ function check_subscription() { // {{{
171
183
  if (num > 0 && subscription_state == 'less') {
172
184
  $.ajax({
173
185
  type: "PUT",
174
- url: url + "/notifications/subscriptions/" + subscription,
175
- data: (
176
- sub_more + '&' +
177
- 'message-uid' + '=' + 'xxx' + '&' +
178
- 'fingerprint-with-producer-secret' + '=' + 'xxx'
179
- )
186
+ url: url + "/notifications/subscriptions/" + subscription + '/',
187
+ data: sub_more
180
188
  });
181
189
  subscription_state = 'more';
182
190
  }
183
191
  if (num == 0 && subscription_state == 'more') {
184
192
  $.ajax({
185
193
  type: "PUT",
186
- url: url + "/notifications/subscriptions/" + subscription,
187
- data: (
188
- sub_less + '&' +
189
- 'message-uid' + '=' + 'xxx' + '&' +
190
- 'fingerprint-with-producer-secret' + '=' + 'xxx'
191
- )
194
+ url: url + "/notifications/subscriptions/" + subscription + '/',
195
+ data: sub_less
192
196
  });
193
197
  subscription_state = 'less';
194
- format_visual_vote_clear();
195
198
  }
196
199
  }// }}}
197
200
 
@@ -246,18 +249,16 @@ function create_instance(base,name,load,exec) {// {{{
246
249
  }
247
250
  }// }}}
248
251
 
249
- function websocket() { //{{{
252
+ function sse() { //{{{
250
253
  var url = $('body').attr('current-instance');
251
- var Socket = "MozWebSocket" in window ? MozWebSocket : WebSocket;
252
- if (ws) ws.close();
253
- ws = new Socket(url.replace(/http/,'ws') + "/notifications/subscriptions/" + subscription + "/ws/");
254
- ws.onopen = function() {
254
+ es = new EventSource(url + "/notifications/subscriptions/" + subscription + "/sse/");
255
+ es.onopen = function() {
255
256
  append_to_log("monitoring", "opened", "");
256
257
  };
257
- ws.onmessage = function(e) {
258
- data = $.parseXML(e.data);
259
- if ($('event > topic',data).length > 0) {
260
- switch($('event > topic',data).text()) {
258
+ es.onmessage = function(e) {
259
+ data = JSON.parse(e.data);
260
+ if (data['type'] == 'event') {
261
+ switch(data['topic']) {
261
262
  case 'dataelements':
262
263
  monitor_instance_values("dataelements");
263
264
  break;
@@ -270,39 +271,34 @@ function websocket() { //{{{
270
271
  case 'attributes':
271
272
  monitor_instance_values("attributes");
272
273
  monitor_instance_transformation();
273
- if (!suspended_monitoring) { // or else it would load twice, because dsl changes also
274
+ if (!suspended_monitoring) { // or else it would load twice, because dsl changes also trigger
274
275
  monitor_graph_change(true);
275
276
  }
276
277
  break;
277
278
  case 'task':
278
279
  if ($('#trackcolumn').length > 0) {
279
- var details = JSON.parse($('event > notification',data).text());
280
- $('#trackcolumn').append($('<iframe src="track.html?monitor=' + details.received['CPEE-INSTANCE-URL'].replace(/\/*$/,'/') + '"></iframe>'));
280
+ $('#trackcolumn').append($('<iframe src="track.html?monitor=' + data.content.received['CPEE-INSTANCE-URL'].replace(/\/*$/,'/') + '"></iframe>'));
281
281
  }
282
282
  break;
283
283
  case 'state':
284
- monitor_instance_state_change(JSON.parse($('event > notification',data).text()).state);
284
+ monitor_instance_state_change(data['content']['state']);
285
285
  break;
286
286
  case 'position':
287
- monitor_instance_pos_change($('event > notification',data).text());
288
- break;
289
- case 'transformation':
290
- monitor_instance_transformation();
287
+ monitor_instance_pos_change(data['content']);
291
288
  break;
292
289
  case 'activity':
293
- monitor_instance_running($('event > notification',data).text(),$('event > event',data).text());
290
+ monitor_instance_running(data['content'],data['name']);
294
291
  break;
295
292
  }
296
- append_to_log("event", $('event > topic',data).text() + "/" + $('event > event',data).text(), $('event > notification',data).text());
297
293
  }
298
- if ($('vote > topic',data).length > 0) {
299
- var notification = $('vote > notification',data).text();
300
- append_to_log("vote", $('vote > topic',data).text() + "/" + $('vote > vote',data).text(), notification);
301
- monitor_instance_vote_add(notification);
294
+ if (data['type'] == 'vote') {
295
+ monitor_instance_vote_add(data['content']);
302
296
  }
297
+ append_to_log(data['type'], data['topic'] + '/' + data['name'], JSON.stringify(data['content']));
303
298
  };
304
- ws.onclose = function() {
299
+ es.onerror = function() {
305
300
  append_to_log("monitoring", "closed", "server down i assume.");
301
+ // setTimeout(sse,10000);
306
302
  };
307
303
 
308
304
  monitor_instance_values("dataelements");
@@ -314,6 +310,10 @@ function websocket() { //{{{
314
310
  } //}}}
315
311
 
316
312
  function monitor_instance(cin,rep,load,exec) {// {{{
313
+ global_init();
314
+ format_visual_clear();
315
+ format_visual_vote_clear();
316
+
317
317
  $("body").attr('current-instance',sanitize_url(cin));
318
318
  $("body").attr('current-resources',sanitize_url(rep));
319
319
 
@@ -327,7 +327,7 @@ function monitor_instance(cin,rep,load,exec) {// {{{
327
327
 
328
328
  $.ajax({
329
329
  type: "GET",
330
- url: url + "/properties/schema/",
330
+ url: url,
331
331
  success: function(res){
332
332
  $("ui-tabbed.hidden, ui-rest.hidden").removeClass("hidden");
333
333
  $("ui-resizehandle.hidden").removeClass("hidden");
@@ -347,21 +347,15 @@ function monitor_instance(cin,rep,load,exec) {// {{{
347
347
 
348
348
  // Change url to return to current instance when reloading (because new subscription is made)
349
349
  $("input[name=votecontinue]").prop( "checked", false );
350
- subscription_state = 'less';
351
350
 
352
351
  $.ajax({
353
352
  type: "POST",
354
353
  url: url + "/notifications/subscriptions/",
355
354
  data: sub_less,
356
355
  success: function(res){
357
- res = res.unserialize();
358
- $.each(res,function(a,b){
359
- if (b[0] == 'key') {
360
- subscription = b[1];
361
- }
362
- });
356
+ subscription = res;
363
357
  append_to_log("monitoring", "id", subscription);
364
- websocket();
358
+ sse();
365
359
  if (load || exec) {
366
360
  load_testset(exec);
367
361
  }
@@ -382,13 +376,13 @@ function monitor_instance_values(val) {// {{{
382
376
 
383
377
  $.ajax({
384
378
  type: "GET",
385
- url: url + "/properties/values/" + val + "/",
379
+ url: url + "/properties/" + val + "/",
386
380
  success: function(res){
387
381
  save[val].content(res);
388
382
  if (val == "endpoints") {
389
383
  save['endpoints_list'] = {};
390
384
  var tmp = {};
391
- $(res).find(" > value > *").each(function(k,v) {
385
+ $(res).find(" > endpoints > *").each(function(k,v) {
392
386
  save['endpoints_list'][v.localName] = v.lastChild.nodeValue;
393
387
  $.ajax({
394
388
  url: rep + encodeURIComponent($(v).text()),
@@ -429,7 +423,7 @@ function monitor_instance_values(val) {// {{{
429
423
  });
430
424
  });
431
425
  } else if(val == "attributes") {
432
- var text = $(" > value > info",res).text() + " (" + url.replace(/\/$/,'').split(/[\\/]/).pop() + ")";
426
+ var text = $(" > attributes > info",res).text() + " (" + url.replace(/\/$/,'').split(/[\\/]/).pop() + ")";
433
427
  $('#title').text(text);
434
428
  document.title = text;
435
429
  }
@@ -511,12 +505,21 @@ function adaptor_init(url,theme,dslx) { //{{{
511
505
  graphrealization.notify = function(svgid) {
512
506
  var g = graphrealization.get_description();
513
507
  save['graph'] = $X(g);
514
- save['graph'].find('[xmlns]').removeAttr('xmlns');
508
+ save['graph'].removeAttr('svg-id');
509
+ save['graph'].removeAttr('svg-type');
510
+ save['graph'].removeAttr('svg-subtype');
511
+ save['graph'].removeAttr('svg-label');
515
512
  document.dispatchEvent(graph_changed);
516
513
  $.ajax({
517
514
  type: "PUT",
518
- url: url + "/properties/values/description/",
519
- data: ({'content': '<content>' + g + '</content>'})
515
+ url: url + "/properties/description/",
516
+ contentType: 'text/xml',
517
+ headers: {
518
+ 'Content-ID': 'description',
519
+ 'CPEE-Event-Source': myid
520
+ },
521
+ data: g,
522
+ error: report_failure
520
523
  });
521
524
  adaptor_update();
522
525
  manifestation.events.click(svgid);
@@ -544,14 +547,14 @@ function monitor_graph_change(force) { //{{{
544
547
  var url = $('body').attr('current-instance');
545
548
  $.ajax({
546
549
  type: "GET",
547
- url: url + "/properties/values/dslx/",
550
+ url: url + "/properties/dslx/",
548
551
  success: function(dslx){
549
- if (force || !save['graph'] || (save['graph'] && save['graph'].serializePrettyXML() != $(dslx).serializePrettyXML())) {
552
+ if (force || !save['graph'] || (save['graph'] && save['graph'].serializePrettyXML() != $(dslx.documentElement).serializePrettyXML())) {
550
553
  $.ajax({
551
554
  type: "GET",
552
- url: url + "/properties/values/attributes/theme/",
555
+ url: url + "/properties/attributes/theme/",
553
556
  success: function(res){
554
- adaptor_init(url,$('value',res).text(),dslx);
557
+ adaptor_init(url,res,dslx);
555
558
  },
556
559
  error: function() {
557
560
  adaptor_init(url,'preset',dslx);
@@ -567,7 +570,7 @@ function monitor_instance_dsl() {// {{{
567
570
  $.ajax({
568
571
  type: "GET",
569
572
  dataType: "text",
570
- url: url + "/properties/values/dsl/",
573
+ url: url + "/properties/dsl/",
571
574
  success: function(res){
572
575
  if (res != save['dsl']) {
573
576
  save['dsl'] = res;
@@ -589,7 +592,7 @@ function monitor_instance_state() {// {{{
589
592
  var url = $('body').attr('current-instance');
590
593
  $.ajax({
591
594
  type: "GET",
592
- url: url + "/properties/values/state/",
595
+ url: url + "/properties/state/",
593
596
  dataType: "text",
594
597
  success: function(res){
595
598
  monitor_instance_state_change(res);
@@ -600,9 +603,9 @@ function monitor_instance_transformation() {// {{{
600
603
  var url = $('body').attr('current-instance');
601
604
  $.ajax({
602
605
  type: "GET",
603
- url: url + "/properties/values/attributes/modeltype",
606
+ url: url + "/properties/attributes/modeltype",
604
607
  success: function(res){
605
- $("#currentmodel").text($(res.documentElement).text());
608
+ $("#currentmodel").text(res);
606
609
  },
607
610
  error: function() {
608
611
  $("#currentmodel").text('???');
@@ -614,22 +617,30 @@ function monitor_instance_pos() {// {{{
614
617
  var url = $('body').attr('current-instance');
615
618
  $.ajax({
616
619
  type: "GET",
617
- url: url + "/properties/values/positions/",
620
+ url: url + "/properties/positions/",
618
621
  success: function(res){
619
- save['instance_pos'] = $("value > *",res);
622
+ save['instance_pos'] = $("positions > *",res);
620
623
  format_visual_clear();
621
624
  format_instance_pos();
622
625
  }
623
626
  });
624
627
  }// }}}
625
628
 
626
- function monitor_instance_running(notification,event) {// {{{
629
+ function monitor_instance_running(content,event) {// {{{
627
630
  if (save['state'] == "stopping") return;
628
- var parts = JSON.parse(notification);
629
- if (event == "calling")
630
- format_visual_add(parts.activity,"active")
631
- if (event == "done")
632
- format_visual_remove(parts.activity,"active")
631
+ if (event == "calling") {
632
+ save['activity_states'][content.activity_uuid] = true
633
+ format_visual_add(content.activity,"active")
634
+ }
635
+ if (event == "manipulating") {
636
+ if (!save['activity_states'][content.activity_uuid]) {
637
+ format_visual_add(content.activity,"active")
638
+ }
639
+ }
640
+ if (event == "done") {
641
+ delete save['activity_states'][content.activity_uuid];
642
+ format_visual_remove(content.activity,"active")
643
+ }
633
644
  } // }}}
634
645
  function monitor_instance_state_change(notification) { //{{{
635
646
  if ($('#trackcolumn').length > 0) {
@@ -668,6 +679,12 @@ function monitor_instance_state_change(notification) { //{{{
668
679
  $("button[name=state_stop]").show();
669
680
  $("button[name=state_replay]").hide();
670
681
  $("button[name=state_abandon]").hide();
682
+ } else {
683
+ $('#state_extended').hide();
684
+ $("button[name=state_start]").hide();
685
+ $("button[name=state_stop]").hide();
686
+ $("button[name=state_replay]").hide();
687
+ $("button[name=state_abandon]").hide();
671
688
  }
672
689
 
673
690
  // disable all input, also check themes
@@ -677,40 +694,39 @@ function monitor_instance_state_change(notification) { //{{{
677
694
  save['graph_adaptor'].illustrator.get_elements().removeClass('marked');
678
695
  }
679
696
 
680
- if (notification == "finished" || notification == "abandoned") {
697
+ if (notification != "ready" && notification != "stopped" && notification != "running") {
681
698
  $('.tabbehind button').hide();
682
699
  $('#state_any').hide();
683
700
  } else {
684
701
  $('#parameters .tabbehind button').show();
702
+ $('#state_any').show();
685
703
  }
686
704
 
687
705
  $("#state_text").text(notification);
688
706
  }
689
707
  } //}}}
690
- function monitor_instance_pos_change(notification) {// {{{
691
- var parts = JSON.parse(notification);
692
- if (parts['unmark']) {
693
- $.each(parts['unmark'],function(a,b){
708
+ function monitor_instance_pos_change(content) {// {{{
709
+ if (content['unmark']) {
710
+ $.each(content['unmark'],function(a,b){
694
711
  format_visual_remove(b.position,"passive")
695
712
  });
696
713
  }
697
- if (parts['at']) {
698
- $.each(parts['at'],function(a,b){
699
- format_visual_add(b.position,"passive")
714
+ if (content['at']) {
715
+ $.each(content['at'],function(a,b){
716
+ format_visual_add(b.position,"passive");
700
717
  });
701
718
  }
702
- if (!parts['at'] && !parts['unmark'] && !parts['after'] && !parts['wait']) {
719
+ if (!content['at'] && !content['unmark'] && !content['after'] && !content['wait']) {
703
720
  monitor_instance_pos();
704
721
  }
705
722
  } // }}}
706
723
 
707
- function monitor_instance_vote_add(notification) {// {{{
708
- var parts = JSON.parse(notification);
724
+ function monitor_instance_vote_add(parts) {// {{{
709
725
  var ctv = $("#votes");
710
726
 
711
727
  astr = '';
712
728
  if ($("input[name=votecontinue]").is(':checked'))
713
- astr += "<button id='vote_to_continue-" + parts.activity + "-" + parts.callback + "' onclick='$(this).attr(\"disabled\",\"disabled\");monitor_instance_vote_remove(\"" + parts.activity + "\",\"" + parts.callback + "\",\"true\");'>" + parts.activity + "</button>";
729
+ astr += "<button id='vote_to_continue-" + parts.activity + "-" + parts.key + "' onclick='$(this).attr(\"disabled\",\"disabled\");monitor_instance_vote_remove(\"" + parts.activity + "\",\"" + parts.key + "\",\"true\");'>" + parts.activity + "</button>";
714
730
  ctv.append(astr);
715
731
  format_visual_add(parts.activity,"vote")
716
732
  }// }}}
@@ -730,7 +746,7 @@ function start_instance() {// {{{
730
746
  var url = $('body').attr('current-instance');
731
747
  $.ajax({
732
748
  type: "PUT",
733
- url: url + "/properties/values/state",
749
+ url: url + "/properties/state",
734
750
  data: ({value: "running"}),
735
751
  error: report_failure
736
752
  });
@@ -739,7 +755,7 @@ function replay_instance() {// {{{
739
755
  var url = $('body').attr('current-instance');
740
756
  $.ajax({
741
757
  type: "PUT",
742
- url: url + "/properties/values/state",
758
+ url: url + "/properties/state",
743
759
  data: ({value: "replaying"}),
744
760
  error: report_failure
745
761
  });
@@ -749,7 +765,7 @@ function aba_instance() {// {{{
749
765
  var url = $('body').attr('current-instance');
750
766
  $.ajax({
751
767
  type: "PUT",
752
- url: url + "/properties/values/state",
768
+ url: url + "/properties/state",
753
769
  data: ({value: "abandoned"}),
754
770
  error: report_failure
755
771
  });
@@ -758,7 +774,7 @@ function stop_instance() {// {{{
758
774
  var url = $('body').attr('current-instance');
759
775
  $.ajax({
760
776
  type: "PUT",
761
- url: url + "/properties/values/state",
777
+ url: url + "/properties/state",
762
778
  data: ({value: "stopping"}),
763
779
  error: report_failure
764
780
  });
@@ -777,59 +793,25 @@ function save_testsetfile() {// {{{
777
793
 
778
794
  function get_testset(deferred) {// {{{
779
795
  var url = $('body').attr('current-instance');
780
- var testset = $X('<testset/>');
781
796
 
782
797
  $.ajax({
783
798
  type: "GET",
784
- url: url + "/properties/values/dataelements/",
799
+ url: url + "/properties/",
785
800
  success: function(res){
786
- var pars = $X('<dataelements/>');
787
- pars.append($(res.documentElement).children());
788
- testset.append(pars);
789
- $.ajax({
790
- type: "GET",
791
- url: url + "/properties/values/handlerwrapper/",
792
- success: function(res){
793
- var pars = $X('<handlerwrapper>' + res + '</handlerwrapper>');
794
- testset.append(pars);
795
- $.ajax({
796
- type: "GET",
797
- url: url + "/properties/values/endpoints/",
798
- success: function(res){
799
- var pars = $X('<endpoints/>');
800
- pars.append($(res.documentElement).children());
801
- testset.append(pars);
802
- $.ajax({
803
- type: "GET",
804
- url: url + "/properties/values/dslx/",
805
- success: function(res){
806
- var pars = $X('<description/>');
807
- pars.append($(res.documentElement));
808
- testset.append(pars);
809
- pars = $X("<transformation><description type='copy'/><dataelements type='none'/><endpoints type='none'/></transformation>");
810
- testset.append(pars);
811
- $.ajax({
812
- type: "GET",
813
- url: url + "/properties/values/attributes/",
814
- success: function(res){
815
- var name = $("value > info",res).text();
816
- var pars = $X('<attributes/>');
817
- pars.append($(res.documentElement).children());
818
- pars.find('uuid').remove();
819
- testset.append(pars);
820
- deferred.resolve(name,testset);
821
- },
822
- error: function() { deferred.reject(); report_failure(); }
823
- });
824
- },
825
- error: function() { deferred.reject(); report_failure(); }
826
- });
827
- },
828
- error: function() { deferred.reject(); report_failure(); }
829
- });
830
- },
831
- error: function() { deferred.reject(); report_failure(); }
832
- });
801
+ var testset = $X('<testset xmlns="http://cpee.org/ns/properties/2.0"/>');
802
+ testset.append($(res.documentElement).children());
803
+ $('testset > state',testset).remove();
804
+ $('testset > status',testset).remove();
805
+ $('testset > positions',testset).remove();
806
+ $('testset > dsl',testset).remove();
807
+ $('testset > description > *',testset).remove();
808
+ $('testset > description',testset).append($('testset > dslx',testset).children());
809
+ $('testset > transformation',testset).remove();
810
+ $('testset > dsl',testset).remove();
811
+ $('testset > dslx',testset).remove();
812
+ testset.append($X('<transformation xmlns="http://cpee.org/ns/properties/2.0"><description type="copy"/><dataelements type="none"/><endpoints type="none"/></transformation>'));
813
+ var name = $('testset > attributes > info',testset).text();
814
+ deferred.resolve(name,testset);
833
815
  },
834
816
  error: function() { deferred.reject(); report_failure(); }
835
817
  });
@@ -870,7 +852,7 @@ function save_svgfile() {// {{{
870
852
  });
871
853
  $.ajax({
872
854
  type: "GET",
873
- url: url + "/properties/values/attributes/info/",
855
+ url: url + "/properties/attributes/info/",
874
856
  success: function(res){
875
857
  var name = $(res.documentElement).text();
876
858
 
@@ -889,6 +871,15 @@ async function set_testset(testset,exec) {// {{{
889
871
 
890
872
  var promises = [];
891
873
 
874
+ var tset = $X('<properties xmlns="http://cpee.org/ns/properties/2.0"/>');
875
+ tset.append($("testset > handlerwrapper",testset));
876
+ tset.append($("testset > positions",testset));
877
+ tset.append($("testset > dataelements",testset));
878
+ tset.append($("testset > endpoints",testset));
879
+ tset.append($("testset > attributes",testset));
880
+ tset.append($("testset > description",testset));
881
+ tset.append($("testset > transformation",testset));
882
+
892
883
  promises.push(
893
884
  $.ajax({
894
885
  type: "GET",
@@ -903,44 +894,32 @@ async function set_testset(testset,exec) {// {{{
903
894
  });
904
895
  await load_testset_handlers(url,testset,vals);
905
896
  })
906
- )
907
- promises.push(load_testset_dataelements(url,testset));
908
- promises.push(load_testset_attributes(url,testset));
909
- promises.push(load_testset_endpoints(url,testset));
910
- promises.push(load_testset_pos(url,testset));
911
-
912
- if ($("testset > transformation",testset).length > 0) {
913
- var ser = '';
914
- $("testset > transformation > *",testset).each(function(){
915
- ser += $(this).serializeXML() + "\n";
916
- });
917
- var val = "<content>" + ser + "</content>";
918
- promises.push(
919
- $.ajax({
920
- type: "PUT",
921
- url: url + "/properties/values/transformation",
922
- data: ({content: val}),
923
- error: report_failure
924
- }).then(async function(){
925
- await load_testset_des(url,testset);
926
- })
927
- );
928
- } else {
929
- promises.push(load_testset_des(url,testset));
930
- }
897
+ );
898
+ promises.push(
899
+ $.ajax({
900
+ type: 'PATCH',
901
+ url: url + "/properties/",
902
+ contentType: 'text/xml',
903
+ headers: {
904
+ 'Content-ID': 'properties',
905
+ 'CPEE-Event-Source': myid
906
+ },
907
+ data: tset.serializeXML(),
908
+ error: report_failure
909
+ })
910
+ );
931
911
 
932
- promises.push(load_testset_hw(url,testset));
933
912
  await Promise.all(promises);
934
913
  suspended_monitoring = false;
935
914
 
936
915
  $.ajax({
937
916
  type: "GET",
938
- url: url + "/properties/values/state/",
917
+ url: url + "/properties/state/",
939
918
  dataType: "text",
940
919
  success: function(res){
941
920
  $.ajax({
942
921
  type: "PUT",
943
- url: url + "/properties/values/state",
922
+ url: url + "/properties/state",
944
923
  data: ({value: res}),
945
924
  error: report_failure,
946
925
  success: function(res){
@@ -1004,7 +983,7 @@ function load_testset(exec) {// {{{
1004
983
  var name = $("#templates div.menuitem[data-selected=selected]").text();
1005
984
  var url;
1006
985
  if (name) {
1007
- url = $('body').attr('current-testsets') + name + ".xml";
986
+ url = $('body').attr('current-templates') + name + ".xml";
1008
987
  } else {
1009
988
  if ($('body').attr('load-testset').length > 0) {
1010
989
  url = $('body').attr('load-testset');
@@ -1038,11 +1017,11 @@ function load_modeltype() {// {{{
1038
1017
  $.ajax({
1039
1018
  cache: false,
1040
1019
  dataType: 'xml',
1041
- url: $('body').attr('current-testsets') + "." + name + ".xml",
1020
+ url: $('body').attr('current-templates') + "." + name + ".xml",
1042
1021
  success: function(res){
1043
1022
  $.ajax({
1044
1023
  type: "PUT",
1045
- url: url + "/properties/values/attributes/modeltype",
1024
+ url: url + "/properties/attributes/modeltype",
1046
1025
  data: ({value: name}),
1047
1026
  success: function(){
1048
1027
  set_testset(res,false);
@@ -1057,116 +1036,25 @@ function load_modeltype() {// {{{
1057
1036
  }// }}}
1058
1037
 
1059
1038
  async function load_des(url,model) { //{{{
1060
- model = model.replace(/<\?[^\?]+\?>/,'');
1061
- var val = "<content>" + model + "</content>";
1062
1039
  return $.ajax({
1063
1040
  type: "PUT",
1064
- url: url + "/properties/values/description",
1065
- data: ({content: val}),
1041
+ url: url + "/properties/description/",
1042
+ contentType: 'text/xml',
1043
+ headers: {
1044
+ 'Content-ID': 'description',
1045
+ 'CPEE-Event-Source': myid
1046
+ },
1047
+ data: model,
1066
1048
  error: report_failure
1067
1049
  });
1068
1050
  } //}}}
1069
-
1070
- async function load_testset_des(url,testset) {// {{{
1071
- if ($("testset > description",testset).length == 0) { return; }
1072
- var ser = '';
1073
- $("testset > description > *",testset).each(function(){
1074
- ser += $(this).serializeXML() + "\n";
1075
- });
1076
- return load_des(url,ser);
1077
- } // }}}
1078
- async function load_testset_hw(url,testset) {// {{{
1079
- var promises = [];
1080
- $("testset > handlerwrapper",testset).each(function(){
1081
- var val = $(this).text();
1082
- promises.push(
1083
- $.ajax({
1084
- type: "PUT",
1085
- url: url + "/properties/values/handlerwrapper",
1086
- data: ({value: val}),
1087
- error: report_failure
1088
- })
1089
- );
1090
- });
1091
- return Promise.all(promises);
1092
- } // }}}
1093
- async function load_testset_dataelements(url,testset) {// {{{
1094
- if ($("testset > dataelements",testset).length == 0) { return; }
1095
- var ser = '';
1096
- $("testset > dataelements > *",testset).each(function(){
1097
- ser += $(this).serializeXML() + "\n";
1098
- });
1099
- var val = "<content>" + ser + "</content>";
1100
- return $.ajax({
1101
- type: "PUT",
1102
- url: url + "/properties/values/dataelements",
1103
- data: ({content: val}),
1104
- error: report_failure
1105
- });
1106
- }// }}}
1107
- async function load_testset_attributes(url,testset) {// {{{
1108
- var promises = [];
1109
- if ($("testset > attributes",testset).length == 0) { return; }
1110
- var ser = '';
1111
- $.ajax({
1112
- type: "GET",
1113
- url: url + "/properties/values/attributes/uuid",
1114
- success: function(res){
1115
- var uuid = $X('<uuid xmlns="http://riddl.org/ns/common-patterns/properties/1.0"/>');
1116
- uuid.text($('value',res).text());
1117
- $("testset > attributes",testset).prepend(uuid);
1118
- $("testset > attributes > *",testset).each(function(){
1119
- ser += $(this).serializeXML() + "\n";
1120
- });
1121
- var val = "<content>" + ser + "</content>";
1122
- promises.push(
1123
- $.ajax({
1124
- type: "PUT",
1125
- url: url + "/properties/values/attributes",
1126
- data: ({content: val}),
1127
- error: report_failure
1128
- })
1129
- );
1130
- }
1131
- });
1132
- return Promise.all(promises);
1133
- }// }}}
1134
- async function load_testset_endpoints(url,testset) {// {{{
1135
- if ($("testset > endpoints",testset).length == 0) { return; }
1136
- var ser = '';
1137
- $("testset > endpoints > *",testset).each(function(){
1138
- ser += $(this).serializeXML() + "\n";
1139
- });
1140
- var val = "<content>" + ser + "</content>";
1141
- return $.ajax({
1142
- type: "PUT",
1143
- url: url + "/properties/values/endpoints/",
1144
- data: ({content: val}),
1145
- error: report_failure
1146
- });
1147
- }// }}}
1148
- async function load_testset_pos(url,testset) {// {{{
1149
- if ($("testset > positions",testset).length == 0) { return; }
1150
- var ser = '';
1151
- $("testset > positions > *",testset).each(function(){
1152
- ser += $(this).serializeXML() + "\n";
1153
- });
1154
- var val = "<content>" + ser + "</content>";
1155
- return $.ajax({
1156
- type: "PUT",
1157
- url: url + "/properties/values/positions/",
1158
- data: ({content: val}),
1159
- success: monitor_instance_pos,
1160
- error: report_failure
1161
- });
1162
- }// }}}
1163
1051
  async function load_testset_handlers(url,testset,vals) {// {{{
1164
1052
  var promises = [];
1165
1053
  $("testset > handlers > *",testset).each(async function(){
1166
1054
  var han = this;
1167
1055
  var suburl = $(han).attr('url');
1168
1056
  if ($.inArray(suburl,vals) == -1) {
1169
- var inp = "url="+encodeURIComponent(suburl);
1057
+ var inp = "url="+encodeURIComponent(suburl).replace(/~/,'%7E');
1170
1058
  $("*",han).each(function(){
1171
1059
  inp += "&topic=" + $(this).attr('topic');
1172
1060
  inp += "&" + this.nodeName + "=" + $(this).text();
@@ -1197,6 +1085,8 @@ function format_visual_remove(what,cls) {//{{{
1197
1085
  if (node_state[what][cls] == undefined)
1198
1086
  node_state[what][cls] = 0;
1199
1087
  node_state[what][cls] -= 1;
1088
+ if (node_state[what][cls] < 0)
1089
+ node_state[what][cls] = 0;
1200
1090
  format_visual_set(what);
1201
1091
  }//}}}
1202
1092
 
@@ -1280,6 +1170,7 @@ function format_visual_clear() {//{{{
1280
1170
  }
1281
1171
  });
1282
1172
  $('#votes').empty();
1173
+
1283
1174
  }//}}}
1284
1175
  function format_visual_vote_clear() {//{{{
1285
1176
  node_state = {};
@@ -1371,7 +1262,13 @@ function append_to_log(what,type,message) {//{{{
1371
1262
  message = message.replace(/:\"/g,': "');
1372
1263
  message = message.replace(/:\{/g,': {');
1373
1264
  message = message.replace(/:\[/g,': [');
1374
- $("#dat_log").append("<tr><td class='fixed top'><a title=\"" + d.strftime("[%d/%b/%Y %H:%M:%S]") + "\">D</a></td><td class='fixed'>&#160;-&#160;</td><td class='fixed'><a title=\"" + what + "\">T</a></td><td class='fixed'>&#160;-&#160;</td><td class='fixed'>" + type + "</td><td class='fixed'>&#160;-&#160;</td><td class='long'>" + message + "</td></tr>");
1265
+ $("#dat_log").prepend("<tr><td class='fixed'><a title=\"" + d.strftime("[%d/%b/%Y %H:%M:%S]") + "\">D</a></td><td class='fixed'>&#160;-&#160;</td><td class='fixed'><a title=\"" + what + "\">T</a></td><td class='fixed'>&#160;-&#160;</td><td class='fixed'>" + type + "</td><td class='fixed'>&#160;-&#160;</td><td class='long'>" + message + "</td></tr>");
1266
+ var dle = $("#dat_log").children();
1267
+ if (dle.length > 100) {
1268
+ dle.slice(100).each((k,ele) => {
1269
+ $(ele).remove();
1270
+ });
1271
+ }
1375
1272
  }//}}}
1376
1273
 
1377
1274
  function report_failure(){}
@@ -1387,11 +1284,16 @@ function ui_pos(e,bl) {
1387
1284
  $(coll).each(function(k,ele){
1388
1285
  vals += "<" + ele + ">at</" + ele + ">";
1389
1286
  });
1390
- vals = "<content>" + vals + "</content>";
1287
+ vals = "<positions xmlns='http://cpee.org/ns/properties/2.0'>" + vals + "</positions>";
1391
1288
  $.ajax({
1392
1289
  type: "PUT",
1393
- url: url + "/properties/values/positions/",
1394
- data: ({content: vals}),
1290
+ url: url + "/properties/positions/",
1291
+ contentType: 'application/xml',
1292
+ headers: {
1293
+ 'Content-ID': 'positions',
1294
+ 'CPEE-Event-Source': myid
1295
+ },
1296
+ data: vals,
1395
1297
  success: monitor_instance_pos,
1396
1298
  error: report_failure
1397
1299
  });