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,75 @@
1
+
2
+ #
3
+ # Testing OpenWFE
4
+ #
5
+ # John Mettraux at openwfe.org
6
+ #
7
+ # Mon Oct 9 22:19:44 JST 2006
8
+ #
9
+
10
+ require 'openwfe/def'
11
+ require 'openwfe/workitem'
12
+ require 'openwfe/participants/storeparticipants'
13
+
14
+ require 'flowtestbase'
15
+
16
+
17
+ class FlowTest35 < Test::Unit::TestCase
18
+ include FlowTestBase
19
+
20
+ #def teardown
21
+ #end
22
+
23
+ #def setup
24
+ # super
25
+ # @engine.ac[:remote_definitions_allowed] = true
26
+ #end
27
+
28
+
29
+ #
30
+ # TEST 0
31
+
32
+ def test_local_0
33
+
34
+ #log_level_to_debug
35
+
36
+ li = OpenWFE::LaunchItem.new
37
+ li.wfdurl = "file:doc/res/defs/testdef.rb"
38
+
39
+ dotest(
40
+ li,
41
+ """a
42
+ b
43
+ c""")
44
+ end
45
+
46
+
47
+ #
48
+ # TEST 1
49
+
50
+ #def xxxx_local_1
51
+ def test_local_1
52
+
53
+ li = OpenWFE::LaunchItem.new
54
+ li.wfdurl = "doc/res/defs/testdef.rb"
55
+
56
+ dotest(
57
+ li,
58
+ """a
59
+ b
60
+ c""")
61
+ end
62
+
63
+
64
+ #
65
+ # TEST 2
66
+
67
+ def test_local_2
68
+
69
+ launch "file:doc/res/defs/testdef.rb"
70
+ sleep 0.300
71
+ assert_equal @tracer.to_s, "a\nb\nc"
72
+ end
73
+
74
+ end
75
+
@@ -0,0 +1,97 @@
1
+
2
+ #
3
+ # Testing OpenWFE
4
+ #
5
+ # John Mettraux at openwfe.org
6
+ #
7
+ # Mon Oct 9 22:19:44 JST 2006
8
+ #
9
+
10
+ require 'openwfe/def'
11
+
12
+ require 'flowtestbase'
13
+
14
+
15
+ class FlowTest36 < Test::Unit::TestCase
16
+ include FlowTestBase
17
+
18
+ #def teardown
19
+ #end
20
+
21
+ #def setup
22
+ #end
23
+
24
+ #
25
+ # TEST 0
26
+
27
+ class TestSubProcId0 < ProcessDefinition
28
+ concurrence do
29
+ subproc
30
+ subproc
31
+ end
32
+ process_definition :name => :subproc do
33
+ sequence do
34
+ #reval "puts fei"
35
+ check
36
+ end
37
+ end
38
+ end
39
+
40
+ class TestSubProcId1 < ProcessDefinition
41
+ concurrence do
42
+ subprocess :ref => "subproc"
43
+ subprocess :ref => :subproc
44
+ end
45
+ process_definition :name => :subproc do
46
+ sequence do
47
+ #reval "puts fei"
48
+ check
49
+ end
50
+ end
51
+ end
52
+
53
+ def test_subprocid_0
54
+
55
+ feis = {}
56
+
57
+ @engine.register_participant(:check) do |fexp, wi|
58
+ #puts fexp.fei.to_debug_s
59
+ feis[fexp.fei] = true
60
+ end
61
+
62
+ launch TestSubProcId0
63
+ launch TestSubProcId1
64
+
65
+ sleep 2
66
+
67
+ assert_equal 4, feis.keys.size
68
+ end
69
+
70
+
71
+ #
72
+ # TEST about Iterator
73
+
74
+ class TestIteratorSubId0 < ProcessDefinition
75
+ iterator :on_value => "a, b", :to_variable => "v" do
76
+ check
77
+ end
78
+ end
79
+
80
+ def test_iterator_subid_0
81
+
82
+ feis = {}
83
+
84
+ @engine.register_participant(:check) do |fexp, wi|
85
+ #puts fexp.fei.to_debug_s
86
+ feis[fexp.fei] = true
87
+ end
88
+
89
+ launch TestIteratorSubId0
90
+
91
+ sleep 0.350
92
+
93
+ assert_equal 2, feis.keys.size
94
+ end
95
+
96
+ end
97
+
@@ -0,0 +1,70 @@
1
+
2
+ #
3
+ # Testing OpenWFE
4
+ #
5
+ # John Mettraux at openwfe.org
6
+ #
7
+ # Mon Oct 9 22:19:44 JST 2006
8
+ #
9
+
10
+ require 'rubygems'
11
+
12
+ require 'openwfe/def'
13
+
14
+ require 'flowtestbase'
15
+
16
+
17
+ class FlowTest37 < Test::Unit::TestCase
18
+ include FlowTestBase
19
+
20
+ #def teardown
21
+ #end
22
+
23
+ #def setup
24
+ #end
25
+
26
+ DEF0 = '''
27
+ <process-definition name="pnames" revision="0">
28
+ <sequence>
29
+ <participant ref="sps" />
30
+ <participant ref="sps_1" />
31
+ </sequence>
32
+ </process-definition>
33
+ '''.strip
34
+
35
+ class TestPnames1 < OpenWFE::ProcessDefinition
36
+ sequence do
37
+ participant :ref => "sps"
38
+ participant :ref => "sps_1"
39
+ end
40
+ end
41
+
42
+ def test_0
43
+
44
+ prepare
45
+
46
+ dotest DEF0, "sps\nsps_1"
47
+ end
48
+
49
+ def test_1
50
+
51
+ prepare
52
+
53
+ #dotest TestPnames1, "sps\nsps_1", true
54
+ dotest TestPnames1, "sps\nsps_1"
55
+ end
56
+
57
+ protected
58
+
59
+ def prepare
60
+
61
+ @engine.register_participant("sps") do |fexp, wi|
62
+ @tracer << "sps\n"
63
+ end
64
+ @engine.register_participant("sps_1") do |fexp, wi|
65
+ @tracer << "sps_1\n"
66
+ end
67
+ end
68
+
69
+ end
70
+
data/test/ft_38_tag.rb ADDED
@@ -0,0 +1,127 @@
1
+
2
+ #
3
+ # Testing OpenWFE
4
+ #
5
+ # John Mettraux at openwfe.org
6
+ #
7
+ # Mon Oct 9 22:19:44 JST 2006
8
+ #
9
+
10
+ require 'flowtestbase'
11
+
12
+ require 'openwfe/def'
13
+
14
+
15
+ class FlowTest38 < Test::Unit::TestCase
16
+ include FlowTestBase
17
+
18
+ #def teardown
19
+ #end
20
+
21
+ #def setup
22
+ #end
23
+
24
+ #
25
+ # test 0
26
+ #
27
+
28
+ class TestTag0 < OpenWFE::ProcessDefinition
29
+ concurrence do
30
+ sequence :tag => "seq0" do
31
+ _sleep "1s"
32
+ _print "hello"
33
+ end
34
+ _undo :ref => "seq0"
35
+ _print "blah"
36
+ end
37
+ end
38
+
39
+ def test_tag_0
40
+
41
+ #log_level_to_debug
42
+
43
+ dotest TestTag0, "blah"
44
+ end
45
+
46
+
47
+ #
48
+ # test 1
49
+ #
50
+
51
+ class TestTag1 < OpenWFE::ProcessDefinition
52
+ concurrence do
53
+ sequence :tag => "seq0" do
54
+ count
55
+ _sleep "1s"
56
+ _print "hello"
57
+ end
58
+ _redo :ref => "seq0"
59
+ _print "blah"
60
+ end
61
+ end
62
+
63
+ def test_tag_1
64
+
65
+ count = 0
66
+
67
+ @engine.register_participant :count do
68
+ count += 1
69
+ end
70
+
71
+ dotest TestTag1, "blah\nhello"
72
+
73
+ assert_equal 1, count
74
+ end
75
+
76
+
77
+ #
78
+ # test 2
79
+ #
80
+
81
+ class TestTag2 < OpenWFE::ProcessDefinition
82
+ sequence do
83
+ sequence :tag => "seq0" do
84
+ count
85
+ _print "hello"
86
+ end
87
+ _redo :ref => "seq0"
88
+ _print "blah"
89
+ end
90
+ end
91
+
92
+ def test_tag_2
93
+
94
+ count = 0
95
+
96
+ @engine.register_participant(:count) do
97
+ count += 1
98
+ end
99
+
100
+ dotest TestTag2, "hello\nblah", true
101
+
102
+ assert_equal 1, count
103
+ end
104
+
105
+
106
+ #
107
+ # test 3
108
+ #
109
+
110
+ class TestTag3 < OpenWFE::ProcessDefinition
111
+ sequence do
112
+ sequence :tag => "seq0" do
113
+ _print "1"
114
+ undo :ref => "seq0"
115
+ _print "2"
116
+ end
117
+ _print "3"
118
+ end
119
+ end
120
+
121
+ def test_tag_3
122
+
123
+ dotest TestTag3, "1\n3"
124
+ end
125
+
126
+ end
127
+
@@ -0,0 +1,161 @@
1
+
2
+ #
3
+ # Testing OpenWFE
4
+ #
5
+ # John Mettraux at openwfe.org
6
+ #
7
+ # Mon Oct 9 22:19:44 JST 2006
8
+ #
9
+
10
+ require 'rubygems'
11
+
12
+ require 'openwfe/def'
13
+ require 'openwfe/participants'
14
+
15
+ require 'flowtestbase'
16
+
17
+
18
+ class FlowTest38b < Test::Unit::TestCase
19
+ include FlowTestBase
20
+
21
+ #def teardown
22
+ #end
23
+
24
+ #def setup
25
+ #end
26
+
27
+
28
+ #
29
+ # test 4
30
+ #
31
+
32
+ class TestTag4 < OpenWFE::ProcessDefinition
33
+ sequence do
34
+ sequence :tag => "seq0" do
35
+ peekin
36
+ end
37
+ peekout
38
+ end
39
+ end
40
+
41
+ def test_tag_4
42
+
43
+ #log_level_to_debug
44
+
45
+ @engine.register_participant :peekin do |fexp, wi|
46
+
47
+ fei = fexp.fei
48
+
49
+ assert_equal 0, @engine.get_variables.size
50
+
51
+ assert_equal 2, @engine.get_variables(fei.wfid).size
52
+ assert_equal 1, @engine.process_status(fei.wfid).tags.size
53
+ assert_equal "seq0", @engine.process_status(fei.wfid).tags.to_s
54
+ assert_not_nil @engine.get_variables(fei.wfid)["seq0"]
55
+
56
+ @tracer << "peekin\n"
57
+ end
58
+
59
+ @engine.register_participant :peekout do |fexp, wi|
60
+
61
+ fei = fexp.fei
62
+
63
+ assert_equal 1, @engine.get_variables(fei.wfid).size
64
+ assert_equal 0, @engine.process_status(fei.wfid).tags.size
65
+ assert_equal "", @engine.process_status(fei.wfid).tags.to_s
66
+
67
+ @tracer << "peekout\n"
68
+ end
69
+
70
+ dotest TestTag4, "peekin\npeekout"
71
+ end
72
+
73
+ # test 5 moved to ft_38c ...
74
+
75
+ #
76
+ # test 6
77
+ #
78
+
79
+ class TestTag6 < OpenWFE::ProcessDefinition
80
+
81
+ concurrence do
82
+ peek :tag => "A"
83
+ peek :tag => "B"
84
+ end
85
+ end
86
+
87
+ def test_6
88
+
89
+ @engine.register_participant :peek do |fexp, wi|
90
+
91
+ wfid = fexp.fei.parent_workflow_instance_id
92
+
93
+ #puts @engine.get_variables(wfid).keys.inspect
94
+ @tracer << @engine.process_status(wfid).tags.to_s
95
+ end
96
+
97
+ dotest TestTag6, [ 'AAB', 'BAB', 'ABAB' ]
98
+ end
99
+
100
+ #
101
+ # test 7 (milestone)
102
+ #
103
+
104
+ class TestTag7 < OpenWFE::ProcessDefinition
105
+ concurrence do
106
+ sequence do
107
+ participant0
108
+ participant1 :tag => "milestone"
109
+ participant2
110
+ end
111
+ sequence do
112
+ #wait :until => "'${milestone}' != ''", :frequency => "300"
113
+ wait :until => "${milestone} is set", :frequency => "300"
114
+ participant3
115
+ end
116
+ end
117
+ end
118
+
119
+ class OpenWFE::HashParticipant
120
+ def proceed_first
121
+ proceed first_workitem
122
+ end
123
+ end
124
+ #
125
+ # just added a shortcut method for testing purpose
126
+
127
+ def test_7
128
+
129
+ #log_level_to_debug
130
+
131
+ ps = (0..3).collect do |i|
132
+
133
+ @engine.register_participant(
134
+ "participant#{i}", OpenWFE::HashParticipant)
135
+ end
136
+
137
+ fei = launch TestTag7
138
+
139
+ sleep 0.350
140
+
141
+ assert_equal 1, ps[0].size
142
+ assert_equal 0, ps[1].size
143
+ assert_equal 0, ps[2].size
144
+ assert_equal 0, ps[3].size
145
+
146
+ ps[0].proceed_first
147
+
148
+ sleep 0.700 # why so much ? persistence...
149
+
150
+ assert_equal 0, ps[0].size
151
+ assert_equal 1, ps[1].size
152
+ assert_equal 0, ps[2].size
153
+ assert_equal 1, ps[3].size
154
+
155
+ @engine.cancel_process fei.wfid
156
+
157
+ sleep 0.500
158
+ end
159
+
160
+ end
161
+