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,76 @@
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/storeparticipants'
11
+
12
+
13
+ class FlowTest72 < 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
+ sequence do
29
+ _set :variable => "/toto", :value => "${f:toto}"
30
+ participant :alpha
31
+ end
32
+ end
33
+
34
+ def test_0
35
+
36
+ #log_level_to_debug
37
+
38
+ sa = @engine.register_participant :alpha, OpenWFE::HashParticipant
39
+
40
+ li = OpenWFE::LaunchItem.new Test0
41
+ li.toto = 'toto_zero'
42
+ fei0 = launch li
43
+
44
+ li = OpenWFE::LaunchItem.new Test0
45
+ li.toto = 'toto_one'
46
+ fei1 = launch li
47
+
48
+ sleep 0.350
49
+
50
+ wfids = @engine.lookup_processes('nada')
51
+ assert_equal 0, wfids.size
52
+
53
+ wfids = @engine.lookup_processes('toto')
54
+ assert_equal 2, wfids.size
55
+ assert wfids.include?(fei0.wfid)
56
+ assert wfids.include?(fei1.wfid)
57
+
58
+ wfids = @engine.lookup_processes('toto', 'smurf')
59
+ assert_equal 0, wfids.size
60
+
61
+ wfids = @engine.lookup_processes('toto', 'toto_.*')
62
+ assert_equal 2, wfids.size
63
+
64
+ wfids = @engine.lookup_processes('toto', Regexp.compile('toto_one'))
65
+ assert_equal wfids, [ fei1.wfid ]
66
+
67
+ # over.
68
+
69
+ @engine.cancel_process fei0
70
+ @engine.cancel_process fei1
71
+
72
+ sleep 0.350
73
+ end
74
+
75
+ end
76
+
@@ -0,0 +1,139 @@
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/storeparticipants'
11
+
12
+
13
+ class FlowTest73 < 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
+ sequence do
29
+ sub0
30
+ end
31
+ process_definition :name => "sub0" do
32
+ p0
33
+ end
34
+ end
35
+
36
+ def test_0
37
+
38
+ #log_level_to_debug
39
+
40
+ p0 = @engine.register_participant :p0, OpenWFE::HashParticipant
41
+
42
+ fei = launch Test0
43
+
44
+ sleep 0.350
45
+
46
+ assert_equal 1, p0.size
47
+ #puts "in store : " + p0.first_workitem.fei.to_s
48
+
49
+ wi = p0.first_workitem
50
+ assert_equal wi.fei.wfid, fei.wfid + ".0"
51
+
52
+ @engine.cancel_process fei
53
+
54
+ sleep 0.350
55
+
56
+ assert_equal 0, p0.size
57
+ end
58
+
59
+
60
+ #
61
+ # Test 1
62
+ #
63
+
64
+ class Test1 < OpenWFE::ProcessDefinition
65
+ sequence do
66
+ sub1 :forget => true
67
+ _sleep :for => "5m"
68
+ end
69
+ process_definition :name => "sub1" do
70
+ p1
71
+ end
72
+ end
73
+
74
+ def test_1
75
+
76
+ #log_level_to_debug
77
+
78
+ p1 = @engine.register_participant :p1, OpenWFE::HashParticipant
79
+
80
+ fei = launch Test1
81
+
82
+ sleep 0.350
83
+
84
+ assert_equal 1, p1.size
85
+ #puts "in store : " + p1.first_workitem.fei.to_s
86
+
87
+ wi = p1.first_workitem
88
+ assert_equal wi.fei.wfid, fei.wfid + ".0"
89
+
90
+ @engine.cancel_process(fei)
91
+
92
+ sleep 0.350
93
+
94
+ assert_equal 1, p1.size
95
+
96
+ @engine.cancel_process(p1.first_workitem.fei)
97
+
98
+ sleep 0.400
99
+
100
+ assert_equal 0, p1.size
101
+ end
102
+
103
+
104
+ #
105
+ # Test 2
106
+ #
107
+
108
+ class Test2 < OpenWFE::ProcessDefinition
109
+ sequence do
110
+ sub2 :forget => true
111
+ p2
112
+ end
113
+ process_definition :name => "sub2" do
114
+ p20
115
+ end
116
+ end
117
+
118
+ def test_2
119
+
120
+ #log_level_to_debug
121
+
122
+ p2 = @engine.register_participant :p2, OpenWFE::HashParticipant
123
+ p20 = @engine.register_participant :p20, OpenWFE::HashParticipant
124
+
125
+ fei = launch Test2
126
+
127
+ sleep 0.400
128
+
129
+ assert_equal 1, p2.size
130
+ assert_equal 1, p20.size
131
+
132
+ @engine.cancel_process p20.first_workitem.fei
133
+ sleep 0.350
134
+ @engine.cancel_process p2.first_workitem.fei
135
+ sleep 0.350
136
+ end
137
+
138
+ end
139
+
@@ -0,0 +1,63 @@
1
+
2
+ #
3
+ # Testing OpenWFE
4
+ #
5
+ # Original bug report by Maarten Oelering
6
+ # John Mettraux at openwfe.org
7
+ #
8
+ # Thu Sep 13 17:46:20 JST 2007
9
+ #
10
+
11
+ require 'flowtestbase'
12
+
13
+
14
+ class FlowTest74 < Test::Unit::TestCase
15
+ include FlowTestBase
16
+
17
+ #def teardown
18
+ #end
19
+
20
+ #def setup
21
+ #end
22
+
23
+ #
24
+ # TEST 0
25
+
26
+ def test_0
27
+
28
+ engine.register_participant("part1") do |workitem|
29
+ @tracer << "part1\n"
30
+ # the last expression of the block evaluates to the workitem
31
+ # remove this line or replace it with nil and it works again
32
+ workitem
33
+ end
34
+
35
+ engine.register_participant("part3") do |workitem|
36
+ @tracer << "part3\n"
37
+ end
38
+
39
+ engine.register_participant("part4") do |workitem|
40
+ @tracer << "part4\n"
41
+ end
42
+
43
+ process = <<THE_END
44
+ <process-definition name="test" revision="0.1">
45
+ <sequence>
46
+ <part1/>
47
+ <concurrence>
48
+ <part3/>
49
+ <part4/>
50
+ </concurrence>
51
+ </sequence>
52
+ </process-definition>
53
+ THE_END
54
+
55
+ #log_level_to_debug
56
+
57
+ dotest(
58
+ process.strip,
59
+ [ "part1\npart3\npart4", "part1\npart4\npart3" ])
60
+ end
61
+
62
+ end
63
+
@@ -0,0 +1,87 @@
1
+
2
+ #
3
+ # Testing OpenWFE
4
+ #
5
+ # John Mettraux at openwfe.org
6
+ #
7
+ # Thu Nov 1 15:21:34 JST 2007
8
+ #
9
+
10
+ require 'openwfe/def'
11
+
12
+ require 'flowtestbase'
13
+
14
+
15
+ class FlowTest75 < 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 Test0 < OpenWFE::ProcessDefinition
28
+ sequence do
29
+ set :field => "f0", :value => [ 'my', 'array' ]
30
+ set :field => :f1, :value => [ 'my', 'array' ]
31
+ _print "${f:f0.0}"
32
+ _print "${f:f1.1}"
33
+ end
34
+ end
35
+
36
+ def test_0
37
+
38
+ dotest Test0, "my\narray"
39
+ end
40
+
41
+ #
42
+ # TEST 1
43
+
44
+ class Test1 < OpenWFE::ProcessDefinition
45
+ sequence do
46
+ set :field => "f0", :value => true
47
+ _print "${r:workitem.f0.class.name}"
48
+ end
49
+ end
50
+
51
+ def test_1
52
+
53
+ dotest Test1, "TrueClass"
54
+ end
55
+
56
+ #
57
+ # TEST 2
58
+
59
+ class Test2 < OpenWFE::ProcessDefinition
60
+ sequence do
61
+ set :variable => "v0", :value => "alpha"
62
+ set :variable => :v0, :value => "bravo"
63
+ _print "${v0}"
64
+ set :field => "f0", :value => "alpha"
65
+ set :field => :f0, :value => "bravo"
66
+ _print "${f:f0}"
67
+ end
68
+ end
69
+
70
+ def test_2
71
+
72
+ dotest Test2, "bravo\nbravo"
73
+ end
74
+
75
+ #
76
+ # TEST 3
77
+
78
+ #class Test3 < OpenWFE::ProcessDefinition
79
+ # sequence do
80
+ # end
81
+ #end
82
+ #def test_3
83
+ # dotest Test3, "6"
84
+ #end
85
+
86
+ end
87
+
@@ -0,0 +1,88 @@
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 FlowTest76 < 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
+ class Test0 < OpenWFE::ProcessDefinition
27
+ sequence do
28
+ concurrence :merge_type => :isolate do
29
+ set :field => "y", :value => "y0"
30
+ set :field => "y", :value => "y1"
31
+ set :field => "y", :value => "y2"
32
+ end
33
+ catcher
34
+ end
35
+ end
36
+
37
+ def test_0
38
+
39
+ do_the_test Test0
40
+ end
41
+
42
+ #
43
+ # Test 1
44
+ #
45
+
46
+ class Test1 < OpenWFE::ProcessDefinition
47
+ sequence do
48
+ concurrent_iterator(
49
+ :on_value => "0, 1, 2",
50
+ :to_field => "f",
51
+ :merge_type => :isolate
52
+ ) do
53
+ set :field => "y", :value => "y${f:f}"
54
+ end
55
+ catcher
56
+ end
57
+ end
58
+
59
+ def test_1
60
+ do_the_test Test1
61
+ end
62
+
63
+ protected
64
+
65
+ def do_the_test (definition)
66
+
67
+ #log_level_to_debug
68
+
69
+ workitem = nil
70
+
71
+ engine.register_participant :catcher do |wi|
72
+ workitem = wi
73
+ end
74
+
75
+ dotest definition, ""
76
+
77
+ #puts
78
+ #puts workitem.to_s
79
+
80
+ 3.times do |i|
81
+ assert_equal "y#{i}", workitem.lookup_attribute("#{i}.y")
82
+ end
83
+ #
84
+ # 3 lines replaced by 3 lines :)
85
+ end
86
+
87
+ end
88
+