openwferu 0.9.1 → 0.9.2
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 → README.txt} +16 -13
- data/bin/validate-workflow.rb +46 -22
- data/examples/README.txt +8 -0
- data/examples/homeworkreview.rb +66 -0
- data/examples/quotereporter.rb +154 -0
- data/lib/{openwferu.rb → openwfe.rb} +6 -8
- data/lib/{ru → openwfe}/contextual.rb +11 -3
- data/lib/{ru → openwfe/engine}/engine.rb +50 -36
- data/lib/{ru/participant.rb → openwfe/engine/file_persisted_engine.rb} +21 -22
- data/lib/openwfe/expool/expressionpool.rb +534 -0
- data/lib/openwfe/expool/expstorage.rb +184 -0
- data/lib/openwfe/expool/journalexpstorage.rb +312 -0
- data/lib/openwfe/expool/yamlexpstorage.rb +127 -0
- data/lib/{ru → openwfe/expressions}/environment.rb +19 -14
- data/lib/{ru → openwfe/expressions}/expressionmap.rb +48 -21
- data/lib/{ru → openwfe/expressions}/fe_concurrence.rb +111 -35
- data/lib/openwfe/expressions/fe_cursor.rb +236 -0
- data/lib/{ru → openwfe/expressions}/fe_define.rb +5 -5
- data/lib/openwfe/expressions/fe_fqv.rb +99 -0
- data/lib/openwfe/expressions/fe_iterator.rb +182 -0
- data/lib/{ru/fe_misc.rb → openwfe/expressions/fe_losfor.rb} +14 -56
- data/lib/openwfe/expressions/fe_misc.rb +102 -0
- data/lib/{ru → openwfe/expressions}/fe_participant.rb +25 -14
- data/lib/{ru → openwfe/expressions}/fe_raw.rb +39 -75
- data/lib/{ru/fe_base.rb → openwfe/expressions/fe_sequence.rb} +40 -35
- data/lib/{ru → openwfe/expressions}/fe_subprocess.rb +30 -14
- data/lib/{ru → openwfe/expressions}/fe_time.rb +59 -31
- data/lib/{ru → openwfe/expressions}/fe_utils.rb +42 -26
- data/lib/{ru → openwfe/expressions}/fe_value.rb +20 -14
- data/lib/openwfe/expressions/flowexpression.rb +434 -0
- data/lib/openwfe/expressions/raw_prog.rb +391 -0
- data/lib/openwfe/expressions/raw_xml.rb +128 -0
- data/lib/openwfe/flowexpressionid.rb +148 -0
- data/lib/{ru → openwfe}/logging.rb +10 -6
- data/lib/{osocket.rb → openwfe/osocket.rb} +36 -35
- data/lib/{otime.rb → openwfe/otime.rb} +71 -21
- data/lib/openwfe/participants/atomparticipants.rb +144 -0
- data/lib/openwfe/participants/enoparticipant.rb +73 -0
- data/lib/openwfe/participants/participant.rb +85 -0
- data/lib/{ru → openwfe/participants}/participantmap.rb +40 -12
- data/lib/{ru → openwfe/participants}/participants.rb +41 -12
- data/lib/openwfe/participants/soapparticipants.rb +96 -0
- data/lib/{controlclient.rb → openwfe/rest/controlclient.rb} +12 -13
- data/lib/{definitions.rb → openwfe/rest/definitions.rb} +3 -3
- data/lib/{exception.rb → openwfe/rest/exception.rb} +3 -3
- data/lib/{restclient.rb → openwfe/rest/restclient.rb} +13 -22
- data/lib/{worklistclient.rb → openwfe/rest/worklistclient.rb} +33 -46
- data/lib/openwfe/rest/xmlcodec.rb +575 -0
- data/lib/{ru → openwfe}/rudefinitions.rb +32 -4
- data/lib/{ru → openwfe}/service.rb +20 -8
- data/lib/openwfe/storage/yamlfilestorage.rb +159 -0
- data/lib/{ru → openwfe/util}/dollar.rb +10 -8
- data/lib/openwfe/util/lru_cache.rb +149 -0
- data/lib/{ru → openwfe/util}/scheduler.rb +18 -10
- data/lib/{ru → openwfe/util}/schedulers.rb +7 -7
- data/lib/{utils.rb → openwfe/utils.rb} +93 -9
- data/lib/openwfe/workitem.rb +366 -0
- data/lib/openwfe/worklist/worklists.rb +175 -0
- data/test/README.txt +27 -0
- data/test/atomtest.rb +99 -0
- data/test/crontest.rb +58 -0
- data/test/dollartest.rb +3 -3
- data/test/feitest.rb +42 -14
- data/test/file_persistence_test.rb +93 -0
- data/test/flowtestbase.rb +72 -26
- data/test/ft_0.rb +1 -97
- data/test/ft_0b_sequence.rb +33 -0
- data/test/ft_0c_testname.rb +29 -0
- data/test/ft_10_loop.rb +48 -0
- data/test/ft_11_ppd.rb +292 -0
- data/test/ft_12_blockparticipant.rb +45 -0
- data/test/ft_13_eno.rb +51 -0
- data/test/ft_14_subprocess.rb +90 -0
- data/test/ft_14b_subprocess.rb +40 -0
- data/test/ft_15_iterator.rb +70 -0
- data/test/ft_16_fqv.rb +57 -0
- data/test/ft_1_unset.rb +25 -1
- data/test/ft_2_concurrence.rb +10 -5
- data/test/ft_3_equals.rb +35 -1
- data/test/ft_4_misc.rb +16 -1
- data/test/ft_5_time.rb +26 -1
- data/test/ft_6_lambda.rb +2 -1
- data/test/{ft_7_losfor.rb → ft_7_lose.rb} +41 -35
- data/test/ft_8_forget.rb +46 -0
- data/test/ft_9_cursor.rb +94 -0
- data/test/journal_persistence_test.rb +147 -0
- data/test/misctest.rb +13 -9
- data/test/rake_ptest.rb +18 -0
- data/test/rake_qtest.rb +43 -0
- data/test/{fulltest.rb → rake_test.rb} +2 -2
- data/test/raw_prog_test.rb +236 -0
- data/test/rest_test.rb +189 -0
- data/test/rutest_utils.rb +1 -1
- data/test/timetest.rb +42 -34
- metadata +125 -82
- data/lib/codec.rb +0 -573
- data/lib/flowexpressionid.rb +0 -139
- data/lib/ru/expressionpool.rb +0 -382
- data/lib/ru/expressionstorage.rb +0 -99
- data/lib/ru/flowexpression.rb +0 -272
- data/lib/ru/ruutils.rb +0 -70
- data/lib/test.rb +0 -222
- data/lib/workitem.rb +0 -249
- data/test/quicktest.rb +0 -21
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#
|
|
2
2
|
#--
|
|
3
|
-
# Copyright (c) 2006, John Mettraux, OpenWFE.org
|
|
3
|
+
# Copyright (c) 2006-2007, John Mettraux, OpenWFE.org
|
|
4
4
|
# All rights reserved.
|
|
5
5
|
#
|
|
6
6
|
# Redistribution and use in source and binary forms, with or without
|
|
@@ -39,68 +39,73 @@
|
|
|
39
39
|
# John Mettraux at openwfe.org
|
|
40
40
|
#
|
|
41
41
|
|
|
42
|
-
require '
|
|
43
|
-
require '
|
|
44
|
-
require 'ru/fe_utils'
|
|
42
|
+
require 'openwfe/expressions/flowexpression'
|
|
43
|
+
require 'openwfe/expressions/fe_utils'
|
|
45
44
|
|
|
46
45
|
|
|
47
46
|
#
|
|
48
|
-
#
|
|
47
|
+
# The 'sequence' expression implementation
|
|
49
48
|
#
|
|
50
49
|
|
|
51
|
-
module
|
|
50
|
+
module OpenWFE
|
|
52
51
|
|
|
52
|
+
#
|
|
53
|
+
# This expression sequentially executes each of its children expression.
|
|
54
|
+
# For a more sophisticated version of it, see the 'cursor' expression
|
|
55
|
+
# (fe_cursor.rb).
|
|
56
|
+
#
|
|
53
57
|
class SequenceExpression < FlowExpression
|
|
54
58
|
|
|
55
59
|
attr_accessor \
|
|
56
|
-
:
|
|
60
|
+
:current_child_id
|
|
57
61
|
|
|
58
62
|
#
|
|
59
63
|
# apply / reply
|
|
60
64
|
|
|
61
65
|
def apply (workitem)
|
|
62
66
|
|
|
67
|
+
@current_child_id = -1
|
|
68
|
+
|
|
63
69
|
reply(workitem)
|
|
64
70
|
end
|
|
65
71
|
|
|
66
72
|
def reply (workitem)
|
|
67
73
|
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
#ldebug { "reply() next_fei is #{@current_child_fei}" }
|
|
74
|
+
cfei = get_to_next_child()
|
|
71
75
|
|
|
72
|
-
if
|
|
73
|
-
store_itself()
|
|
74
|
-
get_expression_pool().apply(@current_child_fei, workitem)
|
|
75
|
-
else
|
|
76
|
+
if not cfei
|
|
76
77
|
reply_to_parent(workitem)
|
|
78
|
+
return
|
|
77
79
|
end
|
|
80
|
+
|
|
81
|
+
#ldebug do
|
|
82
|
+
# "reply() self : \n#{self.to_s}\n" + \
|
|
83
|
+
# "reply() next is #{@current_child_id} : #{cfei.to_debug_s}"
|
|
84
|
+
#end
|
|
85
|
+
|
|
86
|
+
store_itself()
|
|
87
|
+
|
|
88
|
+
get_expression_pool().apply(cfei, workitem)
|
|
78
89
|
end
|
|
79
90
|
|
|
80
91
|
protected
|
|
81
92
|
|
|
82
|
-
def
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
if found
|
|
94
|
-
return c if c.kind_of?(OpenWFE::FlowExpressionId)
|
|
95
|
-
next
|
|
96
|
-
end
|
|
97
|
-
if c.kind_of?(OpenWFE::FlowExpressionId) and \
|
|
98
|
-
c == @current_child_fei
|
|
99
|
-
|
|
100
|
-
found = true
|
|
101
|
-
end
|
|
93
|
+
def get_to_next_child ()
|
|
94
|
+
|
|
95
|
+
return nil if @children.length < 1
|
|
96
|
+
|
|
97
|
+
@current_child_id = @current_child_id + 1
|
|
98
|
+
|
|
99
|
+
@children[@current_child_id..-1].each do |c|
|
|
100
|
+
|
|
101
|
+
return c if c.kind_of? OpenWFE::FlowExpressionId
|
|
102
|
+
|
|
103
|
+
@current_child_id = @current_child_id + 1
|
|
102
104
|
end
|
|
103
|
-
|
|
105
|
+
|
|
106
|
+
return nil
|
|
107
|
+
#
|
|
108
|
+
# did not find any child expression
|
|
104
109
|
end
|
|
105
110
|
end
|
|
106
111
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#
|
|
2
|
-
|
|
3
|
-
# Copyright (c) 2006, John Mettraux, OpenWFE.org
|
|
2
|
+
#--
|
|
3
|
+
# Copyright (c) 2006-2007, John Mettraux, OpenWFE.org
|
|
4
4
|
# All rights reserved.
|
|
5
5
|
#
|
|
6
6
|
# Redistribution and use in source and binary forms, with or without
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
29
29
|
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
30
30
|
# POSSIBILITY OF SUCH DAMAGE.
|
|
31
|
-
|
|
31
|
+
#++
|
|
32
32
|
#
|
|
33
33
|
# $Id: definitions.rb 2725 2006-06-02 13:26:32Z jmettraux $
|
|
34
34
|
#
|
|
@@ -39,25 +39,40 @@
|
|
|
39
39
|
# John Mettraux at openwfe.org
|
|
40
40
|
#
|
|
41
41
|
|
|
42
|
-
|
|
43
|
-
#require 'ru/flowexpression'
|
|
44
|
-
#require 'ru/fe_utils'
|
|
42
|
+
require 'openwfe/expressions/fe_utils'
|
|
45
43
|
|
|
46
44
|
|
|
47
45
|
#
|
|
48
46
|
# the subprocess expression
|
|
49
47
|
#
|
|
50
48
|
|
|
51
|
-
module
|
|
52
|
-
|
|
53
|
-
|
|
49
|
+
module OpenWFE
|
|
50
|
+
|
|
51
|
+
#
|
|
52
|
+
# This expression is used to launch/call a subprocess.
|
|
53
|
+
#
|
|
54
|
+
# For example :
|
|
55
|
+
#
|
|
56
|
+
# <process-definition name="subtest0" revision="0">
|
|
57
|
+
# <sequence>
|
|
58
|
+
# <subprocess ref="sub0" a="A" b="B" c="C" />
|
|
59
|
+
# <sub0 a="A" b="B" c="C" />
|
|
60
|
+
# </sequence>
|
|
61
|
+
#
|
|
62
|
+
# <process-definition name="sub0">
|
|
63
|
+
# <print>${a}${b}${c}</print>
|
|
64
|
+
# </process-definition>
|
|
65
|
+
#
|
|
66
|
+
# </process-definition>
|
|
67
|
+
#
|
|
68
|
+
class SubProcessRefExpression < FlowExpression
|
|
54
69
|
|
|
55
70
|
#
|
|
56
71
|
# apply / reply
|
|
57
72
|
|
|
58
73
|
def apply (workitem)
|
|
59
74
|
|
|
60
|
-
ref =
|
|
75
|
+
ref = OpenWFE::lookup_ref(self, workitem)
|
|
61
76
|
|
|
62
77
|
raise "'subprocess' expression misses a 'ref', 'field-ref' or 'variable-ref' attribute" if not ref
|
|
63
78
|
|
|
@@ -66,13 +81,14 @@ module OpenWFEru
|
|
|
66
81
|
raise "did not find any subprocess named '#{ref}'" \
|
|
67
82
|
if not template_fei
|
|
68
83
|
|
|
69
|
-
|
|
84
|
+
forget = lookup_boolean_attribute(:forget, workitem)
|
|
70
85
|
|
|
71
86
|
requester = @fei
|
|
72
|
-
requester = @fei.workflowInstanceId
|
|
73
|
-
|
|
87
|
+
requester = @fei.workflowInstanceId if forget
|
|
88
|
+
|
|
89
|
+
params = lookup_attributes(workitem)
|
|
74
90
|
|
|
75
|
-
params
|
|
91
|
+
#puts " ... params are #{params.to_s}"
|
|
76
92
|
|
|
77
93
|
get_expression_pool()\
|
|
78
94
|
.launch_template(requester, template_fei, workitem, params)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#
|
|
2
|
-
|
|
3
|
-
# Copyright (c) 2006, John Mettraux, OpenWFE.org
|
|
2
|
+
#--
|
|
3
|
+
# Copyright (c) 2006-2007, John Mettraux, OpenWFE.org
|
|
4
4
|
# All rights reserved.
|
|
5
5
|
#
|
|
6
6
|
# Redistribution and use in source and binary forms, with or without
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
29
29
|
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
30
30
|
# POSSIBILITY OF SUCH DAMAGE.
|
|
31
|
-
|
|
31
|
+
#++
|
|
32
32
|
#
|
|
33
33
|
# $Id: definitions.rb 2725 2006-06-02 13:26:32Z jmettraux $
|
|
34
34
|
#
|
|
@@ -39,16 +39,16 @@
|
|
|
39
39
|
# John Mettraux at openwfe.org
|
|
40
40
|
#
|
|
41
41
|
|
|
42
|
-
require 'otime'
|
|
43
|
-
require '
|
|
44
|
-
require '
|
|
42
|
+
require 'openwfe/otime'
|
|
43
|
+
require 'openwfe/rudefinitions'
|
|
44
|
+
require 'openwfe/util/scheduler'
|
|
45
45
|
|
|
46
46
|
|
|
47
47
|
#
|
|
48
48
|
# expressions like 'sleep' and 'cron'
|
|
49
49
|
#
|
|
50
50
|
|
|
51
|
-
module
|
|
51
|
+
module OpenWFE
|
|
52
52
|
|
|
53
53
|
#
|
|
54
54
|
# A parent class for CronExpression and SleepExpression, is never
|
|
@@ -58,9 +58,28 @@ module OpenWFEru
|
|
|
58
58
|
#
|
|
59
59
|
class TimeExpression < FlowExpression
|
|
60
60
|
|
|
61
|
+
attr_accessor \
|
|
62
|
+
:scheduler_job_id
|
|
63
|
+
|
|
61
64
|
def get_scheduler
|
|
62
65
|
return @application_context[S_SCHEDULER]
|
|
63
66
|
end
|
|
67
|
+
|
|
68
|
+
#
|
|
69
|
+
# Makes sure to cancel any scheduler job associated with this
|
|
70
|
+
# expression
|
|
71
|
+
#
|
|
72
|
+
def cancel ()
|
|
73
|
+
synchronize do
|
|
74
|
+
|
|
75
|
+
ldebug { "cancel() @scheduler_job_id is #{@scheduler_job_id}" }
|
|
76
|
+
|
|
77
|
+
get_scheduler.unschedule(@scheduler_job_id) \
|
|
78
|
+
if @scheduler_job_id
|
|
79
|
+
|
|
80
|
+
return super()
|
|
81
|
+
end
|
|
82
|
+
end
|
|
64
83
|
end
|
|
65
84
|
|
|
66
85
|
#
|
|
@@ -83,38 +102,41 @@ module OpenWFEru
|
|
|
83
102
|
:awakening_time
|
|
84
103
|
|
|
85
104
|
def apply (workitem)
|
|
105
|
+
synchronize do
|
|
86
106
|
|
|
87
|
-
|
|
88
|
-
|
|
107
|
+
sfor = lookup_attribute(:for, workitem)
|
|
108
|
+
suntil = lookup_attribute(:until, workitem)
|
|
89
109
|
|
|
90
|
-
|
|
110
|
+
tuntil = nil
|
|
91
111
|
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
end
|
|
112
|
+
if suntil
|
|
113
|
+
tuntil = suntil
|
|
114
|
+
elsif sfor
|
|
115
|
+
tfor = OpenWFE::parse_time_string(sfor)
|
|
116
|
+
ldebug { "apply() tfor is '#{tfor}'" }
|
|
117
|
+
tuntil = Time.new.to_f + tfor
|
|
118
|
+
end
|
|
100
119
|
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
120
|
+
if not tuntil
|
|
121
|
+
reply_to_parent(workitem)
|
|
122
|
+
return
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
@awakening_time = tuntil
|
|
126
|
+
@sleeping_workitem = workitem.dup
|
|
105
127
|
|
|
106
|
-
|
|
107
|
-
|
|
128
|
+
ldebug do
|
|
129
|
+
"apply() " +
|
|
130
|
+
"will sleep until '#{tuntil}' " +
|
|
131
|
+
"(#{OpenWFE::to_iso8601_date(tuntil)})"
|
|
132
|
+
end
|
|
108
133
|
|
|
109
|
-
|
|
134
|
+
@scheduler_job_id = get_scheduler.schedule_at(tuntil, self, nil)
|
|
110
135
|
|
|
111
|
-
|
|
112
|
-
# "apply() " +
|
|
113
|
-
# "will sleep until '#{tuntil}' " +
|
|
114
|
-
# "(#{OpenWFE::to_iso_date(tuntil)})"
|
|
115
|
-
#end
|
|
136
|
+
ldebug { "apply() @scheduler_job_id is #{@scheduler_job_id}" }
|
|
116
137
|
|
|
117
|
-
|
|
138
|
+
store_itself()
|
|
139
|
+
end
|
|
118
140
|
end
|
|
119
141
|
|
|
120
142
|
#def reply (workitem)
|
|
@@ -126,10 +148,16 @@ module OpenWFEru
|
|
|
126
148
|
# over
|
|
127
149
|
#
|
|
128
150
|
def trigger (params)
|
|
151
|
+
ldebug do
|
|
152
|
+
"trigger() #{@fei.to_debug_s} waking up (#{Time.new.to_f})"
|
|
153
|
+
end
|
|
129
154
|
reply_to_parent(@sleeping_workitem)
|
|
130
155
|
end
|
|
131
156
|
end
|
|
132
157
|
|
|
158
|
+
#
|
|
159
|
+
# TODO #6929 : implement me
|
|
160
|
+
#
|
|
133
161
|
class CronExpression < TimeExpression
|
|
134
162
|
end
|
|
135
163
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#
|
|
2
|
-
|
|
3
|
-
# Copyright (c) 2006, John Mettraux, OpenWFE.org
|
|
2
|
+
#--
|
|
3
|
+
# Copyright (c) 2006-2007, John Mettraux, OpenWFE.org
|
|
4
4
|
# All rights reserved.
|
|
5
5
|
#
|
|
6
6
|
# Redistribution and use in source and binary forms, with or without
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
29
29
|
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
30
30
|
# POSSIBILITY OF SUCH DAMAGE.
|
|
31
|
-
|
|
31
|
+
#++
|
|
32
32
|
#
|
|
33
33
|
# $Id: definitions.rb 2725 2006-06-02 13:26:32Z jmettraux $
|
|
34
34
|
#
|
|
@@ -39,19 +39,19 @@
|
|
|
39
39
|
# John Mettraux at openwfe.org
|
|
40
40
|
#
|
|
41
41
|
|
|
42
|
-
require '
|
|
43
|
-
require '
|
|
44
|
-
require '
|
|
42
|
+
require 'openwfe/rudefinitions'
|
|
43
|
+
require 'openwfe/util/dollar'
|
|
44
|
+
require 'openwfe/expressions/fe_raw'
|
|
45
45
|
|
|
46
46
|
#
|
|
47
47
|
# a few help methods for expressions
|
|
48
48
|
|
|
49
|
-
module
|
|
49
|
+
module OpenWFE
|
|
50
50
|
|
|
51
51
|
#
|
|
52
52
|
# Returns the text stored as the children of the given expression
|
|
53
53
|
#
|
|
54
|
-
def
|
|
54
|
+
def OpenWFE.fetch_text_content (expression, workitem, escape=false)
|
|
55
55
|
|
|
56
56
|
text = ""
|
|
57
57
|
|
|
@@ -61,7 +61,7 @@ module OpenWFEru
|
|
|
61
61
|
else
|
|
62
62
|
text << child.to_s
|
|
63
63
|
end
|
|
64
|
-
text << "\n"
|
|
64
|
+
#text << "\n"
|
|
65
65
|
end
|
|
66
66
|
|
|
67
67
|
text = dosub(text, expression, workitem) \
|
|
@@ -74,9 +74,9 @@ module OpenWFEru
|
|
|
74
74
|
# looks up for 'value', 'variable-value' and then for 'field-value'
|
|
75
75
|
# if necessary.
|
|
76
76
|
#
|
|
77
|
-
def
|
|
77
|
+
def OpenWFE.lookup_value (flow_expression, workitem, prefix='')
|
|
78
78
|
|
|
79
|
-
return
|
|
79
|
+
return OpenWFE\
|
|
80
80
|
.lookup_vf_attribute(flow_expression, workitem, 'value', prefix)
|
|
81
81
|
end
|
|
82
82
|
|
|
@@ -84,39 +84,55 @@ module OpenWFEru
|
|
|
84
84
|
# looks up for 'ref', 'variable-ref' and then for 'field-ref'
|
|
85
85
|
# if necessary.
|
|
86
86
|
#
|
|
87
|
-
def
|
|
87
|
+
def OpenWFE.lookup_ref (flow_expression, workitem, prefix='')
|
|
88
88
|
|
|
89
|
-
return
|
|
89
|
+
return OpenWFE\
|
|
90
90
|
.lookup_vf_attribute(flow_expression, workitem, 'ref', prefix)
|
|
91
91
|
end
|
|
92
92
|
|
|
93
93
|
#
|
|
94
|
-
#
|
|
94
|
+
# Looks up for value attributes like 'field-ref' or 'variable-value'
|
|
95
95
|
#
|
|
96
|
-
def
|
|
96
|
+
def OpenWFE.lookup_vf_attribute \
|
|
97
97
|
(flow_expression, workitem, att_name, prefix='')
|
|
98
98
|
|
|
99
|
-
prefix = "#{prefix}-" if prefix != ''
|
|
99
|
+
prefix = "#{prefix.to_s}-" if prefix != ''
|
|
100
100
|
|
|
101
101
|
v = flow_expression.lookup_attribute("#{prefix}#{att_name}", workitem)
|
|
102
102
|
|
|
103
|
-
if
|
|
104
|
-
v = flow_expression\
|
|
105
|
-
.lookup_attribute("#{prefix}variable-#{att_name}", workitem)
|
|
106
|
-
end
|
|
103
|
+
return v if v
|
|
107
104
|
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
105
|
+
v = flow_expression\
|
|
106
|
+
.lookup_attribute("#{prefix}variable-#{att_name}", workitem)
|
|
107
|
+
|
|
108
|
+
return flow_expression.lookup_variable(v) if v
|
|
109
|
+
|
|
110
|
+
v = flow_expression\
|
|
111
|
+
.lookup_attribute("#{prefix}field-#{att_name}", workitem)
|
|
112
112
|
|
|
113
|
-
return v
|
|
113
|
+
return workitem.attributes[v] if v
|
|
114
|
+
|
|
115
|
+
return nil
|
|
114
116
|
end
|
|
115
117
|
|
|
118
|
+
#
|
|
119
|
+
# Looks up for a value, a variable or a field (in that order).
|
|
120
|
+
#
|
|
121
|
+
#def OpenWFE.lookup_vvf_attribute (flow_expression, workitem, prefix)
|
|
122
|
+
# raise "missing prefix" unless prefix
|
|
123
|
+
# v = flow_expression.lookup_attribute("#{prefix}-value", workitem)
|
|
124
|
+
# return v if v
|
|
125
|
+
# v = flow_expression.lookup_attribute("#{prefix}-variable", workitem)
|
|
126
|
+
# return flow_expression.lookup_variable(v) if v
|
|
127
|
+
# v = flow_expression.lookup_attribute("#{prefix}-field", workitem)
|
|
128
|
+
# return workitem.attributes[v] if v
|
|
129
|
+
# return nil
|
|
130
|
+
#end
|
|
131
|
+
|
|
116
132
|
#
|
|
117
133
|
# sets the '__result__' field of the workitem
|
|
118
134
|
#
|
|
119
|
-
def
|
|
135
|
+
def OpenWFE.set_result (workitem, result)
|
|
120
136
|
|
|
121
137
|
workitem.attributes[FIELD_RESULT] = result
|
|
122
138
|
end
|