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.
- data/README.txt +24 -0
- data/bin/validate-workflow.rb +89 -0
- data/examples/about_state.rb +81 -0
- data/examples/bigflow.rb +19 -0
- data/examples/csv_weather.rb +23 -0
- data/examples/engine_template.rb +247 -0
- data/examples/flowtracing.rb +24 -0
- data/examples/homeworkreview.rb +68 -0
- data/examples/kotoba.rb +22 -0
- data/examples/mano_tracker.rb +172 -0
- data/examples/openwferu.rb +58 -0
- data/examples/quotereporter.rb +157 -0
- data/examples/scheduler_cron_usage.rb +48 -0
- data/examples/scheduler_usage.rb +56 -0
- data/lib/openwfe.rb +41 -0
- data/lib/openwfe/contextual.rb +111 -0
- data/lib/openwfe/def.rb +46 -0
- data/lib/openwfe/engine.rb +37 -0
- data/lib/openwfe/engine/engine.rb +756 -0
- data/lib/openwfe/engine/expool_methods.rb +172 -0
- data/lib/openwfe/engine/file_persisted_engine.rb +105 -0
- data/lib/openwfe/engine/participant_methods.rb +133 -0
- data/lib/openwfe/engine/status_methods.rb +353 -0
- data/lib/openwfe/engine/update_exp_methods.rb +112 -0
- data/lib/openwfe/exceptions.rb +51 -0
- data/lib/openwfe/expool/errorjournal.rb +476 -0
- data/lib/openwfe/expool/expressionpool.rb +1144 -0
- data/lib/openwfe/expool/expstorage.rb +403 -0
- data/lib/openwfe/expool/history.rb +174 -0
- data/lib/openwfe/expool/journal.rb +224 -0
- data/lib/openwfe/expool/journal_replay.rb +321 -0
- data/lib/openwfe/expool/parser.rb +242 -0
- data/lib/openwfe/expool/representation.rb +121 -0
- data/lib/openwfe/expool/threadedexpstorage.rb +188 -0
- data/lib/openwfe/expool/wfidgen.rb +388 -0
- data/lib/openwfe/expool/yamlexpstorage.rb +224 -0
- data/lib/openwfe/expressions/condition.rb +244 -0
- data/lib/openwfe/expressions/environment.rb +246 -0
- data/lib/openwfe/expressions/expressionmap.rb +258 -0
- data/lib/openwfe/expressions/fe_cancel.rb +109 -0
- data/lib/openwfe/expressions/fe_command.rb +241 -0
- data/lib/openwfe/expressions/fe_concurrence.rb +662 -0
- data/lib/openwfe/expressions/fe_cron.rb +259 -0
- data/lib/openwfe/expressions/fe_cursor.rb +259 -0
- data/lib/openwfe/expressions/fe_define.rb +192 -0
- data/lib/openwfe/expressions/fe_do.rb +168 -0
- data/lib/openwfe/expressions/fe_equals.rb +291 -0
- data/lib/openwfe/expressions/fe_filter.rb +129 -0
- data/lib/openwfe/expressions/fe_filter_definition.rb +168 -0
- data/lib/openwfe/expressions/fe_fqv.rb +250 -0
- data/lib/openwfe/expressions/fe_if.rb +303 -0
- data/lib/openwfe/expressions/fe_iterator.rb +145 -0
- data/lib/openwfe/expressions/fe_listen.rb +371 -0
- data/lib/openwfe/expressions/fe_losfor.rb +111 -0
- data/lib/openwfe/expressions/fe_misc.rb +421 -0
- data/lib/openwfe/expressions/fe_participant.rb +269 -0
- data/lib/openwfe/expressions/fe_reserve.rb +212 -0
- data/lib/openwfe/expressions/fe_save.rb +274 -0
- data/lib/openwfe/expressions/fe_sequence.rb +117 -0
- data/lib/openwfe/expressions/fe_set.rb +139 -0
- data/lib/openwfe/expressions/fe_sleep.rb +166 -0
- data/lib/openwfe/expressions/fe_step.rb +159 -0
- data/lib/openwfe/expressions/fe_subprocess.rb +168 -0
- data/lib/openwfe/expressions/fe_timeout.rb +127 -0
- data/lib/openwfe/expressions/fe_wait.rb +78 -0
- data/lib/openwfe/expressions/fe_when.rb +142 -0
- data/lib/openwfe/expressions/filter.rb +104 -0
- data/lib/openwfe/expressions/flowexpression.rb +847 -0
- data/lib/openwfe/expressions/iterator.rb +221 -0
- data/lib/openwfe/expressions/merge.rb +84 -0
- data/lib/openwfe/expressions/raw.rb +547 -0
- data/lib/openwfe/expressions/rprocdef.rb +375 -0
- data/lib/openwfe/expressions/time.rb +333 -0
- data/lib/openwfe/expressions/timeout.rb +178 -0
- data/lib/openwfe/expressions/value.rb +126 -0
- data/lib/openwfe/filterdef.rb +259 -0
- data/lib/openwfe/flowexpressionid.rb +357 -0
- data/lib/openwfe/listeners/listener.rb +97 -0
- data/lib/openwfe/listeners/listeners.rb +139 -0
- data/lib/openwfe/listeners/socketlisteners.rb +272 -0
- data/lib/openwfe/logging.rb +122 -0
- data/lib/openwfe/omixins.rb +95 -0
- data/lib/openwfe/orest/controlclient.rb +119 -0
- data/lib/openwfe/orest/definitions.rb +113 -0
- data/lib/openwfe/orest/exception.rb +60 -0
- data/lib/openwfe/orest/oldrestservlet.rb +279 -0
- data/lib/openwfe/orest/osocket.rb +148 -0
- data/lib/openwfe/orest/restclient.rb +176 -0
- data/lib/openwfe/orest/workitem.rb +206 -0
- data/lib/openwfe/orest/worklistclient.rb +272 -0
- data/lib/openwfe/orest/xmlcodec.rb +670 -0
- data/lib/openwfe/participants.rb +38 -0
- data/lib/openwfe/participants/enoparticipants.rb +230 -0
- data/lib/openwfe/participants/participant.rb +141 -0
- data/lib/openwfe/participants/participantmap.rb +249 -0
- data/lib/openwfe/participants/participants.rb +407 -0
- data/lib/openwfe/participants/soapparticipants.rb +135 -0
- data/lib/openwfe/participants/socketparticipants.rb +202 -0
- data/lib/openwfe/participants/storeparticipants.rb +254 -0
- data/lib/openwfe/rudefinitions.rb +130 -0
- data/lib/openwfe/service.rb +103 -0
- data/lib/openwfe/storage/yamlcustom.rb +106 -0
- data/lib/openwfe/storage/yamlfilestorage.rb +245 -0
- data/lib/openwfe/tools/flowtracer.rb +81 -0
- data/lib/openwfe/util/dollar.rb +217 -0
- data/lib/openwfe/util/irb.rb +86 -0
- data/lib/openwfe/util/observable.rb +144 -0
- data/lib/openwfe/util/ometa.rb +62 -0
- data/lib/openwfe/util/workqueue.rb +124 -0
- data/lib/openwfe/util/xml.rb +418 -0
- data/lib/openwfe/utils.rb +554 -0
- data/lib/openwfe/version.rb +37 -0
- data/lib/openwfe/workitem.rb +499 -0
- data/lib/openwfe/worklist/oldrest.rb +244 -0
- data/lib/openwfe/worklist/storelocks.rb +293 -0
- data/lib/openwfe/worklist/storeparticipant.rb +44 -0
- data/lib/openwfe/worklist/worklist.rb +297 -0
- data/test/README.txt +27 -0
- data/test/back_0916_test.rb +111 -0
- data/test/bm/bm_1_xml_vs_prog.rb +56 -0
- data/test/bm/bm_2_step.rb +109 -0
- data/test/bm/ft_0f_5ms.rb +35 -0
- data/test/bm/ft_26_load.rb +210 -0
- data/test/bm/ft_26b_load.rb +86 -0
- data/test/bm/ft_26c_load.rb +97 -0
- data/test/bm/ft_26d_load.rb +97 -0
- data/test/bm/ft_recu.rb +71 -0
- data/test/clone_test.rb +122 -0
- data/test/concurrence_test.rb +77 -0
- data/test/condition_test.rb +155 -0
- data/test/console_test.rb +12 -0
- data/test/cron_ltest.rb +15 -0
- data/test/description_test.rb +87 -0
- data/test/eno_test.rb +76 -0
- data/test/expmap_test.rb +54 -0
- data/test/expool_20031219_0916.tgz +0 -0
- data/test/fe_lookup_att_test.rb +62 -0
- data/test/fei_test.rb +181 -0
- data/test/file_persisted_engine_test.rb +64 -0
- data/test/file_persistence_test.rb +134 -0
- data/test/filep_cancel_test.rb +123 -0
- data/test/filter_test.rb +109 -0
- data/test/flowtestbase.rb +351 -0
- data/test/ft_0.rb +68 -0
- data/test/ft_0b_sequence.rb +36 -0
- data/test/ft_0c_testname.rb +33 -0
- data/test/ft_0d_participant.rb +30 -0
- data/test/ft_0e_multibody.rb +34 -0
- data/test/ft_10_loop.rb +134 -0
- data/test/ft_11_ppd.rb +415 -0
- data/test/ft_11b_ppd.rb +54 -0
- data/test/ft_12_blockparticipant.rb +97 -0
- data/test/ft_13_eno.rb +52 -0
- data/test/ft_14_subprocess.rb +88 -0
- data/test/ft_14b_subprocess.rb +192 -0
- data/test/ft_14c_subprocess.rb +68 -0
- data/test/ft_15_iterator.rb +216 -0
- data/test/ft_15b_iterator.rb +74 -0
- data/test/ft_16_fqv.rb +73 -0
- data/test/ft_17_condition.rb +84 -0
- data/test/ft_18_pname.rb +56 -0
- data/test/ft_1_unset.rb +175 -0
- data/test/ft_1b_unset.rb +39 -0
- data/test/ft_20_cron.rb +53 -0
- data/test/ft_21_cron.rb +87 -0
- data/test/ft_21b_cron_pause.rb +82 -0
- data/test/ft_22_history.rb +74 -0
- data/test/ft_23_when.rb +77 -0
- data/test/ft_23b_when.rb +70 -0
- data/test/ft_23c_wait.rb +80 -0
- data/test/ft_23d_cww.rb +58 -0
- data/test/ft_24_def.rb +44 -0
- data/test/ft_25_cancel.rb +89 -0
- data/test/ft_27_getflowpos.rb +147 -0
- data/test/ft_28_fileparticipant.rb +63 -0
- data/test/ft_29_httprb.rb +106 -0
- data/test/ft_2_concurrence.rb +135 -0
- data/test/ft_2b_concurrence.rb +188 -0
- data/test/ft_2c_concurrence.rb +64 -0
- data/test/ft_30_socketlistener.rb +203 -0
- data/test/ft_31_flowname.rb +40 -0
- data/test/ft_32_journal.rb +91 -0
- data/test/ft_32c_journal.rb +102 -0
- data/test/ft_32d_journal.rb +84 -0
- data/test/ft_33_description.rb +107 -0
- data/test/ft_34_cancelwfid.rb +80 -0
- data/test/ft_35_localdefs.rb +75 -0
- data/test/ft_36_subprocids.rb +97 -0
- data/test/ft_37_pnames.rb +70 -0
- data/test/ft_38_tag.rb +127 -0
- data/test/ft_38b_tag.rb +161 -0
- data/test/ft_38c_tag.rb +100 -0
- data/test/ft_39_reserve.rb +63 -0
- data/test/ft_39b_reserve.rb +84 -0
- data/test/ft_3_equals.rb +170 -0
- data/test/ft_3b_lookup_vf.rb +83 -0
- data/test/ft_40_defined.rb +61 -0
- data/test/ft_41_case.rb +110 -0
- data/test/ft_42_environments.rb +75 -0
- data/test/ft_43_pat10.rb +85 -0
- data/test/ft_44_save.rb +70 -0
- data/test/ft_44b_restore.rb +212 -0
- data/test/ft_45_citerator.rb +214 -0
- data/test/ft_46_pparams.rb +62 -0
- data/test/ft_47_filter.rb +160 -0
- data/test/ft_48_fe_filter.rb +88 -0
- data/test/ft_49_condition.rb +126 -0
- data/test/ft_4_misc.rb +237 -0
- data/test/ft_50_xml_attribute.rb +155 -0
- data/test/ft_51_stack.rb +55 -0
- data/test/ft_52_obs_participant.rb +123 -0
- data/test/ft_53_null_noop_participant.rb +62 -0
- data/test/ft_54_listen.rb +288 -0
- data/test/ft_54b_listen.rb +66 -0
- data/test/ft_54c_listen.rb +99 -0
- data/test/ft_55_ptimeout.rb +59 -0
- data/test/ft_56_timeout.rb +59 -0
- data/test/ft_57_a.rb +145 -0
- data/test/ft_58_ejournal.rb +151 -0
- data/test/ft_59_ps.rb +150 -0
- data/test/ft_59b_ps_for_pat.rb +58 -0
- data/test/ft_5_time.rb +118 -0
- data/test/ft_60_ecancel.rb +161 -0
- data/test/ft_61_elsub.rb +51 -0
- data/test/ft_62_procparticipant.rb +71 -0
- data/test/ft_63_pause.rb +124 -0
- data/test/ft_64_alias.rb +102 -0
- data/test/ft_64_clone.rb +69 -0
- data/test/ft_65_stringlaunch.rb +59 -0
- data/test/ft_66_subforget.rb +70 -0
- data/test/ft_67_schedlaunch.rb +116 -0
- data/test/ft_68_ifparticipant.rb +70 -0
- data/test/ft_69_cancelmissing.rb +51 -0
- data/test/ft_6_lambda.rb +64 -0
- data/test/ft_70_lookupvar.rb +55 -0
- data/test/ft_71_log.rb +60 -0
- data/test/ft_72_lookup_processes.rb +76 -0
- data/test/ft_73_cancel_sub.rb +139 -0
- data/test/ft_74_block_and_workitem_dup.rb +63 -0
- data/test/ft_75_ruby_attributes.rb +87 -0
- data/test/ft_76_merge_isolate.rb +88 -0
- data/test/ft_77_segments.rb +35 -0
- data/test/ft_78_eval.rb +150 -0
- data/test/ft_79_tticket.rb +187 -0
- data/test/ft_79b_tticket.rb +172 -0
- data/test/ft_79c_outcome.rb +56 -0
- data/test/ft_7_lose.rb +104 -0
- data/test/ft_7b_lose.rb +78 -0
- data/test/ft_80_spname.rb +91 -0
- data/test/ft_81_exp.rb +60 -0
- data/test/ft_82_trecu.rb +46 -0
- data/test/ft_83_badpause.rb +58 -0
- data/test/ft_84_updateexp.rb +198 -0
- data/test/ft_85_dolhash.rb +43 -0
- data/test/ft_86_dollar_fv.rb +68 -0
- data/test/ft_87_define.rb +74 -0
- data/test/ft_8_forget.rb +44 -0
- data/test/ft_9_cursor.rb +145 -0
- data/test/ft_9b_cursor.rb +105 -0
- data/test/ft_tests.rb +124 -0
- data/test/hash_test.rb +75 -0
- data/test/hparticipant_test.rb +164 -0
- data/test/lookup_att_test.rb +90 -0
- data/test/lookup_vf_test.rb +94 -0
- data/test/misc_test.rb +90 -0
- data/test/nut_0_irb.rb +20 -0
- data/test/obs_test.rb +142 -0
- data/test/orest_test.rb +251 -0
- data/test/param_test.rb +290 -0
- data/test/participant_test.rb +101 -0
- data/test/pending.rb +23 -0
- data/test/ps_representation.rb +133 -0
- data/test/rake_ltest.rb +38 -0
- data/test/rake_qtest.rb +68 -0
- data/test/raw_prog_test.rb +412 -0
- data/test/restart_cron_test.rb +136 -0
- data/test/restart_paused_test.rb +98 -0
- data/test/restart_sleep_test.rb +140 -0
- data/test/restart_tests.rb +18 -0
- data/test/restart_when_test.rb +112 -0
- data/test/ruby_procdef_test.rb +132 -0
- data/test/rutest_utils.rb +63 -0
- data/test/sec_test.rb +205 -0
- data/test/slock_test.rb +80 -0
- data/test/storage_test.rb +44 -0
- data/test/test.rb +3 -0
- data/test/timeout_test.rb +105 -0
- data/test/util_xml_test.rb +112 -0
- data/test/wfid_test.rb +175 -0
- data/test/wi_test.rb +75 -0
- metadata +433 -0
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
|
|
2
|
+
#
|
|
3
|
+
# Testing OpenWFEru
|
|
4
|
+
#
|
|
5
|
+
# John Mettraux at openwfe.org
|
|
6
|
+
#
|
|
7
|
+
|
|
8
|
+
require 'flowtestbase'
|
|
9
|
+
#require 'openwfe/def'
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class FlowTest77 < Test::Unit::TestCase
|
|
13
|
+
include FlowTestBase
|
|
14
|
+
|
|
15
|
+
#def setup
|
|
16
|
+
#end
|
|
17
|
+
|
|
18
|
+
#def teardown
|
|
19
|
+
#end
|
|
20
|
+
|
|
21
|
+
TEST0 = "<print>nada</print>"
|
|
22
|
+
|
|
23
|
+
def test_0
|
|
24
|
+
dotest TEST0, "nada"
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
TEST1 = "_print 'nada'"
|
|
29
|
+
|
|
30
|
+
def test_1
|
|
31
|
+
dotest TEST1, "nada"
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
end
|
|
35
|
+
|
data/test/ft_78_eval.rb
ADDED
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
|
|
2
|
+
#
|
|
3
|
+
# Testing OpenWFEru
|
|
4
|
+
#
|
|
5
|
+
# John Mettraux at openwfe.org
|
|
6
|
+
#
|
|
7
|
+
# Tue Nov 20 21:46:30 JST 2007
|
|
8
|
+
#
|
|
9
|
+
|
|
10
|
+
require 'flowtestbase'
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class FlowTest78 < Test::Unit::TestCase
|
|
14
|
+
include FlowTestBase
|
|
15
|
+
|
|
16
|
+
#def setup
|
|
17
|
+
#end
|
|
18
|
+
|
|
19
|
+
#def teardown
|
|
20
|
+
#end
|
|
21
|
+
|
|
22
|
+
#
|
|
23
|
+
# TEST 0
|
|
24
|
+
#
|
|
25
|
+
|
|
26
|
+
TEST0 = %{
|
|
27
|
+
<sequence>
|
|
28
|
+
<print>0</print>
|
|
29
|
+
<eval>
|
|
30
|
+
<![CDATA[
|
|
31
|
+
<print>1</print>
|
|
32
|
+
]]>
|
|
33
|
+
</eval>
|
|
34
|
+
<print>2</print>
|
|
35
|
+
</sequence>
|
|
36
|
+
}.strip
|
|
37
|
+
|
|
38
|
+
def test_0
|
|
39
|
+
|
|
40
|
+
@engine.ac[:dynamic_eval_allowed] = true
|
|
41
|
+
|
|
42
|
+
dotest TEST0, "0\n1\n2"
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
#
|
|
46
|
+
# TEST 1
|
|
47
|
+
#
|
|
48
|
+
|
|
49
|
+
class Test1 < OpenWFE::ProcessDefinition
|
|
50
|
+
sequence do
|
|
51
|
+
|
|
52
|
+
set :var => "v0", :val => "val0"
|
|
53
|
+
|
|
54
|
+
set :field => "code", :value => "<print>hello 0</print>"
|
|
55
|
+
_eval :field_def => "code"
|
|
56
|
+
set :field => "code", :value => "_print 'hello 1'"
|
|
57
|
+
_eval :field_def => "code"
|
|
58
|
+
set :variable => "code", :value => "_print 'hello 1'"
|
|
59
|
+
_eval :variable_def => "code"
|
|
60
|
+
|
|
61
|
+
set :field => "code", :value => "_print '${v0}'"
|
|
62
|
+
_eval :field_def => "code"
|
|
63
|
+
|
|
64
|
+
set :field => "code", :value => "_print '${v0}'", :escape => true
|
|
65
|
+
set :var => "v0", :val => "val0b"
|
|
66
|
+
_eval :field_def => "code"
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
def test_1
|
|
71
|
+
|
|
72
|
+
@engine.ac[:dynamic_eval_allowed] = true
|
|
73
|
+
|
|
74
|
+
dotest Test1, "hello 0\nhello 1\nhello 1\nval0\nval0b"
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
#
|
|
79
|
+
# TEST 2
|
|
80
|
+
#
|
|
81
|
+
|
|
82
|
+
class Test2 < OpenWFE::ProcessDefinition
|
|
83
|
+
sequence do
|
|
84
|
+
_eval ""
|
|
85
|
+
_print "ok"
|
|
86
|
+
end
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
def test_2
|
|
90
|
+
|
|
91
|
+
@engine.ac[:dynamic_eval_allowed] = true
|
|
92
|
+
|
|
93
|
+
dotest Test2, "ok"
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
#
|
|
98
|
+
# TEST 3
|
|
99
|
+
#
|
|
100
|
+
|
|
101
|
+
class Test3 < OpenWFE::ProcessDefinition
|
|
102
|
+
sequence do
|
|
103
|
+
_eval "launcher"
|
|
104
|
+
_print "ok"
|
|
105
|
+
end
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
def test_3
|
|
109
|
+
|
|
110
|
+
@engine.ac[:dynamic_eval_allowed] = true
|
|
111
|
+
|
|
112
|
+
@engine.register_participant :launcher do |fexp, wi|
|
|
113
|
+
@tracer << "launcher\n"
|
|
114
|
+
#puts fexp.get_expression_storage.to_s
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
dotest Test3, "launcher\nok"
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
#
|
|
122
|
+
# TEST 4
|
|
123
|
+
#
|
|
124
|
+
|
|
125
|
+
class Test4 < OpenWFE::ProcessDefinition
|
|
126
|
+
_loop do
|
|
127
|
+
_print "before"
|
|
128
|
+
_eval :def => "launcher"
|
|
129
|
+
#launcher
|
|
130
|
+
_print "after"
|
|
131
|
+
_break
|
|
132
|
+
end
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
def test_4
|
|
136
|
+
|
|
137
|
+
@engine.ac[:dynamic_eval_allowed] = true
|
|
138
|
+
|
|
139
|
+
@engine.register_participant :launcher do |fexp, wi|
|
|
140
|
+
@tracer << "launcher\n"
|
|
141
|
+
#@tracer << "#{fexp.get_expression_storage.size}\n"
|
|
142
|
+
#puts fexp.get_expression_storage.to_s
|
|
143
|
+
#puts fexp.to_s
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
dotest Test4, "before\nlauncher\nafter"
|
|
147
|
+
end
|
|
148
|
+
|
|
149
|
+
end
|
|
150
|
+
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
|
|
2
|
+
#
|
|
3
|
+
# Testing OpenWFEru
|
|
4
|
+
#
|
|
5
|
+
# John Mettraux at openwfe.org
|
|
6
|
+
#
|
|
7
|
+
# Thu Jan 3 23:05:37 JST 2008
|
|
8
|
+
#
|
|
9
|
+
|
|
10
|
+
require 'flowtestbase'
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
#
|
|
14
|
+
# The process definition under test
|
|
15
|
+
#
|
|
16
|
+
class TroubleTicket01 < OpenWFE::ProcessDefinition
|
|
17
|
+
|
|
18
|
+
#
|
|
19
|
+
# The root of the process
|
|
20
|
+
#
|
|
21
|
+
sequence do
|
|
22
|
+
|
|
23
|
+
#
|
|
24
|
+
# the first activity, customer support
|
|
25
|
+
#
|
|
26
|
+
cs :activity => "enter details"
|
|
27
|
+
|
|
28
|
+
#
|
|
29
|
+
# initiating the first step
|
|
30
|
+
#
|
|
31
|
+
step :part => "qa", :desc => "reproduce problem"
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
#
|
|
35
|
+
# At the core of the process,
|
|
36
|
+
# the 'step' subprocess
|
|
37
|
+
#
|
|
38
|
+
process_definition :name => "step" do
|
|
39
|
+
sequence do
|
|
40
|
+
|
|
41
|
+
# participant performs activity
|
|
42
|
+
participant(
|
|
43
|
+
:ref => "${part}", :activity => "${desc}")
|
|
44
|
+
|
|
45
|
+
# then, call next step (via a subprocess)
|
|
46
|
+
subprocess :ref => "${f:next}"
|
|
47
|
+
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
#
|
|
52
|
+
# The 'outputs' of the activities
|
|
53
|
+
#
|
|
54
|
+
|
|
55
|
+
# QA 'reproduce problem' outputs
|
|
56
|
+
|
|
57
|
+
process_definition :name => "out:cannot_reproduce" do
|
|
58
|
+
step :part => "cs", :desc => "correct report"
|
|
59
|
+
end
|
|
60
|
+
process_definition :name => "out:known_solution" do
|
|
61
|
+
finalsteps
|
|
62
|
+
end
|
|
63
|
+
process_definition :name => "out:duplicate" do
|
|
64
|
+
step :part => "qa", :desc => "verify"
|
|
65
|
+
end
|
|
66
|
+
process_definition :name => "out:reproduced" do
|
|
67
|
+
step :part => "dev", :desc => "resolution"
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
# Customer Support 'correct report' outputs
|
|
71
|
+
|
|
72
|
+
process_definition :name => "out:submit" do
|
|
73
|
+
step :part => "qa", :desc => "reproduce problem"
|
|
74
|
+
end
|
|
75
|
+
process_definition :name => "out:give_up" do
|
|
76
|
+
finalsteps
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
# QA 'verify' outputs
|
|
80
|
+
|
|
81
|
+
process_definition :name => "out:qa_fixed" do
|
|
82
|
+
finalsteps
|
|
83
|
+
end
|
|
84
|
+
process_definition :name => "out:not_fixed" do
|
|
85
|
+
step :part => "dev", :desc => "resolution"
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
# dev 'resolution' outputs
|
|
89
|
+
|
|
90
|
+
process_definition :name => "out:dev_fixed" do
|
|
91
|
+
step :part => "qa", :desc => "verify"
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
set :var => "out:not_a_bug", :variable_value => "out:dev_fixed"
|
|
95
|
+
# "not_a_bug" is an alias to "dev_fixed"
|
|
96
|
+
|
|
97
|
+
# the final steps
|
|
98
|
+
|
|
99
|
+
process_definition :name => "finalsteps" do
|
|
100
|
+
concurrence do
|
|
101
|
+
cs :activity => "communicate results"
|
|
102
|
+
qa :activity => "audit"
|
|
103
|
+
end
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
class FlowTest79 < Test::Unit::TestCase
|
|
111
|
+
include FlowTestBase
|
|
112
|
+
|
|
113
|
+
def test_0
|
|
114
|
+
|
|
115
|
+
dotest(
|
|
116
|
+
[ "", "known_solution" ], # path
|
|
117
|
+
[ "cs", "qa", "cs", "qa" ]) # expected trace
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
def test_1
|
|
121
|
+
|
|
122
|
+
dotest(
|
|
123
|
+
[ "", "cannot_reproduce", "give_up" ], # path
|
|
124
|
+
[ "cs", "qa", "cs", "cs", "qa" ]) # expected trace
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
def test_2
|
|
128
|
+
|
|
129
|
+
dotest(
|
|
130
|
+
[ "", "reproduced", "dev_fixed", "qa_fixed" ], # path
|
|
131
|
+
[ "cs", "qa", "dev", "qa", "cs", "qa" ]) # expected trace
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
def test_3
|
|
135
|
+
|
|
136
|
+
dotest(
|
|
137
|
+
[ "", "reproduced", "not_a_bug", "qa_fixed" ], # path
|
|
138
|
+
[ "cs", "qa", "dev", "qa", "cs", "qa" ]) # expected trace
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
class TestParticipant
|
|
142
|
+
include OpenWFE::LocalParticipant
|
|
143
|
+
|
|
144
|
+
attr_reader :trace
|
|
145
|
+
|
|
146
|
+
def initialize (path)
|
|
147
|
+
|
|
148
|
+
@path = path
|
|
149
|
+
@trace = []
|
|
150
|
+
end
|
|
151
|
+
|
|
152
|
+
def consume (workitem)
|
|
153
|
+
|
|
154
|
+
@trace << workitem.participant_name
|
|
155
|
+
# Kilroy was here
|
|
156
|
+
|
|
157
|
+
workitem.next = "out:#{@path.delete_at(0)}" if @path.size > 0
|
|
158
|
+
# stating what should happen next (activity conclusion)
|
|
159
|
+
|
|
160
|
+
reply_to_engine workitem
|
|
161
|
+
# handing back the workitem to the engine
|
|
162
|
+
# (please resume the process)
|
|
163
|
+
end
|
|
164
|
+
end
|
|
165
|
+
|
|
166
|
+
def dotest (path, expected_trace)
|
|
167
|
+
|
|
168
|
+
p = TestParticipant.new path
|
|
169
|
+
|
|
170
|
+
@engine.register_participant :cs, p
|
|
171
|
+
@engine.register_participant :qa, p
|
|
172
|
+
@engine.register_participant :dev, p
|
|
173
|
+
|
|
174
|
+
fei = launch TroubleTicket01
|
|
175
|
+
|
|
176
|
+
@engine.wait_for fei
|
|
177
|
+
|
|
178
|
+
assert_equal expected_trace, p.trace
|
|
179
|
+
|
|
180
|
+
sleep 0.350 # c tests reply too fast, have to wait a bit
|
|
181
|
+
|
|
182
|
+
assert(
|
|
183
|
+
(@engine.process_status(fei) == nil),
|
|
184
|
+
"process not over, check the [error] log")
|
|
185
|
+
end
|
|
186
|
+
end
|
|
187
|
+
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
|
|
2
|
+
#
|
|
3
|
+
# Testing OpenWFEru
|
|
4
|
+
#
|
|
5
|
+
# John Mettraux at openwfe.org
|
|
6
|
+
#
|
|
7
|
+
# Thu Jan 3 23:05:37 JST 2008
|
|
8
|
+
#
|
|
9
|
+
|
|
10
|
+
require 'flowtestbase'
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
#
|
|
14
|
+
# The process definition under test
|
|
15
|
+
#
|
|
16
|
+
class TroubleTicket02 < OpenWFE::ProcessDefinition
|
|
17
|
+
|
|
18
|
+
#
|
|
19
|
+
# The root of the process
|
|
20
|
+
#
|
|
21
|
+
sequence do
|
|
22
|
+
|
|
23
|
+
#
|
|
24
|
+
# the first activity, customer support
|
|
25
|
+
#
|
|
26
|
+
cs :activity => "enter details"
|
|
27
|
+
|
|
28
|
+
#
|
|
29
|
+
# initiating the first step
|
|
30
|
+
#
|
|
31
|
+
step "qa", :desc => "reproduce problem"
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
#
|
|
35
|
+
# The 'outputs' of the activities
|
|
36
|
+
#
|
|
37
|
+
|
|
38
|
+
# QA 'reproduce problem' outputs
|
|
39
|
+
|
|
40
|
+
process_definition :name => "out:cannot_reproduce" do
|
|
41
|
+
step "cs", :desc => "correct report"
|
|
42
|
+
end
|
|
43
|
+
process_definition :name => "out:known_solution" do
|
|
44
|
+
finalsteps
|
|
45
|
+
end
|
|
46
|
+
process_definition :name => "out:duplicate" do
|
|
47
|
+
step "qa", :desc => "verify"
|
|
48
|
+
end
|
|
49
|
+
process_definition :name => "out:reproduced" do
|
|
50
|
+
step "dev", :desc => "resolution"
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
# Customer Support 'correct report' outputs
|
|
54
|
+
|
|
55
|
+
process_definition :name => "out:submit" do
|
|
56
|
+
step "qa", :desc => "reproduce problem"
|
|
57
|
+
end
|
|
58
|
+
process_definition :name => "out:give_up" do
|
|
59
|
+
finalsteps
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
# QA 'verify' outputs
|
|
63
|
+
|
|
64
|
+
process_definition :name => "out:qa_fixed" do
|
|
65
|
+
finalsteps
|
|
66
|
+
end
|
|
67
|
+
process_definition :name => "out:not_fixed" do
|
|
68
|
+
step "dev", :desc => "resolution"
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
# dev 'resolution' outputs
|
|
72
|
+
|
|
73
|
+
process_definition :name => "out:dev_fixed" do
|
|
74
|
+
step "qa", :desc => "verify"
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
set :var => "out:not_a_bug", :variable_value => "out:dev_fixed"
|
|
78
|
+
# "not_a_bug" is an alias to "dev_fixed"
|
|
79
|
+
|
|
80
|
+
# the final steps
|
|
81
|
+
|
|
82
|
+
process_definition :name => "finalsteps" do
|
|
83
|
+
concurrence do
|
|
84
|
+
cs :activity => "communicate results"
|
|
85
|
+
qa :activity => "audit"
|
|
86
|
+
end
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
class FlowTest79b < Test::Unit::TestCase
|
|
94
|
+
include FlowTestBase
|
|
95
|
+
|
|
96
|
+
def test_0
|
|
97
|
+
|
|
98
|
+
dotest(
|
|
99
|
+
[ "", "known_solution" ], # path
|
|
100
|
+
[ "cs", "qa", "cs", "qa" ]) # expected trace
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
def test_1
|
|
104
|
+
|
|
105
|
+
dotest(
|
|
106
|
+
[ "", "cannot_reproduce", "give_up" ], # path
|
|
107
|
+
[ "cs", "qa", "cs", "cs", "qa" ]) # expected trace
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
def test_2
|
|
111
|
+
|
|
112
|
+
dotest(
|
|
113
|
+
[ "", "reproduced", "dev_fixed", "qa_fixed" ], # path
|
|
114
|
+
[ "cs", "qa", "dev", "qa", "cs", "qa" ]) # expected trace
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
def test_3
|
|
118
|
+
|
|
119
|
+
dotest(
|
|
120
|
+
[ "", "reproduced", "not_a_bug", "qa_fixed" ], # path
|
|
121
|
+
[ "cs", "qa", "dev", "qa", "cs", "qa" ]) # expected trace
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
class TestParticipant
|
|
125
|
+
include OpenWFE::LocalParticipant
|
|
126
|
+
|
|
127
|
+
attr_reader :trace
|
|
128
|
+
|
|
129
|
+
def initialize (path)
|
|
130
|
+
|
|
131
|
+
@path = path
|
|
132
|
+
@trace = []
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
def consume (workitem)
|
|
136
|
+
|
|
137
|
+
@trace << workitem.participant_name
|
|
138
|
+
# Kilroy was here
|
|
139
|
+
|
|
140
|
+
workitem.outcome = "out:#{@path.delete_at(0)}" if @path.size > 0
|
|
141
|
+
# stating what should happen next (activity conclusion)
|
|
142
|
+
|
|
143
|
+
reply_to_engine workitem
|
|
144
|
+
# handing back the workitem to the engine
|
|
145
|
+
# (please resume the process)
|
|
146
|
+
end
|
|
147
|
+
end
|
|
148
|
+
|
|
149
|
+
def dotest (path, expected_trace)
|
|
150
|
+
|
|
151
|
+
#log_level_to_debug
|
|
152
|
+
|
|
153
|
+
p = TestParticipant.new path
|
|
154
|
+
|
|
155
|
+
@engine.register_participant :cs, p
|
|
156
|
+
@engine.register_participant :qa, p
|
|
157
|
+
@engine.register_participant :dev, p
|
|
158
|
+
|
|
159
|
+
fei = launch TroubleTicket02
|
|
160
|
+
|
|
161
|
+
@engine.wait_for fei
|
|
162
|
+
|
|
163
|
+
assert_equal expected_trace, p.trace
|
|
164
|
+
|
|
165
|
+
sleep 0.400 # c tests reply too fast, have to wait a bit
|
|
166
|
+
|
|
167
|
+
assert(
|
|
168
|
+
(@engine.process_status(fei) == nil),
|
|
169
|
+
"process not over, check the [error] log")
|
|
170
|
+
end
|
|
171
|
+
end
|
|
172
|
+
|