cpee 1.5.27 → 2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (357) hide show
  1. checksums.yaml +4 -4
  2. data/{FEATURES → FEATURES.md} +7 -6
  3. data/INSTALL.md +1 -0
  4. data/{README → README.md} +3 -3
  5. data/Rakefile +1 -0
  6. data/cockpit/index.html +7 -7
  7. data/cockpit/js/details.js +13 -14
  8. data/cockpit/js/instance.js +186 -284
  9. data/cockpit/js/parameters.js +13 -3
  10. data/cockpit/js/ui.js +2 -2
  11. data/cockpit/rngs/attributes.rng +1 -1
  12. data/cockpit/rngs/dataelements.rng +1 -1
  13. data/cockpit/rngs/endpoints.rng +1 -1
  14. data/cockpit/templates.legacy/Async.xml +7 -7
  15. data/cockpit/templates.legacy/BCO.xml +7 -10
  16. data/cockpit/templates.legacy/BCS.xml +7 -10
  17. data/cockpit/templates.legacy/Centurio.xml +6 -6
  18. data/cockpit/templates.legacy/Concurrent.xml +6 -6
  19. data/cockpit/templates.legacy/Coopis Testset.xml +6 -6
  20. data/cockpit/templates.legacy/Endpoints and Data Manipulation.xml +6 -6
  21. data/cockpit/templates.legacy/ICSOC Testset.xml +6 -6
  22. data/cockpit/templates.legacy/Infinity.xml +3 -3
  23. data/cockpit/templates.legacy/Lego Boxer.xml +7 -7
  24. data/cockpit/templates.legacy/Lego Conveyor.xml +7 -7
  25. data/cockpit/templates.legacy/Lego Crane.xml +7 -7
  26. data/cockpit/templates.legacy/Lego Ejector.xml +7 -7
  27. data/cockpit/templates.legacy/Lego Full.xml +7 -7
  28. data/cockpit/templates.legacy/Lego Liddy.xml +7 -7
  29. data/cockpit/templates.legacy/Lego Plate.xml +7 -7
  30. data/cockpit/templates.legacy/Lego Transporter.xml +7 -7
  31. data/cockpit/templates.legacy/Lego_Part_1.xml +7 -7
  32. data/cockpit/templates.legacy/LgLinear.xml +6 -10
  33. data/cockpit/templates.legacy/Linear.xml +7 -7
  34. data/cockpit/templates.legacy/Log.xml +7 -7
  35. data/cockpit/templates.legacy/Mangler 1.xml +6 -6
  36. data/cockpit/templates.legacy/Mangler 2.xml +6 -6
  37. data/cockpit/templates.legacy/Manuel Labels.xml +7 -7
  38. data/cockpit/templates.legacy/Promise.xml +7 -7
  39. data/cockpit/templates.legacy/SOPROMO Test Sonification.xml +6 -6
  40. data/cockpit/templates.legacy/Subprocess.xml +56 -0
  41. data/cockpit/templates.legacy/Syncing P34 1.xml +8 -11
  42. data/cockpit/templates.legacy/Syncing P34 2.xml +8 -11
  43. data/cockpit/templates.legacy/Syncing P34 3.xml +8 -11
  44. data/cockpit/templates.legacy/Syncing P34.xml +8 -11
  45. data/cockpit/templates.legacy/TEST - Bad Loop.xml +6 -6
  46. data/cockpit/templates.legacy/TEST - Wrong Positions.xml +6 -6
  47. data/cockpit/templates.legacy/Take_5.xml +48 -0
  48. data/cockpit/templates.legacy/Update.xml +7 -7
  49. data/cockpit/templates.legacy/Worklist Parallel.xml +7 -7
  50. data/cockpit/templates.legacy/Worklist Test CPEE.xml +7 -7
  51. data/cockpit/templates.legacy/Worklist Test.xml +7 -7
  52. data/cockpit/templates.legacy/Worklist Test2.xml +7 -7
  53. data/cockpit/templates.legacy/convert_cpee2.rb +15 -0
  54. data/cockpit/templates.legacy/testsets.xml +1 -1
  55. data/cockpit/templates/BPM 2020 Manual Adjust.xml +18 -71
  56. data/cockpit/templates/BPM 2020 Solution Baseline.xml +17 -71
  57. data/cockpit/templates/BPM 2020 Solution NN.xml +25 -71
  58. data/cockpit/templates/BPM 2020 Solution View.xml +15 -71
  59. data/cockpit/templates/BPM 2020.xml +17 -6
  60. data/cockpit/templates/Coopis 2010.xml +16 -7
  61. data/cockpit/templates/IUPC arXiv:1104.3609 P34 1.xml +8 -11
  62. data/cockpit/templates/IUPC arXiv:1104.3609 P34 2.xml +8 -11
  63. data/cockpit/templates/IUPC arXiv:1104.3609 P34 3.xml +8 -11
  64. data/cockpit/templates/Worklist.xml +7 -7
  65. data/cockpit/templates/convert_cpee2.rb +15 -0
  66. data/cockpit/themes/compact/rngs/alternative.rng +25 -0
  67. data/cockpit/themes/compact/rngs/call.rng +18 -18
  68. data/cockpit/themes/compact/rngs/callmanipulate.rng +26 -26
  69. data/cockpit/themes/compact/rngs/choose.rng +14 -0
  70. data/cockpit/themes/compact/rngs/critical.rng +5 -0
  71. data/cockpit/themes/compact/rngs/escape.rng +1 -0
  72. data/cockpit/themes/compact/rngs/group.rng +3 -0
  73. data/cockpit/themes/compact/rngs/loop.rng +22 -0
  74. data/cockpit/themes/compact/rngs/manipulate.rng +9 -0
  75. data/cockpit/themes/compact/rngs/otherwise.rng +22 -0
  76. data/cockpit/themes/compact/rngs/parallel.rng +21 -0
  77. data/cockpit/themes/compact/rngs/parallel_branch.rng +8 -0
  78. data/cockpit/themes/compact/rngs/scripts.rng +10 -11
  79. data/cockpit/themes/compact/rngs/stop.rng +5 -0
  80. data/cockpit/themes/compact/rngs/terminate.rng +1 -0
  81. data/cockpit/themes/convert_cpee2.rb +8 -0
  82. data/cockpit/themes/default/rngs/alternative.rng +8 -8
  83. data/cockpit/themes/default/rngs/call.rng +85 -49
  84. data/cockpit/themes/default/rngs/callmanipulate.rng +103 -64
  85. data/cockpit/themes/default/rngs/choose.rng +5 -3
  86. data/cockpit/themes/default/rngs/critical.rng +2 -2
  87. data/cockpit/themes/default/rngs/escape.rng +1 -1
  88. data/cockpit/themes/default/rngs/group.rng +3 -3
  89. data/cockpit/themes/default/rngs/loop.rng +8 -8
  90. data/cockpit/themes/default/rngs/manipulate.rng +3 -3
  91. data/cockpit/themes/default/rngs/otherwise.rng +8 -8
  92. data/cockpit/themes/default/rngs/parallel.rng +14 -6
  93. data/cockpit/themes/default/rngs/parallel_branch.rng +2 -2
  94. data/cockpit/themes/default/rngs/scripts.rng +23 -0
  95. data/cockpit/themes/default/rngs/stop.rng +2 -2
  96. data/cockpit/themes/default/rngs/terminate.rng +1 -1
  97. data/cockpit/themes/extended/rngs/alternative.rng +25 -0
  98. data/cockpit/themes/extended/rngs/call.rng +18 -18
  99. data/cockpit/themes/extended/rngs/callmanipulate.rng +26 -26
  100. data/cockpit/themes/extended/rngs/choose.rng +14 -0
  101. data/cockpit/themes/extended/rngs/critical.rng +5 -0
  102. data/cockpit/themes/extended/rngs/escape.rng +1 -0
  103. data/cockpit/themes/extended/rngs/group.rng +3 -0
  104. data/cockpit/themes/extended/rngs/loop.rng +22 -0
  105. data/cockpit/themes/extended/rngs/manipulate.rng +9 -0
  106. data/cockpit/themes/extended/rngs/otherwise.rng +22 -0
  107. data/cockpit/themes/extended/rngs/parallel.rng +21 -0
  108. data/cockpit/themes/extended/rngs/parallel_branch.rng +8 -0
  109. data/cockpit/themes/extended/rngs/scripts.rng +10 -11
  110. data/cockpit/themes/extended/rngs/stop.rng +5 -0
  111. data/cockpit/themes/extended/rngs/terminate.rng +1 -0
  112. data/cockpit/themes/extended/theme.js +7 -6
  113. data/cockpit/themes/model/rngs/alternative.rng +1 -1
  114. data/cockpit/themes/model/rngs/call.rng +16 -16
  115. data/cockpit/themes/model/rngs/callmanipulate.rng +17 -17
  116. data/cockpit/themes/model/rngs/choose.rng +1 -1
  117. data/cockpit/themes/model/rngs/critical.rng +1 -1
  118. data/cockpit/themes/model/rngs/escape.rng +1 -1
  119. data/cockpit/themes/model/rngs/group.rng +1 -1
  120. data/cockpit/themes/model/rngs/loop.rng +1 -1
  121. data/cockpit/themes/model/rngs/manipulate.rng +1 -1
  122. data/cockpit/themes/model/rngs/otherwise.rng +1 -1
  123. data/cockpit/themes/model/rngs/parallel.rng +1 -1
  124. data/cockpit/themes/model/rngs/parallel_branch.rng +1 -1
  125. data/cockpit/themes/model/rngs/scripts.rng +3 -4
  126. data/cockpit/themes/model/rngs/stop.rng +1 -1
  127. data/cockpit/themes/model/rngs/terminate.rng +1 -1
  128. data/cockpit/themes/model/theme.js +7 -6
  129. data/cockpit/themes/packed/rngs/alternative.rng +25 -0
  130. data/cockpit/themes/packed/rngs/call.rng +18 -18
  131. data/cockpit/themes/packed/rngs/callmanipulate.rng +26 -26
  132. data/cockpit/themes/packed/rngs/choose.rng +14 -0
  133. data/cockpit/themes/packed/rngs/critical.rng +5 -0
  134. data/cockpit/themes/packed/rngs/escape.rng +1 -0
  135. data/cockpit/themes/packed/rngs/group.rng +3 -0
  136. data/cockpit/themes/packed/rngs/loop.rng +22 -0
  137. data/cockpit/themes/packed/rngs/manipulate.rng +9 -0
  138. data/cockpit/themes/packed/rngs/otherwise.rng +22 -0
  139. data/cockpit/themes/packed/rngs/parallel.rng +21 -0
  140. data/cockpit/themes/packed/rngs/parallel_branch.rng +8 -0
  141. data/cockpit/themes/packed/rngs/scripts.rng +10 -11
  142. data/cockpit/themes/packed/rngs/stop.rng +5 -0
  143. data/cockpit/themes/packed/rngs/terminate.rng +1 -0
  144. data/cockpit/themes/packed/theme.js +7 -6
  145. data/cockpit/themes/preset/rngs/alternative.rng +25 -0
  146. data/cockpit/themes/preset/rngs/call.rng +18 -18
  147. data/cockpit/themes/preset/rngs/callmanipulate.rng +26 -26
  148. data/cockpit/themes/preset/rngs/choose.rng +14 -0
  149. data/cockpit/themes/preset/rngs/critical.rng +5 -0
  150. data/cockpit/themes/preset/rngs/escape.rng +1 -0
  151. data/cockpit/themes/preset/rngs/group.rng +3 -0
  152. data/cockpit/themes/preset/rngs/loop.rng +22 -0
  153. data/cockpit/themes/preset/rngs/manipulate.rng +9 -0
  154. data/cockpit/themes/preset/rngs/otherwise.rng +22 -0
  155. data/cockpit/themes/preset/rngs/parallel.rng +21 -0
  156. data/cockpit/themes/preset/rngs/parallel_branch.rng +8 -0
  157. data/cockpit/themes/preset/rngs/scripts.rng +10 -11
  158. data/cockpit/themes/preset/rngs/stop.rng +5 -0
  159. data/cockpit/themes/preset/rngs/terminate.rng +1 -0
  160. data/cockpit/themes/preset/theme.js +7 -6
  161. data/cpee.gemspec +9 -10
  162. data/{log/topics.xml → lib/callbacks.xml} +16 -6
  163. data/lib/{engine → callbacks}/callbacks.rng +2 -8
  164. data/lib/cpee.xml +10 -4
  165. data/lib/cpee/attributes_helper.rb +27 -0
  166. data/lib/cpee/controller.rb +113 -596
  167. data/lib/cpee/implementation.rb +152 -191
  168. data/lib/cpee/implementation_callbacks.rb +77 -0
  169. data/lib/cpee/implementation_notifications.rb +189 -0
  170. data/lib/cpee/implementation_properties.rb +707 -0
  171. data/lib/cpee/{callback.rb → message.rb} +20 -18
  172. data/lib/cpee/persistence.rb +135 -0
  173. data/lib/cpee/statemachine.rb +20 -0
  174. data/lib/cpee/transform.rb +95 -0
  175. data/lib/engine.xml +1 -59
  176. data/lib/properties.xml +236 -0
  177. data/lib/properties/arbitrary.rng +26 -0
  178. data/lib/properties/attributes.rng +10 -0
  179. data/lib/properties/dataelements.rng +10 -0
  180. data/lib/properties/description.rng +8 -0
  181. data/lib/properties/dsl.rng +7 -0
  182. data/lib/properties/dslx.rng +8 -0
  183. data/lib/properties/endpoints.rng +10 -0
  184. data/lib/properties/handlerwrapper.rng +9 -0
  185. data/lib/properties/position.rng +15 -0
  186. data/lib/properties/positions.rng +10 -0
  187. data/lib/properties/properties.rng +29 -0
  188. data/lib/properties/set-properties.rng +25 -0
  189. data/lib/properties/set-some-properties.rng +45 -0
  190. data/lib/properties/simple.rng +8 -0
  191. data/lib/properties/state.rng +33 -0
  192. data/lib/properties/status.rng +12 -0
  193. data/lib/properties/t_attributes.rng +7 -0
  194. data/lib/properties/t_dataelements.rng +7 -0
  195. data/lib/properties/t_endpoints.rng +7 -0
  196. data/lib/properties/t_position.rng +7 -0
  197. data/lib/properties/t_positions.rng +7 -0
  198. data/lib/properties/t_simple.rng +7 -0
  199. data/lib/properties/t_status.rng +7 -0
  200. data/lib/properties/t_transformation.rng +7 -0
  201. data/lib/properties/transformation.rng +40 -0
  202. data/server/dev.rb +1 -0
  203. data/server/handlerwrappers/default.rb +40 -38
  204. data/server/resources/backend/README.md +17 -0
  205. data/server/resources/backend/instance.rb +23 -0
  206. data/server/resources/backend/instance.template +19 -0
  207. data/server/resources/backend/opts.yaml +6 -0
  208. data/server/resources/backend/run +29 -0
  209. data/server/resources/notifications/logging/subscription.xml +19 -0
  210. data/server/resources/properties.empty +38 -0
  211. data/server/resources/properties.init +11 -11
  212. data/server/resources/states.dot +19 -0
  213. data/server/resources/states.xml +49 -0
  214. data/server/resources/transformation_dslx.xsl +3 -12
  215. data/server/routing/end.rb +44 -0
  216. data/server/routing/forward-events.rb +59 -0
  217. data/server/routing/forward-votes.rb +108 -0
  218. data/server/routing/persist.rb +155 -0
  219. data/server/server.rb +1 -0
  220. data/tools/cpee +19 -15
  221. data/tools/instantiation/instantiation +0 -1
  222. data/tools/server/server.rb +0 -1
  223. metadata +77 -132
  224. data/INSTALL +0 -23
  225. data/cockpit/templates/convert_preset.rb +0 -32
  226. data/cockpit/templates/testsets.xml +0 -11
  227. data/cockpit/templates/transformations.xml +0 -4
  228. data/cockpit/themes/compact/rngs/alternative.rng +0 -1
  229. data/cockpit/themes/compact/rngs/choose.rng +0 -1
  230. data/cockpit/themes/compact/rngs/critical.rng +0 -1
  231. data/cockpit/themes/compact/rngs/escape.rng +0 -1
  232. data/cockpit/themes/compact/rngs/group.rng +0 -1
  233. data/cockpit/themes/compact/rngs/loop.rng +0 -1
  234. data/cockpit/themes/compact/rngs/manipulate.rng +0 -1
  235. data/cockpit/themes/compact/rngs/otherwise.rng +0 -1
  236. data/cockpit/themes/compact/rngs/parallel.rng +0 -1
  237. data/cockpit/themes/compact/rngs/parallel_branch.rng +0 -1
  238. data/cockpit/themes/compact/rngs/stop.rng +0 -1
  239. data/cockpit/themes/compact/rngs/terminate.rng +0 -1
  240. data/cockpit/themes/default/rngs/finalize.rng +0 -6
  241. data/cockpit/themes/default/rngs/update.rng +0 -6
  242. data/cockpit/themes/default/theme.js +0 -1286
  243. data/cockpit/themes/extended/rngs/alternative.rng +0 -1
  244. data/cockpit/themes/extended/rngs/choose.rng +0 -1
  245. data/cockpit/themes/extended/rngs/critical.rng +0 -1
  246. data/cockpit/themes/extended/rngs/escape.rng +0 -1
  247. data/cockpit/themes/extended/rngs/group.rng +0 -1
  248. data/cockpit/themes/extended/rngs/loop.rng +0 -1
  249. data/cockpit/themes/extended/rngs/manipulate.rng +0 -1
  250. data/cockpit/themes/extended/rngs/otherwise.rng +0 -1
  251. data/cockpit/themes/extended/rngs/parallel.rng +0 -1
  252. data/cockpit/themes/extended/rngs/parallel_branch.rng +0 -1
  253. data/cockpit/themes/extended/rngs/stop.rng +0 -1
  254. data/cockpit/themes/extended/rngs/terminate.rng +0 -1
  255. data/cockpit/themes/labels/rngs/alternative.rng +0 -25
  256. data/cockpit/themes/labels/rngs/call.rng +0 -81
  257. data/cockpit/themes/labels/rngs/callmanipulate.rng +0 -101
  258. data/cockpit/themes/labels/rngs/choose.rng +0 -12
  259. data/cockpit/themes/labels/rngs/critical.rng +0 -5
  260. data/cockpit/themes/labels/rngs/escape.rng +0 -1
  261. data/cockpit/themes/labels/rngs/finalize.rng +0 -6
  262. data/cockpit/themes/labels/rngs/group.rng +0 -3
  263. data/cockpit/themes/labels/rngs/loop.rng +0 -22
  264. data/cockpit/themes/labels/rngs/manipulate.rng +0 -9
  265. data/cockpit/themes/labels/rngs/otherwise.rng +0 -22
  266. data/cockpit/themes/labels/rngs/parallel.rng +0 -13
  267. data/cockpit/themes/labels/rngs/parallel_branch.rng +0 -8
  268. data/cockpit/themes/labels/rngs/stop.rng +0 -5
  269. data/cockpit/themes/labels/rngs/terminate.rng +0 -1
  270. data/cockpit/themes/labels/rngs/update.rng +0 -6
  271. data/cockpit/themes/labels/symbols/alternative.svg +0 -5
  272. data/cockpit/themes/labels/symbols/arrow.svg +0 -3
  273. data/cockpit/themes/labels/symbols/call.svg +0 -6
  274. data/cockpit/themes/labels/symbols/callmanipulate.svg +0 -8
  275. data/cockpit/themes/labels/symbols/choose.svg +0 -5
  276. data/cockpit/themes/labels/symbols/choose_exclusive.svg +0 -5
  277. data/cockpit/themes/labels/symbols/choose_inclusive.svg +0 -4
  278. data/cockpit/themes/labels/symbols/complex.svg +0 -8
  279. data/cockpit/themes/labels/symbols/critical.svg +0 -4
  280. data/cockpit/themes/labels/symbols/end.svg +0 -3
  281. data/cockpit/themes/labels/symbols/escape.svg +0 -5
  282. data/cockpit/themes/labels/symbols/event_end.svg +0 -3
  283. data/cockpit/themes/labels/symbols/loop.svg +0 -5
  284. data/cockpit/themes/labels/symbols/manipulate.svg +0 -4
  285. data/cockpit/themes/labels/symbols/otherwise.svg +0 -5
  286. data/cockpit/themes/labels/symbols/parallel.svg +0 -5
  287. data/cockpit/themes/labels/symbols/parallel_branch.svg +0 -5
  288. data/cockpit/themes/labels/symbols/parallel_branch_compact.svg +0 -4
  289. data/cockpit/themes/labels/symbols/parallel_branch_event.svg +0 -14
  290. data/cockpit/themes/labels/symbols/parallel_branch_normal.svg +0 -5
  291. data/cockpit/themes/labels/symbols/scripts.svg +0 -4
  292. data/cockpit/themes/labels/symbols/start.svg +0 -3
  293. data/cockpit/themes/labels/symbols/stop.svg +0 -5
  294. data/cockpit/themes/labels/symbols/terminate.svg +0 -4
  295. data/cockpit/themes/packed/rngs/alternative.rng +0 -1
  296. data/cockpit/themes/packed/rngs/choose.rng +0 -1
  297. data/cockpit/themes/packed/rngs/critical.rng +0 -1
  298. data/cockpit/themes/packed/rngs/escape.rng +0 -1
  299. data/cockpit/themes/packed/rngs/group.rng +0 -1
  300. data/cockpit/themes/packed/rngs/loop.rng +0 -1
  301. data/cockpit/themes/packed/rngs/manipulate.rng +0 -1
  302. data/cockpit/themes/packed/rngs/otherwise.rng +0 -1
  303. data/cockpit/themes/packed/rngs/parallel.rng +0 -1
  304. data/cockpit/themes/packed/rngs/parallel_branch.rng +0 -1
  305. data/cockpit/themes/packed/rngs/stop.rng +0 -1
  306. data/cockpit/themes/packed/rngs/terminate.rng +0 -1
  307. data/cockpit/themes/preset/rngs/alternative.rng +0 -1
  308. data/cockpit/themes/preset/rngs/choose.rng +0 -1
  309. data/cockpit/themes/preset/rngs/critical.rng +0 -1
  310. data/cockpit/themes/preset/rngs/escape.rng +0 -1
  311. data/cockpit/themes/preset/rngs/group.rng +0 -1
  312. data/cockpit/themes/preset/rngs/loop.rng +0 -1
  313. data/cockpit/themes/preset/rngs/manipulate.rng +0 -1
  314. data/cockpit/themes/preset/rngs/otherwise.rng +0 -1
  315. data/cockpit/themes/preset/rngs/parallel.rng +0 -1
  316. data/cockpit/themes/preset/rngs/parallel_branch.rng +0 -1
  317. data/cockpit/themes/preset/rngs/stop.rng +0 -1
  318. data/cockpit/themes/preset/rngs/terminate.rng +0 -1
  319. data/lib/cpee/empty_workflow.rb +0 -28
  320. data/lib/cpee/handler_notifications.rb +0 -47
  321. data/lib/cpee/handler_properties.rb +0 -50
  322. data/lib/cpee/instantiation.rb +0 -369
  323. data/lib/cpee/processtransformation/bpel/Repository/booking.bpel +0 -125
  324. data/lib/cpee/processtransformation/bpel/Repository/booking.wsdl +0 -72
  325. data/lib/cpee/processtransformation/bpel/Repository/booking/airline.wsdl +0 -71
  326. data/lib/cpee/processtransformation/bpel/Repository/booking/hotel.wsdl +0 -64
  327. data/lib/cpee/processtransformation/bpel/Repository/booking/report.wsdl +0 -71
  328. data/lib/cpee/processtransformation/bpel/bpel2wee.rb +0 -34
  329. data/lib/cpee/processtransformation/bpel/bpelserver.ru +0 -64
  330. data/lib/cpee/processtransformation/bpel/bpelserver.xml +0 -70
  331. data/lib/cpee/processtransformation/bpel/lib/BPEL_Transform.rb +0 -367
  332. data/lib/cpee/processtransformation/bpmn2.rb +0 -297
  333. data/lib/cpee/processtransformation/cpee.rb +0 -119
  334. data/lib/cpee/processtransformation/structures.rb +0 -465
  335. data/lib/cpee/processtransformation/target.rb +0 -50
  336. data/log/azure.rb +0 -10
  337. data/log/azure_logger.rb +0 -136
  338. data/log/chain.xml +0 -27
  339. data/log/elasticsearch.rb +0 -15
  340. data/log/elasticsearch_logging.rb +0 -377
  341. data/log/legacy/test_es.rb +0 -26
  342. data/log/legacy/test_split.rb +0 -211
  343. data/log/log.xml +0 -13
  344. data/log/non_tamp.rb +0 -156
  345. data/log/sic.rb +0 -64
  346. data/log/template.xes_xml +0 -23
  347. data/log/template.xes_yaml +0 -28
  348. data/log/trace.yaml +0 -17717
  349. data/log/trace_sic.yaml +0 -18343
  350. data/log/xes_xml.rb +0 -121
  351. data/log/xes_yaml.rb +0 -96
  352. data/server/handlerwrappers/soap.rb +0 -146
  353. data/server/resources/properties.schema.active +0 -139
  354. data/server/resources/properties.schema.finished +0 -139
  355. data/server/resources/properties.schema.inactive +0 -136
  356. data/server/transformation_dslx.xsl +0 -790
  357. data/test/callback.rb +0 -9
@@ -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!