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,126 @@
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 FlowTest49 < 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 TestCondition49a0 < OpenWFE::ProcessDefinition
27
+ sequence do
28
+ _if :test => "false"
29
+ _print "0 ${f:__result__}"
30
+ _if :test => "true; false"
31
+ _print "1 ${f:__result__}"
32
+ _if :test => "false; true"
33
+ _print "2 ${f:__result__}"
34
+ #_if :test => "print ''; true"
35
+ _if :test => "''; true"
36
+ _print "3 ${f:__result__}"
37
+ #_if :test => "begin print ''; end; true"
38
+ _if :test => "begin ''; end; true"
39
+ _print "4 ${f:__result__}"
40
+
41
+ unset :field => "__result__"
42
+
43
+ _if :test => "true == "
44
+ _print "5 ${f:__result__}"
45
+ _if :test => " == true"
46
+ _print "6 ${f:__result__}"
47
+ end
48
+ end
49
+
50
+ def test_0
51
+
52
+ dotest(
53
+ TestCondition49a0,
54
+ [ "0 false",
55
+ "1 false",
56
+ "2 true",
57
+ "3 true",
58
+ "4 true",
59
+ "5 false",
60
+ "6 false" ].join("\n"))
61
+ end
62
+
63
+
64
+ #
65
+ # Test 1
66
+ #
67
+
68
+ class TestCondition49a1 < OpenWFE::ProcessDefinition
69
+ sequence do
70
+ _if :test => "true and false and false"
71
+ _print "0 ${f:__result__}"
72
+ _if :rtest => "true and true and true"
73
+ _print "1 ${f:__result__}"
74
+ _if :rtest => "false or false or true"
75
+ _print "2 ${f:__result__}"
76
+ end
77
+ end
78
+
79
+ def test_1
80
+
81
+ dotest(
82
+ TestCondition49a1,
83
+ [ "0 false", "1 true", "2 true" ].join("\n"))
84
+ end
85
+
86
+
87
+ #
88
+ # Test 2
89
+ #
90
+
91
+ class TestCondition49a2 < OpenWFE::ProcessDefinition
92
+ sequence do
93
+ _if :test => "true"
94
+ _print "0 ${f:__result__}"
95
+ _if :not => "false"
96
+ _print "1 ${f:__result__}"
97
+ _if :rnot => "1 > 3"
98
+ _print "2 ${f:__result__}"
99
+
100
+ unset :field => "__result__"
101
+
102
+ _if :rnot => "1 > -1"
103
+ _print "3 ${f:__result__}"
104
+
105
+ _if :rtest => "workitem.is_a?(String)"
106
+ _print "4 ${f:__result__}"
107
+
108
+ _if :rtest => "wi.is_a?(InFlowWorkItem)"
109
+ _print "5 ${f:__result__}"
110
+ end
111
+ end
112
+
113
+ def test_2
114
+
115
+ dotest(
116
+ TestCondition49a2,
117
+ [ "0 true",
118
+ "1 true",
119
+ "2 true",
120
+ "3 false",
121
+ "4 false",
122
+ "5 true" ].join("\n"))
123
+ end
124
+
125
+ end
126
+
data/test/ft_4_misc.rb ADDED
@@ -0,0 +1,237 @@
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 FlowTest4 < Test::Unit::TestCase
14
+ include FlowTestBase
15
+
16
+ #def setup
17
+ #end
18
+
19
+ #def teardown
20
+ #end
21
+
22
+ def test_print_0
23
+ dotest(
24
+ '''<process-definition name="print_0" revision="0">
25
+ <sequence>
26
+ <print escape="true">${f:xxx}</print>
27
+ </sequence>
28
+ </process-definition>''', "${f:xxx}")
29
+ end
30
+
31
+ class TestPrint1 < OpenWFE::ProcessDefinition
32
+ sequence do
33
+ _set :v => "toto", :value => '0'
34
+ _print "${toto}"
35
+ _print "${toto}", :escape => false
36
+ _print "${toto}", :escape => true
37
+ end
38
+ end
39
+ def test_print_1
40
+ dotest TestPrint1, "0\n0\n${toto}"
41
+ end
42
+
43
+ def test_reval_0
44
+ dotest(
45
+ '''<process-definition name="reval_0" revision="0">
46
+ <sequence>
47
+ <reval><![CDATA[
48
+ workitem.attributes["from_ruby"] = "ok"
49
+ ]]></reval>
50
+ <print>${f:from_ruby}</print>
51
+ </sequence>
52
+ </process-definition>''', "ok")
53
+ end
54
+
55
+ def test_reval_1
56
+ dotest(
57
+ '''<process-definition name="reval_1" revision="0">
58
+ <sequence>
59
+ <set variable="field-name" value="from_ruby" />
60
+ <reval>
61
+ workitem.attributes["${field-name}"] = "ok"
62
+ </reval>
63
+ <print>${f:${field-name}}</print>
64
+ </sequence>
65
+ </process-definition>''', "ok")
66
+ end
67
+
68
+ def test_reval_2
69
+ dotest(
70
+ '''<process-definition name="reval_2" revision="0">
71
+ <sequence>
72
+ <set variable="field-value" value="ok" />
73
+ <reval>
74
+ workitem.attributes["from_ruby"] = "${field-value}"
75
+ </reval>
76
+ <print>${f:from_ruby}</print>
77
+ </sequence>
78
+ </process-definition>''', "ok")
79
+ end
80
+
81
+ def test_reval_3
82
+ dotest(
83
+ '''<process-definition name="reval_3" revision="0">
84
+ <sequence>
85
+ <set variable="v">
86
+ <reval code="1 == 2" />
87
+ </set>
88
+ <print>${v}</print>
89
+ </sequence>
90
+ </process-definition>''', "false")
91
+ end
92
+
93
+ class Reval4 < OpenWFE::ProcessDefinition
94
+ reval """
95
+ tracer = self.application_context['__tracer']
96
+
97
+ tracer << 'hello\n'
98
+
99
+ tracer << workitem.attributes.length.to_s
100
+ """
101
+ end
102
+ def test_reval_4
103
+ dotest Reval4, [ "hello\n2", "hello\n1" ]
104
+ end
105
+
106
+ class Reval5 < OpenWFE::ProcessDefinition
107
+ sequence do
108
+ reval """
109
+ wi.customer_name = 'dubious'
110
+ 'surf'
111
+ """
112
+ _print "${f:__result__}"
113
+ _print "${f:customer_name}"
114
+ end
115
+ end
116
+
117
+ def test_reval_5
118
+ dotest Reval5, "surf\ndubious"
119
+ end
120
+
121
+ class Reval6 < OpenWFE::ProcessDefinition
122
+ sequence do
123
+ set :field => "f0", :value => "3 + 2 + 2"
124
+ set :field => "f1" do
125
+ reval :field_code => "f0"
126
+ end
127
+ _print "${f:f1}"
128
+
129
+ set :variable => "v0", :value => "5 - 5"
130
+ set :variable => "v1" do
131
+ reval :variable_code => "v0"
132
+ end
133
+ _print "${v1}"
134
+ end
135
+ end
136
+
137
+ def test_reval_6
138
+ #log_level_to_debug
139
+ dotest Reval6, "7\n0"
140
+ end
141
+
142
+ #
143
+ # DRU tests
144
+
145
+ def test_dru_0
146
+ dotest(
147
+ '''<process-definition name="dru_0" revision="0">
148
+ <sequence>
149
+ <print>${r:1+2}</print>
150
+ </sequence>
151
+ </process-definition>''', "3")
152
+ end
153
+
154
+ def test_dru_1
155
+ dotest(
156
+ '''<process-definition name="dru_1" revision="0">
157
+ <sequence>
158
+ <print>${r:"x"*3}</print>
159
+ </sequence>
160
+ </process-definition>''', "xxx")
161
+ end
162
+
163
+ def test_dru_2
164
+ dotest(
165
+ '''<process-definition name="dru_2" revision="0">
166
+ <sequence>
167
+ <set
168
+ variable="v"
169
+ value="${r:5*2}"
170
+ />
171
+ <print>${v}</print>
172
+ </sequence>
173
+ </process-definition>''', "10")
174
+ end
175
+
176
+ def test_dru_3
177
+ dotest(
178
+ '''<process-definition name="dru_3" revision="0">
179
+ <sequence>
180
+ <set variable="w" value="W" />
181
+ <set variable="v">
182
+ <!--
183
+ <reval>self.lookup_variable("w") * 3</reval>
184
+ <reval>lookup_variable("w") * 3</reval>
185
+ -->
186
+ <reval>"W" * 3</reval>
187
+ </set>
188
+ <print>${v}</print>
189
+ </sequence>
190
+ </process-definition>''', "WWW")
191
+ end
192
+
193
+ def test_dru_4
194
+ dotest(
195
+ '''<process-definition name="dru_4" revision="0">
196
+ <sequence>
197
+ <set variable="v">
198
+ <reval>fei.workflow_definition_name</reval>
199
+ </set>
200
+ <print>${v}</print>
201
+
202
+ <print>${r:fei.workflow_definition_name}</print>
203
+ </sequence>
204
+ </process-definition>''', """dru_4
205
+ dru_4""")
206
+ end
207
+
208
+ class TestSetEscape0 < OpenWFE::ProcessDefinition
209
+ sequence do
210
+ _set :v => "t0" do
211
+ "This is ${my template}"
212
+ end
213
+ _set :v => "t1", :escape => true do
214
+ "This is ${my template}"
215
+ end
216
+ _set :v => "t2", :val => "This is ${my template}", :escape => "true"
217
+ peek
218
+ #_print { v "t0" }
219
+ #_print { v "t1" }
220
+ end
221
+ end
222
+ def test_set_escape_0
223
+ @engine.register_participant :peek do |fexp, wi|
224
+ @tracer << fexp.get_environment.variables['t0']
225
+ @tracer << "\n"
226
+ @tracer << fexp.get_environment.variables['t1']
227
+ @tracer << "\n"
228
+ @tracer << fexp.get_environment.variables['t2']
229
+ @tracer << "\n"
230
+ end
231
+ dotest(
232
+ TestSetEscape0,
233
+ "This is \nThis is ${my template}\nThis is ${my template}")
234
+ end
235
+
236
+ end
237
+
@@ -0,0 +1,155 @@
1
+
2
+ #
3
+ # Testing OpenWFEru
4
+ #
5
+ # John Mettraux at openwfe.org
6
+ # Pat at geobliki.com
7
+ #
8
+
9
+ require 'flowtestbase'
10
+ require 'openwfe/def'
11
+ require 'openwfe/orest/xmlcodec'
12
+ require 'rutest_utils'
13
+
14
+
15
+ class FlowTest50 < Test::Unit::TestCase
16
+ include FlowTestBase
17
+
18
+ #def setup
19
+ #end
20
+
21
+ #def teardown
22
+ #end
23
+
24
+ #
25
+ # A Test by Pat Cappelaere
26
+ #
27
+
28
+ PAT_XML = <<END
29
+ <?xml version="1.0" encoding="UTF-8"?>
30
+ <sps:GetFeasibilityRequestResponse xmlns:gml="http://www.opengis.net/gml"
31
+ xmlns:sps="http://www.opengis.net/sps" xmlns="">
32
+ <sps:Feasibility status="feasible" id="106">
33
+ <DOY>106</DOY>
34
+ <UTC>2007-04-16 09:20:00</UTC>
35
+ <SZA>27.41</SZA>
36
+ <TYPE>NADIR</TYPE>
37
+ <PATH>52</PATH>
38
+ <ROW>186</ROW>
39
+ <COST>2600.85</COST>
40
+ <![CDATA[
41
+ <blah/>boum
42
+ ]]>
43
+ <sps:LatestResponseTime>
44
+ <gml:TimeInstant>
45
+ <gml:timePosition>2007-04-16T09:20:00Z</gml:timePosition>
46
+ </gml:TimeInstant>
47
+ </sps:LatestResponseTime>
48
+ </sps:Feasibility>
49
+ </sps:GetFeasibilityRequestResponse>
50
+ END
51
+
52
+ class TestXmlAttribute50a0 < OpenWFE::ProcessDefinition
53
+ sequence do
54
+ geo_0
55
+ geo_1
56
+ end
57
+ end
58
+
59
+ def test_0
60
+
61
+ doc0 = nil
62
+ doc1 = nil
63
+
64
+ @engine.register_participant :geo_0 do |fei, workitem|
65
+ doc0 = REXML::Document.new(PAT_XML)
66
+ workitem.attributes['xml'] = doc0
67
+ @tracer << "0\n"
68
+ end
69
+
70
+ @engine.register_participant :geo_1 do |fei, workitem|
71
+ doc1 = workitem.attributes['xml']
72
+ @tracer << "1\n"
73
+ end
74
+
75
+ dotest(TestXmlAttribute50a0, "0\n1")
76
+
77
+ assert_equal doc0.to_s, doc1.to_s
78
+ end
79
+
80
+ def test_1
81
+
82
+ doc0 = REXML::Document.new PAT_XML
83
+ doc1 = OpenWFE::fulldup(doc0)
84
+
85
+ assert_not_equal doc0.object_id, doc1.object_id
86
+
87
+ assert_equal doc0.to_s, doc1.to_s
88
+ end
89
+
90
+ #
91
+ # Against bug #10150
92
+ #
93
+ #def test_2
94
+ # workitem = OpenWFE::InFlowWorkItem.new
95
+ # workitem.fei = new_fei
96
+ # workitem.result = REXML::Document.new PAT_XML
97
+ # s = OpenWFE::XmlCodec::encode workitem
98
+ # #puts s
99
+ # w = OpenWFE::XmlCodec::decode s
100
+ # w.attributes.delete '___map_type'
101
+ # #puts workitem.to_s
102
+ # #puts
103
+ # #puts w.to_s
104
+ # assert_equal workitem.to_s, w.to_s
105
+ #end
106
+
107
+ def test_3
108
+
109
+ workitem = OpenWFE::InFlowWorkItem.new
110
+ workitem.fei = new_fei
111
+
112
+ workitem.result = REXML::Document.new(
113
+ PAT_XML, :compress_whitespace=>:all, :ignore_whitespace_nodes=>:all)
114
+
115
+ workitem.result = workitem.result.root
116
+
117
+ s = OpenWFE::XmlCodec::encode workitem
118
+
119
+ #puts s
120
+
121
+ w = OpenWFE::XmlCodec::decode s
122
+ w.attributes.delete '___map_type'
123
+
124
+ workitem.attributes.delete '___map_type'
125
+
126
+ #puts workitem.to_s
127
+ #puts
128
+ #puts w.to_s
129
+
130
+ assert_equal workitem.to_s, w.to_s
131
+ end
132
+
133
+ def test_4
134
+
135
+ doc0 = nil
136
+ doc1 = nil
137
+
138
+ @engine.register_participant :geo_0 do |fei, workitem|
139
+ doc0 = REXML::Document.new(PAT_XML).root
140
+ workitem.attributes['xml'] = doc0
141
+ @tracer << "0\n"
142
+ end
143
+
144
+ @engine.register_participant :geo_1 do |fei, workitem|
145
+ doc1 = workitem.attributes['xml']
146
+ @tracer << "1\n"
147
+ end
148
+
149
+ dotest(TestXmlAttribute50a0, "0\n1")
150
+
151
+ assert_equal doc0.to_s, doc1.to_s
152
+ end
153
+
154
+ end
155
+