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,38 @@
1
+ #
2
+ # Testing OpenWFE
3
+ #
4
+ # John Mettraux at openwfe.org
5
+ #
6
+ # Mon Oct 9 22:19:44 JST 2006
7
+ #
8
+
9
+ require 'rubygems'
10
+
11
+ #
12
+ # the tests that take lots of time...
13
+ #
14
+
15
+ require 'ft_5_time'
16
+
17
+ require 'restart_tests'
18
+
19
+ #require 'ft_20_cron'
20
+ #require 'ft_21_cron'
21
+ #require 'ft_21b_cron_pause'
22
+ require 'cron_ltest'
23
+
24
+ require 'ft_67_schedlaunch'
25
+
26
+ require 'ft_51_stack'
27
+
28
+ require 'ft_29_httprb' # needs net connection
29
+
30
+ #require 'ft_30_socketlistener'
31
+ #
32
+ # shaky test...
33
+
34
+ #
35
+ # the quick tests
36
+ #
37
+ #require 'rake_qtest'
38
+
@@ -0,0 +1,68 @@
1
+ #
2
+ # Testing OpenWFE
3
+ #
4
+ # John Mettraux at openwfe.org
5
+ #
6
+ # Mon Oct 9 22:19:44 JST 2006
7
+ #
8
+
9
+ require 'rubygems'
10
+
11
+ #require 'rutest_utils'
12
+
13
+
14
+ require 'fei_test'
15
+ require 'wfid_test'
16
+ require 'wi_test'
17
+ require 'lookup_att_test'
18
+ require 'filter_test'
19
+ require 'misc_test'
20
+ require 'condition_test'
21
+ require 'hash_test'
22
+ require 'raw_prog_test'
23
+ require 'file_persistence_test'
24
+ require 'expmap_test'
25
+ require 'obs_test'
26
+ require 'clone_test'
27
+ require 'lookup_vf_test'
28
+ require 'fe_lookup_att_test'
29
+
30
+ require 'sec_test'
31
+ require 'param_test'
32
+
33
+ require 'storage_test'
34
+ require 'file_persisted_engine_test'
35
+ require 'filep_cancel_test'
36
+ require 'ruby_procdef_test'
37
+ require 'description_test'
38
+ require 'ps_representation'
39
+
40
+ require 'util_xml_test'
41
+
42
+ require 'ft_tests'
43
+ #
44
+ # all the 'ft' tests are required in 'ft_tests.rb'
45
+
46
+ #require 'ft_30_socketlistener'
47
+
48
+ require 'participant_test'
49
+ require 'hparticipant_test'
50
+ require 'timeout_test'
51
+
52
+ require 'slock_test'
53
+ require 'orest_test.rb'
54
+
55
+ #require 'extras/atomfeedp_test.rb'
56
+
57
+
58
+ #Signal.trap "SIGINT" do |signo|
59
+ # puts
60
+ # puts "Interrupt"
61
+ # puts
62
+ # puts caller[1..-1]
63
+ # puts
64
+ # exit 0
65
+ #end if on_jruby?
66
+ #
67
+ # useless
68
+
@@ -0,0 +1,412 @@
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 'test/unit'
11
+ require 'openwfe/def'
12
+ require 'openwfe/expool/parser'
13
+
14
+
15
+ class RawProgTest < Test::Unit::TestCase
16
+
17
+ #def setup
18
+ #end
19
+
20
+ #def teardown
21
+ #end
22
+
23
+ XML_DEF =
24
+ "<process-definition name='test0' revision='0'>"+
25
+ "<sequence>"+
26
+ "<participant ref='a'/>"+
27
+ "<participant ref='b'/>"+
28
+ "</sequence>"+
29
+ "</process-definition>"
30
+
31
+ #
32
+ # TEST 0
33
+ #
34
+
35
+ class TestDefinition < OpenWFE::ProcessDefinition
36
+ def make
37
+ process_definition :name => "test0", :revision => "0" do
38
+ sequence do
39
+ participant :ref => "a"
40
+ participant :ref => "b"
41
+ end
42
+ end
43
+ end
44
+ end
45
+
46
+ def test_prog_0
47
+
48
+ s = OpenWFE::ExpressionTree.to_s(TestDefinition.new.make)
49
+
50
+ assert_equal XML_DEF, s
51
+ end
52
+
53
+ def test_prog_0b
54
+
55
+ #s = TestDefinition.do_make.to_s
56
+ s = OpenWFE::ExpressionTree.to_s(TestDefinition.do_make)
57
+
58
+ assert_equal XML_DEF, s
59
+ end
60
+
61
+
62
+ #
63
+ # TEST 1
64
+ #
65
+
66
+ def test_prog_1
67
+
68
+ pg = OpenWFE::ProcessDefinition.new
69
+
70
+ class << pg
71
+ def my_proc
72
+ process_definition :name => "test0", :revision => "0" do
73
+ sequence do
74
+ participant :ref => "a"
75
+ participant :ref => "b"
76
+ end
77
+ end
78
+ end
79
+ end
80
+ pdef = pg.my_proc
81
+ s = pdef.to_s
82
+
83
+ assert XML_DEF, s
84
+ end
85
+
86
+
87
+ #
88
+ # TEST 2
89
+ #
90
+
91
+ class TestDefinition2 < OpenWFE::ProcessDefinition
92
+ def make
93
+ process_definition :name => "test2", :revision => "0" do
94
+ sequence do
95
+ set :field => "toto" do
96
+ "nada"
97
+ end
98
+ participant :ref => "b"
99
+ end
100
+ end
101
+ end
102
+ end
103
+
104
+ XML_DEF2 =
105
+ "<process-definition name='test2' revision='0'>"+
106
+ "<sequence>"+
107
+ "<set field='toto'>"+
108
+ "nada"+
109
+ "</set>"+
110
+ "<participant ref='b'/>"+
111
+ "</sequence>"+
112
+ "</process-definition>"
113
+
114
+ def test_prog_2
115
+
116
+ s = OpenWFE::ExpressionTree.to_s(TestDefinition2.do_make)
117
+
118
+ assert_equal XML_DEF2, s
119
+
120
+ #puts
121
+ #puts TestDefinition2.do_make.to_code_s
122
+ end
123
+
124
+
125
+ #
126
+ # TEST 3
127
+ #
128
+
129
+ class TestDefinition3 < OpenWFE::ProcessDefinition
130
+ def make
131
+ process_definition :name => "test3", :revision => "0" do
132
+ _if do
133
+ equals :field_value => "nada", :other_value => "surf"
134
+ participant :ref => "b"
135
+ end
136
+ end
137
+ end
138
+ end
139
+
140
+ XML_DEF3 =
141
+ "<process-definition name='test3' revision='0'>"+
142
+ "<if>"+
143
+ "<equals field-value='nada' other-value='surf'/>"+
144
+ "<participant ref='b'/>"+
145
+ "</if>"+
146
+ "</process-definition>"
147
+
148
+ CODE_DEF3 = """
149
+ process_definition :name => 'test3', :revision => '0' do
150
+ _if do
151
+ equals :field_value => 'nada', :other_value => 'surf'
152
+ participant :ref => 'b'
153
+ end
154
+ end""".strip
155
+
156
+ def test_prog_3
157
+
158
+ s = OpenWFE::ExpressionTree.to_s(TestDefinition3.do_make)
159
+
160
+ assert_equal XML_DEF3, s
161
+
162
+ assert_equal(
163
+ CODE_DEF3,
164
+ OpenWFE::ExpressionTree.to_code_s(TestDefinition3.do_make))
165
+
166
+ #r = OpenWFE::SimpleExpRepresentation.from_xml(s)
167
+ r = OpenWFE::DefParser.parse_xml s
168
+
169
+ assert_equal CODE_DEF3, OpenWFE::ExpressionTree.to_code_s(r)
170
+ end
171
+
172
+
173
+ #
174
+ # TEST 4
175
+ #
176
+
177
+ class TestDefinition4 < OpenWFE::ProcessDefinition
178
+ def make
179
+ process_definition :name => "test4", :revision => "0" do
180
+ sequence do
181
+ 3.times { participant :ref => "b" }
182
+ end
183
+ end
184
+ end
185
+ end
186
+
187
+ CODE_DEF4 = """
188
+ process_definition :name => 'test4', :revision => '0' do
189
+ sequence do
190
+ participant :ref => 'b'
191
+ participant :ref => 'b'
192
+ participant :ref => 'b'
193
+ end
194
+ end""".strip
195
+
196
+ def test_prog_4
197
+
198
+ #puts
199
+ #puts TestDefinition4.do_make.to_s
200
+ #puts
201
+ #puts TestDefinition4.do_make.to_code_s
202
+
203
+ assert_equal(
204
+ CODE_DEF4,
205
+ OpenWFE::ExpressionTree.to_code_s(TestDefinition4.do_make))
206
+ end
207
+
208
+
209
+ #
210
+ # TEST 4b
211
+ #
212
+
213
+ class TestDefinition4b < OpenWFE::ProcessDefinition
214
+ def make
215
+ sequence do
216
+ [ :b, :b, :b ].each do |p|
217
+ participant p
218
+ end
219
+ end
220
+ end
221
+ end
222
+
223
+ CODE_DEF4b = """
224
+ process_definition :name => 'Test', :revision => '4b' do
225
+ sequence do
226
+ participant do
227
+ 'b'
228
+ end
229
+ participant do
230
+ 'b'
231
+ end
232
+ participant do
233
+ 'b'
234
+ end
235
+ end
236
+ end""".strip
237
+
238
+ def test_prog_4b
239
+
240
+ assert_equal(
241
+ CODE_DEF4b,
242
+ OpenWFE::ExpressionTree.to_code_s(TestDefinition4b.do_make))
243
+ end
244
+
245
+
246
+ #
247
+ # TEST 5
248
+ #
249
+
250
+ class TestDefinition5 < OpenWFE::ProcessDefinition
251
+ def make
252
+ sequence do
253
+ participant :ref => :toto
254
+ sub0
255
+ end
256
+ process_definition :name => "sub0" do
257
+ nada
258
+ end
259
+ end
260
+ end
261
+
262
+ CODE_DEF5 = """
263
+ process_definition :name => 'Test', :revision => '5' do
264
+ sequence do
265
+ participant :ref => 'toto'
266
+ sub0
267
+ end
268
+ process_definition :name => 'sub0' do
269
+ nada
270
+ end
271
+ end""".strip
272
+
273
+ def test_prog_5
274
+
275
+ assert_equal(
276
+ CODE_DEF5,
277
+ OpenWFE::ExpressionTree.to_code_s(TestDefinition5.do_make))
278
+ end
279
+
280
+
281
+ #
282
+ # TEST 6
283
+ #
284
+
285
+ class TestDefinition60 < OpenWFE::ProcessDefinition
286
+ def make
287
+ sequence do
288
+ participant :ref => :toto
289
+ nada
290
+ end
291
+ end
292
+ end
293
+
294
+ CODE_DEF6 = """
295
+ process_definition :name => 'Test', :revision => '60' do
296
+ sequence do
297
+ participant :ref => 'toto'
298
+ nada
299
+ end
300
+ end""".strip
301
+
302
+ def test_prog_6
303
+
304
+ assert_equal(
305
+ CODE_DEF6,
306
+ OpenWFE::ExpressionTree.to_code_s(TestDefinition60.do_make))
307
+ end
308
+
309
+
310
+ #
311
+ # TEST 7
312
+ #
313
+
314
+ class TestDefinitionSeven < OpenWFE::ProcessDefinition
315
+ def make
316
+ participant :ref => :toto
317
+ end
318
+ end
319
+
320
+ CODE_DEF7 = """
321
+ process_definition :name => 'TestDefinitionSeven', :revision => '0' do
322
+ participant :ref => 'toto'
323
+ end""".strip
324
+
325
+ A_DEF7 = [
326
+ "process-definition",
327
+ { "name"=>"TestDefinitionSeven", "revision"=>"0" },
328
+ [ [ "participant", { "ref" => :toto }, [] ] ]
329
+ ]
330
+
331
+ def test_prog_7
332
+
333
+ assert_equal(
334
+ CODE_DEF7,
335
+ OpenWFE::ExpressionTree.to_code_s(TestDefinitionSeven.do_make))
336
+
337
+ assert_equal(
338
+ A_DEF7,
339
+ TestDefinitionSeven.do_make)
340
+ end
341
+
342
+ #
343
+ # TEST 8
344
+ #
345
+
346
+ def do_test (class_name, pdef)
347
+ #
348
+ # losing my time with an eval
349
+ #
350
+ result = eval """
351
+ class #{class_name} < OpenWFE::ProcessDefinition
352
+ def make
353
+ participant 'nada'
354
+ end
355
+ end
356
+ #{class_name}.do_make
357
+ """
358
+ assert_equal result[1]['name'], pdef[0]
359
+ assert_equal result[1]['revision'], pdef[1]
360
+ end
361
+
362
+ def test_process_names
363
+
364
+ do_test "MyProcessDefinition_10", ["MyProcess", "10"]
365
+ do_test "MyProcessDefinition10", ["MyProcess", "10"]
366
+ do_test "MyProcessDefinition1_0", ["MyProcess", "1.0"]
367
+ do_test "MyProcessThing_1_0", ["MyProcessThing", "1.0"]
368
+ end
369
+
370
+ def do_test_2 (raw_name, expected)
371
+
372
+ assert_equal(
373
+ expected,
374
+ OpenWFE::ProcessDefinition.extract_name_and_revision(raw_name))
375
+ end
376
+
377
+ def test_process_names_2
378
+
379
+ do_test_2 "MyProcessDefinition_10", ["MyProcess", "10"]
380
+ do_test_2 "MyProcessDefinition5b", ["MyProcess", "5b"]
381
+ end
382
+
383
+
384
+ #
385
+ # TEST 9
386
+ #
387
+
388
+ class TestDefinition9 < OpenWFE::ProcessDefinition
389
+ def make
390
+ description "this is my process"
391
+ sequence do
392
+ participant :ref => :toto
393
+ end
394
+ end
395
+ end
396
+
397
+ CODE_DEF9 = """
398
+ process_definition :name => 'Test', :revision => '60' do
399
+ description 'this is my process'
400
+ sequence do
401
+ participant :ref => 'toto'
402
+ nada
403
+ end
404
+ end""".strip
405
+
406
+ def _test_prog_9
407
+
408
+ assert CODE_DEF9, TestDefinition9.do_make.to_code_s
409
+ end
410
+
411
+ end
412
+