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
@@ -43,150 +43,150 @@ require 'openwfe/expressions/fe_sequence'
43
43
 
44
44
  module OpenWFE
45
45
 
46
+ #
47
+ # The <process-definition> expression.
48
+ #
49
+ # <process-definition name="myprocess" revision="2">
50
+ # <sequence>
51
+ # <participant ref="alpha" />
52
+ # <subprocess ref="sub0" />
53
+ # </sequence>
54
+ # <process-definition name="sub0">
55
+ # <participant ref="bravo" />
56
+ # </process-definition>
57
+ # </process-definition>
58
+ #
59
+ # In a Ruby process definition :
60
+ #
61
+ # class Test0 < OpenWFE::ProcessDefinition
62
+ #
63
+ # sequence do
64
+ # sub0
65
+ # sub1
66
+ # sub2
67
+ # sub3
68
+ # end
69
+ #
70
+ # process_definition :name => "sub0" do
71
+ # _print "sub0"
72
+ # end
73
+ # define :name => "sub1" do
74
+ # _print "sub1"
75
+ # end
76
+ # process_definition "sub2" do
77
+ # _print "sub2"
78
+ # end
79
+ # define "sub3" do
80
+ # _print "sub3"
81
+ # end
82
+ # end
83
+ #
84
+ # It is most often used with its "process-definition" name, but "define"
85
+ # and "workflow-definition" are accepted as well.
86
+ #
87
+ class DefineExpression < SequenceExpression
88
+
89
+ is_definition
90
+
91
+ names :define, :process_definition, :workflow_definition
92
+
46
93
  #
47
- # The <process-definition> expression.
48
- #
49
- # <process-definition name="myprocess" revision="2">
50
- # <sequence>
51
- # <participant ref="alpha" />
52
- # <subprocess ref="sub0" />
53
- # </sequence>
54
- # <process-definition name="sub0">
55
- # <participant ref="bravo" />
56
- # </process-definition>
57
- # </process-definition>
58
- #
59
- # In a Ruby process definition :
60
- #
61
- # class Test0 < OpenWFE::ProcessDefinition
94
+ # A pointer to the body expression of this process definition.
62
95
  #
63
- # sequence do
64
- # sub0
65
- # sub1
66
- # sub2
67
- # sub3
68
- # end
96
+ attr_accessor :body_fei
97
+
98
+ #--
99
+ # Evaluates the definition, but doesn't apply its body, will
100
+ # simply return the body fei.
69
101
  #
70
- # process_definition :name => "sub0" do
71
- # _print "sub0"
72
- # end
73
- # define :name => "sub1" do
74
- # _print "sub1"
75
- # end
76
- # process_definition "sub2" do
77
- # _print "sub2"
78
- # end
79
- # define "sub3" do
80
- # _print "sub3"
81
- # end
82
- # end
102
+ #def evaluate (workitem)
103
+ # @eval_only = true
104
+ # apply workitem
105
+ # @body_fei
106
+ #end
107
+ #++
108
+
83
109
  #
84
- # It is most often used with its "process-definition" name, but "define"
85
- # and "workflow-definition" are accepted as well.
110
+ # Called at the end of the 'evaluation', the 'apply' operation on
111
+ # the body of the definition is done here.
86
112
  #
87
- class DefineExpression < SequenceExpression
88
-
89
- is_definition
90
-
91
- names :define, :process_definition, :workflow_definition
92
-
93
- #
94
- # A pointer to the body expression of this process definition.
95
- #
96
- attr_accessor :body_fei
97
-
98
- #--
99
- # Evaluates the definition, but doesn't apply its body, will
100
- # simply return the body fei.
101
- #
102
- #def evaluate (workitem)
103
- # @eval_only = true
104
- # apply workitem
105
- # @body_fei
106
- #end
107
- #++
113
+ def reply_to_parent (workitem)
108
114
 
109
- #
110
- # Called at the end of the 'evaluation', the 'apply' operation on
111
- # the body of the definition is done here.
112
- #
113
- def reply_to_parent (workitem)
115
+ #return if @eval_only
114
116
 
115
- #return if @eval_only
117
+ #puts "/// \n bf #{@body_fei} \n wi.fei #{workitem.fei}"
116
118
 
117
- #puts "/// \n bf #{@body_fei} \n wi.fei #{workitem.fei}"
119
+ return super(workitem) \
120
+ if @body_fei == nil or @body_fei == workitem.fei
121
+ #unless @body_fei
118
122
 
119
- return super(workitem) \
120
- if @body_fei == nil or @body_fei == workitem.fei
121
- #unless @body_fei
123
+ #_fei = @body_fei
124
+ #@body_fei = nil
125
+ #store_itself
126
+ #get_expression_pool.apply _fei, workitem
122
127
 
123
- #_fei = @body_fei
124
- #@body_fei = nil
125
- #store_itself
126
- #get_expression_pool.apply _fei, workitem
127
-
128
- get_expression_pool.apply @body_fei, workitem
129
- end
128
+ get_expression_pool.apply @body_fei, workitem
129
+ end
130
130
 
131
- #
132
- # Overrides the set_variable in FlowExpression to
133
- # make sure to intercept requests for binding subprocesses
134
- # at the engine level and to store a copy of the raw expression,
135
- # not only the flow expression id.
136
- #
137
- def set_variable (name, fei)
131
+ #
132
+ # Overrides the set_variable in FlowExpression to
133
+ # make sure to intercept requests for binding subprocesses
134
+ # at the engine level and to store a copy of the raw expression,
135
+ # not only the flow expression id.
136
+ #
137
+ def set_variable (name, fei)
138
138
 
139
- if name[0, 2] == "//"
139
+ if name[0, 2] == "//"
140
140
 
141
- raw_exp = get_expression_pool.fetch_expression(fei).dup
142
- raw_exp.parent_id = nil
143
- raw_exp.fei = raw_exp.fei.dup
144
- fei = raw_exp.fei
145
- fei.wfid = get_wfid_generator.generate
141
+ raw_exp = get_expression_pool.fetch_expression(fei).dup
142
+ raw_exp.parent_id = nil
143
+ raw_exp.fei = raw_exp.fei.dup
144
+ fei = raw_exp.fei
145
+ fei.wfid = get_wfid_generator.generate
146
146
 
147
- raw_exp.store_itself
148
- end
147
+ raw_exp.store_itself
148
+ end
149
149
 
150
- super name, fei
151
- end
150
+ super name, fei
151
+ end
152
152
 
153
- protected
153
+ protected
154
154
 
155
- #
156
- # Determines the flowExpressionId of the next child to apply.
157
- #
158
- def next_child (current_fei)
155
+ #
156
+ # Determines the flowExpressionId of the next child to apply.
157
+ #
158
+ def next_child (current_fei)
159
159
 
160
- next_fei = super
160
+ next_fei = super
161
161
 
162
- return nil unless next_fei
162
+ return nil unless next_fei
163
163
 
164
- rawchild = get_expression_pool.fetch_expression next_fei
164
+ rawchild = get_expression_pool.fetch_expression next_fei
165
165
 
166
- return next_child(next_fei) unless rawchild
166
+ return next_child(next_fei) unless rawchild
167
167
 
168
- unless rawchild.is_definition?
168
+ unless rawchild.is_definition?
169
169
 
170
- unless @body_fei
171
- @body_fei = next_fei
172
- store_itself
173
- end
174
- return next_child(next_fei)
175
- end
170
+ unless @body_fei
171
+ @body_fei = next_fei
172
+ store_itself
173
+ end
174
+ return next_child(next_fei)
175
+ end
176
176
 
177
- exp_class = get_expression_map.get_class rawchild
177
+ exp_class = get_expression_map.get_class rawchild
178
178
 
179
- if exp_class == DefineExpression
180
- set_variable rawchild.definition_name, next_fei
181
- return next_child(next_fei)
182
- end
179
+ if exp_class == DefineExpression
180
+ set_variable rawchild.definition_name, next_fei
181
+ return next_child(next_fei)
182
+ end
183
183
 
184
- next_fei
185
- #
186
- # expression is a 'set', a 'filter-definition' or
187
- # something like that, let it get applied
188
- end
189
- end
184
+ next_fei
185
+ #
186
+ # expression is a 'set', a 'filter-definition' or
187
+ # something like that, let it get applied
188
+ end
189
+ end
190
190
 
191
191
  end
192
192
 
@@ -2,31 +2,31 @@
2
2
  #--
3
3
  # Copyright (c) 2007-2008, John Mettraux, OpenWFE.org
4
4
  # All rights reserved.
5
- #
6
- # Redistribution and use in source and binary forms, with or without
5
+ #
6
+ # Redistribution and use in source and binary forms, with or without
7
7
  # modification, are permitted provided that the following conditions are met:
8
- #
8
+ #
9
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
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
14
  # and/or other materials provided with the distribution.
15
- #
15
+ #
16
16
  # . Neither the name of the "OpenWFE" nor the names of its contributors may be
17
17
  # used to endorse or promote products derived from this software without
18
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
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
30
  # POSSIBILITY OF SUCH DAMAGE.
31
31
  #++
32
32
  #
@@ -47,122 +47,122 @@ require 'openwfe/expressions/flowexpression'
47
47
 
48
48
  module OpenWFE
49
49
 
50
- #
51
- # Every expression in OpenWFEru accepts a 'tag' attribute. This tag
52
- # can later be referenced by an 'undo' or 'redo' expression.
53
- # Tags are active as soon as an expression is applied and they vanish
54
- # when the expression replies to its parent expression or is cancelled.
55
- #
56
- # Calling for the undo of a non-existent tag throws no error, the flow
57
- # simply resumes.
58
- #
59
- # concurrence do
60
- # sequence :tag => "side_job" do
61
- # participant "alice"
62
- # participant "bob"
63
- # end
64
- # sequence do
65
- # participant "charly"
66
- # undo :ref => "side_job"
67
- # end
68
- # end
69
- #
70
- # In this example, as soon as the participant charly is over, the sequence
71
- # 'side_job' gets undone (cancelled). If the sequence 'side_job' was
72
- # already over, the "undo" will have no effect.
73
- #
74
- class UndoExpression < FlowExpression
50
+ #
51
+ # Every expression in OpenWFEru accepts a 'tag' attribute. This tag
52
+ # can later be referenced by an 'undo' or 'redo' expression.
53
+ # Tags are active as soon as an expression is applied and they vanish
54
+ # when the expression replies to its parent expression or is cancelled.
55
+ #
56
+ # Calling for the undo of a non-existent tag throws no error, the flow
57
+ # simply resumes.
58
+ #
59
+ # concurrence do
60
+ # sequence :tag => "side_job" do
61
+ # participant "alice"
62
+ # participant "bob"
63
+ # end
64
+ # sequence do
65
+ # participant "charly"
66
+ # undo :ref => "side_job"
67
+ # end
68
+ # end
69
+ #
70
+ # In this example, as soon as the participant charly is over, the sequence
71
+ # 'side_job' gets undone (cancelled). If the sequence 'side_job' was
72
+ # already over, the "undo" will have no effect.
73
+ #
74
+ class UndoExpression < FlowExpression
75
+
76
+ names :undo
77
+
78
+ def apply (workitem)
79
+
80
+ tag = lookup_tag(workitem)
81
+
82
+ undo_self = false
83
+
84
+ if tag
85
+ #OpenWFE::call_in_thread(fei.expression_name, self) do
86
+ process_tag tag
87
+ #end
75
88
 
76
- names :undo
89
+ undo_self = tag.fei.ancestor_of?(@fei)
90
+ end
77
91
 
78
- def apply (workitem)
92
+ reply_to_parent(workitem) unless undo_self
93
+ end
79
94
 
80
- tag = lookup_tag(workitem)
95
+ #
96
+ # Calls the expression pool cancel() method upon the tagged
97
+ # expression.
98
+ #
99
+ def process_tag (tag)
81
100
 
82
- undo_self = false
101
+ ldebug do
102
+ "process_tag() #{fei.to_debug_s} to undo #{tag.fei.to_debug_s}"
103
+ end
83
104
 
84
- if tag
85
- #OpenWFE::call_in_thread(fei.expression_name, self) do
86
- process_tag tag
87
- #end
105
+ #get_expression_pool.cancel_and_reply_to_parent(
106
+ # tag.raw_expression.fei, tag.workitem)
88
107
 
89
- undo_self = tag.fei.ancestor_of?(@fei)
90
- end
108
+ exp = get_expression_pool.fetch_expression(tag.raw_expression.fei)
91
109
 
92
- reply_to_parent(workitem) unless undo_self
93
- end
110
+ get_expression_pool.cancel(tag.raw_expression.fei)
94
111
 
112
+ get_expression_pool.reply_to_parent(exp, tag.workitem, false)
95
113
  #
96
- # Calls the expression pool cancel() method upon the tagged
97
- # expression.
98
- #
99
- def process_tag (tag)
100
-
101
- ldebug do
102
- "process_tag() #{fei.to_debug_s} to undo #{tag.fei.to_debug_s}"
103
- end
104
-
105
- #get_expression_pool.cancel_and_reply_to_parent(
106
- # tag.raw_expression.fei, tag.workitem)
107
-
108
- exp = get_expression_pool.fetch_expression(tag.raw_expression.fei)
109
-
110
- get_expression_pool.cancel(tag.raw_expression.fei)
111
-
112
- get_expression_pool.reply_to_parent(exp, tag.workitem, false)
113
- #
114
- # 'remove' is set to false, cancel already removed the
115
- # expression
116
- end
114
+ # 'remove' is set to false, cancel already removed the
115
+ # expression
116
+ end
117
117
 
118
- #def reply (workitem)
119
- #end
118
+ #def reply (workitem)
119
+ #end
120
120
 
121
- protected
121
+ protected
122
122
 
123
- def lookup_tag (workitem)
123
+ def lookup_tag (workitem)
124
124
 
125
- tagname = lookup_attribute :ref, workitem
125
+ tagname = lookup_attribute :ref, workitem
126
126
 
127
- tag = lookup_variable tagname
127
+ tag = lookup_variable tagname
128
128
 
129
- lwarn { "lookup_tag() no tag named '#{tagname}' found" } \
130
- unless tag
129
+ lwarn { "lookup_tag() no tag named '#{tagname}' found" } \
130
+ unless tag
131
131
 
132
- tag
133
- end
134
- end
132
+ tag
133
+ end
134
+ end
135
135
 
136
- #
137
- # Every expression in OpenWFEru accepts a 'tag' attribute. This tag
138
- # can later be referenced by an 'undo' or 'redo' expression.
139
- #
140
- # Calling for the undo of a non-existent tag throws no error, the flow
141
- # simply resumes.
142
- #
143
- class RedoExpression < UndoExpression
136
+ #
137
+ # Every expression in OpenWFEru accepts a 'tag' attribute. This tag
138
+ # can later be referenced by an 'undo' or 'redo' expression.
139
+ #
140
+ # Calling for the undo of a non-existent tag throws no error, the flow
141
+ # simply resumes.
142
+ #
143
+ class RedoExpression < UndoExpression
144
144
 
145
- names :redo
145
+ names :redo
146
146
 
147
- def process_tag (tag)
147
+ def process_tag (tag)
148
148
 
149
- ldebug do
150
- "process_tag() #{fei.to_debug_s} to redo #{tag.fei.to_debug_s}"
151
- end
149
+ ldebug do
150
+ "process_tag() #{fei.to_debug_s} to redo #{tag.fei.to_debug_s}"
151
+ end
152
152
 
153
- #
154
- # cancel
153
+ #
154
+ # cancel
155
155
 
156
- get_expression_pool.cancel(tag.fei)
156
+ get_expression_pool.cancel(tag.fei)
157
157
 
158
- #
159
- # [re]apply
158
+ #
159
+ # [re]apply
160
160
 
161
- tag.raw_expression.application_context = @application_context
161
+ tag.raw_expression.application_context = @application_context
162
162
 
163
- get_expression_pool.apply tag.raw_expression, tag.workitem
164
- end
163
+ get_expression_pool.apply tag.raw_expression, tag.workitem
165
164
  end
165
+ end
166
166
 
167
167
  end
168
168