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,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
+