ruote 0.9.18 → 0.9.19

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 (323) hide show
  1. data/README.txt +2 -0
  2. data/examples/about_state.rb +29 -29
  3. data/examples/bigflow.rb +9 -9
  4. data/examples/csv_weather.rb +4 -4
  5. data/examples/engine_template.rb +141 -129
  6. data/examples/flowtracing.rb +8 -8
  7. data/examples/homeworkreview.rb +15 -15
  8. data/examples/kotoba.rb +9 -9
  9. data/examples/mano_tracker.rb +63 -63
  10. data/examples/openwferu.rb +22 -20
  11. data/examples/quotereporter.rb +79 -79
  12. data/lib/openwfe/contextual.rb +72 -72
  13. data/lib/openwfe/def.rb +21 -21
  14. data/lib/openwfe/engine.rb +19 -19
  15. data/lib/openwfe/engine/engine.rb +578 -614
  16. data/lib/openwfe/engine/expool_methods.rb +144 -115
  17. data/lib/openwfe/engine/file_persisted_engine.rb +77 -77
  18. data/lib/openwfe/engine/participant_methods.rb +96 -96
  19. data/lib/openwfe/engine/status_methods.rb +271 -247
  20. data/lib/openwfe/engine/update_exp_methods.rb +69 -69
  21. data/lib/openwfe/exceptions.rb +25 -25
  22. data/lib/openwfe/expool/errorjournal.rb +334 -348
  23. data/lib/openwfe/expool/expool_pause_methods.rb +98 -0
  24. data/lib/openwfe/expool/expressionpool.rb +793 -800
  25. data/lib/openwfe/expool/expstorage.rb +284 -313
  26. data/lib/openwfe/expool/history.rb +193 -105
  27. data/lib/openwfe/expool/journal.rb +163 -163
  28. data/lib/openwfe/expool/journal_replay.rb +228 -228
  29. data/lib/openwfe/expool/parser.rb +178 -142
  30. data/lib/openwfe/{orest/exception.rb → expool/paused_error.rb} +49 -32
  31. data/lib/openwfe/expool/representation.rb +59 -59
  32. data/lib/openwfe/expool/threadedexpstorage.rb +137 -134
  33. data/lib/openwfe/expool/wfidgen.rb +289 -287
  34. data/lib/openwfe/expool/yamlexpstorage.rb +154 -154
  35. data/lib/openwfe/expressions/condition.rb +175 -168
  36. data/lib/openwfe/expressions/environment.rb +165 -165
  37. data/lib/openwfe/expressions/expressionmap.rb +135 -131
  38. data/lib/openwfe/expressions/fe_cancel.rb +68 -68
  39. data/lib/openwfe/expressions/fe_command.rb +190 -190
  40. data/lib/openwfe/expressions/fe_concurrence.rb +531 -531
  41. data/lib/openwfe/expressions/fe_cron.rb +152 -197
  42. data/lib/openwfe/expressions/fe_cursor.rb +152 -186
  43. data/lib/openwfe/expressions/fe_define.rb +118 -118
  44. data/lib/openwfe/expressions/fe_do.rb +109 -109
  45. data/lib/openwfe/expressions/fe_equals.rb +219 -219
  46. data/lib/openwfe/expressions/fe_filter.rb +98 -98
  47. data/lib/openwfe/expressions/fe_filter_definition.rb +122 -122
  48. data/lib/openwfe/expressions/fe_fqv.rb +203 -203
  49. data/lib/openwfe/expressions/fe_http.rb +212 -0
  50. data/lib/openwfe/expressions/fe_if.rb +214 -214
  51. data/lib/openwfe/expressions/fe_iterator.rb +91 -91
  52. data/lib/openwfe/expressions/fe_listen.rb +268 -268
  53. data/lib/openwfe/expressions/fe_losfor.rb +73 -73
  54. data/lib/openwfe/expressions/fe_misc.rb +343 -351
  55. data/lib/openwfe/expressions/fe_participant.rb +206 -206
  56. data/lib/openwfe/expressions/fe_reserve.rb +153 -142
  57. data/lib/openwfe/expressions/fe_save.rb +226 -226
  58. data/lib/openwfe/expressions/fe_sequence.rb +66 -56
  59. data/lib/openwfe/expressions/fe_set.rb +80 -80
  60. data/lib/openwfe/expressions/fe_sleep.rb +132 -125
  61. data/lib/openwfe/expressions/fe_step.rb +113 -111
  62. data/lib/openwfe/expressions/fe_subprocess.rb +139 -136
  63. data/lib/openwfe/expressions/fe_timeout.rb +74 -78
  64. data/lib/openwfe/expressions/fe_wait.rb +48 -49
  65. data/lib/openwfe/expressions/fe_when.rb +106 -106
  66. data/lib/openwfe/expressions/filter.rb +60 -60
  67. data/lib/openwfe/expressions/flowexpression.rb +618 -612
  68. data/lib/openwfe/expressions/iterator.rb +158 -158
  69. data/lib/openwfe/expressions/merge.rb +53 -53
  70. data/lib/openwfe/expressions/raw.rb +396 -397
  71. data/lib/openwfe/expressions/rprocdef.rb +261 -266
  72. data/lib/openwfe/expressions/time.rb +238 -243
  73. data/lib/openwfe/expressions/timeout.rb +135 -135
  74. data/lib/openwfe/expressions/value.rb +55 -55
  75. data/lib/openwfe/extras/engine/db_persisted_engine.rb +94 -0
  76. data/lib/openwfe/extras/expool/dberrorjournal.rb +189 -0
  77. data/lib/openwfe/extras/expool/dbexpstorage.rb +355 -0
  78. data/lib/openwfe/extras/expool/dbhistory.rb +135 -0
  79. data/lib/openwfe/extras/listeners/sqslisteners.rb +146 -0
  80. data/lib/openwfe/extras/misc/activityfeed.rb +264 -0
  81. data/lib/openwfe/extras/misc/basecamp.rb +485 -0
  82. data/lib/openwfe/extras/participants/activeparticipants.rb +749 -0
  83. data/lib/openwfe/extras/participants/atomfeed_participants.rb +173 -0
  84. data/lib/openwfe/extras/participants/atompub_participants.rb +267 -0
  85. data/lib/openwfe/extras/participants/basecamp_participants.rb +87 -0
  86. data/lib/openwfe/extras/participants/csvparticipants.rb +127 -0
  87. data/lib/openwfe/extras/participants/sqsparticipants.rb +125 -0
  88. data/lib/openwfe/extras/participants/twitterparticipants.rb +176 -0
  89. data/lib/openwfe/filterdef.rb +191 -191
  90. data/lib/openwfe/flowexpressionid.rb +271 -269
  91. data/lib/openwfe/listeners/listener.rb +61 -61
  92. data/lib/openwfe/listeners/listeners.rb +81 -81
  93. data/lib/openwfe/listeners/socketlisteners.rb +189 -189
  94. data/lib/openwfe/logging.rb +74 -74
  95. data/lib/openwfe/omixins.rb +55 -54
  96. data/lib/openwfe/orest/definitions.rb +90 -90
  97. data/lib/openwfe/orest/osocket.rb +91 -91
  98. data/lib/openwfe/orest/xmlcodec.rb +471 -459
  99. data/lib/openwfe/participants.rb +19 -19
  100. data/lib/openwfe/participants/enoparticipants.rb +187 -187
  101. data/lib/openwfe/participants/participant.rb +100 -100
  102. data/lib/openwfe/participants/participantmap.rb +170 -170
  103. data/lib/openwfe/participants/participants.rb +316 -316
  104. data/lib/openwfe/participants/soapparticipants.rb +90 -90
  105. data/lib/openwfe/participants/socketparticipants.rb +143 -143
  106. data/lib/openwfe/participants/storeparticipants.rb +198 -198
  107. data/lib/openwfe/rexml.rb +44 -0
  108. data/lib/openwfe/rudefinitions.rb +87 -91
  109. data/lib/openwfe/service.rb +65 -65
  110. data/lib/openwfe/storage/yamlcustom.rb +71 -71
  111. data/lib/openwfe/storage/yamlfilestorage.rb +190 -190
  112. data/lib/openwfe/tools/flowtracer.rb +41 -45
  113. data/lib/openwfe/util/dollar.rb +125 -139
  114. data/lib/openwfe/util/irb.rb +42 -42
  115. data/lib/openwfe/util/observable.rb +93 -99
  116. data/lib/openwfe/util/ometa.rb +36 -36
  117. data/lib/openwfe/util/treechecker.rb +122 -0
  118. data/lib/openwfe/util/workqueue.rb +73 -73
  119. data/lib/openwfe/util/xml.rb +285 -279
  120. data/lib/openwfe/utils.rb +415 -442
  121. data/lib/openwfe/version.rb +1 -1
  122. data/lib/openwfe/workitem.rb +444 -437
  123. data/lib/openwfe/worklist/oldrest.rb +161 -161
  124. data/lib/openwfe/worklist/storelocks.rb +218 -218
  125. data/lib/openwfe/worklist/storeparticipant.rb +19 -19
  126. data/lib/openwfe/worklist/worklist.rb +223 -223
  127. data/test/back_0916_test.rb +57 -59
  128. data/test/bm/bm_1_xml_vs_prog.rb +25 -22
  129. data/test/bm/bm_2_step.rb +81 -81
  130. data/test/bm/ft_0f_5ms.rb +13 -13
  131. data/test/bm/ft_26_load.rb +177 -179
  132. data/test/bm/ft_26b_load.rb +57 -59
  133. data/test/bm/ft_26c_load.rb +70 -65
  134. data/test/bm/ft_recu.rb +51 -51
  135. data/test/clone_test.rb +145 -99
  136. data/test/concurrence_test.rb +41 -41
  137. data/test/condition_test.rb +104 -90
  138. data/test/description_test.rb +46 -45
  139. data/test/eno_test.rb +36 -36
  140. data/test/expmap_test.rb +26 -26
  141. data/test/extras/README.txt +5 -0
  142. data/test/extras/active_connection.rb +48 -0
  143. data/test/extras/active_with_engine_test.rb +140 -0
  144. data/test/extras/activityfeed_test.rb +85 -0
  145. data/test/extras/ap_0_test.rb +287 -0
  146. data/test/extras/ap_1_test.rb +53 -0
  147. data/test/extras/ap_test_base.rb +24 -0
  148. data/test/extras/atomfeedp_test.rb +113 -0
  149. data/test/extras/atompubp_test.rb +91 -0
  150. data/test/extras/basecamp_test.rb +53 -0
  151. data/test/extras/db_errorjournal_utest.rb +75 -0
  152. data/test/extras/db_expstorage_utest.rb +171 -0
  153. data/test/extras/db_history_0_test.rb +58 -0
  154. data/test/extras/ft_19_csv.rb +58 -0
  155. data/test/extras/ft_71_b14008.rb +85 -0
  156. data/test/extras/sqs_test.rb +57 -0
  157. data/test/extras/twitter_test.rb +62 -0
  158. data/test/fe_lookup_att_test.rb +41 -41
  159. data/test/fei_test.rb +131 -131
  160. data/test/file_persisted_engine_test.rb +30 -30
  161. data/test/file_persistence_test.rb +112 -111
  162. data/test/filep_cancel_test.rb +58 -58
  163. data/test/filter_test.rb +67 -67
  164. data/test/flowtestbase.rb +207 -219
  165. data/test/ft_0.rb +35 -35
  166. data/test/ft_0b_sequence.rb +15 -15
  167. data/test/ft_0c_testname.rb +12 -12
  168. data/test/ft_0d_participant.rb +9 -9
  169. data/test/ft_0e_multibody.rb +11 -11
  170. data/test/ft_10_loop.rb +103 -104
  171. data/test/ft_11_ppd.rb +285 -289
  172. data/test/ft_11b_ppd.rb +26 -26
  173. data/test/ft_12_blockparticipant.rb +57 -57
  174. data/test/ft_13_eno.rb +31 -31
  175. data/test/ft_14_subprocess.rb +45 -45
  176. data/test/ft_14b_subprocess.rb +107 -107
  177. data/test/ft_14c_subprocess.rb +33 -33
  178. data/test/ft_15_iterator.rb +127 -127
  179. data/test/ft_15b_iterator.rb +41 -41
  180. data/test/ft_16_fqv.rb +44 -44
  181. data/test/ft_17_condition.rb +48 -48
  182. data/test/ft_18_pname.rb +26 -26
  183. data/test/ft_1_unset.rb +140 -140
  184. data/test/ft_1b_unset.rb +17 -17
  185. data/test/ft_20_cron.rb +33 -33
  186. data/test/ft_21_cron.rb +51 -51
  187. data/test/ft_21b_cron_pause.rb +41 -41
  188. data/test/ft_22_history.rb +45 -41
  189. data/test/ft_23_when.rb +51 -51
  190. data/test/ft_23b_when.rb +43 -43
  191. data/test/ft_23c_wait.rb +48 -48
  192. data/test/ft_23d_cww.rb +28 -28
  193. data/test/ft_24_def.rb +15 -15
  194. data/test/ft_25_cancel.rb +57 -54
  195. data/test/ft_27_getflowpos.rb +79 -83
  196. data/test/ft_28_fileparticipant.rb +25 -25
  197. data/test/ft_29_httprb.rb +57 -57
  198. data/test/ft_2_concurrence.rb +99 -97
  199. data/test/ft_2b_concurrence.rb +132 -132
  200. data/test/ft_2c_concurrence.rb +37 -37
  201. data/test/ft_30_socketlistener.rb +133 -133
  202. data/test/ft_31_flowname.rb +15 -16
  203. data/test/ft_32_journal.rb +48 -48
  204. data/test/ft_32c_journal.rb +54 -54
  205. data/test/ft_32d_journal.rb +43 -46
  206. data/test/ft_33_description.rb +62 -62
  207. data/test/ft_34_cancelwfid.rb +37 -37
  208. data/test/ft_35_localdefs.rb +36 -34
  209. data/test/ft_36_subprocids.rb +61 -61
  210. data/test/ft_37_pnames.rb +33 -33
  211. data/test/ft_38_tag.rb +82 -82
  212. data/test/ft_38b_tag.rb +97 -97
  213. data/test/ft_38c_tag.rb +50 -50
  214. data/test/ft_38d_tag.rb +53 -0
  215. data/test/ft_39_reserve.rb +33 -33
  216. data/test/ft_39b_reserve.rb +59 -59
  217. data/test/ft_3_equals.rb +131 -131
  218. data/test/ft_3b_lookup_vf.rb +43 -43
  219. data/test/ft_40_defined.rb +33 -33
  220. data/test/ft_41_case.rb +80 -80
  221. data/test/ft_42_environments.rb +48 -48
  222. data/test/ft_43_pat10.rb +51 -51
  223. data/test/ft_44_save.rb +37 -37
  224. data/test/ft_44b_restore.rb +151 -151
  225. data/test/ft_45_citerator.rb +149 -149
  226. data/test/ft_45b_citerator.rb +77 -0
  227. data/test/ft_46_pparams.rb +27 -27
  228. data/test/ft_47_filter.rb +100 -100
  229. data/test/ft_48_fe_filter.rb +41 -41
  230. data/test/ft_49_condition.rb +101 -94
  231. data/test/ft_4_misc.rb +185 -190
  232. data/test/ft_50_xml_attribute.rb +101 -104
  233. data/test/ft_51_stack.rb +30 -30
  234. data/test/ft_52_obs_participant.rb +73 -73
  235. data/test/ft_53_null_noop_participant.rb +31 -31
  236. data/test/ft_54_listen.rb +183 -183
  237. data/test/ft_54b_listen.rb +32 -32
  238. data/test/ft_54c_listen.rb +60 -60
  239. data/test/ft_55_ptimeout.rb +29 -30
  240. data/test/ft_56_timeout.rb +29 -29
  241. data/test/ft_57_a.rb +105 -102
  242. data/test/ft_58_ejournal.rb +83 -80
  243. data/test/ft_58b_ejournal.rb +82 -0
  244. data/test/ft_59_ps.rb +148 -86
  245. data/test/ft_5_time.rb +77 -77
  246. data/test/ft_60_ecancel.rb +98 -98
  247. data/test/ft_61_elsub.rb +23 -23
  248. data/test/ft_62_procparticipant.rb +46 -46
  249. data/test/ft_63_pause.rb +82 -69
  250. data/test/ft_64_alias.rb +56 -57
  251. data/test/ft_65_stringlaunch.rb +29 -29
  252. data/test/ft_66_subforget.rb +42 -42
  253. data/test/ft_67_schedlaunch.rb +58 -59
  254. data/test/ft_68_ifparticipant.rb +39 -39
  255. data/test/ft_69_cancelmissing.rb +23 -21
  256. data/test/ft_6_lambda.rb +37 -37
  257. data/test/ft_70_lookupvar.rb +25 -25
  258. data/test/ft_71_log.rb +35 -35
  259. data/test/ft_72_lookup_processes.rb +43 -40
  260. data/test/ft_73_cancel_sub.rb +79 -79
  261. data/test/ft_74_block_and_workitem_dup.rb +42 -42
  262. data/test/ft_75_ruby_attributes.rb +53 -51
  263. data/test/ft_76_merge_isolate.rb +57 -57
  264. data/test/ft_77_segments.rb +13 -13
  265. data/test/ft_78_eval.rb +94 -94
  266. data/test/ft_79_tticket.rb +79 -79
  267. data/test/ft_79b_tticket.rb +73 -73
  268. data/test/ft_79c_outcome.rb +36 -36
  269. data/test/ft_7_lose.rb +73 -73
  270. data/test/ft_7b_lose.rb +49 -49
  271. data/test/ft_80_spname.rb +65 -65
  272. data/test/ft_81_exp.rb +30 -30
  273. data/test/ft_82_trecu.rb +30 -24
  274. data/test/ft_83_badpause.rb +35 -35
  275. data/test/ft_84_updateexp.rb +118 -118
  276. data/test/ft_84b_subrepr.rb +72 -0
  277. data/test/ft_85_dolhash.rb +18 -18
  278. data/test/ft_86_dollar_fv.rb +33 -33
  279. data/test/ft_87_define.rb +47 -47
  280. data/test/ft_88_http.rb +100 -0
  281. data/test/ft_8_forget.rb +25 -25
  282. data/test/ft_9_cursor.rb +119 -110
  283. data/test/ft_9b_cursor.rb +70 -70
  284. data/test/ft_tests.rb +6 -0
  285. data/test/hash_test.rb +52 -34
  286. data/test/hparticipant_test.rb +92 -88
  287. data/test/lookup_att_test.rb +70 -70
  288. data/test/lookup_vf_test.rb +52 -52
  289. data/test/misc_test.rb +55 -51
  290. data/test/obs_test.rb +82 -82
  291. data/test/param_test.rb +181 -181
  292. data/test/participant_test.rb +46 -46
  293. data/test/pending.rb +12 -12
  294. data/test/ps_representation.rb +70 -70
  295. data/test/rake_ltest.rb +2 -2
  296. data/test/rake_qtest.rb +11 -11
  297. data/test/raw_prog_test.rb +303 -308
  298. data/test/restart_cron_test.rb +74 -74
  299. data/test/restart_paused_test.rb +52 -47
  300. data/test/restart_sleep_test.rb +80 -80
  301. data/test/restart_when_test.rb +64 -64
  302. data/test/ruby_procdef_test.rb +71 -71
  303. data/test/rutest_utils.rb +32 -32
  304. data/test/sec_test.rb +143 -142
  305. data/test/slock_test.rb +41 -41
  306. data/test/storage_test.rb +15 -15
  307. data/test/timeout_test.rb +53 -53
  308. data/test/treechecker_test.rb +111 -0
  309. data/test/util_xml_test.rb +57 -57
  310. data/test/wfid_test.rb +93 -93
  311. data/test/wi_test.rb +58 -58
  312. metadata +64 -19
  313. data/examples/scheduler_cron_usage.rb +0 -48
  314. data/examples/scheduler_usage.rb +0 -56
  315. data/lib/openwfe/orest/controlclient.rb +0 -119
  316. data/lib/openwfe/orest/oldrestservlet.rb +0 -279
  317. data/lib/openwfe/orest/restclient.rb +0 -176
  318. data/lib/openwfe/orest/workitem.rb +0 -206
  319. data/lib/openwfe/orest/worklistclient.rb +0 -272
  320. data/test/bm/ft_26d_load.rb +0 -97
  321. data/test/ft_59b_ps_for_pat.rb +0 -58
  322. data/test/ft_64_clone.rb +0 -69
  323. data/test/orest_test.rb +0 -251
data/README.txt CHANGED
@@ -22,3 +22,5 @@ developers mailing list : http://groups.google.com/group/openwferu-dev
22
22
 
23
23
  issue tracker : http://rubyforge.org/tracker/?atid=10023&group_id=2609&func=browse
24
24
 
25
+ irc : irc.freenode.net #ruote
26
+
@@ -14,15 +14,15 @@ require 'openwfe/participants'
14
14
  engine = OpenWFE::Engine.new
15
15
 
16
16
  alice = engine.register_participant(
17
- :alice, OpenWFE::HashParticipant)
17
+ :alice, OpenWFE::HashParticipant)
18
18
  bob = engine.register_participant(
19
- :bob, OpenWFE::HashParticipant)
19
+ :bob, OpenWFE::HashParticipant)
20
20
 
21
21
  class MyDefinition < OpenWFE::ProcessDefinition
22
- sequence do
23
- alice
24
- bob
25
- end
22
+ sequence do
23
+ alice
24
+ bob
25
+ end
26
26
  end
27
27
 
28
28
  # later ...
@@ -30,7 +30,7 @@ end
30
30
  #fei = engine.launch MyDefinition
31
31
  #
32
32
  #sleep 0.050
33
- # # it's asynchronous, so...
33
+ # # it's asynchronous, so...
34
34
  #
35
35
  #puts "alice holds #{alice.size} workitem(s)"
36
36
  #puts "bob holds #{bob.size} workitem(s)"
@@ -39,19 +39,19 @@ end
39
39
 
40
40
 
41
41
  class My2ndDefinition < OpenWFE::ProcessDefinition
42
- sequence do
43
- at :state => "redaction"
44
- alice
45
- at :state => "correction"
46
- bob
47
- alice
48
- at :state => "approval"
49
- charly
50
- end
51
-
52
- process_definition :name => "at" do
53
- set :var => "/state", :val => "${state}"
54
- end
42
+ sequence do
43
+ at :state => "redaction"
44
+ alice
45
+ at :state => "correction"
46
+ bob
47
+ alice
48
+ at :state => "approval"
49
+ charly
50
+ end
51
+
52
+ process_definition :name => "at" do
53
+ set :var => "/state", :val => "${state}"
54
+ end
55
55
  end
56
56
 
57
57
  #fei = engine.launch My2ndDefinition
@@ -59,17 +59,17 @@ end
59
59
  #sleep 0.050
60
60
  #
61
61
  #puts "state : " + engine.lookup_variable(
62
- # 'state', fei.workflow_instance_id)
62
+ # 'state', fei.workflow_instance_id)
63
63
 
64
64
  class My3rdDefinition < OpenWFE::ProcessDefinition
65
- sequence do
66
- alice :tag => "redaction"
67
- sequence :tag => "correction" do
68
- bob
69
- alice
70
- end
71
- charly :tag => "approval"
65
+ sequence do
66
+ alice :tag => "redaction"
67
+ sequence :tag => "correction" do
68
+ bob
69
+ alice
72
70
  end
71
+ charly :tag => "approval"
72
+ end
73
73
  end
74
74
 
75
75
  fei = engine.launch My3rdDefinition
@@ -77,5 +77,5 @@ fei = engine.launch My3rdDefinition
77
77
  sleep 0.050
78
78
 
79
79
  puts "state : " + engine.process_status(
80
- fei.workflow_instance_id).tags.inspect
80
+ fei.workflow_instance_id).tags.inspect
81
81
 
data/examples/bigflow.rb CHANGED
@@ -4,16 +4,16 @@
4
4
 
5
5
  class BigFlow0 < OpenWFE::ProcessDefinition
6
6
 
7
- sequence do
7
+ sequence do
8
+ alpha
9
+ concurrence do
10
+ bravo
11
+ cursor do
8
12
  alpha
9
- concurrence do
10
- bravo
11
- cursor do
12
- alpha
13
- bravo
14
- end
15
- alpha :activity => "brush teeth"
16
- end
17
13
  bravo
14
+ end
15
+ alpha :activity => "brush teeth"
18
16
  end
17
+ bravo
18
+ end
19
19
  end
@@ -8,11 +8,11 @@ $table = CsvTable.new("http://spreadsheets.google.com/pub?key=pCkopoeZwCNsMWOVeD
8
8
 
9
9
  def decide (hash)
10
10
 
11
- $table.transform hash
11
+ $table.transform hash
12
12
 
13
- puts " weather : #{hash['weather']}, month : #{hash['month']}"
14
- puts " => take umbrella ? #{hash['take_umbrella?']}"
15
- puts
13
+ puts " weather : #{hash['weather']}, month : #{hash['month']}"
14
+ puts " => take umbrella ? #{hash['take_umbrella?']}"
15
+ puts
16
16
  end
17
17
 
18
18
  puts
@@ -1,7 +1,7 @@
1
1
 
2
2
  require 'rubygems'
3
- #
4
- # if OpenWFEru was installed via 'gem'
3
+ #
4
+ # if OpenWFEru was installed via 'gem'
5
5
 
6
6
  #
7
7
  # setting up an OpenWFEru engine, step by step
@@ -18,128 +18,140 @@ require 'openwfe/participants/participants'
18
18
  #application_context = {}
19
19
 
20
20
  #application_context[:engine_name] = "my_engine"
21
- #
22
- # the default value for the name of an engine is 'engine'
23
- # this parameter is important when multiple engines do share some
24
- # communication channel (message queue for example)
25
- #
26
- # This value appears in the FlowExpressionId of all the expressions
27
- # and workitems of the engine.
21
+ #
22
+ # the default value for the name of an engine is 'engine'
23
+ # this parameter is important when multiple engines do share some
24
+ # communication channel (message queue for example)
25
+ #
26
+ # This value appears in the FlowExpressionId of all the expressions
27
+ # and workitems of the engine.
28
28
 
29
29
  #application_context[:work_directory] = "work"
30
- #
31
- # OpenWFEru engines take one optional argument : application_context
32
- #
33
- # the following engine constructions do not use this argument,
34
- # but you can make them use it
35
- #
36
- # engine = OpenWFE::Engine.new(application_context)
37
- #
38
- # ...
39
- #
30
+ #
31
+ # OpenWFEru engines take one optional argument : application_context
32
+ #
33
+ # the following engine constructions do not use this argument,
34
+ # but you can make them use it
35
+ #
36
+ # engine = OpenWFE::Engine.new(application_context)
37
+ #
38
+ # ...
39
+ #
40
40
 
41
41
  #application_context[:remote_definitions_allowed] = true
42
- #
43
- # unless this parameter is set to true, the engine will not accept
44
- # to launch processes whose definition is given by a URL, only
45
- # local process definitions (file:) or direct process definitions
46
- # will be allowed.
42
+ #
43
+ # unless this parameter is set to true, the engine will not accept
44
+ # to launch processes whose definition is given by a URL, only
45
+ # local process definitions (file:) or direct process definitions
46
+ # will be allowed.
47
47
 
48
48
  #application_context[:ruby_eval_allowed] = true
49
- #
50
- # if this parameter is set to true, evaluation of ruby code in process
51
- # definition strings will be allowed as well as the ruby version of
52
- # certain expression attributes like :
53
- #
54
- # <participant name="${ruby:LDAP::lookup(customer_id)" />
55
- # or
56
- # <if rtest="var % 2 == 0"> ...
57
- #
49
+ #
50
+ # if this parameter is set to true, evaluation of ruby code in process
51
+ # definition strings will be allowed as well as the ruby version of
52
+ # certain expression attributes like :
53
+ #
54
+ # <participant name="${ruby:LDAP::lookup(customer_id)" />
55
+ # or
56
+ # <if rtest="var % 2 == 0"> ...
57
+ #
58
+
59
+ #application_context[:use_ruby_treechecker] = true
60
+ #
61
+ # by default, external ruby code (process definitions, ${r:...} snippets)
62
+ # are checked before evaluation.
63
+ # Turning this parameter to false, will disable that check.
64
+ #
65
+ # Turn this to false only if you have absolute trust in the ruby fragment
66
+ # coming into the engine. But as they say in the armed forces
67
+ #
68
+ # "trusting is good, checking is better"
69
+ #
58
70
 
59
71
  #application_context[:dynamic_eval_allowed] = true
60
- #
61
- # by default, :dynamic_eval_allowed is not set to true, it means
62
- # that the "eval" expression cannot be used.
63
- #
64
- # don't set that unless you're sure you'll need this 'eval' expression.
72
+ #
73
+ # by default, :dynamic_eval_allowed is not set to true, it means
74
+ # that the "eval" expression cannot be used.
75
+ #
76
+ # don't set that unless you're sure you'll need this 'eval' expression.
65
77
 
66
78
  #application_context[:definition_in_launchitem_allowed] = true
67
- #
68
- # by default (since 0.9.18), it's not allowed to launch processes whose
69
- # definitions is embedded in the launchitem. You have to explicitely
70
- # set this parameter to true
79
+ #
80
+ # by default (since 0.9.18), it's not allowed to launch processes whose
81
+ # definitions is embedded in the launchitem. You have to explicitely
82
+ # set this parameter to true
71
83
 
72
84
 
73
85
  #engine = OpenWFE::Engine.new
74
86
  #engine = OpenWFE::Engine.new(application_context)
75
- #
76
- # an in-memory, totally transient engine
77
- #
78
- # might be ideal for an embedded workflow engine with short lived
79
- # process definitions to run
87
+ #
88
+ # an in-memory, totally transient engine
89
+ #
90
+ # might be ideal for an embedded workflow engine with short lived
91
+ # process definitions to run
80
92
 
81
93
  #engine = OpenWFE::FilePersistedEngine.new
82
94
  #engine = OpenWFE::FilePersistedEngine.new(application_context)
83
- #
84
- # a file persisted engine, slow, used only within unit tests
85
- # do not use
95
+ #
96
+ # a file persisted engine, slow, used only within unit tests
97
+ # do not use
86
98
 
87
99
  engine = OpenWFE::CachedFilePersistedEngine.new
88
100
  #engine = OpenWFE::CachedFilePersistedEngine.new(application_context)
89
- #
90
- # a file persisted engine, with an in-memory cache.
91
- # use that
92
- #
93
- # persistence is done by default under ./work/
101
+ #
102
+ # a file persisted engine, with an in-memory cache.
103
+ # use that
104
+ #
105
+ # persistence is done by default under ./work/
94
106
 
95
107
  at_exit do
96
- #
97
- # making sure that the engine gets properly stopped when
98
- # Ruby exits.
99
- #
100
- engine.stop
108
+ #
109
+ # making sure that the engine gets properly stopped when
110
+ # Ruby exits.
111
+ #
112
+ engine.stop
101
113
  end
102
114
 
103
115
  # -- a console
104
116
 
105
117
  #engine.enable_irb_console
106
- #
107
- # by enabling the IRB console, you can jump into the engine object
108
- # with a CTRL-C hit on the terminal that runs hit.
109
- #
110
- # Hit CTRL-D to get out of the IRB console.
118
+ #
119
+ # by enabling the IRB console, you can jump into the engine object
120
+ # with a CTRL-C hit on the terminal that runs hit.
121
+ #
122
+ # Hit CTRL-D to get out of the IRB console.
111
123
 
112
124
  # -- process history
113
125
 
114
126
  #require 'openwfe/expool/history'
115
127
 
116
128
  #engine.init_service("history", InMemoryHistory)
117
- #
118
- # keeps all process history in an array in memory
119
- # use only for test purposes !
129
+ #
130
+ # keeps all process history in an array in memory
131
+ # use only for test purposes !
120
132
 
121
133
  #engine.init_service("history", FileHistory)
122
- #
123
- # dumps all the process history in a file name "history.log"
124
- # in the work directory
134
+ #
135
+ # dumps all the process history in a file name "history.log"
136
+ # in the work directory
125
137
 
126
138
  # -- process journaling
127
139
 
128
140
  #require 'openwfe/expool/journal'
129
141
  #engine.init_service("journal", Journal)
130
- #
131
- # activates 'journaling',
132
- #
133
- # see http://openwferu.rubyforge.org/journal.html
134
- #
135
- # Journaling has a cost in terms of performace.
136
- # Journaling should be used only in case you might want to migrate
137
- # [segments of] running processes.
138
- #
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
+ #
139
151
  #engine.application_context[:keep_journals] = true
140
- #
141
- # if set to true, the journal of terminated processes will be kept
142
- # (but moved by default to ./work/journal/done/)
152
+ #
153
+ # if set to true, the journal of terminated processes will be kept
154
+ # (but moved by default to ./work/journal/done/)
143
155
 
144
156
 
145
157
  #
@@ -152,82 +164,82 @@ end
152
164
  #require 'openwfe/listeners/listeners'
153
165
 
154
166
  #sl = OpenWFE::SocketListener.new(
155
- # "socket_listener", @engine.application_context, 7008)
167
+ # "socket_listener", @engine.application_context, 7008)
156
168
  #engine.add_workitem_listener(sl)
157
- #
158
- # adding a simple SocketListener on port 7008
169
+ #
170
+ # adding a simple SocketListener on port 7008
159
171
 
160
172
  #require 'openwfe/listeners/socketlisteners'
161
173
  #
162
174
  #engine.add_workitem_listener(OpenWFE::SocketListener)
163
- #
164
- # adding a SocketListener on the default port 7007
175
+ #
176
+ # adding a SocketListener on the default port 7007
165
177
 
166
178
  #engine.add_workitem_listener(OpenWFE::FileListener, "500")
167
- #
168
- # listening for workitems (coming as within YAML files dropped in the
169
- # default ./work/in directory)
170
- #
171
- # check for new files every 500 ms
179
+ #
180
+ # listening for workitems (coming as within YAML files dropped in the
181
+ # default ./work/in directory)
182
+ #
183
+ # check for new files every 500 ms
172
184
 
173
185
  #require 'openwfe/listeners/sqslisteners'
174
186
  #
175
187
  #engine.add_workitem_listener(
176
- # OpenWFE::SqsListener.new(:wiqueue, engine.application_context),
177
- # "2s")
178
- #
179
- # adds a listener polling an Amazon Simple Queue Service (SQS)
180
- # named 'wiqueue' every 2 seconds
181
- #
182
- # http://jmettraux.wordpress.com/2007/03/13/openwferu-over-amazon-sqs/
183
- # http://aws.amazon.com/sqs
188
+ # OpenWFE::SqsListener.new(:wiqueue, engine.application_context),
189
+ # "2s")
190
+ #
191
+ # adds a listener polling an Amazon Simple Queue Service (SQS)
192
+ # named 'wiqueue' every 2 seconds
193
+ #
194
+ # http://jmettraux.wordpress.com/2007/03/13/openwferu-over-amazon-sqs/
195
+ # http://aws.amazon.com/sqs
184
196
 
185
197
 
186
198
  #
187
199
  # === the PARTICIPANTS
188
200
  #
189
- # to learn more about participants :
201
+ # to learn more about participants :
190
202
  # http://openwferu.rubyforge.org/participants.html
191
203
  #
192
204
 
193
205
  # you can use indifferently symbols or strings for participant names
194
206
 
195
207
  # It's perhaps better to separate the participant registration and put
196
- # it in its own .rb file, but anyway, here are some participant registration
208
+ # it in its own .rb file, but anyway, here are some participant registration
197
209
  # examples :
198
210
 
199
211
  engine.register_participant(:toto) do |workitem|
200
- puts "toto received a workitem..."
201
- puts "lots of work..." if workitem.attributes.size > 3
202
- sleep 4
203
- puts "done."
212
+ puts "toto received a workitem..."
213
+ puts "lots of work..." if workitem.attributes.size > 3
214
+ sleep 4
215
+ puts "done."
204
216
  end
205
- #
206
- # an example of a "block participant", binding Ruby code to a
207
- # participant in a business process
217
+ #
218
+ # an example of a "block participant", binding Ruby code to a
219
+ # participant in a business process
208
220
 
209
221
  #require 'openwfe/participants/sqsparticipants'
210
222
  #
211
223
  #engine.register_participant(:sqs, OpenWFE::SqsParticipant.new(:wiqueue2))
212
- #
213
- # registers a participant named 'sqs', workitems for it will get placed
214
- # on the SQS queue named "wiqueue2"
224
+ #
225
+ # registers a participant named 'sqs', workitems for it will get placed
226
+ # on the SQS queue named "wiqueue2"
215
227
 
216
228
  #require 'openwfe/participants/socketparticipants'
217
229
  #
218
230
  #engine.register_participant(
219
- # "away", OpenWFE::SocketParticipant.new("target.host.co.jp", 7009))
220
- #
221
- # the participant "away" listens for workitems on port 7009 of
222
- # host 'target.host.co.jp', our SocketParticipant will dispatch
223
- # the workitem to it over TCP
231
+ # "away", OpenWFE::SocketParticipant.new("target.host.co.jp", 7009))
232
+ #
233
+ # the participant "away" listens for workitems on port 7009 of
234
+ # host 'target.host.co.jp', our SocketParticipant will dispatch
235
+ # the workitem to it over TCP
224
236
 
225
237
 
226
238
  engine.reschedule
227
- #
228
- # this method has to be called after all the participants have been
229
- # added, it looks for temporal expressions (sleep, cron, ...) to
230
- # reschedule.
239
+ #
240
+ # this method has to be called after all the participants have been
241
+ # added, it looks for temporal expressions (sleep, cron, ...) to
242
+ # reschedule.
231
243
 
232
244
 
233
245
  #
@@ -237,11 +249,11 @@ engine.reschedule
237
249
  #
238
250
 
239
251
  engine.join
240
- #
241
- # you don't need to 'join' if the engine uses a listener, the thread of
242
- # the listener will prevent the Ruby interpreter from exiting.
243
- #
244
- # hit CTRL-C to quit (or maybe engine.enable_irb_console has been called,
245
- # in which case CTRL-C will bring you into a IRB console within the
246
- # engine itself).
252
+ #
253
+ # you don't need to 'join' if the engine uses a listener, the thread of
254
+ # the listener will prevent the Ruby interpreter from exiting.
255
+ #
256
+ # hit CTRL-C to quit (or maybe engine.enable_irb_console has been called,
257
+ # in which case CTRL-C will bring you into a IRB console within the
258
+ # engine itself).
247
259