cpee 1.5.25 → 2.0.2

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 (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 +191 -284
  9. data/cockpit/js/parameters.js +13 -3
  10. data/cockpit/js/ui.js +2 -2
  11. data/cockpit/model.html +1 -0
  12. data/cockpit/rngs/attributes.rng +1 -1
  13. data/cockpit/rngs/dataelements.rng +1 -1
  14. data/cockpit/rngs/endpoints.rng +1 -1
  15. data/cockpit/templates.legacy/Async.xml +7 -7
  16. data/cockpit/templates.legacy/BCO.xml +7 -10
  17. data/cockpit/templates.legacy/BCS.xml +7 -10
  18. data/cockpit/templates.legacy/Centurio.xml +6 -6
  19. data/cockpit/templates.legacy/Concurrent.xml +6 -6
  20. data/cockpit/templates.legacy/Coopis Testset.xml +6 -6
  21. data/cockpit/templates.legacy/Endpoints and Data Manipulation.xml +6 -6
  22. data/cockpit/templates.legacy/ICSOC Testset.xml +6 -6
  23. data/cockpit/templates.legacy/Infinity.xml +3 -3
  24. data/cockpit/templates.legacy/Lego Boxer.xml +7 -7
  25. data/cockpit/templates.legacy/Lego Conveyor.xml +7 -7
  26. data/cockpit/templates.legacy/Lego Crane.xml +7 -7
  27. data/cockpit/templates.legacy/Lego Ejector.xml +7 -7
  28. data/cockpit/templates.legacy/Lego Full.xml +7 -7
  29. data/cockpit/templates.legacy/Lego Liddy.xml +7 -7
  30. data/cockpit/templates.legacy/Lego Plate.xml +7 -7
  31. data/cockpit/templates.legacy/Lego Transporter.xml +7 -7
  32. data/cockpit/templates.legacy/Lego_Part_1.xml +7 -7
  33. data/cockpit/templates.legacy/LgLinear.xml +6 -10
  34. data/cockpit/templates.legacy/Linear.xml +7 -7
  35. data/cockpit/templates.legacy/Log.xml +7 -7
  36. data/cockpit/templates.legacy/Mangler 1.xml +6 -6
  37. data/cockpit/templates.legacy/Mangler 2.xml +6 -6
  38. data/cockpit/templates.legacy/Manuel Labels.xml +7 -7
  39. data/cockpit/templates.legacy/Promise.xml +7 -7
  40. data/cockpit/templates.legacy/SOPROMO Test Sonification.xml +6 -6
  41. data/cockpit/templates.legacy/Subprocess.xml +56 -0
  42. data/cockpit/templates.legacy/Syncing P34 1.xml +8 -11
  43. data/cockpit/templates.legacy/Syncing P34 2.xml +8 -11
  44. data/cockpit/templates.legacy/Syncing P34 3.xml +8 -11
  45. data/cockpit/templates.legacy/Syncing P34.xml +8 -11
  46. data/cockpit/templates.legacy/TEST - Bad Loop.xml +6 -6
  47. data/cockpit/templates.legacy/TEST - Wrong Positions.xml +6 -6
  48. data/cockpit/templates.legacy/Take_5.xml +48 -0
  49. data/cockpit/templates.legacy/Update.xml +7 -7
  50. data/cockpit/templates.legacy/Worklist Parallel.xml +7 -7
  51. data/cockpit/templates.legacy/Worklist Test CPEE.xml +7 -7
  52. data/cockpit/templates.legacy/Worklist Test.xml +7 -7
  53. data/cockpit/templates.legacy/Worklist Test2.xml +7 -7
  54. data/cockpit/templates.legacy/convert_cpee2.rb +15 -0
  55. data/cockpit/templates.legacy/testsets.xml +1 -1
  56. data/cockpit/templates/BPM 2020 Manual Adjust.xml +18 -71
  57. data/cockpit/templates/BPM 2020 Solution Baseline.xml +17 -71
  58. data/cockpit/templates/BPM 2020 Solution NN.xml +25 -71
  59. data/cockpit/templates/BPM 2020 Solution View.xml +15 -71
  60. data/cockpit/templates/BPM 2020.xml +17 -6
  61. data/cockpit/templates/Coopis 2010.xml +7 -7
  62. data/cockpit/templates/IUPC arXiv:1104.3609 P34 1.xml +7 -10
  63. data/cockpit/templates/IUPC arXiv:1104.3609 P34 2.xml +7 -10
  64. data/cockpit/templates/IUPC arXiv:1104.3609 P34 3.xml +7 -10
  65. data/cockpit/templates/Worklist.xml +7 -7
  66. data/cockpit/templates/convert_cpee2.rb +15 -0
  67. data/cockpit/themes/compact/rngs/alternative.rng +25 -0
  68. data/cockpit/themes/compact/rngs/call.rng +17 -17
  69. data/cockpit/themes/compact/rngs/callmanipulate.rng +26 -26
  70. data/cockpit/themes/compact/rngs/choose.rng +14 -0
  71. data/cockpit/themes/compact/rngs/critical.rng +5 -0
  72. data/cockpit/themes/compact/rngs/escape.rng +1 -0
  73. data/cockpit/themes/compact/rngs/group.rng +3 -0
  74. data/cockpit/themes/compact/rngs/loop.rng +22 -0
  75. data/cockpit/themes/compact/rngs/manipulate.rng +9 -0
  76. data/cockpit/themes/compact/rngs/otherwise.rng +22 -0
  77. data/cockpit/themes/compact/rngs/parallel.rng +21 -0
  78. data/cockpit/themes/compact/rngs/parallel_branch.rng +8 -0
  79. data/cockpit/themes/compact/rngs/scripts.rng +10 -11
  80. data/cockpit/themes/compact/rngs/stop.rng +5 -0
  81. data/cockpit/themes/compact/rngs/terminate.rng +1 -0
  82. data/cockpit/themes/convert_cpee2.rb +8 -0
  83. data/cockpit/themes/default/rngs/alternative.rng +8 -8
  84. data/cockpit/themes/default/rngs/call.rng +84 -48
  85. data/cockpit/themes/default/rngs/callmanipulate.rng +103 -64
  86. data/cockpit/themes/default/rngs/choose.rng +5 -3
  87. data/cockpit/themes/default/rngs/critical.rng +2 -2
  88. data/cockpit/themes/default/rngs/escape.rng +1 -1
  89. data/cockpit/themes/default/rngs/group.rng +3 -3
  90. data/cockpit/themes/default/rngs/loop.rng +8 -8
  91. data/cockpit/themes/default/rngs/manipulate.rng +3 -3
  92. data/cockpit/themes/default/rngs/otherwise.rng +8 -8
  93. data/cockpit/themes/default/rngs/parallel.rng +14 -6
  94. data/cockpit/themes/default/rngs/parallel_branch.rng +2 -2
  95. data/cockpit/themes/default/rngs/scripts.rng +23 -0
  96. data/cockpit/themes/default/rngs/stop.rng +2 -2
  97. data/cockpit/themes/default/rngs/terminate.rng +1 -1
  98. data/cockpit/themes/extended/rngs/alternative.rng +25 -0
  99. data/cockpit/themes/extended/rngs/call.rng +17 -17
  100. data/cockpit/themes/extended/rngs/callmanipulate.rng +26 -26
  101. data/cockpit/themes/extended/rngs/choose.rng +14 -0
  102. data/cockpit/themes/extended/rngs/critical.rng +5 -0
  103. data/cockpit/themes/extended/rngs/escape.rng +1 -0
  104. data/cockpit/themes/extended/rngs/group.rng +3 -0
  105. data/cockpit/themes/extended/rngs/loop.rng +22 -0
  106. data/cockpit/themes/extended/rngs/manipulate.rng +9 -0
  107. data/cockpit/themes/extended/rngs/otherwise.rng +22 -0
  108. data/cockpit/themes/extended/rngs/parallel.rng +21 -0
  109. data/cockpit/themes/extended/rngs/parallel_branch.rng +8 -0
  110. data/cockpit/themes/extended/rngs/scripts.rng +10 -11
  111. data/cockpit/themes/extended/rngs/stop.rng +5 -0
  112. data/cockpit/themes/extended/rngs/terminate.rng +1 -0
  113. data/cockpit/themes/extended/theme.js +7 -6
  114. data/cockpit/themes/model/rngs/alternative.rng +1 -1
  115. data/cockpit/themes/model/rngs/call.rng +16 -16
  116. data/cockpit/themes/model/rngs/callmanipulate.rng +17 -17
  117. data/cockpit/themes/model/rngs/choose.rng +1 -1
  118. data/cockpit/themes/model/rngs/critical.rng +1 -1
  119. data/cockpit/themes/model/rngs/escape.rng +1 -1
  120. data/cockpit/themes/model/rngs/group.rng +1 -1
  121. data/cockpit/themes/model/rngs/loop.rng +1 -1
  122. data/cockpit/themes/model/rngs/manipulate.rng +1 -1
  123. data/cockpit/themes/model/rngs/otherwise.rng +1 -1
  124. data/cockpit/themes/model/rngs/parallel.rng +1 -1
  125. data/cockpit/themes/model/rngs/parallel_branch.rng +1 -1
  126. data/cockpit/themes/model/rngs/scripts.rng +3 -4
  127. data/cockpit/themes/model/rngs/stop.rng +1 -1
  128. data/cockpit/themes/model/rngs/terminate.rng +1 -1
  129. data/cockpit/themes/model/theme.js +7 -6
  130. data/cockpit/themes/packed/rngs/alternative.rng +25 -0
  131. data/cockpit/themes/packed/rngs/call.rng +17 -17
  132. data/cockpit/themes/packed/rngs/callmanipulate.rng +26 -26
  133. data/cockpit/themes/packed/rngs/choose.rng +14 -0
  134. data/cockpit/themes/packed/rngs/critical.rng +5 -0
  135. data/cockpit/themes/packed/rngs/escape.rng +1 -0
  136. data/cockpit/themes/packed/rngs/group.rng +3 -0
  137. data/cockpit/themes/packed/rngs/loop.rng +22 -0
  138. data/cockpit/themes/packed/rngs/manipulate.rng +9 -0
  139. data/cockpit/themes/packed/rngs/otherwise.rng +22 -0
  140. data/cockpit/themes/packed/rngs/parallel.rng +21 -0
  141. data/cockpit/themes/packed/rngs/parallel_branch.rng +8 -0
  142. data/cockpit/themes/packed/rngs/scripts.rng +10 -11
  143. data/cockpit/themes/packed/rngs/stop.rng +5 -0
  144. data/cockpit/themes/packed/rngs/terminate.rng +1 -0
  145. data/cockpit/themes/packed/theme.js +7 -6
  146. data/cockpit/themes/preset/rngs/alternative.rng +25 -0
  147. data/cockpit/themes/preset/rngs/call.rng +17 -17
  148. data/cockpit/themes/preset/rngs/callmanipulate.rng +26 -26
  149. data/cockpit/themes/preset/rngs/choose.rng +14 -0
  150. data/cockpit/themes/preset/rngs/critical.rng +5 -0
  151. data/cockpit/themes/preset/rngs/escape.rng +1 -0
  152. data/cockpit/themes/preset/rngs/group.rng +3 -0
  153. data/cockpit/themes/preset/rngs/loop.rng +22 -0
  154. data/cockpit/themes/preset/rngs/manipulate.rng +9 -0
  155. data/cockpit/themes/preset/rngs/otherwise.rng +22 -0
  156. data/cockpit/themes/preset/rngs/parallel.rng +21 -0
  157. data/cockpit/themes/preset/rngs/parallel_branch.rng +8 -0
  158. data/cockpit/themes/preset/rngs/scripts.rng +10 -11
  159. data/cockpit/themes/preset/rngs/stop.rng +5 -0
  160. data/cockpit/themes/preset/rngs/terminate.rng +1 -0
  161. data/cockpit/themes/preset/theme.js +7 -6
  162. data/cpee.gemspec +10 -11
  163. data/{log/topics.xml → lib/callbacks.xml} +16 -6
  164. data/lib/{engine → callbacks}/callbacks.rng +2 -8
  165. data/lib/cpee.xml +10 -4
  166. data/lib/cpee/attributes_helper.rb +27 -0
  167. data/lib/cpee/controller.rb +113 -596
  168. data/lib/cpee/implementation.rb +167 -191
  169. data/lib/cpee/implementation_callbacks.rb +77 -0
  170. data/lib/cpee/implementation_notifications.rb +189 -0
  171. data/lib/cpee/implementation_properties.rb +714 -0
  172. data/lib/cpee/{callback.rb → message.rb} +20 -18
  173. data/lib/cpee/persistence.rb +135 -0
  174. data/lib/cpee/statemachine.rb +20 -0
  175. data/lib/cpee/transform.rb +95 -0
  176. data/lib/engine.xml +1 -59
  177. data/lib/properties.xml +236 -0
  178. data/lib/properties/arbitrary.rng +26 -0
  179. data/lib/properties/attributes.rng +10 -0
  180. data/lib/properties/dataelements.rng +10 -0
  181. data/lib/properties/description.rng +8 -0
  182. data/lib/properties/dsl.rng +7 -0
  183. data/lib/properties/dslx.rng +8 -0
  184. data/lib/properties/endpoints.rng +10 -0
  185. data/lib/properties/handlerwrapper.rng +9 -0
  186. data/lib/properties/position.rng +15 -0
  187. data/lib/properties/positions.rng +10 -0
  188. data/lib/properties/properties.rng +29 -0
  189. data/lib/properties/set-properties.rng +25 -0
  190. data/lib/properties/set-some-properties.rng +45 -0
  191. data/lib/properties/simple.rng +8 -0
  192. data/lib/properties/state.rng +33 -0
  193. data/lib/properties/status.rng +12 -0
  194. data/lib/properties/t_attributes.rng +7 -0
  195. data/lib/properties/t_dataelements.rng +7 -0
  196. data/lib/properties/t_endpoints.rng +7 -0
  197. data/lib/properties/t_position.rng +7 -0
  198. data/lib/properties/t_positions.rng +7 -0
  199. data/lib/properties/t_simple.rng +7 -0
  200. data/lib/properties/t_status.rng +7 -0
  201. data/lib/properties/t_transformation.rng +7 -0
  202. data/lib/properties/transformation.rng +40 -0
  203. data/server/dev.rb +1 -0
  204. data/server/handlerwrappers/default.rb +40 -38
  205. data/server/resources/backend/README.md +17 -0
  206. data/server/resources/backend/instance.rb +23 -0
  207. data/server/resources/backend/instance.template +19 -0
  208. data/server/resources/backend/opts.yaml +6 -0
  209. data/server/resources/backend/run +33 -0
  210. data/server/resources/notifications/logging/subscription.xml +19 -0
  211. data/server/resources/properties.empty +38 -0
  212. data/server/resources/properties.init +11 -11
  213. data/server/resources/states.dot +19 -0
  214. data/server/resources/states.xml +49 -0
  215. data/server/resources/transformation_dslx.xsl +12 -3
  216. data/server/routing/end.rb +44 -0
  217. data/server/routing/forward-events.rb +59 -0
  218. data/server/routing/forward-votes.rb +108 -0
  219. data/server/routing/persist.rb +155 -0
  220. data/server/server.rb +1 -0
  221. data/tools/cpee +46 -15
  222. data/tools/instantiation/instantiation +0 -1
  223. data/tools/server/server.rb +0 -1
  224. metadata +78 -132
  225. data/INSTALL +0 -23
  226. data/cockpit/templates/convert_preset.rb +0 -32
  227. data/cockpit/templates/testsets.xml +0 -11
  228. data/cockpit/templates/transformations.xml +0 -4
  229. data/cockpit/themes/compact/rngs/alternative.rng +0 -1
  230. data/cockpit/themes/compact/rngs/choose.rng +0 -1
  231. data/cockpit/themes/compact/rngs/critical.rng +0 -1
  232. data/cockpit/themes/compact/rngs/escape.rng +0 -1
  233. data/cockpit/themes/compact/rngs/group.rng +0 -1
  234. data/cockpit/themes/compact/rngs/loop.rng +0 -1
  235. data/cockpit/themes/compact/rngs/manipulate.rng +0 -1
  236. data/cockpit/themes/compact/rngs/otherwise.rng +0 -1
  237. data/cockpit/themes/compact/rngs/parallel.rng +0 -1
  238. data/cockpit/themes/compact/rngs/parallel_branch.rng +0 -1
  239. data/cockpit/themes/compact/rngs/stop.rng +0 -1
  240. data/cockpit/themes/compact/rngs/terminate.rng +0 -1
  241. data/cockpit/themes/default/rngs/finalize.rng +0 -6
  242. data/cockpit/themes/default/rngs/update.rng +0 -6
  243. data/cockpit/themes/default/theme.js +0 -1286
  244. data/cockpit/themes/extended/rngs/alternative.rng +0 -1
  245. data/cockpit/themes/extended/rngs/choose.rng +0 -1
  246. data/cockpit/themes/extended/rngs/critical.rng +0 -1
  247. data/cockpit/themes/extended/rngs/escape.rng +0 -1
  248. data/cockpit/themes/extended/rngs/group.rng +0 -1
  249. data/cockpit/themes/extended/rngs/loop.rng +0 -1
  250. data/cockpit/themes/extended/rngs/manipulate.rng +0 -1
  251. data/cockpit/themes/extended/rngs/otherwise.rng +0 -1
  252. data/cockpit/themes/extended/rngs/parallel.rng +0 -1
  253. data/cockpit/themes/extended/rngs/parallel_branch.rng +0 -1
  254. data/cockpit/themes/extended/rngs/stop.rng +0 -1
  255. data/cockpit/themes/extended/rngs/terminate.rng +0 -1
  256. data/cockpit/themes/labels/rngs/alternative.rng +0 -25
  257. data/cockpit/themes/labels/rngs/call.rng +0 -81
  258. data/cockpit/themes/labels/rngs/callmanipulate.rng +0 -101
  259. data/cockpit/themes/labels/rngs/choose.rng +0 -12
  260. data/cockpit/themes/labels/rngs/critical.rng +0 -5
  261. data/cockpit/themes/labels/rngs/escape.rng +0 -1
  262. data/cockpit/themes/labels/rngs/finalize.rng +0 -6
  263. data/cockpit/themes/labels/rngs/group.rng +0 -3
  264. data/cockpit/themes/labels/rngs/loop.rng +0 -22
  265. data/cockpit/themes/labels/rngs/manipulate.rng +0 -9
  266. data/cockpit/themes/labels/rngs/otherwise.rng +0 -22
  267. data/cockpit/themes/labels/rngs/parallel.rng +0 -13
  268. data/cockpit/themes/labels/rngs/parallel_branch.rng +0 -8
  269. data/cockpit/themes/labels/rngs/stop.rng +0 -5
  270. data/cockpit/themes/labels/rngs/terminate.rng +0 -1
  271. data/cockpit/themes/labels/rngs/update.rng +0 -6
  272. data/cockpit/themes/labels/symbols/alternative.svg +0 -5
  273. data/cockpit/themes/labels/symbols/arrow.svg +0 -3
  274. data/cockpit/themes/labels/symbols/call.svg +0 -6
  275. data/cockpit/themes/labels/symbols/callmanipulate.svg +0 -8
  276. data/cockpit/themes/labels/symbols/choose.svg +0 -5
  277. data/cockpit/themes/labels/symbols/choose_exclusive.svg +0 -5
  278. data/cockpit/themes/labels/symbols/choose_inclusive.svg +0 -4
  279. data/cockpit/themes/labels/symbols/complex.svg +0 -8
  280. data/cockpit/themes/labels/symbols/critical.svg +0 -4
  281. data/cockpit/themes/labels/symbols/end.svg +0 -3
  282. data/cockpit/themes/labels/symbols/escape.svg +0 -5
  283. data/cockpit/themes/labels/symbols/event_end.svg +0 -3
  284. data/cockpit/themes/labels/symbols/loop.svg +0 -5
  285. data/cockpit/themes/labels/symbols/manipulate.svg +0 -4
  286. data/cockpit/themes/labels/symbols/otherwise.svg +0 -5
  287. data/cockpit/themes/labels/symbols/parallel.svg +0 -5
  288. data/cockpit/themes/labels/symbols/parallel_branch.svg +0 -5
  289. data/cockpit/themes/labels/symbols/parallel_branch_compact.svg +0 -4
  290. data/cockpit/themes/labels/symbols/parallel_branch_event.svg +0 -14
  291. data/cockpit/themes/labels/symbols/parallel_branch_normal.svg +0 -5
  292. data/cockpit/themes/labels/symbols/scripts.svg +0 -4
  293. data/cockpit/themes/labels/symbols/start.svg +0 -3
  294. data/cockpit/themes/labels/symbols/stop.svg +0 -5
  295. data/cockpit/themes/labels/symbols/terminate.svg +0 -4
  296. data/cockpit/themes/packed/rngs/alternative.rng +0 -1
  297. data/cockpit/themes/packed/rngs/choose.rng +0 -1
  298. data/cockpit/themes/packed/rngs/critical.rng +0 -1
  299. data/cockpit/themes/packed/rngs/escape.rng +0 -1
  300. data/cockpit/themes/packed/rngs/group.rng +0 -1
  301. data/cockpit/themes/packed/rngs/loop.rng +0 -1
  302. data/cockpit/themes/packed/rngs/manipulate.rng +0 -1
  303. data/cockpit/themes/packed/rngs/otherwise.rng +0 -1
  304. data/cockpit/themes/packed/rngs/parallel.rng +0 -1
  305. data/cockpit/themes/packed/rngs/parallel_branch.rng +0 -1
  306. data/cockpit/themes/packed/rngs/stop.rng +0 -1
  307. data/cockpit/themes/packed/rngs/terminate.rng +0 -1
  308. data/cockpit/themes/preset/rngs/alternative.rng +0 -1
  309. data/cockpit/themes/preset/rngs/choose.rng +0 -1
  310. data/cockpit/themes/preset/rngs/critical.rng +0 -1
  311. data/cockpit/themes/preset/rngs/escape.rng +0 -1
  312. data/cockpit/themes/preset/rngs/group.rng +0 -1
  313. data/cockpit/themes/preset/rngs/loop.rng +0 -1
  314. data/cockpit/themes/preset/rngs/manipulate.rng +0 -1
  315. data/cockpit/themes/preset/rngs/otherwise.rng +0 -1
  316. data/cockpit/themes/preset/rngs/parallel.rng +0 -1
  317. data/cockpit/themes/preset/rngs/parallel_branch.rng +0 -1
  318. data/cockpit/themes/preset/rngs/stop.rng +0 -1
  319. data/cockpit/themes/preset/rngs/terminate.rng +0 -1
  320. data/lib/cpee/empty_workflow.rb +0 -28
  321. data/lib/cpee/handler_notifications.rb +0 -47
  322. data/lib/cpee/handler_properties.rb +0 -50
  323. data/lib/cpee/instantiation.rb +0 -369
  324. data/lib/cpee/processtransformation/bpel/Repository/booking.bpel +0 -125
  325. data/lib/cpee/processtransformation/bpel/Repository/booking.wsdl +0 -72
  326. data/lib/cpee/processtransformation/bpel/Repository/booking/airline.wsdl +0 -71
  327. data/lib/cpee/processtransformation/bpel/Repository/booking/hotel.wsdl +0 -64
  328. data/lib/cpee/processtransformation/bpel/Repository/booking/report.wsdl +0 -71
  329. data/lib/cpee/processtransformation/bpel/bpel2wee.rb +0 -34
  330. data/lib/cpee/processtransformation/bpel/bpelserver.ru +0 -64
  331. data/lib/cpee/processtransformation/bpel/bpelserver.xml +0 -70
  332. data/lib/cpee/processtransformation/bpel/lib/BPEL_Transform.rb +0 -367
  333. data/lib/cpee/processtransformation/bpmn2.rb +0 -297
  334. data/lib/cpee/processtransformation/cpee.rb +0 -119
  335. data/lib/cpee/processtransformation/structures.rb +0 -465
  336. data/lib/cpee/processtransformation/target.rb +0 -50
  337. data/log/azure.rb +0 -10
  338. data/log/azure_logger.rb +0 -136
  339. data/log/chain.xml +0 -27
  340. data/log/elasticsearch.rb +0 -15
  341. data/log/elasticsearch_logging.rb +0 -377
  342. data/log/legacy/test_es.rb +0 -26
  343. data/log/legacy/test_split.rb +0 -211
  344. data/log/log.xml +0 -13
  345. data/log/non_tamp.rb +0 -156
  346. data/log/sic.rb +0 -64
  347. data/log/template.xes_xml +0 -23
  348. data/log/template.xes_yaml +0 -28
  349. data/log/trace.yaml +0 -17717
  350. data/log/trace_sic.yaml +0 -18343
  351. data/log/xes_xml.rb +0 -121
  352. data/log/xes_yaml.rb +0 -96
  353. data/server/handlerwrappers/soap.rb +0 -146
  354. data/server/resources/properties.schema.active +0 -139
  355. data/server/resources/properties.schema.finished +0 -139
  356. data/server/resources/properties.schema.inactive +0 -136
  357. data/test/callback.rb +0 -9
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 37efc8a4ee5d0180cb006297e5948408f7c1772b9f8fc2a87d1612b7d59caf06
4
- data.tar.gz: 77d0bec7010653f12b05ef43a1f585c3207fe45a07fddb28c3fb6f4e411a107e
3
+ metadata.gz: b71f98dc26ff6f1cfed69fc184651d7fd01175bee56c77df2f92df10a8db1a3e
4
+ data.tar.gz: 6b023b74f885fc91e81b1ad27040998eea19e7098cb899f3555e5c1c3e11cf38
5
5
  SHA512:
6
- metadata.gz: 6c3985ee99ff71092829163a58fed998a6095df1c34bd50d9172d607894ff43ff7e47de0c0ceceab0cf67ee8eefb9d1b67973f3bec3ccd6019fc67e2a84ff3cb
7
- data.tar.gz: 879610b214fbd73ba364936ee83f75a63921d058966ba37e5308b44e8f164cf4029afbe0211c0a01aa322a6fa96ce3518b03971345c814809ecc91f70934f946
6
+ metadata.gz: fd458b2163ef367cde6ac05fa4e178b93f0ad06d5a01cbfc44bf32d921e7675e667a13fd7956e19eac89b064b47908beb815f23d127201d3bf6ac5e7a081c7cd
7
+ data.tar.gz: f003121ae2244ba0e0608d56cc628f99a05a57e101fb806d1adce44225cc762fc7bb7354c51e3f2bee3bcabb46cfe6200fb7f6a0a3599b16c0a75ffd1f83c7d4
@@ -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
  });
@@ -768,7 +784,7 @@ function save_testsetfile() {// {{{
768
784
  var def = new $.Deferred();
769
785
  def.done(function(name,testset) {
770
786
  var ct = new Date();
771
- $('#savetestsetfile').attr('download',name + '_' + ct.strftime("%Y-%m-%dT%H%M%S%z") + '.xml');
787
+ $('#savetestsetfile').attr('download',name + '.xml');
772
788
  $('#savetestsetfile').attr('href','data:application/xml;charset=utf-8;base64,' + $B64(testset.serializePrettyXML()));
773
789
  document.getElementById('savetestsetfile').click();
774
790
  });
@@ -777,59 +793,30 @@ 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(); }
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
+ $('[xmlns]',testset).each((idx,ele) => {
815
+ if (ele.parentNode.namespaceURI == ele.getAttribute('xmlns')) {
816
+ ele.removeAttribute('xmlns');
817
+ }
832
818
  });
819
+ deferred.resolve(name,testset);
833
820
  },
834
821
  error: function() { deferred.reject(); report_failure(); }
835
822
  });
@@ -870,7 +857,7 @@ function save_svgfile() {// {{{
870
857
  });
871
858
  $.ajax({
872
859
  type: "GET",
873
- url: url + "/properties/values/attributes/info/",
860
+ url: url + "/properties/attributes/info/",
874
861
  success: function(res){
875
862
  var name = $(res.documentElement).text();
876
863
 
@@ -889,6 +876,15 @@ async function set_testset(testset,exec) {// {{{
889
876
 
890
877
  var promises = [];
891
878
 
879
+ var tset = $X('<properties xmlns="http://cpee.org/ns/properties/2.0"/>');
880
+ tset.append($("testset > handlerwrapper",testset));
881
+ tset.append($("testset > positions",testset));
882
+ tset.append($("testset > dataelements",testset));
883
+ tset.append($("testset > endpoints",testset));
884
+ tset.append($("testset > attributes",testset));
885
+ tset.append($("testset > description",testset));
886
+ tset.append($("testset > transformation",testset));
887
+
892
888
  promises.push(
893
889
  $.ajax({
894
890
  type: "GET",
@@ -903,44 +899,32 @@ async function set_testset(testset,exec) {// {{{
903
899
  });
904
900
  await load_testset_handlers(url,testset,vals);
905
901
  })
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
- }
902
+ );
903
+ promises.push(
904
+ $.ajax({
905
+ type: 'PATCH',
906
+ url: url + "/properties/",
907
+ contentType: 'text/xml',
908
+ headers: {
909
+ 'Content-ID': 'properties',
910
+ 'CPEE-Event-Source': myid
911
+ },
912
+ data: tset.serializeXML(),
913
+ error: report_failure
914
+ })
915
+ );
931
916
 
932
- promises.push(load_testset_hw(url,testset));
933
917
  await Promise.all(promises);
934
918
  suspended_monitoring = false;
935
919
 
936
920
  $.ajax({
937
921
  type: "GET",
938
- url: url + "/properties/values/state/",
922
+ url: url + "/properties/state/",
939
923
  dataType: "text",
940
924
  success: function(res){
941
925
  $.ajax({
942
926
  type: "PUT",
943
- url: url + "/properties/values/state",
927
+ url: url + "/properties/state",
944
928
  data: ({value: res}),
945
929
  error: report_failure,
946
930
  success: function(res){
@@ -1004,7 +988,7 @@ function load_testset(exec) {// {{{
1004
988
  var name = $("#templates div.menuitem[data-selected=selected]").text();
1005
989
  var url;
1006
990
  if (name) {
1007
- url = $('body').attr('current-testsets') + name + ".xml";
991
+ url = $('body').attr('current-templates') + name + ".xml";
1008
992
  } else {
1009
993
  if ($('body').attr('load-testset').length > 0) {
1010
994
  url = $('body').attr('load-testset');
@@ -1038,11 +1022,11 @@ function load_modeltype() {// {{{
1038
1022
  $.ajax({
1039
1023
  cache: false,
1040
1024
  dataType: 'xml',
1041
- url: $('body').attr('current-testsets') + "." + name + ".xml",
1025
+ url: $('body').attr('current-templates') + "." + name + ".xml",
1042
1026
  success: function(res){
1043
1027
  $.ajax({
1044
1028
  type: "PUT",
1045
- url: url + "/properties/values/attributes/modeltype",
1029
+ url: url + "/properties/attributes/modeltype",
1046
1030
  data: ({value: name}),
1047
1031
  success: function(){
1048
1032
  set_testset(res,false);
@@ -1057,116 +1041,25 @@ function load_modeltype() {// {{{
1057
1041
  }// }}}
1058
1042
 
1059
1043
  async function load_des(url,model) { //{{{
1060
- model = model.replace(/<\?[^\?]+\?>/,'');
1061
- var val = "<content>" + model + "</content>";
1062
1044
  return $.ajax({
1063
1045
  type: "PUT",
1064
- url: url + "/properties/values/description",
1065
- data: ({content: val}),
1046
+ url: url + "/properties/description/",
1047
+ contentType: 'text/xml',
1048
+ headers: {
1049
+ 'Content-ID': 'description',
1050
+ 'CPEE-Event-Source': myid
1051
+ },
1052
+ data: model,
1066
1053
  error: report_failure
1067
1054
  });
1068
1055
  } //}}}
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
1056
  async function load_testset_handlers(url,testset,vals) {// {{{
1164
1057
  var promises = [];
1165
1058
  $("testset > handlers > *",testset).each(async function(){
1166
1059
  var han = this;
1167
1060
  var suburl = $(han).attr('url');
1168
1061
  if ($.inArray(suburl,vals) == -1) {
1169
- var inp = "url="+encodeURIComponent(suburl);
1062
+ var inp = "url="+encodeURIComponent(suburl).replace(/~/,'%7E');
1170
1063
  $("*",han).each(function(){
1171
1064
  inp += "&topic=" + $(this).attr('topic');
1172
1065
  inp += "&" + this.nodeName + "=" + $(this).text();
@@ -1197,6 +1090,8 @@ function format_visual_remove(what,cls) {//{{{
1197
1090
  if (node_state[what][cls] == undefined)
1198
1091
  node_state[what][cls] = 0;
1199
1092
  node_state[what][cls] -= 1;
1093
+ if (node_state[what][cls] < 0)
1094
+ node_state[what][cls] = 0;
1200
1095
  format_visual_set(what);
1201
1096
  }//}}}
1202
1097
 
@@ -1280,6 +1175,7 @@ function format_visual_clear() {//{{{
1280
1175
  }
1281
1176
  });
1282
1177
  $('#votes').empty();
1178
+
1283
1179
  }//}}}
1284
1180
  function format_visual_vote_clear() {//{{{
1285
1181
  node_state = {};
@@ -1371,7 +1267,13 @@ function append_to_log(what,type,message) {//{{{
1371
1267
  message = message.replace(/:\"/g,': "');
1372
1268
  message = message.replace(/:\{/g,': {');
1373
1269
  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>");
1270
+ $("#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>");
1271
+ var dle = $("#dat_log").children();
1272
+ if (dle.length > 100) {
1273
+ dle.slice(100).each((k,ele) => {
1274
+ $(ele).remove();
1275
+ });
1276
+ }
1375
1277
  }//}}}
1376
1278
 
1377
1279
  function report_failure(){}
@@ -1387,11 +1289,16 @@ function ui_pos(e,bl) {
1387
1289
  $(coll).each(function(k,ele){
1388
1290
  vals += "<" + ele + ">at</" + ele + ">";
1389
1291
  });
1390
- vals = "<content>" + vals + "</content>";
1292
+ vals = "<positions xmlns='http://cpee.org/ns/properties/2.0'>" + vals + "</positions>";
1391
1293
  $.ajax({
1392
1294
  type: "PUT",
1393
- url: url + "/properties/values/positions/",
1394
- data: ({content: vals}),
1295
+ url: url + "/properties/positions/",
1296
+ contentType: 'application/xml',
1297
+ headers: {
1298
+ 'Content-ID': 'positions',
1299
+ 'CPEE-Event-Source': myid
1300
+ },
1301
+ data: vals,
1395
1302
  success: monitor_instance_pos,
1396
1303
  error: report_failure
1397
1304
  });