ruote 0.9.18

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 (291) hide show
  1. data/README.txt +24 -0
  2. data/bin/validate-workflow.rb +89 -0
  3. data/examples/about_state.rb +81 -0
  4. data/examples/bigflow.rb +19 -0
  5. data/examples/csv_weather.rb +23 -0
  6. data/examples/engine_template.rb +247 -0
  7. data/examples/flowtracing.rb +24 -0
  8. data/examples/homeworkreview.rb +68 -0
  9. data/examples/kotoba.rb +22 -0
  10. data/examples/mano_tracker.rb +172 -0
  11. data/examples/openwferu.rb +58 -0
  12. data/examples/quotereporter.rb +157 -0
  13. data/examples/scheduler_cron_usage.rb +48 -0
  14. data/examples/scheduler_usage.rb +56 -0
  15. data/lib/openwfe.rb +41 -0
  16. data/lib/openwfe/contextual.rb +111 -0
  17. data/lib/openwfe/def.rb +46 -0
  18. data/lib/openwfe/engine.rb +37 -0
  19. data/lib/openwfe/engine/engine.rb +756 -0
  20. data/lib/openwfe/engine/expool_methods.rb +172 -0
  21. data/lib/openwfe/engine/file_persisted_engine.rb +105 -0
  22. data/lib/openwfe/engine/participant_methods.rb +133 -0
  23. data/lib/openwfe/engine/status_methods.rb +353 -0
  24. data/lib/openwfe/engine/update_exp_methods.rb +112 -0
  25. data/lib/openwfe/exceptions.rb +51 -0
  26. data/lib/openwfe/expool/errorjournal.rb +476 -0
  27. data/lib/openwfe/expool/expressionpool.rb +1144 -0
  28. data/lib/openwfe/expool/expstorage.rb +403 -0
  29. data/lib/openwfe/expool/history.rb +174 -0
  30. data/lib/openwfe/expool/journal.rb +224 -0
  31. data/lib/openwfe/expool/journal_replay.rb +321 -0
  32. data/lib/openwfe/expool/parser.rb +242 -0
  33. data/lib/openwfe/expool/representation.rb +121 -0
  34. data/lib/openwfe/expool/threadedexpstorage.rb +188 -0
  35. data/lib/openwfe/expool/wfidgen.rb +388 -0
  36. data/lib/openwfe/expool/yamlexpstorage.rb +224 -0
  37. data/lib/openwfe/expressions/condition.rb +244 -0
  38. data/lib/openwfe/expressions/environment.rb +246 -0
  39. data/lib/openwfe/expressions/expressionmap.rb +258 -0
  40. data/lib/openwfe/expressions/fe_cancel.rb +109 -0
  41. data/lib/openwfe/expressions/fe_command.rb +241 -0
  42. data/lib/openwfe/expressions/fe_concurrence.rb +662 -0
  43. data/lib/openwfe/expressions/fe_cron.rb +259 -0
  44. data/lib/openwfe/expressions/fe_cursor.rb +259 -0
  45. data/lib/openwfe/expressions/fe_define.rb +192 -0
  46. data/lib/openwfe/expressions/fe_do.rb +168 -0
  47. data/lib/openwfe/expressions/fe_equals.rb +291 -0
  48. data/lib/openwfe/expressions/fe_filter.rb +129 -0
  49. data/lib/openwfe/expressions/fe_filter_definition.rb +168 -0
  50. data/lib/openwfe/expressions/fe_fqv.rb +250 -0
  51. data/lib/openwfe/expressions/fe_if.rb +303 -0
  52. data/lib/openwfe/expressions/fe_iterator.rb +145 -0
  53. data/lib/openwfe/expressions/fe_listen.rb +371 -0
  54. data/lib/openwfe/expressions/fe_losfor.rb +111 -0
  55. data/lib/openwfe/expressions/fe_misc.rb +421 -0
  56. data/lib/openwfe/expressions/fe_participant.rb +269 -0
  57. data/lib/openwfe/expressions/fe_reserve.rb +212 -0
  58. data/lib/openwfe/expressions/fe_save.rb +274 -0
  59. data/lib/openwfe/expressions/fe_sequence.rb +117 -0
  60. data/lib/openwfe/expressions/fe_set.rb +139 -0
  61. data/lib/openwfe/expressions/fe_sleep.rb +166 -0
  62. data/lib/openwfe/expressions/fe_step.rb +159 -0
  63. data/lib/openwfe/expressions/fe_subprocess.rb +168 -0
  64. data/lib/openwfe/expressions/fe_timeout.rb +127 -0
  65. data/lib/openwfe/expressions/fe_wait.rb +78 -0
  66. data/lib/openwfe/expressions/fe_when.rb +142 -0
  67. data/lib/openwfe/expressions/filter.rb +104 -0
  68. data/lib/openwfe/expressions/flowexpression.rb +847 -0
  69. data/lib/openwfe/expressions/iterator.rb +221 -0
  70. data/lib/openwfe/expressions/merge.rb +84 -0
  71. data/lib/openwfe/expressions/raw.rb +547 -0
  72. data/lib/openwfe/expressions/rprocdef.rb +375 -0
  73. data/lib/openwfe/expressions/time.rb +333 -0
  74. data/lib/openwfe/expressions/timeout.rb +178 -0
  75. data/lib/openwfe/expressions/value.rb +126 -0
  76. data/lib/openwfe/filterdef.rb +259 -0
  77. data/lib/openwfe/flowexpressionid.rb +357 -0
  78. data/lib/openwfe/listeners/listener.rb +97 -0
  79. data/lib/openwfe/listeners/listeners.rb +139 -0
  80. data/lib/openwfe/listeners/socketlisteners.rb +272 -0
  81. data/lib/openwfe/logging.rb +122 -0
  82. data/lib/openwfe/omixins.rb +95 -0
  83. data/lib/openwfe/orest/controlclient.rb +119 -0
  84. data/lib/openwfe/orest/definitions.rb +113 -0
  85. data/lib/openwfe/orest/exception.rb +60 -0
  86. data/lib/openwfe/orest/oldrestservlet.rb +279 -0
  87. data/lib/openwfe/orest/osocket.rb +148 -0
  88. data/lib/openwfe/orest/restclient.rb +176 -0
  89. data/lib/openwfe/orest/workitem.rb +206 -0
  90. data/lib/openwfe/orest/worklistclient.rb +272 -0
  91. data/lib/openwfe/orest/xmlcodec.rb +670 -0
  92. data/lib/openwfe/participants.rb +38 -0
  93. data/lib/openwfe/participants/enoparticipants.rb +230 -0
  94. data/lib/openwfe/participants/participant.rb +141 -0
  95. data/lib/openwfe/participants/participantmap.rb +249 -0
  96. data/lib/openwfe/participants/participants.rb +407 -0
  97. data/lib/openwfe/participants/soapparticipants.rb +135 -0
  98. data/lib/openwfe/participants/socketparticipants.rb +202 -0
  99. data/lib/openwfe/participants/storeparticipants.rb +254 -0
  100. data/lib/openwfe/rudefinitions.rb +130 -0
  101. data/lib/openwfe/service.rb +103 -0
  102. data/lib/openwfe/storage/yamlcustom.rb +106 -0
  103. data/lib/openwfe/storage/yamlfilestorage.rb +245 -0
  104. data/lib/openwfe/tools/flowtracer.rb +81 -0
  105. data/lib/openwfe/util/dollar.rb +217 -0
  106. data/lib/openwfe/util/irb.rb +86 -0
  107. data/lib/openwfe/util/observable.rb +144 -0
  108. data/lib/openwfe/util/ometa.rb +62 -0
  109. data/lib/openwfe/util/workqueue.rb +124 -0
  110. data/lib/openwfe/util/xml.rb +418 -0
  111. data/lib/openwfe/utils.rb +554 -0
  112. data/lib/openwfe/version.rb +37 -0
  113. data/lib/openwfe/workitem.rb +499 -0
  114. data/lib/openwfe/worklist/oldrest.rb +244 -0
  115. data/lib/openwfe/worklist/storelocks.rb +293 -0
  116. data/lib/openwfe/worklist/storeparticipant.rb +44 -0
  117. data/lib/openwfe/worklist/worklist.rb +297 -0
  118. data/test/README.txt +27 -0
  119. data/test/back_0916_test.rb +111 -0
  120. data/test/bm/bm_1_xml_vs_prog.rb +56 -0
  121. data/test/bm/bm_2_step.rb +109 -0
  122. data/test/bm/ft_0f_5ms.rb +35 -0
  123. data/test/bm/ft_26_load.rb +210 -0
  124. data/test/bm/ft_26b_load.rb +86 -0
  125. data/test/bm/ft_26c_load.rb +97 -0
  126. data/test/bm/ft_26d_load.rb +97 -0
  127. data/test/bm/ft_recu.rb +71 -0
  128. data/test/clone_test.rb +122 -0
  129. data/test/concurrence_test.rb +77 -0
  130. data/test/condition_test.rb +155 -0
  131. data/test/console_test.rb +12 -0
  132. data/test/cron_ltest.rb +15 -0
  133. data/test/description_test.rb +87 -0
  134. data/test/eno_test.rb +76 -0
  135. data/test/expmap_test.rb +54 -0
  136. data/test/expool_20031219_0916.tgz +0 -0
  137. data/test/fe_lookup_att_test.rb +62 -0
  138. data/test/fei_test.rb +181 -0
  139. data/test/file_persisted_engine_test.rb +64 -0
  140. data/test/file_persistence_test.rb +134 -0
  141. data/test/filep_cancel_test.rb +123 -0
  142. data/test/filter_test.rb +109 -0
  143. data/test/flowtestbase.rb +351 -0
  144. data/test/ft_0.rb +68 -0
  145. data/test/ft_0b_sequence.rb +36 -0
  146. data/test/ft_0c_testname.rb +33 -0
  147. data/test/ft_0d_participant.rb +30 -0
  148. data/test/ft_0e_multibody.rb +34 -0
  149. data/test/ft_10_loop.rb +134 -0
  150. data/test/ft_11_ppd.rb +415 -0
  151. data/test/ft_11b_ppd.rb +54 -0
  152. data/test/ft_12_blockparticipant.rb +97 -0
  153. data/test/ft_13_eno.rb +52 -0
  154. data/test/ft_14_subprocess.rb +88 -0
  155. data/test/ft_14b_subprocess.rb +192 -0
  156. data/test/ft_14c_subprocess.rb +68 -0
  157. data/test/ft_15_iterator.rb +216 -0
  158. data/test/ft_15b_iterator.rb +74 -0
  159. data/test/ft_16_fqv.rb +73 -0
  160. data/test/ft_17_condition.rb +84 -0
  161. data/test/ft_18_pname.rb +56 -0
  162. data/test/ft_1_unset.rb +175 -0
  163. data/test/ft_1b_unset.rb +39 -0
  164. data/test/ft_20_cron.rb +53 -0
  165. data/test/ft_21_cron.rb +87 -0
  166. data/test/ft_21b_cron_pause.rb +82 -0
  167. data/test/ft_22_history.rb +74 -0
  168. data/test/ft_23_when.rb +77 -0
  169. data/test/ft_23b_when.rb +70 -0
  170. data/test/ft_23c_wait.rb +80 -0
  171. data/test/ft_23d_cww.rb +58 -0
  172. data/test/ft_24_def.rb +44 -0
  173. data/test/ft_25_cancel.rb +89 -0
  174. data/test/ft_27_getflowpos.rb +147 -0
  175. data/test/ft_28_fileparticipant.rb +63 -0
  176. data/test/ft_29_httprb.rb +106 -0
  177. data/test/ft_2_concurrence.rb +135 -0
  178. data/test/ft_2b_concurrence.rb +188 -0
  179. data/test/ft_2c_concurrence.rb +64 -0
  180. data/test/ft_30_socketlistener.rb +203 -0
  181. data/test/ft_31_flowname.rb +40 -0
  182. data/test/ft_32_journal.rb +91 -0
  183. data/test/ft_32c_journal.rb +102 -0
  184. data/test/ft_32d_journal.rb +84 -0
  185. data/test/ft_33_description.rb +107 -0
  186. data/test/ft_34_cancelwfid.rb +80 -0
  187. data/test/ft_35_localdefs.rb +75 -0
  188. data/test/ft_36_subprocids.rb +97 -0
  189. data/test/ft_37_pnames.rb +70 -0
  190. data/test/ft_38_tag.rb +127 -0
  191. data/test/ft_38b_tag.rb +161 -0
  192. data/test/ft_38c_tag.rb +100 -0
  193. data/test/ft_39_reserve.rb +63 -0
  194. data/test/ft_39b_reserve.rb +84 -0
  195. data/test/ft_3_equals.rb +170 -0
  196. data/test/ft_3b_lookup_vf.rb +83 -0
  197. data/test/ft_40_defined.rb +61 -0
  198. data/test/ft_41_case.rb +110 -0
  199. data/test/ft_42_environments.rb +75 -0
  200. data/test/ft_43_pat10.rb +85 -0
  201. data/test/ft_44_save.rb +70 -0
  202. data/test/ft_44b_restore.rb +212 -0
  203. data/test/ft_45_citerator.rb +214 -0
  204. data/test/ft_46_pparams.rb +62 -0
  205. data/test/ft_47_filter.rb +160 -0
  206. data/test/ft_48_fe_filter.rb +88 -0
  207. data/test/ft_49_condition.rb +126 -0
  208. data/test/ft_4_misc.rb +237 -0
  209. data/test/ft_50_xml_attribute.rb +155 -0
  210. data/test/ft_51_stack.rb +55 -0
  211. data/test/ft_52_obs_participant.rb +123 -0
  212. data/test/ft_53_null_noop_participant.rb +62 -0
  213. data/test/ft_54_listen.rb +288 -0
  214. data/test/ft_54b_listen.rb +66 -0
  215. data/test/ft_54c_listen.rb +99 -0
  216. data/test/ft_55_ptimeout.rb +59 -0
  217. data/test/ft_56_timeout.rb +59 -0
  218. data/test/ft_57_a.rb +145 -0
  219. data/test/ft_58_ejournal.rb +151 -0
  220. data/test/ft_59_ps.rb +150 -0
  221. data/test/ft_59b_ps_for_pat.rb +58 -0
  222. data/test/ft_5_time.rb +118 -0
  223. data/test/ft_60_ecancel.rb +161 -0
  224. data/test/ft_61_elsub.rb +51 -0
  225. data/test/ft_62_procparticipant.rb +71 -0
  226. data/test/ft_63_pause.rb +124 -0
  227. data/test/ft_64_alias.rb +102 -0
  228. data/test/ft_64_clone.rb +69 -0
  229. data/test/ft_65_stringlaunch.rb +59 -0
  230. data/test/ft_66_subforget.rb +70 -0
  231. data/test/ft_67_schedlaunch.rb +116 -0
  232. data/test/ft_68_ifparticipant.rb +70 -0
  233. data/test/ft_69_cancelmissing.rb +51 -0
  234. data/test/ft_6_lambda.rb +64 -0
  235. data/test/ft_70_lookupvar.rb +55 -0
  236. data/test/ft_71_log.rb +60 -0
  237. data/test/ft_72_lookup_processes.rb +76 -0
  238. data/test/ft_73_cancel_sub.rb +139 -0
  239. data/test/ft_74_block_and_workitem_dup.rb +63 -0
  240. data/test/ft_75_ruby_attributes.rb +87 -0
  241. data/test/ft_76_merge_isolate.rb +88 -0
  242. data/test/ft_77_segments.rb +35 -0
  243. data/test/ft_78_eval.rb +150 -0
  244. data/test/ft_79_tticket.rb +187 -0
  245. data/test/ft_79b_tticket.rb +172 -0
  246. data/test/ft_79c_outcome.rb +56 -0
  247. data/test/ft_7_lose.rb +104 -0
  248. data/test/ft_7b_lose.rb +78 -0
  249. data/test/ft_80_spname.rb +91 -0
  250. data/test/ft_81_exp.rb +60 -0
  251. data/test/ft_82_trecu.rb +46 -0
  252. data/test/ft_83_badpause.rb +58 -0
  253. data/test/ft_84_updateexp.rb +198 -0
  254. data/test/ft_85_dolhash.rb +43 -0
  255. data/test/ft_86_dollar_fv.rb +68 -0
  256. data/test/ft_87_define.rb +74 -0
  257. data/test/ft_8_forget.rb +44 -0
  258. data/test/ft_9_cursor.rb +145 -0
  259. data/test/ft_9b_cursor.rb +105 -0
  260. data/test/ft_tests.rb +124 -0
  261. data/test/hash_test.rb +75 -0
  262. data/test/hparticipant_test.rb +164 -0
  263. data/test/lookup_att_test.rb +90 -0
  264. data/test/lookup_vf_test.rb +94 -0
  265. data/test/misc_test.rb +90 -0
  266. data/test/nut_0_irb.rb +20 -0
  267. data/test/obs_test.rb +142 -0
  268. data/test/orest_test.rb +251 -0
  269. data/test/param_test.rb +290 -0
  270. data/test/participant_test.rb +101 -0
  271. data/test/pending.rb +23 -0
  272. data/test/ps_representation.rb +133 -0
  273. data/test/rake_ltest.rb +38 -0
  274. data/test/rake_qtest.rb +68 -0
  275. data/test/raw_prog_test.rb +412 -0
  276. data/test/restart_cron_test.rb +136 -0
  277. data/test/restart_paused_test.rb +98 -0
  278. data/test/restart_sleep_test.rb +140 -0
  279. data/test/restart_tests.rb +18 -0
  280. data/test/restart_when_test.rb +112 -0
  281. data/test/ruby_procdef_test.rb +132 -0
  282. data/test/rutest_utils.rb +63 -0
  283. data/test/sec_test.rb +205 -0
  284. data/test/slock_test.rb +80 -0
  285. data/test/storage_test.rb +44 -0
  286. data/test/test.rb +3 -0
  287. data/test/timeout_test.rb +105 -0
  288. data/test/util_xml_test.rb +112 -0
  289. data/test/wfid_test.rb +175 -0
  290. data/test/wi_test.rb +75 -0
  291. metadata +433 -0
@@ -0,0 +1,55 @@
1
+
2
+ #
3
+ # Testing OpenWFEru
4
+ #
5
+ # John Mettraux at openwfe.org
6
+ #
7
+
8
+ require 'flowtestbase'
9
+ require 'openwfe/def'
10
+
11
+
12
+ class FlowTest51 < Test::Unit::TestCase
13
+ include FlowTestBase
14
+
15
+ #def setup
16
+ #end
17
+
18
+ #def teardown
19
+ #end
20
+
21
+
22
+ #
23
+ # Test 0
24
+ #
25
+
26
+ #COUNT = 400 :)
27
+ #COUNT = 500 :(
28
+ COUNT = 450
29
+ #
30
+ # before svn639, it broke with a too deep stack with a sequence
31
+ # of 450 elements
32
+
33
+ class TestCondition51a0 < OpenWFE::ProcessDefinition
34
+ sequence do
35
+ COUNT.times do
36
+ toto
37
+ end
38
+ _print "${f:__result__}"
39
+ end
40
+ end
41
+
42
+ def test_0
43
+
44
+ count = 0
45
+
46
+ @engine.register_participant :toto do |workitem|
47
+ count += 1
48
+ workitem.__result__ = count
49
+ end
50
+
51
+ dotest(TestCondition51a0, "#{COUNT}")
52
+ end
53
+
54
+ end
55
+
@@ -0,0 +1,123 @@
1
+
2
+ #
3
+ # Testing OpenWFEru
4
+ #
5
+ # John Mettraux at openwfe.org
6
+ #
7
+
8
+ require 'flowtestbase'
9
+ require 'openwfe/def'
10
+
11
+
12
+ class FlowTest52 < Test::Unit::TestCase
13
+ include FlowTestBase
14
+
15
+ #def setup
16
+ #end
17
+
18
+ #def teardown
19
+ #end
20
+
21
+ #
22
+ # Test 0
23
+ #
24
+
25
+ class TestObsParticipant52a0 < OpenWFE::ProcessDefinition
26
+ participant :ref => :toto
27
+ end
28
+
29
+ def test_0
30
+
31
+ @engine.get_expression_pool.add_observer :apply do |evt, fe, workitem|
32
+ @tracer << "#{evt} #{fe.fei.expression_name}\n" \
33
+ if fe.fei.expression_name == "participant"
34
+ end
35
+ @engine.get_expression_pool.add_observer :reply_to_parent do |evt, fe, workitem|
36
+ @tracer << "#{evt} #{fe.fei.expression_name}\n" \
37
+ if fe.fei.expression_name == "participant"
38
+ end
39
+
40
+ @engine.register_participant :toto do |workitem|
41
+ @tracer << "toto\n"
42
+ end
43
+
44
+ dotest(
45
+ TestObsParticipant52a0,
46
+ """
47
+ apply participant
48
+ toto
49
+ reply_to_parent participant
50
+ """.strip)
51
+ end
52
+
53
+
54
+ #
55
+ # Test 1
56
+ #
57
+
58
+ class TestObsParticipant52a1 < OpenWFE::ProcessDefinition
59
+ sequence do
60
+ toto
61
+ sub0
62
+ end
63
+ process_definition :name => "sub0" do
64
+ end
65
+ end
66
+
67
+ def test_1
68
+ @engine.get_expression_pool.add_observer :apply do |evt, fe, workitem|
69
+ @tracer << "#{evt} #{fe.fei.expression_name}\n"
70
+ end
71
+ @engine.register_participant :toto do
72
+ #nothing
73
+ end
74
+ dotest(
75
+ TestObsParticipant52a1,
76
+ """
77
+ apply process-definition
78
+ apply sequence
79
+ apply toto
80
+ apply sub0
81
+ apply process-definition
82
+ """.strip)
83
+ end
84
+
85
+
86
+ #
87
+ # Test 2
88
+ #
89
+
90
+ class TestObsParticipant52a2 < OpenWFE::ProcessDefinition
91
+ sequence do
92
+ alpha
93
+ bravo
94
+ end
95
+ end
96
+
97
+ def test_2
98
+
99
+ @engine.get_participant_map.add_observer :dispatch do |evt, msg, wi|
100
+ @tracer << "#{evt} #{msg} #{wi.fei.expression_name}\n"
101
+ end
102
+
103
+ @engine.register_participant :alpha do |workitem|
104
+ @tracer << "alpha\n"
105
+ end
106
+ @engine.register_participant :bravo do |workitem|
107
+ @tracer << "bravo\n"
108
+ end
109
+
110
+ dotest(
111
+ TestObsParticipant52a2,
112
+ """
113
+ dispatch before_consume alpha
114
+ alpha
115
+ dispatch after_consume alpha
116
+ dispatch before_consume bravo
117
+ bravo
118
+ dispatch after_consume bravo
119
+ """.strip)
120
+ end
121
+
122
+ end
123
+
@@ -0,0 +1,62 @@
1
+
2
+ #
3
+ # Testing OpenWFEru
4
+ #
5
+ # John Mettraux at openwfe.org
6
+ #
7
+
8
+ require 'flowtestbase'
9
+ require 'openwfe/def'
10
+ require 'openwfe/participants/participants'
11
+
12
+
13
+ class FlowTest53 < Test::Unit::TestCase
14
+ include FlowTestBase
15
+
16
+ #def setup
17
+ #end
18
+
19
+ #def teardown
20
+ #end
21
+
22
+ #
23
+ # Test 0
24
+ #
25
+
26
+ class Test0 < OpenWFE::ProcessDefinition
27
+ sequence do
28
+ _print "a"
29
+ participant :ref => :null, :timeout => "1s"
30
+ _print "b"
31
+ end
32
+ end
33
+
34
+ def test_0
35
+
36
+ @engine.register_participant :null, OpenWFE::NullParticipant
37
+
38
+ dotest Test0, "a\nb"
39
+ end
40
+
41
+
42
+ #
43
+ # Test 1
44
+ #
45
+
46
+ class Test1 < OpenWFE::ProcessDefinition
47
+ sequence do
48
+ _print "a"
49
+ participant :ref => :noop
50
+ _print "b"
51
+ end
52
+ end
53
+
54
+ def test_1
55
+
56
+ @engine.register_participant :noop, OpenWFE::NoOperationParticipant
57
+
58
+ dotest Test1, "a\nb"
59
+ end
60
+
61
+ end
62
+
@@ -0,0 +1,288 @@
1
+
2
+ #
3
+ # Testing OpenWFEru
4
+ #
5
+ # John Mettraux at openwfe.org
6
+ #
7
+
8
+ require 'flowtestbase'
9
+ require 'openwfe/def'
10
+ require 'openwfe/participants/participants'
11
+
12
+
13
+ class FlowTest54 < Test::Unit::TestCase
14
+ include FlowTestBase
15
+
16
+ #def setup
17
+ #end
18
+
19
+ #def teardown
20
+ #end
21
+
22
+
23
+ #
24
+ # Test 0
25
+ #
26
+
27
+ class Test0 < OpenWFE::ProcessDefinition
28
+ concurrence do
29
+
30
+ listen :to => "^channel_.$" do
31
+ _print "ok"
32
+ end
33
+
34
+ sequence do
35
+
36
+ _sleep "500"
37
+ #
38
+ # just making sure that the participant is evaluated
39
+ # after the listen [registration]
40
+
41
+ participant :ref => "channel_z"
42
+ end
43
+ end
44
+ end
45
+
46
+ def test_0
47
+
48
+ @engine.register_participant :channel_z, OpenWFE::NoOperationParticipant
49
+
50
+ dotest Test0, "ok"
51
+ end
52
+
53
+
54
+ #
55
+ # Test 1
56
+ #
57
+
58
+ class Test1 < OpenWFE::ProcessDefinition
59
+ concurrence do
60
+
61
+ listen :to => "^channel_.$", :where => "${f:f0} == alpha" do
62
+ _print "alpha"
63
+ end
64
+
65
+ sequence do
66
+
67
+ _sleep "500"
68
+ #
69
+ # just making sure that the participant is evaluated
70
+ # after the listen [registration]
71
+
72
+ participant :ref => "channel_z"
73
+ set :field => "f0", :value => "alpha"
74
+ participant :ref => "channel_z"
75
+ end
76
+ end
77
+ end
78
+
79
+ def test_1
80
+
81
+ log_level_to_debug
82
+
83
+ @engine.register_participant :channel_z, OpenWFE::NoOperationParticipant
84
+
85
+ dotest Test1, "alpha"
86
+ end
87
+
88
+
89
+ #
90
+ # Test 2
91
+ #
92
+
93
+ class Test2 < OpenWFE::ProcessDefinition
94
+ concurrence do
95
+
96
+ listen :to => "^channel_.$" do
97
+ #
98
+ # upon apply by default
99
+
100
+ _print "apply"
101
+ end
102
+ listen :to => "^channel_.$", :upon => "reply" do
103
+ _print "reply"
104
+ end
105
+
106
+ sequence do
107
+
108
+ _sleep "500"
109
+
110
+ participant :ref => "channel_z"
111
+
112
+ participant :ref => "channel_z"
113
+ #
114
+ # listeners are 'once' by default, check that
115
+ end
116
+ end
117
+ end
118
+
119
+ def test_2
120
+
121
+ @engine.register_participant :channel_z, OpenWFE::NoOperationParticipant
122
+
123
+ dotest Test2, [ "apply\nreply", "reply\napply" ]
124
+ end
125
+
126
+
127
+ #
128
+ # Test 3 (moved to ft_54c_listen.rb)
129
+ #
130
+
131
+
132
+ #
133
+ # Test 4
134
+ #
135
+
136
+ class Test4 < OpenWFE::ProcessDefinition
137
+ concurrence do
138
+
139
+ #listen :to => "^channel_.$", :rwhere => "self.fei.wfid == '${r:workitem.fei.wfid}'" do
140
+ listen :to => "^channel_.$", :where => "${r:fei.wfid} == ${r:workitem.fei.wfid}" do
141
+ _print "ok"
142
+ end
143
+
144
+ sequence do
145
+ _sleep "500"
146
+ participant :ref => "channel_z"
147
+ end
148
+ end
149
+ end
150
+
151
+ def test_4
152
+
153
+ log_level_to_debug
154
+
155
+ @engine.register_participant :channel_z do
156
+ @tracer << "z\n"
157
+ end
158
+
159
+ dotest Test4, "z\nok"
160
+ end
161
+
162
+
163
+ #
164
+ # Test 5
165
+ #
166
+
167
+ class Test5 < OpenWFE::ProcessDefinition
168
+ concurrence do
169
+
170
+ #listen :to => :channel_z do
171
+ receive :on => :channel_z do
172
+ _print "ok"
173
+ end
174
+
175
+ sequence do
176
+ _sleep "500"
177
+ channel_zz
178
+ channel_z
179
+ end
180
+ end
181
+ end
182
+
183
+ def test_5
184
+
185
+ @engine.register_participant :channel_z do
186
+ @tracer << "z\n"
187
+ end
188
+ @engine.register_participant :channel_zz do
189
+ @tracer << "zz\n"
190
+ end
191
+
192
+ dotest Test5, "zz\nok\nz"
193
+ end
194
+
195
+
196
+ #
197
+ # Test 6 : merge => false (default)
198
+ #
199
+
200
+ class Test6 < OpenWFE::ProcessDefinition
201
+ concurrence do
202
+
203
+ sequence do
204
+
205
+ set :field => "truck", :value => "v_truck_0"
206
+ set :field => "car", :value => "v_car_0"
207
+
208
+ listen :to => "^channel_.$" do
209
+ sequence do
210
+ _print "${f:truck}"
211
+ _print "${f:ferryboat}"
212
+ _print "${f:car}"
213
+ end
214
+ end
215
+ end
216
+
217
+ sequence do
218
+
219
+ _sleep "500"
220
+ #
221
+ # just making sure that the participant is evaluated
222
+ # after the listen [registration]
223
+
224
+ set :field => "truck", :value => "v_truck_1"
225
+ set :field => "ferryboat", :value => "v_ferryboat_1"
226
+
227
+ participant :ref => "channel_z"
228
+ end
229
+ end
230
+ end
231
+
232
+ def test_6
233
+
234
+ log_level_to_debug
235
+
236
+ @engine.register_participant :channel_z, OpenWFE::NoOperationParticipant
237
+
238
+ dotest Test6, "v_truck_1\nv_ferryboat_1"
239
+ end
240
+
241
+
242
+ #
243
+ # Test 6b : merge => true
244
+ #
245
+
246
+ class Test6b < OpenWFE::ProcessDefinition
247
+ concurrence do
248
+
249
+ sequence do
250
+
251
+ set :field => "truck", :value => "v_truck_0"
252
+ set :field => "car", :value => "v_car_0"
253
+
254
+ listen :to => "^channel_.$", :merge => true do
255
+ sequence do
256
+ _print "${f:truck}"
257
+ _print "${f:ferryboat}"
258
+ _print "${f:car}"
259
+ end
260
+ end
261
+ end
262
+
263
+ sequence do
264
+
265
+ _sleep "500"
266
+ #
267
+ # just making sure that the participant is evaluated
268
+ # after the listen [registration]
269
+
270
+ set :field => "truck", :value => "v_truck_1"
271
+ set :field => "ferryboat", :value => "v_ferryboat_1"
272
+
273
+ participant :ref => "channel_z"
274
+ end
275
+ end
276
+ end
277
+
278
+ def test_6b
279
+
280
+ log_level_to_debug
281
+
282
+ @engine.register_participant :channel_z, OpenWFE::NoOperationParticipant
283
+
284
+ dotest Test6b, "v_truck_1\nv_ferryboat_1\nv_car_0"
285
+ end
286
+
287
+ end
288
+