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
@@ -0,0 +1,17 @@
1
+ * run is copied into every instance.
2
+ * opts.yaml is written on each start.
3
+ * instance.rb is written on each start.
4
+
5
+ ## What can you do to make it more robust?
6
+
7
+ Replace run with a program that actually compiles and runs instance.rb. Of
8
+ courses the transformation_* xslts would have to be adapted to create suitable
9
+ code. The compiled executable would just need to behave the same as the instance.rb,
10
+ dispersing all the same events through redis.
11
+
12
+ More suitable languages would be crystal and javascript, c++. Less suitable,
13
+ but doable, would be python, C. I.e., all languages that do not support multi-line
14
+ lambdas would produce much less readable code, thus the "Description" tab in
15
+ the cockpit would be garbage.
16
+
17
+ Definitely do tell me if you are interessted in doing something like this ;-)
@@ -0,0 +1,23 @@
1
+ class Instance < WEEL
2
+ handlerwrapper DefaultHandlerWrapper
3
+
4
+ endpoint :timeout => "http://gruppe.wst.univie.ac.at/~mangler/services/timeout.php"
5
+ data :x => ''
6
+ # search Position.new(:a1,:after,nil)
7
+
8
+ control flow do
9
+ call :a1, :timeout, parameters: { :label => "Step 1", :method => :post, :arguments => [⭐(:name => :timeout, :value => ->{ "2" })] }, finalize: <<-END
10
+ p 'xxx1'
11
+ data.x += \"a1,\"
12
+ END
13
+ call :a2, :timeout, parameters: { :label => "Step 2", :method => :post, :arguments => [⭐(:name => :timeout, :value => ->{ "4" })] }, finalize: <<-END
14
+ p 'xxx2'
15
+ data.x += \"a2,\"
16
+ END
17
+ call :a3, :timeout, parameters: { :label => "Step 3", :method => :post, :arguments => [⭐(:name => :timeout, :value => ->{ "4" })] }, finalize: <<-END
18
+ p 'xxx3'
19
+ data.x += \"a3,\"
20
+ END
21
+ end
22
+ end
23
+
@@ -0,0 +1,19 @@
1
+ class Instance < WEEL
2
+ handlerwrapper <%= handlerwrapper %>
3
+
4
+ <% for key, value in endpoints -%>
5
+ endpoint :<%= key %> => <%= CPEE::ValueHelper::parse(value).inspect %>
6
+ <% end -%>
7
+
8
+ <% for key, value in dataelements -%>
9
+ data :<%= key %> => <%= CPEE::ValueHelper::parse(value).inspect %>
10
+ <% end -%>
11
+
12
+ <% unless positions.nil? || positions.empty? -%>
13
+ search <% positions.each_with_index { |de,i| %><%= (i > 0 ? ', ' : '') %>Position.new(:<%= de[0] %>, :<%=de[1] %>, <%= de[2].nil? || de[2].strip.empty? ? 'nil' : '"' + de[2] + '"' %>)<% } %>
14
+ <% end -%>
15
+
16
+ control flow do
17
+ <%= dsl.strip.gsub(/\n/,"\n ") %>
18
+ end
19
+ end
@@ -0,0 +1,6 @@
1
+ :host: localhost
2
+ :url: http://localhost:8298/
3
+ :redis_path: /tmp/redis.sock
4
+ :redis_db: 3
5
+ :handlerwrappers: ../../handlerwrappers/
6
+
@@ -0,0 +1,29 @@
1
+ #!/usr/bin/ruby
2
+ require 'yaml'
3
+ opts = YAML::load_file(File.join(__dir__,'opts.yaml'))
4
+ opts[:pidf] = __FILE__ + '.pid'
5
+ opts[:pid] = Process.pid
6
+ require_relative '../../../lib/cpee/controller'
7
+
8
+ Dir[File.join(opts[:global_handlerwrappers],'*.rb')].each do |h|
9
+ require h
10
+ end unless opts[:global_handlerwrappers].nil? || opts[:global_handlerwrappers].strip == ''
11
+ Dir[File.join(opts[:handlerwrappers],'*.rb')].each do |h|
12
+ require h
13
+ end unless opts[:handlerwrappers].nil? || opts[:handlerwrappers].strip == ''
14
+
15
+ require_relative 'instance'
16
+ controller = CPEE::Controller.new(File.basename(__dir__).to_i, __dir__, opts)
17
+ controller.instance = Instance.new controller
18
+
19
+ File.write(opts[:pidf],opts[:pid])
20
+
21
+ %w{TERM HUP INT}.each do |sig|
22
+ Signal.trap(sig) do
23
+ puts "Caught #{sig}!"
24
+ controller.stop
25
+ File.unlink(opts[:pidf])
26
+ end
27
+ end
28
+
29
+ controller.start
@@ -0,0 +1,19 @@
1
+ <subscription xmlns="http://riddl.org/ns/common-patterns/notifications-producer/2.0" url="http://localhost:9299/">
2
+ <topic id="activity">
3
+ <event>calling</event>
4
+ <event>receiving</event>
5
+ <event>done</event>
6
+ </topic>
7
+ <topic id="dataelements">
8
+ <event>change</event>
9
+ </topic>
10
+ <topic id="endpoints">
11
+ <event>change</event>
12
+ </topic>
13
+ <topic id="attributes">
14
+ <event>change</event>
15
+ </topic>
16
+ <topic id="task">
17
+ <event>instantiation</event>
18
+ </topic>
19
+ </subscription>
@@ -0,0 +1,38 @@
1
+ <?xml version="1.0"?>
2
+ <!--
3
+ This file is part of CPEE.
4
+
5
+ CPEE is free software: you can redistribute it and/or modify it under the
6
+ terms of the GNU General Public License as published by the Free Software
7
+ Foundation, either version 3 of the License, or (at your option) any later
8
+ version.
9
+
10
+ CPEE is distributed in the hope that it will be useful, but WITHOUT ANY
11
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
12
+ PARTICULAR PURPOSE. See the GNU General Public License for more details.
13
+
14
+ You should have received a copy of the GNU General Public License along with
15
+ CPEE (file COPYING in the main directory). If not, see
16
+ <http://www.gnu.org/licenses/>.
17
+ -->
18
+
19
+ <properties xmlns="http://cpee.org/ns/properties/2.0">
20
+ <state changed="1970-01-01T00:00:00+00:00">ready</state>
21
+ <status>
22
+ <id>0</id>
23
+ <message>undefined</message>
24
+ </status>
25
+ <handlerwrapper>DefaultHandlerWrapper</handlerwrapper>
26
+ <positions/>
27
+ <dataelements/>
28
+ <endpoints/>
29
+ <attributes/>
30
+ <dsl/>
31
+ <dslx/>
32
+ <description/>
33
+ <transformation>
34
+ <description type='copy'/>
35
+ <dataelements type='none'/>
36
+ <endpoints type='none'/>
37
+ </transformation>
38
+ </properties>
@@ -16,27 +16,27 @@
16
16
  <http://www.gnu.org/licenses/>.
17
17
  -->
18
18
 
19
- <properties xmlns="http://riddl.org/ns/common-patterns/properties/1.0">
20
- <attributes>
21
- <info/>
22
- <modeltype>CPEE</modeltype>
23
- <theme>preset</theme>
24
- </attributes>
25
- <state>ready</state>
19
+ <properties xmlns="http://cpee.org/ns/properties/2.0">
20
+ <state changed="1970-01-01T00:00:00+00:00">ready</state>
21
+ <status>
22
+ <id>0</id>
23
+ <message>undefined</message>
24
+ </status>
26
25
  <handlerwrapper>DefaultHandlerWrapper</handlerwrapper>
27
26
  <positions/>
28
27
  <dataelements/>
29
28
  <endpoints>
30
29
  <timeout>http://gruppe.wst.univie.ac.at/~mangler/services/timeout.php</timeout>
31
30
  </endpoints>
31
+ <attributes>
32
+ <info/>
33
+ <modeltype>CPEE</modeltype>
34
+ <theme>preset</theme>
35
+ </attributes>
32
36
  <dsl/>
33
37
  <dslx>
34
38
  <description xmlns="http://cpee.org/ns/description/1.0"/>
35
39
  </dslx>
36
- <status>
37
- <id>0</id>
38
- <message>undefined</message>
39
- </status>
40
40
  <description>
41
41
  <description xmlns="http://cpee.org/ns/description/1.0"/>
42
42
  </description>
@@ -0,0 +1,19 @@
1
+ digraph States {
2
+ ready -> running;
3
+ ready -> simulating;
4
+ ready -> replaying;
5
+ ready -> abandoned;
6
+ running -> stopping;
7
+ stopped -> running;
8
+ stopped -> simulating;
9
+ stopped -> replaying;
10
+ stopped -> abandoned;
11
+
12
+ running -> finishing;
13
+ simulating -> ready;
14
+ simulating -> stopped;
15
+ replaying -> stopping;
16
+ replaying -> finishing;
17
+ finishing -> finished;
18
+ stopping -> stopped;
19
+ }
@@ -0,0 +1,49 @@
1
+ <states>
2
+ <!-- final states are "abandoned" and "finished" (no further observable or setable states) -->
3
+ <!-- children of setable and observable are source states, their respective children are possible target states -->
4
+
5
+ <setable>
6
+ <!-- the following states change through external input -->
7
+ <ready><!-- in this state you can set the following four states -->
8
+ <ready/>
9
+ <running/>
10
+ <simulating/>
11
+ <replaying/>
12
+ <abandoned/>
13
+ </ready>
14
+ <running><!-- in this state you can set the following state -->
15
+ <stopping/>
16
+ </running>
17
+ <stopped><!-- in this state you can set the following four states -->
18
+ <running/>
19
+ <simulating/>
20
+ <replaying/>
21
+ <abandoned/>
22
+ <stopped/>
23
+ </stopped>
24
+ </setable>
25
+
26
+ <observable>
27
+ <!-- the following states change through internal mechanisms -->
28
+ <running>
29
+ <stopping/>
30
+ <finishing/>
31
+ </running>
32
+ <simulating>
33
+ <ready/>
34
+ <stopped/>
35
+ </simulating>
36
+ <replaying>
37
+ <stopping/>
38
+ <finishing/>
39
+ </replaying>
40
+ <finishing>
41
+ <finished/>
42
+ </finishing>
43
+ <stopping>
44
+ <stopped/>
45
+ </stopping>
46
+ <abandoned/>
47
+ <finished/>
48
+ </observable>
49
+ </states>
@@ -507,11 +507,11 @@
507
507
  <xsl:text>nil</xsl:text>
508
508
  </xsl:when>
509
509
  <xsl:when test="child::node()[not(self::text())]">
510
- <!-- FUUUU, there is probably much more TODO. Updated Matthias und Juergen, we tested for ing-opcua/execute -->
510
+ <!-- FUUUU, there is probably much more TODO -->
511
511
  <xsl:choose>
512
- <xsl:when test="child::* and name(child::*)=concat(name(.),'_item') and count(child::*[not(name()=name(../child::*[1]))])=0">
512
+ <xsl:when test="child::*/child::* and count(child::*[not(name()=name(../child::*[1]))])=0">
513
513
  <xsl:text>"[ </xsl:text>
514
- <xsl:apply-templates select="*" mode="JSONArrayItem"/>
514
+ <xsl:apply-templates select="*" mode="JSON"/>
515
515
  <xsl:text>]"</xsl:text>
516
516
  </xsl:when>
517
517
  <xsl:otherwise>
@@ -655,15 +655,6 @@
655
655
  <xsl:otherwise><xsl:text> </xsl:text></xsl:otherwise>
656
656
  </xsl:choose>
657
657
  </xsl:template>
658
- <xsl:template match="*" mode="JSONArrayItem">
659
- <xsl:call-template name="JSONProperties">
660
- <xsl:with-param name="parent" select="'Yes'"></xsl:with-param>
661
- </xsl:call-template>
662
- <xsl:choose>
663
- <xsl:when test="following-sibling::*">, </xsl:when>
664
- <xsl:otherwise><xsl:text> </xsl:text></xsl:otherwise>
665
- </xsl:choose>
666
- </xsl:template>
667
658
 
668
659
  <!-- JSON Object Properties -->
669
660
  <xsl:template name="JSONProperties">
@@ -0,0 +1,44 @@
1
+ #!/usr/bin/ruby
2
+ #
3
+ # This file is part of CPEE.
4
+ #
5
+ # CPEE is free software: you can redistribute it and/or modify it under the terms
6
+ # of the GNU General Public License as published by the Free Software Foundation,
7
+ # either version 3 of the License, or (at your option) any later version.
8
+ #
9
+ # CPEE is distributed in the hope that it will be useful, but WITHOUT ANY
10
+ # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
11
+ # PARTICULAR PURPOSE. See the GNU General Public License for more details.
12
+ #
13
+ # You should have received a copy of the GNU General Public License along with
14
+ # CPEE (file COPYING in the main directory). If not, see
15
+ # <http://www.gnu.org/licenses/>.
16
+
17
+ require 'json'
18
+ require 'redis'
19
+ require 'daemonite'
20
+
21
+ Daemonite.new do |opts|
22
+ redis = Redis.new(path: "/tmp/redis.sock", db: 3)
23
+ pubsubredis = Redis.new(path: "/tmp/redis.sock", db: 3)
24
+
25
+ run do
26
+ pubsubredis.psubscribe('callback-end:*') do |on|
27
+ on.pmessage do |pat, what, message|
28
+ _, key = what.split(':')
29
+ index = message.index(' ')
30
+ instance = message[0...index]
31
+ redis.multi do |multi|
32
+ multi.srem("instance:#{instance}/callbacks",key)
33
+ multi.del("instance:#{instance}/callback/#{key}/uuid")
34
+ multi.del("instance:#{instance}/callback/#{key}/label")
35
+ multi.del("instance:#{instance}/callback/#{key}/position")
36
+ multi.del("instance:#{instance}/callback/#{key}/type")
37
+ end
38
+ rescue => e
39
+ puts e.message
40
+ puts e.backtrace
41
+ end
42
+ end
43
+ end
44
+ end.go!
@@ -0,0 +1,59 @@
1
+ #!/usr/bin/ruby
2
+ #
3
+ # This file is part of CPEE.
4
+ #
5
+ # CPEE is free software: you can redistribute it and/or modify it under the terms
6
+ # of the GNU General Public License as published by the Free Software Foundation,
7
+ # either version 3 of the License, or (at your option) any later version.
8
+ #
9
+ # CPEE is distributed in the hope that it will be useful, but WITHOUT ANY
10
+ # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
11
+ # PARTICULAR PURPOSE. See the GNU General Public License for more details.
12
+ #
13
+ # You should have received a copy of the GNU General Public License along with
14
+ # CPEE (file COPYING in the main directory). If not, see
15
+ # <http://www.gnu.org/licenses/>.
16
+
17
+ require 'redis'
18
+ require 'daemonite'
19
+ require 'riddl/client'
20
+
21
+ Daemonite.new do |opts|
22
+ redis = Redis.new(path: "/tmp/redis.sock", db: 3)
23
+ pubsubredis = Redis.new(path: "/tmp/redis.sock", db: 3)
24
+
25
+ run do
26
+ pubsubredis.psubscribe('event:*') do |on|
27
+ on.pmessage do |pat, what, message|
28
+ index = message.index(' ')
29
+ mess = message[index+1..-1]
30
+ instance = message[0...index]
31
+ type = pat[0..-3]
32
+ event = what[(type.length+1)..-1]
33
+ topic = ::File::dirname(event)
34
+ name = ::File::basename(event)
35
+ long = File.join(topic,type,name)
36
+ redis.smembers("instance:#{instance}/handlers").each do |key|
37
+ if redis.smembers("instance:#{instance}/handlers/#{key}").include? long
38
+ url = redis.get("instance:#{instance}/handlers/#{key}/url")
39
+ if url.nil? || url == ""
40
+ redis.publish("forward:#{instance}/#{key}",mess)
41
+ else
42
+ client = Riddl::Client.new(url,'http://riddl.org/ns/common-patterns/notifications-consumer/2.0/consumer.xml')
43
+ client.post [
44
+ Riddl::Parameter::Simple::new('type',type),
45
+ Riddl::Parameter::Simple::new('topic',topic),
46
+ Riddl::Parameter::Simple::new('event',name),
47
+ Riddl::Parameter::Complex::new('notification','application/json',mess)
48
+ ]
49
+ end
50
+ end
51
+ end
52
+ rescue => e
53
+ puts e.message
54
+ puts e.backtrace
55
+ p '-----------------'
56
+ end
57
+ end
58
+ end
59
+ end.go!
@@ -0,0 +1,108 @@
1
+ #!/usr/bin/ruby
2
+ #
3
+ # This file is part of CPEE.
4
+ #
5
+ # CPEE is free software: you can redistribute it and/or modify it under the terms
6
+ # of the GNU General Public License as published by the Free Software Foundation,
7
+ # either version 3 of the License, or (at your option) any later version.
8
+ #
9
+ # CPEE is distributed in the hope that it will be useful, but WITHOUT ANY
10
+ # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
11
+ # PARTICULAR PURPOSE. See the GNU General Public License for more details.
12
+ #
13
+ # You should have received a copy of the GNU General Public License along with
14
+ # CPEE (file COPYING in the main directory). If not, see
15
+ # <http://www.gnu.org/licenses/>.
16
+
17
+ require 'redis'
18
+ require 'daemonite'
19
+ require 'riddl/client'
20
+ require 'json'
21
+ require_relative '../../lib/cpee/message'
22
+
23
+ def persist_handler(instance,key,mess,redis) #{{{
24
+ redis.multi do |multi|
25
+ multi.sadd("instance:#{instance}/callbacks",key)
26
+ multi.set("instance:#{instance}/callback/#{key}/uuid",mess.dig('content','activity_uuid'))
27
+ multi.set("instance:#{instance}/callback/#{key}/label",mess.dig('content','label'))
28
+ multi.set("instance:#{instance}/callback/#{key}/position",mess.dig('content','activity'))
29
+ multi.set("instance:#{instance}/callback/#{key}/type",'vote')
30
+ end
31
+ end #}}}
32
+
33
+ def send_response(instance,key,url,value,redis) #{{{
34
+ CPEE::Message::send(
35
+ :'vote-response',
36
+ key,
37
+ url,
38
+ instance,
39
+ {},
40
+ {},
41
+ value,
42
+ redis
43
+ )
44
+ end #}}}
45
+
46
+ Daemonite.new do |opts|
47
+ redis = Redis.new(path: "/tmp/redis.sock", db: 3)
48
+ pubsubredis = Redis.new(path: "/tmp/redis.sock", db: 3)
49
+
50
+ run do
51
+ pubsubredis.psubscribe('vote:*') do |on|
52
+ on.pmessage do |pat, what, message|
53
+ index = message.index(' ')
54
+ mess = message[index+1..-1]
55
+
56
+ instance = message[0...index]
57
+ type = pat[0..-3]
58
+ event = what[(type.length+1)..-1]
59
+ topic = ::File::dirname(event)
60
+ name = ::File::basename(event)
61
+ long = File.join(topic,type,name)
62
+
63
+ redis.smembers("instance:#{instance}/handlers").each do |subscription_key|
64
+ if redis.smembers("instance:#{instance}/handlers/#{subscription_key}").include? long
65
+ m = JSON.parse(mess)
66
+ callback_key = m.dig('content','key')
67
+ url = redis.get("instance:#{instance}/handlers/#{subscription_key}/url")
68
+
69
+ if url.nil? || url == ""
70
+ persist_handler instance, callback_key, m, redis
71
+ redis.publish("forward:#{instance}/#{subscription_key}",mess)
72
+ else
73
+ client = Riddl::Client.new(url,'http://riddl.org/ns/common-patterns/notifications-consumer/2.0/consumer.xml')
74
+ callback = m['instance-url'] + '/callbacks/' + subscription_key
75
+ status, result, headers = (client.post [
76
+ Riddl::Header.new("CPEE-BASE",m['cpee']),
77
+ Riddl::Header.new("CPEE-INSTANCE",m['instance']),
78
+ Riddl::Header.new("CPEE-INSTANCE-URL",m['instance-url']),
79
+ Riddl::Header.new("CPEE-INSTANCE-UUID",m['instance-uuid']),
80
+ Riddl::Header.new("CPEE-CALLBACK",callback),
81
+ Riddl::Header.new("CPEE-CALLBACK-ID",subscription_key),
82
+ Riddl::Parameter::Simple::new('type',type),
83
+ Riddl::Parameter::Simple::new('topic',topic),
84
+ Riddl::Parameter::Simple::new('vote',name),
85
+ Riddl::Parameter::Simple::new('callback',callback),
86
+ Riddl::Parameter::Complex::new('notification','application/json',mess)
87
+ ] rescue [ 0, [], []])
88
+ if status >= 200 && status < 300
89
+ val = result[0].value.read
90
+ if (headers["CPEE_CALLBACK"] && headers["CPEE_CALLBACK"] == 'true') || val == 'callback'
91
+ persist_handler instance, callback_key, m, redis
92
+ else # they may send true or false
93
+ send_response instance, callback_key, m['cpee'], val, redis
94
+ end
95
+ else
96
+ send_response instance, callback_key, m['cpee'], true, redis
97
+ end
98
+ end
99
+ end
100
+ end
101
+ rescue => e
102
+ puts e.message
103
+ puts e.backtrace
104
+ p '-----------------'
105
+ end
106
+ end
107
+ end
108
+ end.go!