ruote 0.9.18

Sign up to get free protection for your applications and to get access to all the features.
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,44 @@
1
+
2
+ #
3
+ # Testing OpenWFE
4
+ #
5
+ # John Mettraux at openwfe.org
6
+ #
7
+ # Mon Dec 10 18:02:59 JST 2007
8
+ #
9
+
10
+ require 'test/unit'
11
+
12
+ require 'openwfe/expool/expstorage'
13
+
14
+
15
+ class Vehicle
16
+ end
17
+ class Car < Vehicle
18
+ end
19
+ class Animal
20
+ end
21
+
22
+ class StorageTest < Test::Unit::TestCase
23
+
24
+ #def setup
25
+ #end
26
+
27
+ #def teardown
28
+ #end
29
+
30
+ def test_class_accepted
31
+
32
+ esb = Object.new
33
+ class << esb
34
+ include OpenWFE::ExpressionStorageBase
35
+ end
36
+
37
+ assert (esb.class_accepted?(Vehicle.new, nil, nil))
38
+ assert (esb.class_accepted?(Vehicle.new, [ Vehicle ], nil))
39
+ assert (not esb.class_accepted?(Vehicle.new, nil, [ Vehicle ]))
40
+
41
+ assert (esb.class_accepted?(Car.new, [ Vehicle ], nil))
42
+ assert (not esb.class_accepted?(Car.new, nil, [ Vehicle ]))
43
+ end
44
+ end
data/test/test.rb ADDED
@@ -0,0 +1,3 @@
1
+
2
+ require 'rake_qtest'
3
+
@@ -0,0 +1,105 @@
1
+ #
2
+ # Testing OpenWFE
3
+ #
4
+ # John Mettraux at openwfe.org
5
+ #
6
+ # Sun Oct 29 15:41:44 JST 2006
7
+ #
8
+
9
+ require 'test/unit'
10
+
11
+ require 'openwfe/engine/engine'
12
+ require 'openwfe/def'
13
+ require 'openwfe/participants/storeparticipants'
14
+
15
+ require 'rutest_utils'
16
+
17
+
18
+ class TimeoutTest < Test::Unit::TestCase
19
+
20
+ #def setup
21
+ # @engine = $WORKFLOW_ENGINE_CLASS.new()
22
+ #end
23
+
24
+ #def teardown
25
+ #end
26
+
27
+ class TimeoutDefinition0 < OpenWFE::ProcessDefinition
28
+ sequence do
29
+ participant :ref => "albert", :timeout => "500"
30
+ _print "timedout? ${f:__timed_out__}"
31
+ _print "over ${f:done}"
32
+ end
33
+ end
34
+
35
+ def test_timeout_0
36
+
37
+ albert = OpenWFE::HashParticipant.new
38
+
39
+ engine = OpenWFE::Engine.new :definition_in_launchitem_allowed => true
40
+
41
+ engine.application_context["__tracer"] = Tracer.new
42
+
43
+ engine.register_participant :albert, albert
44
+
45
+ li = OpenWFE::LaunchItem.new TimeoutDefinition0
46
+
47
+ engine.launch li
48
+
49
+ sleep 2
50
+
51
+ s = engine.application_context["__tracer"].to_s
52
+
53
+ engine.stop
54
+
55
+ #puts "trace is >#{s}<"
56
+ #puts "albert.size is #{albert.size}"
57
+
58
+ assert_equal 0, albert.size, "wi was not removed from workitem store"
59
+ assert_equal "timedout? true\nover", s, "flow did not reach 'over'"
60
+ end
61
+
62
+ def test_timeout_1
63
+
64
+ albert = OpenWFE::HashParticipant.new
65
+
66
+ engine = OpenWFE::Engine.new :definition_in_launchitem_allowed => true
67
+
68
+ engine.application_context["__tracer"] = Tracer.new
69
+
70
+ engine.register_participant(:albert, albert)
71
+
72
+ pjc = engine.get_scheduler.pending_job_count
73
+ assert \
74
+ pjc == 0,
75
+ "0 pending_jobs_count is at #{pjc}, it should be at 0"
76
+
77
+ li = OpenWFE::LaunchItem.new TimeoutDefinition0
78
+
79
+ engine.launch li
80
+
81
+ sleep 0.300
82
+
83
+ wi = albert.list_workitems(nil)[0]
84
+ wi.done = "ok"
85
+ albert.proceed(wi)
86
+
87
+ sleep 0.300
88
+
89
+ s = engine.application_context["__tracer"].to_s
90
+
91
+ #puts "trace is >#{s}<"
92
+ #puts "albert.size is #{albert.size}"
93
+
94
+ # in this test, the participant doesn't time out
95
+
96
+ assert_equal 0, albert.size, "wi was not removed from workitem store"
97
+ assert_equal "timedout? \nover ok", s, "flow did not reach 'over ok'"
98
+
99
+ pjc = engine.get_scheduler.pending_job_count
100
+
101
+ assert_equal 0, pjc, "pending_jobs_count is at #{pjc}, should be at 0"
102
+ end
103
+
104
+ end
105
+
@@ -0,0 +1,112 @@
1
+
2
+ #
3
+ # Testing OpenWFE
4
+ #
5
+ # John Mettraux at openwfe.org
6
+ #
7
+ # Sun Apr 13 19:03:31 JST 2008
8
+ #
9
+
10
+ require 'rubygems'
11
+
12
+ require 'test/unit'
13
+
14
+ require 'openwfe/workitem'
15
+ require 'openwfe/flowexpressionid'
16
+ require 'openwfe/util/xml'
17
+
18
+ require 'rutest_utils'
19
+
20
+
21
+ class UtilXmlTest < Test::Unit::TestCase
22
+
23
+ #def setup
24
+ #end
25
+
26
+ #def teardown
27
+ #end
28
+
29
+ def test_0
30
+
31
+ li = OpenWFE::LaunchItem.new
32
+ li.attributes.delete "___map_type"
33
+ xml = OpenWFE::Xml.launchitem_to_xml li
34
+
35
+ assert_equal(
36
+ "<?xml version=\"1.0\" encoding=\"UTF-8\"?><launchitem><workflow_definition_url></workflow_definition_url><attributes><hash></hash></attributes></launchitem>",
37
+ xml)
38
+
39
+ li = OpenWFE::Xml.launchitem_from_xml xml
40
+
41
+ assert_nil(li.wfdurl)
42
+ assert_equal({}, li.attributes)
43
+ end
44
+
45
+ def test_1
46
+
47
+ li = OpenWFE::LaunchItem.new
48
+ li.attributes = { "a" => 1, "b" => 2, "c" => [ 1, 2, 3 ]}
49
+
50
+ xml = OpenWFE::Xml.launchitem_to_xml li
51
+
52
+ assert_equal(
53
+ "<?xml version=\"1.0\" encoding=\"UTF-8\"?><launchitem><workflow_definition_url></workflow_definition_url><attributes><hash><entry><string>a</string><number>1</number></entry><entry><string>b</string><number>2</number></entry><entry><string>c</string><array><number>1</number><number>2</number><number>3</number></array></entry></hash></attributes></launchitem>",
54
+ xml)
55
+
56
+ li = OpenWFE::Xml.launchitem_from_xml xml
57
+
58
+ assert_equal({ "a" => 1, "b" => 2, "c" => [ 1, 2, 3 ] }, li.attributes)
59
+ end
60
+
61
+ def test_2
62
+
63
+ wi = OpenWFE::InFlowWorkItem.new
64
+ wi.fei = new_fei
65
+
66
+ xml = OpenWFE::Xml.workitem_to_xml wi
67
+
68
+ wi1 = OpenWFE::Xml.workitem_from_xml xml
69
+
70
+ assert_equal wi.fei, wi1.fei
71
+
72
+ #p wi1.fei
73
+ end
74
+
75
+ def test_3
76
+
77
+ li = OpenWFE::LaunchItem.new
78
+ li.wfdurl = "http://toto"
79
+ li.customer_name = "toto"
80
+
81
+ xml = OpenWFE::Xml.launchitem_to_xml li, 2
82
+
83
+ li1 = OpenWFE::Xml.launchitem_from_xml xml
84
+
85
+ assert_equal li.wfdurl, li1.wfdurl
86
+ assert_equal li.customer_name, li1.customer_name
87
+ end
88
+
89
+ def test_4
90
+
91
+ a = <<-EOS
92
+ <array>
93
+ <string>alpha</string>
94
+ <number>2</number>
95
+ <number>2.3</number>
96
+ <false/>
97
+ <null/>
98
+ </array>
99
+ EOS
100
+ a = a.strip
101
+
102
+ o = OpenWFE::Xml.from_xml a
103
+
104
+ assert_equal [ 'alpha', 2, 2.3, false, nil ], o
105
+
106
+ a1 = OpenWFE::Xml.to_xml(o, 4).strip
107
+
108
+ assert_equal a, a1
109
+ end
110
+
111
+ end
112
+
data/test/wfid_test.rb ADDED
@@ -0,0 +1,175 @@
1
+
2
+ #
3
+ # Testing OpenWFE
4
+ #
5
+ # John Mettraux at openwfe.org
6
+ #
7
+ # Sun Oct 29 16:18:25 JST 2006
8
+ #
9
+
10
+ #require "rubygems"
11
+ #require "thread"
12
+ #require "fastthread"
13
+
14
+ require 'test/unit'
15
+
16
+ require 'openwfe/utils'
17
+ require 'openwfe/workitem'
18
+ require 'openwfe/engine/engine'
19
+ require 'openwfe/expool/wfidgen'
20
+ require 'openwfe/def'
21
+
22
+
23
+ #
24
+ # testing otime and the scheduler (its cron aspect)
25
+ #
26
+ class WfidTest < Test::Unit::TestCase
27
+
28
+ #def setup
29
+ #end
30
+
31
+ #def teardown
32
+ #end
33
+
34
+ def test_wfid_0
35
+
36
+ gen = OpenWFE::DefaultWfidGenerator.new("wfidgen", nil)
37
+
38
+ thread = nil
39
+
40
+ n = 777
41
+ #n = 1000000
42
+
43
+ map = {}
44
+
45
+ n.times do |i|
46
+
47
+ thread = Thread.new do
48
+
49
+ wfid = gen.generate
50
+
51
+ #puts wfid
52
+
53
+ abort "\nduplicate workflow_instance_id found !!!" \
54
+ if map[wfid]
55
+
56
+ map[wfid] = true
57
+
58
+ #puts wfid if i == n-1
59
+ end
60
+ end
61
+
62
+ thread.join
63
+
64
+ sleep(0.1)
65
+ #puts
66
+
67
+ assert_equal map.size, n
68
+
69
+ assert true
70
+ end
71
+
72
+ def test_wfid_1
73
+
74
+ gen = OpenWFE::DefaultWfidGenerator.new("wfidgen", nil)
75
+
76
+ a = %w{ 1 2 3 4 5 }
77
+ s = a.join
78
+
79
+ #a2 = gen.split_wfid(s)
80
+ a2 = OpenWFE::split_wfid(s)
81
+
82
+ assert_equal a, a2
83
+ end
84
+
85
+ def test_wfid_2
86
+
87
+ gen = OpenWFE::UuidWfidGenerator.new("wfidgen", nil)
88
+
89
+ id = gen.generate
90
+
91
+ #puts id
92
+
93
+ #assert_equal gen.split_wfid(id).join, id[0, 8]
94
+ assert_equal OpenWFE::split_wfid(id).join, id[0, 8]
95
+ end
96
+
97
+ def test_kotoba_wfid
98
+
99
+ gen = OpenWFE::KotobaWfidGenerator.new("wfidgen", nil)
100
+
101
+ t = Time.now.gmtime
102
+ kid = gen.generate
103
+
104
+ #puts "now : #{t}"
105
+ #puts "kid : #{kid}"
106
+
107
+ t2 = OpenWFE::KotobaWfidGenerator.to_time(kid)
108
+
109
+ #puts "t2 : #{t2}"
110
+
111
+ assert_equal t.to_s, t2.to_s
112
+
113
+ #t = Time.utc(2007, 03, 20, 23, 59, 59)
114
+ #kid = OpenWFE::KotobaWfidGenerator.from_time(t)
115
+ #puts t
116
+ #puts kid
117
+ #kid = "20070320-nayozumuja"
118
+ #puts OpenWFE::KotobaWfidGenerator.to_time(kid)
119
+ #kid = "20070320-nayozumuje"
120
+ #puts OpenWFE::KotobaWfidGenerator.to_time(kid)
121
+ #kid = "20070320-nayozunuje"
122
+ #puts OpenWFE::KotobaWfidGenerator.to_time(kid)
123
+ #kid = "20070320-nazazunuje"
124
+ #puts OpenWFE::KotobaWfidGenerator.to_time(kid)
125
+ end
126
+
127
+
128
+ #
129
+ # test FieldWfidGenerator
130
+
131
+ class MyEngine < OpenWFE::Engine
132
+
133
+ def initialize
134
+
135
+ super
136
+
137
+ self.ac[:definition_in_launchitem_allowed] = true
138
+ end
139
+
140
+ def build_wfid_generator
141
+
142
+ g = FieldWfidGenerator.new(
143
+ S_WFID_GENERATOR, @application_context, "wfid")
144
+ end
145
+ end
146
+
147
+ class MyProcDef < OpenWFE::ProcessDefinition
148
+ sequence do
149
+ # do nothing
150
+ end
151
+ end
152
+
153
+ def test_field_wfid
154
+
155
+ eng = MyEngine.new
156
+
157
+ li = OpenWFE::LaunchItem.new MyProcDef
158
+ li.wfid = "toto"
159
+ fei = eng.launch(li)
160
+
161
+ assert_equal fei.wfid, "toto"
162
+
163
+ li = OpenWFE::LaunchItem.new(MyProcDef)
164
+ fei = eng.launch(li)
165
+
166
+ #puts fei.wfid
167
+
168
+ assert_not_equal fei.wfid, "toto"
169
+
170
+ t = OpenWFE::KotobaWfidGenerator.to_time(fei.wfid)
171
+
172
+ assert t.is_a?(Time)
173
+ end
174
+
175
+ end
data/test/wi_test.rb ADDED
@@ -0,0 +1,75 @@
1
+
2
+ #
3
+ # Testing OpenWFE
4
+ #
5
+ # John Mettraux at openwfe.org
6
+ #
7
+
8
+ require 'test/unit'
9
+ require 'openwfe/workitem'
10
+ require 'openwfe/util/dollar'
11
+
12
+
13
+ class WiTest < Test::Unit::TestCase
14
+
15
+ #def setup
16
+ #end
17
+
18
+ #def teardown
19
+ #end
20
+
21
+ def test_0
22
+
23
+ wi = OpenWFE::InFlowWorkItem.new
24
+ wi.attributes = {
25
+ "field0" => "value0",
26
+ "field1" => [ 0, 1, 2, 3, [ "a", "b", "c" ]],
27
+ "field2" => {
28
+ "a" => "AA",
29
+ "b" => "BB",
30
+ "c" => [ "C0", "C1", "C3" ]
31
+ },
32
+ "field3" => 3,
33
+ "field99" => nil
34
+ }
35
+
36
+ assert_equal 3, wi.lookup_attribute("field3")
37
+ assert_equal 1, wi.lookup_attribute("field1.1")
38
+ assert_equal "b", wi.lookup_attribute("field1.4.1")
39
+ assert_equal "C1", wi.lookup_attribute("field2.c.1")
40
+ assert_equal nil, wi.lookup_attribute("field4")
41
+ assert_equal nil, wi.lookup_attribute("field4.2")
42
+ assert_equal nil, wi.lookup_attribute("field99")
43
+ assert_equal nil, wi.lookup_attribute("field99.9")
44
+
45
+ assert_equal false, wi.has_attribute?("field4")
46
+ assert_equal false, wi.has_attribute?("field4.2")
47
+ assert_equal true, wi.has_attribute?("field99")
48
+ assert_equal false, wi.has_attribute?("field99.9")
49
+
50
+ text = "value is '${f:field2.c.1}'"
51
+ text = OpenWFE::dosub text, nil, wi
52
+ assert_equal "value is 'C1'", text
53
+
54
+ # setting attributes
55
+
56
+ wi.set_attribute("field2.a", 42)
57
+ wi.set_attribute("field99", "f99")
58
+
59
+ assert_equal 42, wi.lookup_attribute("field2.a")
60
+ assert_equal "f99", wi.lookup_attribute("field99")
61
+
62
+ # unsetting attributes
63
+
64
+ wi.unset_attribute "field99"
65
+ assert_nil wi.lookup_attribute("field99")
66
+
67
+ wi.unset_attribute "field1.4"
68
+ assert_equal [ 0, 1, 2, 3 ], wi.lookup_attribute("field1")
69
+
70
+ wi.unset_attribute "field2.c"
71
+ assert_equal({ "a" => 42, "b" => "BB" }, wi.lookup_attribute("field2"))
72
+ end
73
+
74
+ end
75
+