ruote 0.9.19 → 0.9.20

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 (401) hide show
  1. data/README.txt +16 -6
  2. data/examples/engine_template.rb +6 -43
  3. data/examples/quickstart.rb +87 -0
  4. data/examples/quotereporter.rb +42 -49
  5. data/examples/simple.rb +56 -0
  6. data/lib/openwfe.rb +20 -34
  7. data/lib/openwfe/contextual.rb +45 -36
  8. data/lib/openwfe/def.rb +21 -30
  9. data/lib/openwfe/engine.rb +17 -26
  10. data/lib/openwfe/engine/engine.rb +132 -397
  11. data/lib/openwfe/engine/expool_methods.rb +34 -122
  12. data/lib/openwfe/engine/file_persisted_engine.rb +39 -60
  13. data/lib/openwfe/engine/fs_engine.rb +54 -0
  14. data/lib/openwfe/engine/launch_methods.rb +245 -0
  15. data/lib/openwfe/engine/listener_methods.rb +128 -0
  16. data/lib/openwfe/engine/lookup_methods.rb +156 -0
  17. data/lib/openwfe/engine/participant_methods.rb +60 -52
  18. data/lib/openwfe/engine/status_methods.rb +102 -97
  19. data/lib/openwfe/engine/tc_engine.rb +55 -0
  20. data/lib/openwfe/engine/tt_engine.rb +55 -0
  21. data/lib/openwfe/engine/update_exp_methods.rb +46 -39
  22. data/lib/openwfe/expool/def_parser.rb +196 -0
  23. data/lib/openwfe/expool/errorjournal.rb +51 -219
  24. data/lib/openwfe/expool/errors.rb +69 -0
  25. data/lib/openwfe/expool/expool_pause_methods.rb +32 -43
  26. data/lib/openwfe/expool/expressionpool.rb +398 -594
  27. data/lib/openwfe/expool/expstorage.rb +68 -72
  28. data/lib/openwfe/expool/fs_expstorage.rb +302 -0
  29. data/lib/openwfe/expool/history.rb +54 -38
  30. data/lib/openwfe/expool/journal.rb +24 -38
  31. data/lib/openwfe/expool/journal_replay.rb +20 -36
  32. data/lib/openwfe/expool/representation.rb +62 -78
  33. data/lib/openwfe/expool/tc_expstorage.rb +239 -0
  34. data/lib/openwfe/expool/{threadedexpstorage.rb → threaded_expstorage.rb} +25 -53
  35. data/lib/openwfe/expool/tt_expstorage.rb +55 -0
  36. data/lib/openwfe/expool/wfidgen.rb +23 -43
  37. data/lib/openwfe/expool/yaml_errorjournal.rb +187 -0
  38. data/lib/openwfe/expressions/condition.rb +33 -58
  39. data/lib/openwfe/expressions/environment.rb +62 -76
  40. data/lib/openwfe/expressions/{expressionmap.rb → expression_map.rb} +40 -54
  41. data/lib/openwfe/expressions/expression_tree.rb +265 -0
  42. data/lib/openwfe/expressions/fe_cancel.rb +19 -39
  43. data/lib/openwfe/expressions/fe_command.rb +80 -84
  44. data/lib/openwfe/expressions/fe_concurrence.rb +250 -313
  45. data/lib/openwfe/expressions/fe_cron.rb +38 -55
  46. data/lib/openwfe/expressions/fe_cursor.rb +49 -74
  47. data/lib/openwfe/expressions/fe_define.rb +44 -90
  48. data/lib/openwfe/expressions/fe_do.rb +83 -70
  49. data/lib/openwfe/expressions/fe_equals.rb +17 -35
  50. data/lib/openwfe/expressions/fe_error.rb +103 -0
  51. data/lib/openwfe/expressions/fe_filter.rb +27 -44
  52. data/lib/openwfe/expressions/fe_filter_definition.rb +37 -54
  53. data/lib/openwfe/expressions/fe_fqv.rb +46 -65
  54. data/lib/openwfe/expressions/fe_http.rb +17 -31
  55. data/lib/openwfe/expressions/fe_if.rb +39 -55
  56. data/lib/openwfe/expressions/fe_iterator.rb +25 -42
  57. data/lib/openwfe/expressions/fe_listen.rb +71 -115
  58. data/lib/openwfe/expressions/fe_losfor.rb +34 -43
  59. data/lib/openwfe/expressions/fe_misc.rb +70 -109
  60. data/lib/openwfe/expressions/fe_participant.rb +61 -99
  61. data/lib/openwfe/expressions/fe_reserve.rb +28 -59
  62. data/lib/openwfe/expressions/fe_save.rb +62 -81
  63. data/lib/openwfe/expressions/fe_sequence.rb +45 -70
  64. data/lib/openwfe/expressions/fe_set.rb +22 -40
  65. data/lib/openwfe/expressions/fe_step.rb +22 -37
  66. data/lib/openwfe/expressions/fe_subprocess.rb +34 -55
  67. data/lib/openwfe/expressions/fe_timeout.rb +28 -44
  68. data/lib/openwfe/expressions/fe_wait.rb +142 -36
  69. data/lib/openwfe/expressions/fe_when.rb +22 -46
  70. data/lib/openwfe/expressions/filter.rb +24 -43
  71. data/lib/openwfe/expressions/flowexpression.rb +211 -192
  72. data/lib/openwfe/expressions/iterator.rb +24 -39
  73. data/lib/openwfe/expressions/merge.rb +30 -52
  74. data/lib/openwfe/expressions/raw.rb +168 -384
  75. data/lib/openwfe/expressions/rprocdef.rb +79 -76
  76. data/lib/openwfe/expressions/time.rb +89 -103
  77. data/lib/openwfe/expressions/timeout.rb +98 -92
  78. data/lib/openwfe/expressions/value.rb +43 -69
  79. data/lib/openwfe/extras/engine/ar_engine.rb +58 -0
  80. data/lib/openwfe/extras/engine/db_persisted_engine.rb +37 -57
  81. data/lib/openwfe/extras/engine/dm_engine.rb +59 -0
  82. data/lib/openwfe/extras/expool/ar_expstorage.rb +337 -0
  83. data/lib/openwfe/extras/expool/db_errorjournal.rb +165 -0
  84. data/lib/openwfe/extras/expool/db_expstorage.rb +73 -0
  85. data/lib/openwfe/extras/expool/db_history.rb +163 -0
  86. data/lib/openwfe/extras/expool/dm_expstorage.rb +327 -0
  87. data/lib/openwfe/extras/listeners/jabber_listeners.rb +102 -0
  88. data/lib/openwfe/extras/listeners/jabberlisteners.rb +26 -0
  89. data/lib/openwfe/extras/listeners/sqs_listeners.rb +128 -0
  90. data/lib/openwfe/extras/misc/activityfeed.rb +19 -34
  91. data/lib/openwfe/extras/misc/jabber_common.rb +122 -0
  92. data/lib/openwfe/extras/participants/active_participants.rb +724 -0
  93. data/lib/openwfe/extras/participants/active_resource_participants.rb +213 -0
  94. data/lib/openwfe/extras/participants/activeparticipants.rb +1 -747
  95. data/lib/openwfe/extras/participants/ar_participants.rb +285 -0
  96. data/lib/openwfe/extras/participants/atomfeed_participants.rb +19 -34
  97. data/lib/openwfe/extras/participants/atompub_participants.rb +19 -34
  98. data/lib/openwfe/extras/participants/basecamp_participants.rb +17 -31
  99. data/lib/openwfe/extras/participants/{csvparticipants.rb → decision_participants.rb} +17 -31
  100. data/lib/openwfe/extras/participants/jabber_participants.rb +147 -0
  101. data/lib/openwfe/extras/participants/jabberparticipants.rb +3 -0
  102. data/lib/openwfe/extras/participants/sqs_participants.rb +108 -0
  103. data/lib/openwfe/extras/participants/{twitterparticipants.rb → twitter_participants.rb} +20 -34
  104. data/lib/openwfe/extras/singlecon.rb +56 -0
  105. data/lib/openwfe/filterdef.rb +83 -65
  106. data/lib/openwfe/flowexpressionid.rb +99 -62
  107. data/lib/openwfe/listeners/listener.rb +54 -65
  108. data/lib/openwfe/listeners/listeners.rb +52 -56
  109. data/lib/openwfe/logging.rb +17 -31
  110. data/lib/openwfe/omixins.rb +25 -58
  111. data/lib/openwfe/participants.rb +1 -34
  112. data/lib/openwfe/participants/{enoparticipants.rb → mail_participants.rb} +33 -47
  113. data/lib/openwfe/participants/participant.rb +37 -36
  114. data/lib/openwfe/participants/participant_map.rb +245 -0
  115. data/lib/openwfe/participants/participants.rb +43 -69
  116. data/lib/openwfe/participants/{soapparticipants.rb → soap_participants.rb} +22 -36
  117. data/lib/openwfe/participants/{storeparticipants.rb → store_participants.rb} +57 -62
  118. data/lib/openwfe/{storage/yamlfilestorage.rb → participants/yaml_filestorage.rb} +35 -64
  119. data/lib/openwfe/representations.rb +770 -0
  120. data/lib/openwfe/rudefinitions.rb +17 -29
  121. data/lib/openwfe/service.rb +21 -32
  122. data/lib/openwfe/tools/flowtracer.rb +21 -35
  123. data/lib/openwfe/util/dollar.rb +48 -61
  124. data/lib/openwfe/util/irb.rb +19 -34
  125. data/lib/openwfe/util/json.rb +55 -0
  126. data/lib/openwfe/util/observable.rb +22 -41
  127. data/lib/openwfe/util/ometa.rb +21 -35
  128. data/lib/openwfe/util/treechecker.rb +17 -31
  129. data/lib/openwfe/util/workqueue.rb +45 -44
  130. data/lib/openwfe/util/xml.rb +80 -234
  131. data/lib/openwfe/utils.rb +67 -110
  132. data/lib/openwfe/version.rb +19 -27
  133. data/lib/openwfe/workitem.rb +119 -84
  134. data/lib/openwfe/worklist/storelocks.rb +17 -33
  135. data/lib/openwfe/worklist/storeparticipant.rb +1 -39
  136. data/lib/openwfe/worklist/worklist.rb +17 -31
  137. data/lib/pooltool.ru +311 -0
  138. data/test/{extras/active_connection.rb → ar_test_connection.rb} +26 -11
  139. data/test/bm/fatxml.rb +70 -0
  140. data/test/bm/load_26c.rb +79 -0
  141. data/test/dm_test_connection.rb +11 -0
  142. data/test/extras/base.rb +3 -0
  143. data/test/extras/et_0_sqs.rb +37 -0
  144. data/test/extras/et_jabber_test.rb +226 -0
  145. data/test/extras/test.rb +16 -0
  146. data/test/functional/base.rb +198 -0
  147. data/test/functional/db_ft_0_ar_participants.rb +136 -0
  148. data/test/functional/eft_0_process_definition.rb +34 -0
  149. data/test/functional/eft_10_unset.rb +60 -0
  150. data/test/functional/eft_11_sleep.rb +95 -0
  151. data/test/functional/eft_12_wait.rb +57 -0
  152. data/test/functional/eft_13_cursor.rb +139 -0
  153. data/test/functional/eft_14_loop.rb +36 -0
  154. data/test/functional/eft_15_undo.rb +77 -0
  155. data/test/functional/eft_16_redo.rb +88 -0
  156. data/test/functional/eft_1_print.rb +57 -0
  157. data/test/functional/eft_2_sequence.rb +47 -0
  158. data/test/functional/eft_3_equals.rb +98 -0
  159. data/test/functional/eft_4_if.rb +96 -0
  160. data/test/functional/eft_5_eval.rb +89 -0
  161. data/test/functional/eft_6_reval.rb +101 -0
  162. data/test/functional/eft_7_exp.rb +47 -0
  163. data/test/functional/eft_8_log.rb +50 -0
  164. data/test/functional/eft_9_set.rb +132 -0
  165. data/test/functional/engine_helper.rb +122 -0
  166. data/test/functional/ft_0_vars_at_launch.rb +27 -0
  167. data/test/functional/ft_1_process_status.rb +46 -0
  168. data/test/functional/ft_2_file_listener.rb +45 -0
  169. data/test/functional/ft_3_on_cancel.rb +171 -0
  170. data/test/functional/ft_4_on_error.rb +220 -0
  171. data/test/functional/ft_5_process_uri.rb +82 -0
  172. data/test/functional/ft_6_process_status.rb +62 -0
  173. data/test/functional/ft_7_parameters.rb +103 -0
  174. data/test/functional/ft_8_dollar.rb +53 -0
  175. data/test/functional/ft_9_register_participants.rb +119 -0
  176. data/test/functional/restart_base.rb +43 -0
  177. data/test/functional/rft_0_sleep.rb +76 -0
  178. data/test/functional/test.rb +24 -0
  179. data/test/path_helper.rb +12 -0
  180. data/test/test.rb +11 -1
  181. data/test/{rutest_utils.rb → test_helper.rb} +8 -31
  182. data/test/unit/test.rb +19 -0
  183. data/test/{fei_test.rb → unit/ut_0_fei.rb} +34 -49
  184. data/test/unit/ut_10_lookup_attribute.rb +86 -0
  185. data/test/unit/ut_11_filter.rb +124 -0
  186. data/test/{condition_test.rb → unit/ut_12_conditional.rb} +33 -40
  187. data/test/unit/ut_13_xmlutil.rb +57 -0
  188. data/test/unit/ut_14_var_field_lookup.rb +85 -0
  189. data/test/{fe_lookup_att_test.rb → unit/ut_15_fe_att_lookup.rb} +14 -21
  190. data/test/{storage_test.rb → unit/ut_16_expstorage_findexp.rb} +3 -9
  191. data/test/unit/ut_17_representations.rb +330 -0
  192. data/test/{hash_test.rb → unit/ut_17b_representations_hash.rb} +25 -21
  193. data/test/{slock_test.rb → unit/ut_18_store_lock.rb} +17 -20
  194. data/test/{wfid_test.rb → unit/ut_1_wfid.rb} +2 -73
  195. data/test/unit/ut_2_utils.rb +53 -0
  196. data/test/unit/ut_3_expmap.rb +65 -0
  197. data/test/{clone_test.rb → unit/ut_4_fulldup.rb} +41 -46
  198. data/test/{obs_test.rb → unit/ut_5_observable.rb} +9 -19
  199. data/test/unit/ut_6_treechecker.rb +101 -0
  200. data/test/unit/ut_7_parser_ruby.rb +344 -0
  201. data/test/unit/ut_7b_parser_ruby.rb +56 -0
  202. data/test/{description_test.rb → unit/ut_8_parser_description.rb} +8 -19
  203. data/test/unit/ut_9_workitem.rb +72 -0
  204. metadata +117 -234
  205. data/lib/openwfe/exceptions.rb +0 -51
  206. data/lib/openwfe/expool/parser.rb +0 -278
  207. data/lib/openwfe/expool/paused_error.rb +0 -77
  208. data/lib/openwfe/expool/yamlexpstorage.rb +0 -224
  209. data/lib/openwfe/expressions/fe_sleep.rb +0 -173
  210. data/lib/openwfe/extras/expool/dberrorjournal.rb +0 -189
  211. data/lib/openwfe/extras/expool/dbexpstorage.rb +0 -355
  212. data/lib/openwfe/extras/expool/dbhistory.rb +0 -135
  213. data/lib/openwfe/extras/listeners/sqslisteners.rb +0 -146
  214. data/lib/openwfe/extras/participants/sqsparticipants.rb +0 -125
  215. data/lib/openwfe/listeners/socketlisteners.rb +0 -272
  216. data/lib/openwfe/orest/definitions.rb +0 -113
  217. data/lib/openwfe/orest/osocket.rb +0 -148
  218. data/lib/openwfe/orest/xmlcodec.rb +0 -682
  219. data/lib/openwfe/participants/participantmap.rb +0 -249
  220. data/lib/openwfe/participants/socketparticipants.rb +0 -202
  221. data/lib/openwfe/storage/yamlcustom.rb +0 -106
  222. data/lib/openwfe/worklist/oldrest.rb +0 -244
  223. data/test/README.txt +0 -27
  224. data/test/back_0916_test.rb +0 -109
  225. data/test/bm/bm_1_xml_vs_prog.rb +0 -59
  226. data/test/bm/bm_2_step.rb +0 -109
  227. data/test/bm/ft_0f_5ms.rb +0 -35
  228. data/test/bm/ft_26_load.rb +0 -208
  229. data/test/bm/ft_26b_load.rb +0 -84
  230. data/test/bm/ft_26c_load.rb +0 -102
  231. data/test/bm/ft_recu.rb +0 -71
  232. data/test/concurrence_test.rb +0 -77
  233. data/test/console_test.rb +0 -12
  234. data/test/cron_ltest.rb +0 -15
  235. data/test/eno_test.rb +0 -76
  236. data/test/expmap_test.rb +0 -54
  237. data/test/expool_20031219_0916.tgz +0 -0
  238. data/test/extras/README.txt +0 -5
  239. data/test/extras/active_with_engine_test.rb +0 -140
  240. data/test/extras/activityfeed_test.rb +0 -85
  241. data/test/extras/ap_0_test.rb +0 -287
  242. data/test/extras/ap_1_test.rb +0 -53
  243. data/test/extras/ap_test_base.rb +0 -24
  244. data/test/extras/atomfeedp_test.rb +0 -113
  245. data/test/extras/atompubp_test.rb +0 -91
  246. data/test/extras/basecamp_test.rb +0 -53
  247. data/test/extras/db_errorjournal_utest.rb +0 -75
  248. data/test/extras/db_expstorage_utest.rb +0 -171
  249. data/test/extras/db_history_0_test.rb +0 -58
  250. data/test/extras/ft_19_csv.rb +0 -58
  251. data/test/extras/ft_71_b14008.rb +0 -85
  252. data/test/extras/sqs_test.rb +0 -57
  253. data/test/extras/twitter_test.rb +0 -62
  254. data/test/file_persisted_engine_test.rb +0 -64
  255. data/test/file_persistence_test.rb +0 -135
  256. data/test/filep_cancel_test.rb +0 -123
  257. data/test/filter_test.rb +0 -109
  258. data/test/flowtestbase.rb +0 -339
  259. data/test/ft_0.rb +0 -68
  260. data/test/ft_0b_sequence.rb +0 -36
  261. data/test/ft_0c_testname.rb +0 -33
  262. data/test/ft_0d_participant.rb +0 -30
  263. data/test/ft_0e_multibody.rb +0 -34
  264. data/test/ft_10_loop.rb +0 -133
  265. data/test/ft_11_ppd.rb +0 -411
  266. data/test/ft_11b_ppd.rb +0 -54
  267. data/test/ft_12_blockparticipant.rb +0 -97
  268. data/test/ft_13_eno.rb +0 -52
  269. data/test/ft_14_subprocess.rb +0 -88
  270. data/test/ft_14b_subprocess.rb +0 -192
  271. data/test/ft_14c_subprocess.rb +0 -68
  272. data/test/ft_15_iterator.rb +0 -216
  273. data/test/ft_15b_iterator.rb +0 -74
  274. data/test/ft_16_fqv.rb +0 -73
  275. data/test/ft_17_condition.rb +0 -84
  276. data/test/ft_18_pname.rb +0 -56
  277. data/test/ft_1_unset.rb +0 -175
  278. data/test/ft_1b_unset.rb +0 -39
  279. data/test/ft_20_cron.rb +0 -53
  280. data/test/ft_21_cron.rb +0 -87
  281. data/test/ft_21b_cron_pause.rb +0 -82
  282. data/test/ft_22_history.rb +0 -78
  283. data/test/ft_23_when.rb +0 -77
  284. data/test/ft_23b_when.rb +0 -70
  285. data/test/ft_23c_wait.rb +0 -80
  286. data/test/ft_23d_cww.rb +0 -58
  287. data/test/ft_24_def.rb +0 -44
  288. data/test/ft_25_cancel.rb +0 -92
  289. data/test/ft_27_getflowpos.rb +0 -143
  290. data/test/ft_28_fileparticipant.rb +0 -63
  291. data/test/ft_29_httprb.rb +0 -106
  292. data/test/ft_2_concurrence.rb +0 -137
  293. data/test/ft_2b_concurrence.rb +0 -188
  294. data/test/ft_2c_concurrence.rb +0 -64
  295. data/test/ft_30_socketlistener.rb +0 -203
  296. data/test/ft_31_flowname.rb +0 -39
  297. data/test/ft_32_journal.rb +0 -91
  298. data/test/ft_32c_journal.rb +0 -102
  299. data/test/ft_32d_journal.rb +0 -81
  300. data/test/ft_33_description.rb +0 -107
  301. data/test/ft_34_cancelwfid.rb +0 -80
  302. data/test/ft_35_localdefs.rb +0 -77
  303. data/test/ft_36_subprocids.rb +0 -97
  304. data/test/ft_37_pnames.rb +0 -70
  305. data/test/ft_38_tag.rb +0 -127
  306. data/test/ft_38b_tag.rb +0 -161
  307. data/test/ft_38c_tag.rb +0 -100
  308. data/test/ft_38d_tag.rb +0 -53
  309. data/test/ft_39_reserve.rb +0 -63
  310. data/test/ft_39b_reserve.rb +0 -84
  311. data/test/ft_3_equals.rb +0 -170
  312. data/test/ft_3b_lookup_vf.rb +0 -83
  313. data/test/ft_40_defined.rb +0 -61
  314. data/test/ft_41_case.rb +0 -110
  315. data/test/ft_42_environments.rb +0 -75
  316. data/test/ft_43_pat10.rb +0 -85
  317. data/test/ft_44_save.rb +0 -70
  318. data/test/ft_44b_restore.rb +0 -212
  319. data/test/ft_45_citerator.rb +0 -214
  320. data/test/ft_45b_citerator.rb +0 -77
  321. data/test/ft_46_pparams.rb +0 -62
  322. data/test/ft_47_filter.rb +0 -160
  323. data/test/ft_48_fe_filter.rb +0 -88
  324. data/test/ft_49_condition.rb +0 -133
  325. data/test/ft_4_misc.rb +0 -232
  326. data/test/ft_50_xml_attribute.rb +0 -152
  327. data/test/ft_51_stack.rb +0 -55
  328. data/test/ft_52_obs_participant.rb +0 -123
  329. data/test/ft_53_null_noop_participant.rb +0 -62
  330. data/test/ft_54_listen.rb +0 -288
  331. data/test/ft_54b_listen.rb +0 -66
  332. data/test/ft_54c_listen.rb +0 -99
  333. data/test/ft_55_ptimeout.rb +0 -58
  334. data/test/ft_56_timeout.rb +0 -59
  335. data/test/ft_57_a.rb +0 -148
  336. data/test/ft_58_ejournal.rb +0 -154
  337. data/test/ft_58b_ejournal.rb +0 -82
  338. data/test/ft_59_ps.rb +0 -212
  339. data/test/ft_5_time.rb +0 -118
  340. data/test/ft_60_ecancel.rb +0 -161
  341. data/test/ft_61_elsub.rb +0 -51
  342. data/test/ft_62_procparticipant.rb +0 -71
  343. data/test/ft_63_pause.rb +0 -137
  344. data/test/ft_64_alias.rb +0 -101
  345. data/test/ft_65_stringlaunch.rb +0 -59
  346. data/test/ft_66_subforget.rb +0 -70
  347. data/test/ft_67_schedlaunch.rb +0 -115
  348. data/test/ft_68_ifparticipant.rb +0 -70
  349. data/test/ft_69_cancelmissing.rb +0 -53
  350. data/test/ft_6_lambda.rb +0 -64
  351. data/test/ft_70_lookupvar.rb +0 -55
  352. data/test/ft_71_log.rb +0 -60
  353. data/test/ft_72_lookup_processes.rb +0 -79
  354. data/test/ft_73_cancel_sub.rb +0 -139
  355. data/test/ft_74_block_and_workitem_dup.rb +0 -63
  356. data/test/ft_75_ruby_attributes.rb +0 -89
  357. data/test/ft_76_merge_isolate.rb +0 -88
  358. data/test/ft_77_segments.rb +0 -35
  359. data/test/ft_78_eval.rb +0 -150
  360. data/test/ft_79_tticket.rb +0 -187
  361. data/test/ft_79b_tticket.rb +0 -172
  362. data/test/ft_79c_outcome.rb +0 -56
  363. data/test/ft_7_lose.rb +0 -104
  364. data/test/ft_7b_lose.rb +0 -78
  365. data/test/ft_80_spname.rb +0 -91
  366. data/test/ft_81_exp.rb +0 -60
  367. data/test/ft_82_trecu.rb +0 -52
  368. data/test/ft_83_badpause.rb +0 -58
  369. data/test/ft_84_updateexp.rb +0 -198
  370. data/test/ft_84b_subrepr.rb +0 -72
  371. data/test/ft_85_dolhash.rb +0 -43
  372. data/test/ft_86_dollar_fv.rb +0 -68
  373. data/test/ft_87_define.rb +0 -74
  374. data/test/ft_88_http.rb +0 -100
  375. data/test/ft_8_forget.rb +0 -44
  376. data/test/ft_9_cursor.rb +0 -154
  377. data/test/ft_9b_cursor.rb +0 -105
  378. data/test/ft_tests.rb +0 -130
  379. data/test/hparticipant_test.rb +0 -168
  380. data/test/lookup_att_test.rb +0 -90
  381. data/test/lookup_vf_test.rb +0 -94
  382. data/test/misc_test.rb +0 -94
  383. data/test/nut_0_irb.rb +0 -20
  384. data/test/param_test.rb +0 -290
  385. data/test/participant_test.rb +0 -101
  386. data/test/pending.rb +0 -23
  387. data/test/ps_representation.rb +0 -133
  388. data/test/rake_ltest.rb +0 -38
  389. data/test/rake_qtest.rb +0 -68
  390. data/test/raw_prog_test.rb +0 -407
  391. data/test/restart_cron_test.rb +0 -136
  392. data/test/restart_paused_test.rb +0 -103
  393. data/test/restart_sleep_test.rb +0 -140
  394. data/test/restart_tests.rb +0 -18
  395. data/test/restart_when_test.rb +0 -112
  396. data/test/ruby_procdef_test.rb +0 -132
  397. data/test/sec_test.rb +0 -206
  398. data/test/timeout_test.rb +0 -105
  399. data/test/treechecker_test.rb +0 -111
  400. data/test/util_xml_test.rb +0 -112
  401. data/test/wi_test.rb +0 -75
data/README.txt CHANGED
@@ -1,26 +1,36 @@
1
- = OpenWFEru
1
+
2
+ = Ruote (OpenWFEru)
2
3
 
3
4
  == Overview
4
5
 
5
- OpenWFEru is an open source workflow and BPM engine written in Ruby.
6
+ Ruote is an open source workflow engine written in Ruby.
6
7
 
7
8
  "Ruote" is the nickname of the engine/system, as "OpenWFEru" is quite hard to spell.
8
9
 
9
10
  The quickstart is at : http://openwferu.rubyforge.org/quickstart.html
10
11
 
11
12
 
13
+ == License
14
+
15
+ is the MIT one.
16
+
17
+
12
18
  == Links
13
19
 
14
20
  http://openwferu.rubyforge.org
15
21
  http://rubyforge.org/projects/openwferu
16
22
 
23
+ http://jmettraux.wordpress.com (blog)
24
+
17
25
 
18
26
  == feedback
19
27
 
20
- user mailing list : http://groups.google.com/group/openwferu-users
21
- developers mailing list : http://groups.google.com/group/openwferu-dev
28
+ mailing list : http://groups.google.com/group/openwferu-users
29
+
30
+ issue tracker : http://rubyforge.org/tracker/?atid=10023&group_id=2609&func=browse
31
+
32
+ irc : irc.freenode.net #ruote
22
33
 
23
- issue tracker : http://rubyforge.org/tracker/?atid=10023&group_id=2609&func=browse
24
34
 
25
- irc : irc.freenode.net #ruote
35
+ author : jmettraux@gmail.com
26
36
 
@@ -1,13 +1,12 @@
1
1
 
2
2
  require 'rubygems'
3
3
  #
4
- # if OpenWFEru was installed via 'gem'
4
+ # if ruote was installed via sudo gem install ruote
5
5
 
6
6
  #
7
- # setting up an OpenWFEru engine, step by step
7
+ # setting up a ruote engine, step by step
8
8
 
9
- require 'openwfe/engine/engine'
10
- require 'openwfe/engine/file_persisted_engine'
9
+ require 'openwfe/engine/fs_engine'
11
10
  require 'openwfe/participants/participants'
12
11
 
13
12
 
@@ -90,17 +89,11 @@ require 'openwfe/participants/participants'
90
89
  # might be ideal for an embedded workflow engine with short lived
91
90
  # process definitions to run
92
91
 
93
- #engine = OpenWFE::FilePersistedEngine.new
94
- #engine = OpenWFE::FilePersistedEngine.new(application_context)
92
+ engine = OpenWFE::FsPersistedEngine.new
93
+ #engine = OpenWFE::FsPersistedEngine.new(application_context)
95
94
  #
96
95
  # a file persisted engine, slow, used only within unit tests
97
96
  # do not use
98
-
99
- engine = OpenWFE::CachedFilePersistedEngine.new
100
- #engine = OpenWFE::CachedFilePersistedEngine.new(application_context)
101
- #
102
- # a file persisted engine, with an in-memory cache.
103
- # use that
104
97
  #
105
98
  # persistence is done by default under ./work/
106
99
 
@@ -135,24 +128,6 @@ end
135
128
  # dumps all the process history in a file name "history.log"
136
129
  # in the work directory
137
130
 
138
- # -- process journaling
139
-
140
- #require 'openwfe/expool/journal'
141
- #engine.init_service("journal", Journal)
142
- #
143
- # activates 'journaling',
144
- #
145
- # see http://openwferu.rubyforge.org/journal.html
146
- #
147
- # Journaling has a cost in terms of performace.
148
- # Journaling should be used only in case you might want to migrate
149
- # [segments of] running processes.
150
- #
151
- #engine.application_context[:keep_journals] = true
152
- #
153
- # if set to true, the journal of terminated processes will be kept
154
- # (but moved by default to ./work/journal/done/)
155
-
156
131
 
157
132
  #
158
133
  # === some LISTENERS
@@ -163,18 +138,6 @@ end
163
138
 
164
139
  #require 'openwfe/listeners/listeners'
165
140
 
166
- #sl = OpenWFE::SocketListener.new(
167
- # "socket_listener", @engine.application_context, 7008)
168
- #engine.add_workitem_listener(sl)
169
- #
170
- # adding a simple SocketListener on port 7008
171
-
172
- #require 'openwfe/listeners/socketlisteners'
173
- #
174
- #engine.add_workitem_listener(OpenWFE::SocketListener)
175
- #
176
- # adding a SocketListener on the default port 7007
177
-
178
141
  #engine.add_workitem_listener(OpenWFE::FileListener, "500")
179
142
  #
180
143
  # listening for workitems (coming as within YAML files dropped in the
@@ -235,7 +198,7 @@ end
235
198
  # the workitem to it over TCP
236
199
 
237
200
 
238
- engine.reschedule
201
+ engine.reload
239
202
  #
240
203
  # this method has to be called after all the participants have been
241
204
  # added, it looks for temporal expressions (sleep, cron, ...) to
@@ -0,0 +1,87 @@
1
+
2
+ require 'rubygems'
3
+ require 'openwfe/engine' # sudo gem install ruote
4
+ require 'atom/feed' # sudo gem install atom-tools
5
+
6
+ #
7
+ # starting a transient engine (no need to make it persistent)
8
+
9
+
10
+ engine = OpenWFE::Engine.new(:definition_in_launchitem_allowed => true)
11
+
12
+ #
13
+ # a process that fetches the latest pictures from flickr.com and submits
14
+ # them concurrently to three users for review
15
+
16
+ class MyProcess < OpenWFE::ProcessDefinition
17
+
18
+ sequence do
19
+
20
+ get_pictures
21
+
22
+ concurrence :merge_type => 'mix' do
23
+ # pass the picture list to three users concurrently
24
+ # make sure to let their choice appear in the final workitem
25
+ # at the end of the concurrence
26
+
27
+ user_alice
28
+ user_bob
29
+ user_charly
30
+ end
31
+
32
+ show_results
33
+ # display the pictures chosen by the users
34
+ end
35
+ end
36
+
37
+ #
38
+ # fetching the flickr.com pictures via Atom
39
+
40
+ engine.register_participant :get_pictures do |workitem|
41
+
42
+ feed = Atom::Feed.new(
43
+ "http://api.flickr.com/services/feeds/photos_public.gne"+
44
+ "?tags=#{workitem.tags.join(',')}&format=atom")
45
+ feed.update!
46
+ workitem.pictures = feed.entries.inject([]) do |a, entry|
47
+ a << [ entry.title, entry.authors.first.name, entry.links.first.href ]
48
+ end
49
+ end
50
+
51
+ #
52
+ # the users (well, here, just randomly picking a picture)
53
+
54
+ engine.register_participant 'user-.*' do |workitem|
55
+
56
+ workitem.fields[workitem.participant_name] =
57
+ workitem.pictures[(rand * workitem.pictures.length).to_i]
58
+ end
59
+
60
+ #
61
+ # the final participant, it displays the user choices
62
+
63
+ engine.register_participant :show_results do |workitem|
64
+ puts
65
+ puts ' users selected those images : '
66
+ puts
67
+ workitem.attributes.each do |k, v|
68
+ next unless k.match(/^user-.*$/)
69
+ puts "- #{k} :: #{v.last}"
70
+ end
71
+ puts
72
+ end
73
+
74
+ #
75
+ # launching the process, requesting pictures tagged 'cat' and 'fish'
76
+
77
+ li = OpenWFE::LaunchItem.new(MyProcess)
78
+ li.tags = [ 'cat', 'fish' ]
79
+
80
+ fei = engine.launch(li)
81
+
82
+ #
83
+ # workflow engines are asynchronous beasts, have to wait for them
84
+ # (here we wait for a particular process)
85
+
86
+ engine.wait_for(fei)
87
+
@@ -6,9 +6,8 @@
6
6
  require 'rubygems'
7
7
 
8
8
  require 'openwfe/engine/engine'
9
- require 'openwfe/expressions/raw_prog'
10
9
  require 'openwfe/participants/soapparticipants'
11
- require 'openwfe/participants/atomparticipants'
10
+ require 'openwfe/extras/participants/atomfeed_participants'
12
11
 
13
12
 
14
13
  #
@@ -18,50 +17,42 @@ require 'openwfe/participants/atomparticipants'
18
17
  # define the flow as a Ruby class
19
18
 
20
19
  class QuoteLookupFlow < OpenWFE::ProcessDefinition
21
- def make
22
- process_definition :name => "quote_lookup", :revision => "0.1" do
23
- sequence do
24
-
25
- #
26
- # lookup quotes
27
-
28
- iterator :on_field_value => "symbols", :to_field => "symbol" do
29
- sequence do
30
-
31
- set \
32
- :field => "quote_${f:__ip__}_name",
33
- :field_value => "symbol"
34
-
35
- participant :quote_service
36
-
37
- set \
38
- :field => "quote_${f:__ip__}_value",
39
- :field_value => "__result__"
40
- end
41
- end
42
-
43
- #
44
- # update feed
45
-
46
- set :field => "atom_entry_title" do
47
- "quote feed at ${r:Time.now}"
48
- end
49
- #
50
- # wrapping some ruby code for eval at runtime
51
- # with ${r: ruby code ... }
52
-
53
- participant :feed
54
-
55
- #participant :ref => "puts_workitem"
56
- #participant :ref => :puts_workitem
57
- #participant "puts_workitem"
58
- #participant :puts_workitem
59
- puts_workitem
60
- #
61
- # the five notations are equivalent
62
- end
63
- end
64
- end
20
+ sequence do
21
+
22
+ #
23
+ # lookup quotes
24
+
25
+ iterator :on_field_value => "symbols", :to_field => "symbol" do
26
+ sequence do
27
+
28
+ set :field => "quote_${f:__ip__}_name", :field_value => "symbol"
29
+
30
+ participant :quote_service
31
+
32
+ set :field => "quote_${f:__ip__}_value", :field_value => "__result__"
33
+ end
34
+ end
35
+
36
+ #
37
+ # update feed
38
+
39
+ set :field => "atom_entry_title" do
40
+ "quote feed at ${r:Time.now}"
41
+ end
42
+ #
43
+ # wrapping some ruby code for eval at runtime
44
+ # with ${r: ruby code ... }
45
+
46
+ participant :feed
47
+
48
+ #participant :ref => "puts_workitem"
49
+ #participant :ref => :puts_workitem
50
+ #participant "puts_workitem"
51
+ #participant :puts_workitem
52
+ puts_workitem
53
+ #
54
+ # the five notations are equivalent
55
+ end
65
56
  end
66
57
 
67
58
  #
@@ -69,7 +60,7 @@ end
69
60
  #
70
61
  # a simple in memory engine, no persistence whatsoever for now.
71
62
 
72
- engine = OpenWFE::Engine.new
63
+ engine = OpenWFE::Engine.new({ :definition_in_launchitem_allowed => true })
73
64
 
74
65
  #
75
66
  # The Participants
@@ -95,7 +86,7 @@ engine.register_participant("quote_service", quote_service)
95
86
  #
96
87
  # The feed is outputted in the current working directory ./atom_feed.xml
97
88
  #
98
- feed = OpenWFE::AtomParticipant.new(10) do
89
+ feed = OpenWFE::Extras::AtomFeedParticipant.new(10) do
99
90
  | flow_expression, participant, workitem |
100
91
 
101
92
  #
@@ -134,7 +125,7 @@ end
134
125
  #
135
126
  # launching (not lunching)
136
127
 
137
- launchitem = LaunchItem.new(QuoteLookupFlow)
128
+ launchitem = OpenWFE::LaunchItem.new(QuoteLookupFlow)
138
129
  #
139
130
  # Passing the process definition class as the unique
140
131
  # LaunchItem parameter
@@ -155,3 +146,5 @@ engine.launch(launchitem)
155
146
  # sleep (3600) # one hour
156
147
  # end
157
148
 
149
+ engine.join
150
+
@@ -0,0 +1,56 @@
1
+
2
+ require 'rubygems'
3
+ require 'openwfe/engine' # sudo gem install ruote
4
+
5
+ #
6
+ # define a process, just a sequence, from Alice to Bob
7
+
8
+ #process_definition = OpenWFE.process_definition :name => 'test' do
9
+ class Pdef < OpenWFE::ProcessDefinition
10
+ sequence do
11
+ participant 'alice'
12
+ participant 'bob'
13
+ end
14
+ end
15
+
16
+ #
17
+ # instantiate a ruote engine, the default (transient) one is OK.
18
+ # allow it to fetch process definitions from lauchitems.
19
+ #
20
+ # more info about engines and persistence flavour at
21
+ #
22
+ # http://openwferu.rubyforge.org/persistence.html
23
+
24
+ engine = OpenWFE::Engine.new(:definition_in_launchitem_allowed => true)
25
+
26
+ #
27
+ # register two very basic participants 'alice' and 'bob',
28
+ # use a BlockParticipant (simply wrapping some ruby code inside of a
29
+ # participant).
30
+ #
31
+ # more info about participants at
32
+ #
33
+ # http://openwferu.rubyforge.org/participants.html
34
+
35
+ engine.register_participant 'alice' do |workitem|
36
+ puts '~alice~'
37
+ workitem.fields['message'] = 'hello from Alice !'
38
+ end
39
+ engine.register_participant 'bob' do |workitem|
40
+ puts '~bob~'
41
+ puts "the message says '#{workitem.fields['message']}'"
42
+ end
43
+
44
+ #
45
+ # launch the process (let the engine interpret the process definition and
46
+ # create a process instance)
47
+
48
+ #fei = engine.launch(process_definition)
49
+ fei = engine.launch(Pdef)
50
+
51
+ #
52
+ # wait for the process instance to terminate before exiting this tiny ruby
53
+ # program
54
+
55
+ engine.wait_for(fei)
56
+
@@ -1,41 +1,27 @@
1
- #
2
1
  #--
3
2
  # Copyright (c) 2005-2007, John Mettraux and Alain Hoang, OpenWFE.org
4
- # All rights reserved.
5
- #
6
- # Redistribution and use in source and binary forms, with or without
7
- # modification, are permitted provided that the following conditions are met:
8
- #
9
- # . Redistributions of source code must retain the above copyright notice, this
10
- # list of conditions and the following disclaimer.
11
- #
12
- # . Redistributions in binary form must reproduce the above copyright notice,
13
- # this list of conditions and the following disclaimer in the documentation
14
- # and/or other materials provided with the distribution.
15
3
  #
16
- # . Neither the name of the "OpenWFE" nor the names of its contributors may be
17
- # used to endorse or promote products derived from this software without
18
- # specific prior written permission.
19
- #
20
- # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21
- # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22
- # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23
- # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
24
- # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
25
- # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
26
- # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
27
- # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
28
- # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
29
- # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
30
- # POSSIBILITY OF SUCH DAMAGE.
4
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
5
+ # of this software and associated documentation files (the "Software"), to deal
6
+ # in the Software without restriction, including without limitation the rights
7
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8
+ # copies of the Software, and to permit persons to whom the Software is
9
+ # furnished to do so, subject to the following conditions:
10
+ #
11
+ # The above copyright notice and this permission notice shall be included in
12
+ # all copies or substantial portions of the Software.
13
+ #
14
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
20
+ # THE SOFTWARE.
21
+ #
22
+ # Made in Japan.
31
23
  #++
32
- #
33
- # = openwferu -- Open Workflow Engine in Ruby
34
- #
35
- # This is the main file for the openwferu engine. It is normally
36
- # referenced as a library via a require statement.
37
- #
38
24
 
39
25
  require 'openwfe/engine/engine'
40
- #require 'openwfe/engine/file_persisted_engine'
26
+ require 'openwfe/engine/fs_engine'
41
27