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,54 @@
1
+
2
+ #
3
+ # Testing OpenWFE
4
+ #
5
+ # John Mettraux at openwfe.org
6
+ #
7
+ # Tue Jan 2 13:14:37 JST 2007
8
+ #
9
+
10
+ require 'rubygems'
11
+
12
+ require 'flowtestbase'
13
+ require 'openwfe/def'
14
+
15
+
16
+ class FlowTest11b < Test::Unit::TestCase
17
+ include FlowTestBase
18
+
19
+ #def setup
20
+ #end
21
+
22
+ #def teardown
23
+ #end
24
+
25
+ #
26
+ # Test 0
27
+ #
28
+ # bug #9905 : "NPE" was raised...
29
+ #
30
+
31
+ class TestDefinition0 < OpenWFE::ProcessDefinition
32
+ def make
33
+ _print "ok"
34
+ end
35
+ end
36
+
37
+ def test_0
38
+ dotest TestDefinition0.new, "ok"
39
+ end
40
+
41
+ #
42
+ # Test 1
43
+ #
44
+
45
+ class TestDefinition1 < OpenWFE::ProcessDefinition
46
+ _print "ok"
47
+ end
48
+
49
+ def test_1
50
+ dotest TestDefinition1, "ok"
51
+ end
52
+
53
+ end
54
+
@@ -0,0 +1,97 @@
1
+
2
+ #
3
+ # Testing OpenWFE
4
+ #
5
+ # John Mettraux at openwfe.org
6
+ #
7
+ # Tue Jan 2 13:14:37 JST 2007
8
+ #
9
+
10
+ require 'flowtestbase'
11
+ require 'openwfe/def'
12
+
13
+
14
+ class FlowTest12 < Test::Unit::TestCase
15
+ include FlowTestBase
16
+
17
+ #def setup
18
+ #end
19
+
20
+ #def teardown
21
+ #end
22
+
23
+
24
+ #
25
+ # Test 0
26
+ #
27
+
28
+ class BpDef0 < OpenWFE::ProcessDefinition
29
+ def make
30
+ process_definition :name => "test0", :revision => "0" do
31
+ sequence do
32
+ participant :ref => "block-participant"
33
+ _print "done."
34
+ end
35
+ end
36
+ end
37
+ end
38
+
39
+ def test_bp_0
40
+ dotest(
41
+ BpDef0,
42
+ """the block participant received a workitem
43
+ done.""")
44
+ end
45
+
46
+
47
+ #
48
+ # Test 1
49
+ #
50
+
51
+ class BpDef1 < OpenWFE::ProcessDefinition
52
+ def make
53
+ process_definition :name => "test1", :revision => "0" do
54
+ bp1a
55
+ end
56
+ end
57
+ end
58
+
59
+ def test_bp_1
60
+
61
+ @engine.register_participant("bp1a") do |fexp, wi|
62
+ @tracer << "bp1a : "
63
+ @tracer << fexp.class.name
64
+ @tracer << "\n"
65
+ end
66
+
67
+ dotest(
68
+ BpDef1,
69
+ """bp1a : OpenWFE::ParticipantExpression""")
70
+ end
71
+
72
+
73
+ #
74
+ # Test 2
75
+ #
76
+
77
+ class BpDef2 < OpenWFE::ProcessDefinition
78
+ sequence do
79
+ bp
80
+ _print "${f:__result__}"
81
+ end
82
+ end
83
+
84
+ def test_bp_2
85
+
86
+ @engine.register_participant("bp") do |fexp, wi|
87
+ "a string result"
88
+ #
89
+ # the 'return' value of a block participant is stored
90
+ # in the "__result__" field of the workitem
91
+ end
92
+
93
+ dotest(BpDef2, "a string result")
94
+ end
95
+
96
+ end
97
+
data/test/ft_13_eno.rb ADDED
@@ -0,0 +1,52 @@
1
+
2
+ #
3
+ # Testing OpenWFE
4
+ #
5
+ # John Mettraux at openwfe.org
6
+ #
7
+ # Tue Jan 2 13:14:37 JST 2007
8
+ #
9
+
10
+ require 'openwfe/def'
11
+ require 'openwfe/participants/participants'
12
+ require 'openwfe/participants/enoparticipants'
13
+ require 'flowtestbase'
14
+
15
+
16
+ class FlowTest13 < Test::Unit::TestCase
17
+ include FlowTestBase
18
+
19
+ #def setup
20
+ #end
21
+
22
+ #def teardown
23
+ #end
24
+
25
+ #
26
+ # Test 0
27
+ #
28
+
29
+ class TestDefinition0 < OpenWFE::ProcessDefinition
30
+ def make
31
+ process_definition :name => "test0", :revision => "0" do
32
+ sequence do
33
+ set :field => 'email_target' do
34
+ "whatever56x56@gmail.com"
35
+ end
36
+ set :field => 'customer_name' do
37
+ "Monsieur Toto"
38
+ end
39
+ participant :ref => 'eno'
40
+ _print "ok"
41
+ end
42
+ end
43
+ end
44
+ end
45
+
46
+ def test_ppd_0
47
+ dotest(
48
+ TestDefinition0,
49
+ "ok")
50
+ end
51
+ end
52
+
@@ -0,0 +1,88 @@
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
+
13
+ class FlowTest14 < Test::Unit::TestCase
14
+ include FlowTestBase
15
+
16
+ #def setup
17
+ #end
18
+
19
+ #def teardown
20
+ #end
21
+
22
+ def test_0
23
+ dotest(
24
+ '''<process-definition name="subtest0" revision="0">
25
+
26
+ <subprocess ref="sub0" />
27
+
28
+ <process-definition name="sub0">
29
+ <print>ok</print>
30
+ </process-definition>
31
+
32
+ </process-definition>''', 'ok')
33
+ end
34
+
35
+ def test_1
36
+ dotest(
37
+ '''<process-definition name="subtest0" revision="0">
38
+
39
+ <sequence>
40
+ <subprocess ref="sub0" />
41
+ <subprocess ref="sub0" />
42
+ </sequence>
43
+
44
+ <process-definition name="sub0">
45
+ <print>ok</print>
46
+ </process-definition>
47
+
48
+ </process-definition>''', "ok\nok")
49
+ end
50
+
51
+ def test_2
52
+ dotest(
53
+ '''<process-definition name="subtest0" revision="0">
54
+
55
+ <sequence>
56
+ <sub0 />
57
+ <print>after</print>
58
+ </sequence>
59
+
60
+ <process-definition name="sub0">
61
+ <print>ok</print>
62
+ </process-definition>
63
+
64
+ </process-definition>''', "ok\nafter")
65
+ end
66
+
67
+ def test_3
68
+ dotest(
69
+ '''<process-definition name="subtest0" revision="0">
70
+
71
+ <sequence>
72
+ <set variable="v" value="out" />
73
+ <sub0 />
74
+ <print>after : ${v}</print>
75
+ </sequence>
76
+
77
+ <process-definition name="sub0">
78
+ <sequence>
79
+ <set variable="v" value="in" />
80
+ <print>ok : ${v}</print>
81
+ </sequence>
82
+ </process-definition>
83
+
84
+ </process-definition>''', "ok : in\nafter : out")
85
+ end
86
+
87
+ end
88
+
@@ -0,0 +1,192 @@
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 'flowtestbase'
14
+
15
+
16
+ class FlowTest14b < Test::Unit::TestCase
17
+ include FlowTestBase
18
+
19
+ #def setup
20
+ #end
21
+
22
+ #def teardown
23
+ #end
24
+
25
+
26
+ #
27
+ # TEST 0
28
+
29
+ def test_0
30
+
31
+ dotest(
32
+ '''<process-definition name="subtest0" revision="0">
33
+
34
+ <sequence>
35
+ <subprocess ref="sub0" a="A" b="B" c="C" />
36
+ <sub0 a="A" b="B" c="C" />
37
+ </sequence>
38
+
39
+ <process-definition name="sub0">
40
+ <print>${a}${b}${c}</print>
41
+ </process-definition>
42
+
43
+ </process-definition>''',
44
+ "ABC\nABC")
45
+ end
46
+
47
+
48
+ #
49
+ # TEST 1
50
+
51
+ class SubTest1 < OpenWFE::ProcessDefinition
52
+
53
+ sub1 "toto", :a => "A"
54
+
55
+ process_definition :name => :sub1 do
56
+ _print "${0} ${a}"
57
+ end
58
+ end
59
+
60
+ def test_1
61
+
62
+ dotest SubTest1, "toto A"
63
+ end
64
+
65
+
66
+ #
67
+ # TEST 1b
68
+
69
+ def test_1b
70
+
71
+ dotest(
72
+ '''<process-definition name="subtest0" revision="0">
73
+
74
+ <sequence>
75
+ <subprocess ref="sub0" a="A">zero</subprocess>
76
+ <sub0 a="A">rei</sub0>
77
+ </sequence>
78
+
79
+ <process-definition name="sub0">
80
+ <print>${0} ${a}</print>
81
+ </process-definition>
82
+
83
+ </process-definition>''',
84
+ "zero A\nrei A")
85
+ end
86
+
87
+
88
+ #
89
+ # TEST 2
90
+
91
+ class SubTest2 < OpenWFE::ProcessDefinition
92
+ def make
93
+
94
+ sequence do
95
+ sub1 do
96
+ "a"
97
+ end
98
+ sub1 "c", "d"
99
+ end
100
+
101
+ process_definition :name => :sub1 do
102
+ _print "${0} ${1}"
103
+ end
104
+ end
105
+ end
106
+
107
+ def test_2
108
+
109
+ dotest SubTest2, "a \nc d"
110
+ end
111
+
112
+
113
+ #
114
+ # TEST 3
115
+
116
+ class SubTest3 < OpenWFE::ProcessDefinition
117
+
118
+ subprocess "c", "d", :ref => :sub1
119
+
120
+ process_definition :name => :sub1 do
121
+ _print "${0} ${1}"
122
+ end
123
+ end
124
+
125
+ def test_3
126
+
127
+ dotest SubTest3, "c d"
128
+ end
129
+
130
+ #
131
+ # TEST 4
132
+
133
+ class Test4 < OpenWFE::ProcessDefinition
134
+ sub0
135
+ process_definition :name => "sub0" do
136
+ toto
137
+ end
138
+ end
139
+
140
+ def test_4
141
+
142
+ #log_level_to_debug
143
+
144
+ @engine.register_participant "toto", OpenWFE::NullParticipant
145
+
146
+ fei = launch Test4
147
+
148
+ sleep 0.350
149
+
150
+ #puts @engine.get_expression_storage
151
+ assert_equal 8, @engine.get_expression_storage.size
152
+
153
+ @engine.cancel_process fei
154
+
155
+ sleep 0.350
156
+
157
+ assert_equal 1, @engine.get_expression_storage.size
158
+ end
159
+
160
+ #
161
+ # TEST 5
162
+
163
+ class Test5 < OpenWFE::ProcessDefinition
164
+ sub0 :forget => true
165
+ process_definition :name => "sub0" do
166
+ toto
167
+ end
168
+ end
169
+
170
+ def test_5
171
+
172
+ #log_level_to_debug
173
+
174
+ @engine.register_participant "toto", OpenWFE::NullParticipant
175
+
176
+ fei = launch Test5
177
+
178
+ sleep 0.350
179
+
180
+ #puts @engine.get_expression_storage
181
+ assert_equal 4, @engine.get_expression_storage.size
182
+
183
+ @engine.cancel_process fei.wfid + ".0"
184
+ # cancelling the remaining subprocess
185
+
186
+ sleep 0.350
187
+
188
+ assert_equal 1, @engine.get_expression_storage.size
189
+ end
190
+
191
+ end
192
+