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,35 @@
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 FlowTest77 < Test::Unit::TestCase
13
+ include FlowTestBase
14
+
15
+ #def setup
16
+ #end
17
+
18
+ #def teardown
19
+ #end
20
+
21
+ TEST0 = "<print>nada</print>"
22
+
23
+ def test_0
24
+ dotest TEST0, "nada"
25
+ end
26
+
27
+
28
+ TEST1 = "_print 'nada'"
29
+
30
+ def test_1
31
+ dotest TEST1, "nada"
32
+ end
33
+
34
+ end
35
+
@@ -0,0 +1,150 @@
1
+
2
+ #
3
+ # Testing OpenWFEru
4
+ #
5
+ # John Mettraux at openwfe.org
6
+ #
7
+ # Tue Nov 20 21:46:30 JST 2007
8
+ #
9
+
10
+ require 'flowtestbase'
11
+
12
+
13
+ class FlowTest78 < 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
+ TEST0 = %{
27
+ <sequence>
28
+ <print>0</print>
29
+ <eval>
30
+ <![CDATA[
31
+ <print>1</print>
32
+ ]]>
33
+ </eval>
34
+ <print>2</print>
35
+ </sequence>
36
+ }.strip
37
+
38
+ def test_0
39
+
40
+ @engine.ac[:dynamic_eval_allowed] = true
41
+
42
+ dotest TEST0, "0\n1\n2"
43
+ end
44
+
45
+ #
46
+ # TEST 1
47
+ #
48
+
49
+ class Test1 < OpenWFE::ProcessDefinition
50
+ sequence do
51
+
52
+ set :var => "v0", :val => "val0"
53
+
54
+ set :field => "code", :value => "<print>hello 0</print>"
55
+ _eval :field_def => "code"
56
+ set :field => "code", :value => "_print 'hello 1'"
57
+ _eval :field_def => "code"
58
+ set :variable => "code", :value => "_print 'hello 1'"
59
+ _eval :variable_def => "code"
60
+
61
+ set :field => "code", :value => "_print '${v0}'"
62
+ _eval :field_def => "code"
63
+
64
+ set :field => "code", :value => "_print '${v0}'", :escape => true
65
+ set :var => "v0", :val => "val0b"
66
+ _eval :field_def => "code"
67
+ end
68
+ end
69
+
70
+ def test_1
71
+
72
+ @engine.ac[:dynamic_eval_allowed] = true
73
+
74
+ dotest Test1, "hello 0\nhello 1\nhello 1\nval0\nval0b"
75
+ end
76
+
77
+
78
+ #
79
+ # TEST 2
80
+ #
81
+
82
+ class Test2 < OpenWFE::ProcessDefinition
83
+ sequence do
84
+ _eval ""
85
+ _print "ok"
86
+ end
87
+ end
88
+
89
+ def test_2
90
+
91
+ @engine.ac[:dynamic_eval_allowed] = true
92
+
93
+ dotest Test2, "ok"
94
+ end
95
+
96
+
97
+ #
98
+ # TEST 3
99
+ #
100
+
101
+ class Test3 < OpenWFE::ProcessDefinition
102
+ sequence do
103
+ _eval "launcher"
104
+ _print "ok"
105
+ end
106
+ end
107
+
108
+ def test_3
109
+
110
+ @engine.ac[:dynamic_eval_allowed] = true
111
+
112
+ @engine.register_participant :launcher do |fexp, wi|
113
+ @tracer << "launcher\n"
114
+ #puts fexp.get_expression_storage.to_s
115
+ end
116
+
117
+ dotest Test3, "launcher\nok"
118
+ end
119
+
120
+
121
+ #
122
+ # TEST 4
123
+ #
124
+
125
+ class Test4 < OpenWFE::ProcessDefinition
126
+ _loop do
127
+ _print "before"
128
+ _eval :def => "launcher"
129
+ #launcher
130
+ _print "after"
131
+ _break
132
+ end
133
+ end
134
+
135
+ def test_4
136
+
137
+ @engine.ac[:dynamic_eval_allowed] = true
138
+
139
+ @engine.register_participant :launcher do |fexp, wi|
140
+ @tracer << "launcher\n"
141
+ #@tracer << "#{fexp.get_expression_storage.size}\n"
142
+ #puts fexp.get_expression_storage.to_s
143
+ #puts fexp.to_s
144
+ end
145
+
146
+ dotest Test4, "before\nlauncher\nafter"
147
+ end
148
+
149
+ end
150
+
@@ -0,0 +1,187 @@
1
+
2
+ #
3
+ # Testing OpenWFEru
4
+ #
5
+ # John Mettraux at openwfe.org
6
+ #
7
+ # Thu Jan 3 23:05:37 JST 2008
8
+ #
9
+
10
+ require 'flowtestbase'
11
+
12
+
13
+ #
14
+ # The process definition under test
15
+ #
16
+ class TroubleTicket01 < OpenWFE::ProcessDefinition
17
+
18
+ #
19
+ # The root of the process
20
+ #
21
+ sequence do
22
+
23
+ #
24
+ # the first activity, customer support
25
+ #
26
+ cs :activity => "enter details"
27
+
28
+ #
29
+ # initiating the first step
30
+ #
31
+ step :part => "qa", :desc => "reproduce problem"
32
+ end
33
+
34
+ #
35
+ # At the core of the process,
36
+ # the 'step' subprocess
37
+ #
38
+ process_definition :name => "step" do
39
+ sequence do
40
+
41
+ # participant performs activity
42
+ participant(
43
+ :ref => "${part}", :activity => "${desc}")
44
+
45
+ # then, call next step (via a subprocess)
46
+ subprocess :ref => "${f:next}"
47
+
48
+ end
49
+ end
50
+
51
+ #
52
+ # The 'outputs' of the activities
53
+ #
54
+
55
+ # QA 'reproduce problem' outputs
56
+
57
+ process_definition :name => "out:cannot_reproduce" do
58
+ step :part => "cs", :desc => "correct report"
59
+ end
60
+ process_definition :name => "out:known_solution" do
61
+ finalsteps
62
+ end
63
+ process_definition :name => "out:duplicate" do
64
+ step :part => "qa", :desc => "verify"
65
+ end
66
+ process_definition :name => "out:reproduced" do
67
+ step :part => "dev", :desc => "resolution"
68
+ end
69
+
70
+ # Customer Support 'correct report' outputs
71
+
72
+ process_definition :name => "out:submit" do
73
+ step :part => "qa", :desc => "reproduce problem"
74
+ end
75
+ process_definition :name => "out:give_up" do
76
+ finalsteps
77
+ end
78
+
79
+ # QA 'verify' outputs
80
+
81
+ process_definition :name => "out:qa_fixed" do
82
+ finalsteps
83
+ end
84
+ process_definition :name => "out:not_fixed" do
85
+ step :part => "dev", :desc => "resolution"
86
+ end
87
+
88
+ # dev 'resolution' outputs
89
+
90
+ process_definition :name => "out:dev_fixed" do
91
+ step :part => "qa", :desc => "verify"
92
+ end
93
+
94
+ set :var => "out:not_a_bug", :variable_value => "out:dev_fixed"
95
+ # "not_a_bug" is an alias to "dev_fixed"
96
+
97
+ # the final steps
98
+
99
+ process_definition :name => "finalsteps" do
100
+ concurrence do
101
+ cs :activity => "communicate results"
102
+ qa :activity => "audit"
103
+ end
104
+ end
105
+
106
+ end
107
+
108
+
109
+
110
+ class FlowTest79 < Test::Unit::TestCase
111
+ include FlowTestBase
112
+
113
+ def test_0
114
+
115
+ dotest(
116
+ [ "", "known_solution" ], # path
117
+ [ "cs", "qa", "cs", "qa" ]) # expected trace
118
+ end
119
+
120
+ def test_1
121
+
122
+ dotest(
123
+ [ "", "cannot_reproduce", "give_up" ], # path
124
+ [ "cs", "qa", "cs", "cs", "qa" ]) # expected trace
125
+ end
126
+
127
+ def test_2
128
+
129
+ dotest(
130
+ [ "", "reproduced", "dev_fixed", "qa_fixed" ], # path
131
+ [ "cs", "qa", "dev", "qa", "cs", "qa" ]) # expected trace
132
+ end
133
+
134
+ def test_3
135
+
136
+ dotest(
137
+ [ "", "reproduced", "not_a_bug", "qa_fixed" ], # path
138
+ [ "cs", "qa", "dev", "qa", "cs", "qa" ]) # expected trace
139
+ end
140
+
141
+ class TestParticipant
142
+ include OpenWFE::LocalParticipant
143
+
144
+ attr_reader :trace
145
+
146
+ def initialize (path)
147
+
148
+ @path = path
149
+ @trace = []
150
+ end
151
+
152
+ def consume (workitem)
153
+
154
+ @trace << workitem.participant_name
155
+ # Kilroy was here
156
+
157
+ workitem.next = "out:#{@path.delete_at(0)}" if @path.size > 0
158
+ # stating what should happen next (activity conclusion)
159
+
160
+ reply_to_engine workitem
161
+ # handing back the workitem to the engine
162
+ # (please resume the process)
163
+ end
164
+ end
165
+
166
+ def dotest (path, expected_trace)
167
+
168
+ p = TestParticipant.new path
169
+
170
+ @engine.register_participant :cs, p
171
+ @engine.register_participant :qa, p
172
+ @engine.register_participant :dev, p
173
+
174
+ fei = launch TroubleTicket01
175
+
176
+ @engine.wait_for fei
177
+
178
+ assert_equal expected_trace, p.trace
179
+
180
+ sleep 0.350 # c tests reply too fast, have to wait a bit
181
+
182
+ assert(
183
+ (@engine.process_status(fei) == nil),
184
+ "process not over, check the [error] log")
185
+ end
186
+ end
187
+
@@ -0,0 +1,172 @@
1
+
2
+ #
3
+ # Testing OpenWFEru
4
+ #
5
+ # John Mettraux at openwfe.org
6
+ #
7
+ # Thu Jan 3 23:05:37 JST 2008
8
+ #
9
+
10
+ require 'flowtestbase'
11
+
12
+
13
+ #
14
+ # The process definition under test
15
+ #
16
+ class TroubleTicket02 < OpenWFE::ProcessDefinition
17
+
18
+ #
19
+ # The root of the process
20
+ #
21
+ sequence do
22
+
23
+ #
24
+ # the first activity, customer support
25
+ #
26
+ cs :activity => "enter details"
27
+
28
+ #
29
+ # initiating the first step
30
+ #
31
+ step "qa", :desc => "reproduce problem"
32
+ end
33
+
34
+ #
35
+ # The 'outputs' of the activities
36
+ #
37
+
38
+ # QA 'reproduce problem' outputs
39
+
40
+ process_definition :name => "out:cannot_reproduce" do
41
+ step "cs", :desc => "correct report"
42
+ end
43
+ process_definition :name => "out:known_solution" do
44
+ finalsteps
45
+ end
46
+ process_definition :name => "out:duplicate" do
47
+ step "qa", :desc => "verify"
48
+ end
49
+ process_definition :name => "out:reproduced" do
50
+ step "dev", :desc => "resolution"
51
+ end
52
+
53
+ # Customer Support 'correct report' outputs
54
+
55
+ process_definition :name => "out:submit" do
56
+ step "qa", :desc => "reproduce problem"
57
+ end
58
+ process_definition :name => "out:give_up" do
59
+ finalsteps
60
+ end
61
+
62
+ # QA 'verify' outputs
63
+
64
+ process_definition :name => "out:qa_fixed" do
65
+ finalsteps
66
+ end
67
+ process_definition :name => "out:not_fixed" do
68
+ step "dev", :desc => "resolution"
69
+ end
70
+
71
+ # dev 'resolution' outputs
72
+
73
+ process_definition :name => "out:dev_fixed" do
74
+ step "qa", :desc => "verify"
75
+ end
76
+
77
+ set :var => "out:not_a_bug", :variable_value => "out:dev_fixed"
78
+ # "not_a_bug" is an alias to "dev_fixed"
79
+
80
+ # the final steps
81
+
82
+ process_definition :name => "finalsteps" do
83
+ concurrence do
84
+ cs :activity => "communicate results"
85
+ qa :activity => "audit"
86
+ end
87
+ end
88
+
89
+ end
90
+
91
+
92
+
93
+ class FlowTest79b < Test::Unit::TestCase
94
+ include FlowTestBase
95
+
96
+ def test_0
97
+
98
+ dotest(
99
+ [ "", "known_solution" ], # path
100
+ [ "cs", "qa", "cs", "qa" ]) # expected trace
101
+ end
102
+
103
+ def test_1
104
+
105
+ dotest(
106
+ [ "", "cannot_reproduce", "give_up" ], # path
107
+ [ "cs", "qa", "cs", "cs", "qa" ]) # expected trace
108
+ end
109
+
110
+ def test_2
111
+
112
+ dotest(
113
+ [ "", "reproduced", "dev_fixed", "qa_fixed" ], # path
114
+ [ "cs", "qa", "dev", "qa", "cs", "qa" ]) # expected trace
115
+ end
116
+
117
+ def test_3
118
+
119
+ dotest(
120
+ [ "", "reproduced", "not_a_bug", "qa_fixed" ], # path
121
+ [ "cs", "qa", "dev", "qa", "cs", "qa" ]) # expected trace
122
+ end
123
+
124
+ class TestParticipant
125
+ include OpenWFE::LocalParticipant
126
+
127
+ attr_reader :trace
128
+
129
+ def initialize (path)
130
+
131
+ @path = path
132
+ @trace = []
133
+ end
134
+
135
+ def consume (workitem)
136
+
137
+ @trace << workitem.participant_name
138
+ # Kilroy was here
139
+
140
+ workitem.outcome = "out:#{@path.delete_at(0)}" if @path.size > 0
141
+ # stating what should happen next (activity conclusion)
142
+
143
+ reply_to_engine workitem
144
+ # handing back the workitem to the engine
145
+ # (please resume the process)
146
+ end
147
+ end
148
+
149
+ def dotest (path, expected_trace)
150
+
151
+ #log_level_to_debug
152
+
153
+ p = TestParticipant.new path
154
+
155
+ @engine.register_participant :cs, p
156
+ @engine.register_participant :qa, p
157
+ @engine.register_participant :dev, p
158
+
159
+ fei = launch TroubleTicket02
160
+
161
+ @engine.wait_for fei
162
+
163
+ assert_equal expected_trace, p.trace
164
+
165
+ sleep 0.400 # c tests reply too fast, have to wait a bit
166
+
167
+ assert(
168
+ (@engine.process_status(fei) == nil),
169
+ "process not over, check the [error] log")
170
+ end
171
+ end
172
+