cpee 1.5.27 → 2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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
  });