openwferu 0.9.0

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 (55) hide show
  1. data/README +47 -0
  2. data/lib/codec.rb +571 -0
  3. data/lib/controlclient.rb +115 -0
  4. data/lib/definitions.rb +112 -0
  5. data/lib/exception.rb +60 -0
  6. data/lib/flowexpressionid.rb +137 -0
  7. data/lib/openwferu.rb +43 -0
  8. data/lib/osocket.rb +138 -0
  9. data/lib/otime.rb +171 -0
  10. data/lib/restclient.rb +155 -0
  11. data/lib/ru/contextual.rb +63 -0
  12. data/lib/ru/dollar.rb +163 -0
  13. data/lib/ru/engine.rb +130 -0
  14. data/lib/ru/environment.rb +140 -0
  15. data/lib/ru/expressionmap.rb +120 -0
  16. data/lib/ru/expressionpool.rb +339 -0
  17. data/lib/ru/expressionstorage.rb +97 -0
  18. data/lib/ru/fe_base.rb +105 -0
  19. data/lib/ru/fe_concurrence.rb +122 -0
  20. data/lib/ru/fe_define.rb +101 -0
  21. data/lib/ru/fe_misc.rb +96 -0
  22. data/lib/ru/fe_participant.rb +75 -0
  23. data/lib/ru/fe_raw.rb +173 -0
  24. data/lib/ru/fe_subprocess.rb +84 -0
  25. data/lib/ru/fe_time.rb +135 -0
  26. data/lib/ru/fe_utils.rb +123 -0
  27. data/lib/ru/fe_value.rb +225 -0
  28. data/lib/ru/flowexpression.rb +250 -0
  29. data/lib/ru/logging.rb +85 -0
  30. data/lib/ru/participant.rb +67 -0
  31. data/lib/ru/participantmap.rb +93 -0
  32. data/lib/ru/participants.rb +74 -0
  33. data/lib/ru/rudefinitions.rb +70 -0
  34. data/lib/ru/ruutils.rb +68 -0
  35. data/lib/ru/scheduler.rb +478 -0
  36. data/lib/ru/schedulers.rb +63 -0
  37. data/lib/ru/service.rb +64 -0
  38. data/lib/test.rb +220 -0
  39. data/lib/utils.rb +94 -0
  40. data/lib/workitem.rb +250 -0
  41. data/lib/worklistclient.rb +276 -0
  42. data/test/dollartest.rb +79 -0
  43. data/test/feitest.rb +130 -0
  44. data/test/flowtestbase.rb +86 -0
  45. data/test/ft_0.rb +161 -0
  46. data/test/ft_1_unset.rb +152 -0
  47. data/test/ft_2_concurrence.rb +34 -0
  48. data/test/ft_3_equals.rb +84 -0
  49. data/test/ft_4_misc.rb +128 -0
  50. data/test/ft_5_time.rb +56 -0
  51. data/test/misctest.rb +46 -0
  52. data/test/runtest.rb +21 -0
  53. data/test/rutest_utils.rb +15 -0
  54. data/test/timetest.rb +111 -0
  55. metadata +100 -0
@@ -0,0 +1,250 @@
1
+ #
2
+ # Copyright (c) 2006, John Mettraux, OpenWFE.org
3
+ # All rights reserved.
4
+ #
5
+ # Redistribution and use in source and binary forms, with or without
6
+ # modification, are permitted provided that the following conditions are met:
7
+ #
8
+ # . Redistributions of source code must retain the above copyright notice, this
9
+ # list of conditions and the following disclaimer.
10
+ #
11
+ # . Redistributions in binary form must reproduce the above copyright notice,
12
+ # this list of conditions and the following disclaimer in the documentation
13
+ # and/or other materials provided with the distribution.
14
+ #
15
+ # . Neither the name of the "OpenWFE" nor the names of its contributors may be
16
+ # used to endorse or promote products derived from this software without
17
+ # specific prior written permission.
18
+ #
19
+ # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
20
+ # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21
+ # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22
+ # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
23
+ # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
24
+ # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25
+ # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26
+ # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27
+ # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28
+ # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29
+ # POSSIBILITY OF SUCH DAMAGE.
30
+ #
31
+ # $Id: definitions.rb 2725 2006-06-02 13:26:32Z jmettraux $
32
+ #
33
+
34
+ #
35
+ # "made in Japan"
36
+ #
37
+ # John Mettraux at openwfe.org
38
+ #
39
+
40
+ require 'ru/rudefinitions'
41
+ require 'ru/contextual'
42
+ require 'ru/dollar'
43
+ require 'ru/logging'
44
+
45
+
46
+ module OpenWFEru
47
+
48
+ #
49
+ # FlowExpression
50
+ #
51
+
52
+ class FlowExpression
53
+ include Contextual, Logging
54
+
55
+ attr_accessor \
56
+ :fei, \
57
+ :parent_id, \
58
+ :environment_id, \
59
+ :attributes, \
60
+ :children, \
61
+ :apply_time
62
+
63
+ def initialize (fei, parent_id, env_id, app_context, attributes)
64
+
65
+ @fei = fei
66
+ @parent_id = parent_id
67
+ @environment_id = env_id
68
+ @application_context = app_context
69
+ @attributes = attributes
70
+
71
+ @apply_time = nil
72
+
73
+ #ldebug do
74
+ # "initialize()\n"+
75
+ # "self : #{@fei}\n"+
76
+ # "parent : #{@parent_id}"
77
+ #end
78
+ end
79
+
80
+ #
81
+ # the two most important methods for flow expressions
82
+
83
+ def apply (workitem)
84
+ get_parent().reply(workitem) if @parent_id
85
+ end
86
+
87
+ def reply (workitem)
88
+ #
89
+ # a default implementation
90
+ #
91
+ reply_to_parent(workitem)
92
+ end
93
+
94
+ def reply_to_parent (workitem)
95
+ get_expression_pool.reply_to_parent(self, workitem)
96
+ end
97
+
98
+ #
99
+ # some convenience methods
100
+
101
+ def get_parent ()
102
+ get_expression_pool().fetch(@parent_id)
103
+ end
104
+
105
+ def get_expression_pool ()
106
+ @application_context[S_EXPRESSION_POOL]
107
+ end
108
+
109
+ def get_expression_map ()
110
+ @application_context[S_EXPRESSION_MAP]
111
+ end
112
+
113
+ def store_itself ()
114
+ get_expression_pool().update(self)
115
+ end
116
+
117
+ def get_environment ()
118
+ return nil if not @environment_id
119
+ return get_expression_pool().fetch(@environment_id)
120
+ end
121
+
122
+ #
123
+ # Returns true if the expression's environment was generated
124
+ # for itself (usually DefineExpression do have such envs)
125
+ #
126
+ def owns_its_environment? ()
127
+
128
+ #ldebug { "owns_its_environment?() #{@fei.to_debug_s}" }
129
+
130
+ return false if not @environment_id
131
+
132
+ ei = @fei.dup()
133
+ vi = @environment_id.dup()
134
+
135
+ ei.expressionName = "neutral"
136
+ vi.expressionName = "neutral"
137
+
138
+ #ldebug do
139
+ # "owns_its_environment?()\n"+
140
+ # " exp #{ei.to_debug_s}\n"+
141
+ # " env #{vi.to_debug_s}"
142
+ #end
143
+
144
+ return ei == vi
145
+ end
146
+
147
+ def set_variable (varname, value)
148
+ get_environment()[varname] = value
149
+ end
150
+
151
+ def lookup_variable (varname)
152
+ return get_environment()[varname]
153
+ end
154
+
155
+ def delete_variable (varname)
156
+ get_environment().delete(varname)
157
+ end
158
+
159
+ def lookup_attribute (attname, workitem)
160
+ text = @attributes[attname]
161
+ return nil if not text
162
+ return OpenWFEru::dosub(text, self, workitem)
163
+ end
164
+
165
+ def lookup_boolean_attribute (attname, workitem, default=false)
166
+ value = lookup_attribute(attname, workitem)
167
+ return default if not value
168
+ return value.downcase == 'true'
169
+ end
170
+
171
+ def lookup_attributes (attributes, workitem)
172
+ result = {}
173
+ attributes.each do |k, v|
174
+ result[k] = OpenWFEru::dosub(v, self, workitem)
175
+ end
176
+ return result
177
+ end
178
+
179
+ def list_attributes (workitem)
180
+ result = {}
181
+ @attributes.each do |k, v|
182
+ result[k] = OpenWFEru::dosub(v, self, workitem)
183
+ ldebug { "list_attributes() added '#{k}' -> '#{result[k]}'" }
184
+ end
185
+ return result
186
+ end
187
+
188
+ #
189
+ # creates a new environment just for this expression
190
+ #
191
+ def new_environment ()
192
+
193
+ ldebug { "new_environment() for #{@fei.to_debug_s}" }
194
+
195
+ @environment_id = @fei.dup
196
+ @environment_id.expressionName = EN_ENVIRONMENT
197
+
198
+ parent_fei = nil
199
+ parent = nil
200
+ parent = get_expression_pool().fetch(@parent_id) if @parent_id
201
+ parent_fei = parent.environment_id if parent
202
+
203
+ env = Environment\
204
+ .new(@environment_id, parent_fei, nil, @application_context, nil)
205
+
206
+ ldebug { "new_environment() is #{env.fei.to_debug_s}" }
207
+
208
+ env.store_itself()
209
+ end
210
+
211
+ #
212
+ # takes care of removing all the children
213
+ #
214
+ def clean_children
215
+ @children.each do |children_fei|
216
+ get_expression_pool.remove(children_fei)
217
+ end
218
+ end
219
+
220
+ #
221
+ # some eye candy
222
+ #
223
+ def to_s
224
+ s = "* #{@fei.to_debug_s}"
225
+
226
+ if @parent_id
227
+ s << "\n `--p--> #{@parent_id.to_debug_s}"
228
+ end
229
+
230
+ if @environment_id
231
+ s << "\n `--e--> #{@environment_id.to_debug_s}"
232
+ end
233
+
234
+ if @children
235
+ @children.each do |c|
236
+ sc = if c.kind_of?(OpenWFE::FlowExpressionId)
237
+ c.to_debug_s
238
+ else
239
+ ">#{c.to_s}<"
240
+ end
241
+ s << "\n `--c--> #{sc}"
242
+ end
243
+ end
244
+
245
+ return s
246
+ end
247
+ end
248
+
249
+ end
250
+
data/lib/ru/logging.rb ADDED
@@ -0,0 +1,85 @@
1
+ #
2
+ # Copyright (c) 2006, John Mettraux, OpenWFE.org
3
+ # All rights reserved.
4
+ #
5
+ # Redistribution and use in source and binary forms, with or without
6
+ # modification, are permitted provided that the following conditions are met:
7
+ #
8
+ # . Redistributions of source code must retain the above copyright notice, this
9
+ # list of conditions and the following disclaimer.
10
+ #
11
+ # . Redistributions in binary form must reproduce the above copyright notice,
12
+ # this list of conditions and the following disclaimer in the documentation
13
+ # and/or other materials provided with the distribution.
14
+ #
15
+ # . Neither the name of the "OpenWFE" nor the names of its contributors may be
16
+ # used to endorse or promote products derived from this software without
17
+ # specific prior written permission.
18
+ #
19
+ # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
20
+ # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21
+ # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22
+ # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
23
+ # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
24
+ # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25
+ # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26
+ # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27
+ # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28
+ # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29
+ # POSSIBILITY OF SUCH DAMAGE.
30
+ #
31
+ # $Id: definitions.rb 2725 2006-06-02 13:26:32Z jmettraux $
32
+ #
33
+
34
+ #
35
+ # "made in Japan"
36
+ #
37
+ # John Mettraux at openwfe.org
38
+ #
39
+
40
+ require 'logger'
41
+ require 'ru/rudefinitions'
42
+
43
+ module OpenWFEru
44
+
45
+ module Logging
46
+
47
+ def init_default_logging (filename)
48
+ log = Logger.new(filename)
49
+ @application_context[S_LOGGER] = log
50
+ end
51
+
52
+ def ldebug (&block)
53
+ log = get_logger
54
+ log.debug(who(), &block) if log
55
+ end
56
+
57
+ def linfo (&block)
58
+ log = get_logger
59
+ log.info(who(), &block) if log
60
+ end
61
+
62
+ def lwarn (&block)
63
+ log = get_logger
64
+ log.warn(who(), &block) if log
65
+ end
66
+
67
+ private
68
+
69
+ def get_logger
70
+ return @application_context[S_LOGGER] if @application_context
71
+ return Logger.new(STDOUT)
72
+ end
73
+
74
+ def who
75
+ if respond_to?(:service_name)
76
+ "#{self.class} '#{self.service_name}'"
77
+ else
78
+ "#{self.class}"
79
+ end
80
+ end
81
+
82
+ end
83
+
84
+ end
85
+
@@ -0,0 +1,67 @@
1
+ #
2
+ # Copyright (c) 2006, John Mettraux, OpenWFE.org
3
+ # All rights reserved.
4
+ #
5
+ # Redistribution and use in source and binary forms, with or without
6
+ # modification, are permitted provided that the following conditions are met:
7
+ #
8
+ # . Redistributions of source code must retain the above copyright notice, this
9
+ # list of conditions and the following disclaimer.
10
+ #
11
+ # . Redistributions in binary form must reproduce the above copyright notice,
12
+ # this list of conditions and the following disclaimer in the documentation
13
+ # and/or other materials provided with the distribution.
14
+ #
15
+ # . Neither the name of the "OpenWFE" nor the names of its contributors may be
16
+ # used to endorse or promote products derived from this software without
17
+ # specific prior written permission.
18
+ #
19
+ # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
20
+ # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21
+ # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22
+ # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
23
+ # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
24
+ # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25
+ # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26
+ # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27
+ # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28
+ # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29
+ # POSSIBILITY OF SUCH DAMAGE.
30
+ #
31
+ # $Id: definitions.rb 2725 2006-06-02 13:26:32Z jmettraux $
32
+ #
33
+
34
+ #
35
+ # "made in Japan"
36
+ #
37
+ # John Mettraux at openwfe.org
38
+ #
39
+
40
+ require 'ru/contextual'
41
+
42
+
43
+ module OpenWFEru
44
+
45
+ #
46
+ # The 'participant' concept is displayed as a module, so that
47
+ # other pieces of code may easily 'mix it in'.
48
+ #
49
+ module Participant
50
+ include Contextual
51
+
52
+ #
53
+ # a participant will be receiving workitems via this method
54
+ #
55
+ def consume (workitem)
56
+ end
57
+
58
+ #
59
+ # when the workflow engine is cancelling a workflow branch, the
60
+ # already activated participants are notified via this method
61
+ #
62
+ def cancel (cancelitem)
63
+ end
64
+ end
65
+
66
+ end
67
+
@@ -0,0 +1,93 @@
1
+ #
2
+ # Copyright (c) 2006, John Mettraux, OpenWFE.org
3
+ # All rights reserved.
4
+ #
5
+ # Redistribution and use in source and binary forms, with or without
6
+ # modification, are permitted provided that the following conditions are met:
7
+ #
8
+ # . Redistributions of source code must retain the above copyright notice, this
9
+ # list of conditions and the following disclaimer.
10
+ #
11
+ # . Redistributions in binary form must reproduce the above copyright notice,
12
+ # this list of conditions and the following disclaimer in the documentation
13
+ # and/or other materials provided with the distribution.
14
+ #
15
+ # . Neither the name of the "OpenWFE" nor the names of its contributors may be
16
+ # used to endorse or promote products derived from this software without
17
+ # specific prior written permission.
18
+ #
19
+ # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
20
+ # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21
+ # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22
+ # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
23
+ # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
24
+ # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25
+ # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26
+ # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27
+ # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28
+ # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29
+ # POSSIBILITY OF SUCH DAMAGE.
30
+ #
31
+ # $Id: definitions.rb 2725 2006-06-02 13:26:32Z jmettraux $
32
+ #
33
+
34
+ #
35
+ # "made in Japan"
36
+ #
37
+ # John Mettraux at openwfe.org
38
+ #
39
+
40
+ require 'workitem'
41
+ require 'ru/service'
42
+
43
+
44
+ module OpenWFEru
45
+
46
+ class ParticipantMap < Service
47
+
48
+ attr_accessor \
49
+ :participants
50
+
51
+ def initialize (service_name, application_context)
52
+ super(service_name, application_context)
53
+
54
+ @participants = []
55
+ end
56
+
57
+ def register_participant (regex, participant)
58
+
59
+ regex = Regexp.new(regex) if not regex.kind_of? Regexp
60
+
61
+ participant.application_context = @application_context
62
+
63
+ @participants << [ regex, participant ]
64
+ end
65
+
66
+ def lookup_participant (participant_name)
67
+
68
+ @participants.each do |tuple|
69
+ return tuple[1] if tuple[0].match(participant_name)
70
+ end
71
+
72
+ return nil
73
+ end
74
+
75
+ def dispatch (participant_name, workitem)
76
+
77
+ participant = lookup_participant(participant_name)
78
+
79
+ raise "Didn't find participant named '#{participant_name}'" \
80
+ if not participant
81
+
82
+ workitem.participantName = participant_name
83
+
84
+ if workitem.kind_of? OpenWFE::CancelItem
85
+ participant.cancel(workitem)
86
+ else
87
+ participant.consume(workitem)
88
+ end
89
+ end
90
+ end
91
+
92
+ end
93
+
@@ -0,0 +1,74 @@
1
+ #
2
+ # Copyright (c) 2006, John Mettraux, OpenWFE.org
3
+ # All rights reserved.
4
+ #
5
+ # Redistribution and use in source and binary forms, with or without
6
+ # modification, are permitted provided that the following conditions are met:
7
+ #
8
+ # . Redistributions of source code must retain the above copyright notice, this
9
+ # list of conditions and the following disclaimer.
10
+ #
11
+ # . Redistributions in binary form must reproduce the above copyright notice,
12
+ # this list of conditions and the following disclaimer in the documentation
13
+ # and/or other materials provided with the distribution.
14
+ #
15
+ # . Neither the name of the "OpenWFE" nor the names of its contributors may be
16
+ # used to endorse or promote products derived from this software without
17
+ # specific prior written permission.
18
+ #
19
+ # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
20
+ # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21
+ # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22
+ # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
23
+ # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
24
+ # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25
+ # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26
+ # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27
+ # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28
+ # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29
+ # POSSIBILITY OF SUCH DAMAGE.
30
+ #
31
+ # $Id: definitions.rb 2725 2006-06-02 13:26:32Z jmettraux $
32
+ #
33
+
34
+ #
35
+ # "made in Japan"
36
+ #
37
+ # John Mettraux at openwfe.org
38
+ #
39
+
40
+ require 'ru/participant'
41
+ require 'ru/rudefinitions'
42
+
43
+
44
+ #
45
+ # some base participant implementations
46
+
47
+ module OpenWFEru
48
+
49
+ class LocalParticipant
50
+ include Participant
51
+
52
+ def reply_to_engine (workitem)
53
+ @application_context[S_EXPRESSION_POOL]\
54
+ .reply(workitem.lastExpressionId, workitem)
55
+ end
56
+ end
57
+
58
+ class PrintParticipant < LocalParticipant
59
+
60
+ def consume (workitem)
61
+
62
+ tracer = @application_context['__tracer']
63
+
64
+ if tracer
65
+ tracer << workitem.participantName
66
+ else
67
+ puts workitem.participantName
68
+ end
69
+
70
+ reply_to_engine(workitem)
71
+ end
72
+ end
73
+ end
74
+
@@ -0,0 +1,70 @@
1
+ #
2
+ # Copyright (c) 2006, John Mettraux, OpenWFE.org
3
+ # All rights reserved.
4
+ #
5
+ # Redistribution and use in source and binary forms, with or without
6
+ # modification, are permitted provided that the following conditions are met:
7
+ #
8
+ # . Redistributions of source code must retain the above copyright notice, this
9
+ # list of conditions and the following disclaimer.
10
+ #
11
+ # . Redistributions in binary form must reproduce the above copyright notice,
12
+ # this list of conditions and the following disclaimer in the documentation
13
+ # and/or other materials provided with the distribution.
14
+ #
15
+ # . Neither the name of the "OpenWFE" nor the names of its contributors may be
16
+ # used to endorse or promote products derived from this software without
17
+ # specific prior written permission.
18
+ #
19
+ # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
20
+ # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21
+ # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22
+ # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
23
+ # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
24
+ # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25
+ # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26
+ # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27
+ # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28
+ # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29
+ # POSSIBILITY OF SUCH DAMAGE.
30
+ #
31
+ # $Id: definitions.rb 2725 2006-06-02 13:26:32Z jmettraux $
32
+ #
33
+
34
+ #
35
+ # "made in Japan"
36
+ #
37
+
38
+ module OpenWFEru
39
+
40
+ OPENWFE_VERSION = '1.7.2pre17'
41
+
42
+ #
43
+ # service names
44
+
45
+ S_LOGGER = 'logger'
46
+
47
+ S_EXPRESSION_MAP = 'expressionMap'
48
+ S_EXPRESSION_POOL = 'expressionPool'
49
+ S_EXPRESSION_STORAGE = 'expressionStorage'
50
+ S_PARTICIPANT_MAP = 'participantMap'
51
+ S_SCHEDULER = 'scheduler'
52
+
53
+ #
54
+ # some field names
55
+
56
+ FIELD_RESULT = '__result__'
57
+
58
+ #
59
+ # some special expression names
60
+
61
+ EN_ENVIRONMENT = 'environment'
62
+
63
+ #
64
+ # some expression attribute names
65
+
66
+ A_SYNC = 'sync'
67
+ A_FORGET = 'forget'
68
+
69
+ end
70
+
data/lib/ru/ruutils.rb ADDED
@@ -0,0 +1,68 @@
1
+ #
2
+ # Copyright (c) 2006, John Mettraux, OpenWFE.org
3
+ # All rights reserved.
4
+ #
5
+ # Redistribution and use in source and binary forms, with or without
6
+ # modification, are permitted provided that the following conditions are met:
7
+ #
8
+ # . Redistributions of source code must retain the above copyright notice, this
9
+ # list of conditions and the following disclaimer.
10
+ #
11
+ # . Redistributions in binary form must reproduce the above copyright notice,
12
+ # this list of conditions and the following disclaimer in the documentation
13
+ # and/or other materials provided with the distribution.
14
+ #
15
+ # . Neither the name of the "OpenWFE" nor the names of its contributors may be
16
+ # used to endorse or promote products derived from this software without
17
+ # specific prior written permission.
18
+ #
19
+ # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
20
+ # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21
+ # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22
+ # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
23
+ # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
24
+ # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25
+ # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26
+ # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27
+ # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28
+ # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29
+ # POSSIBILITY OF SUCH DAMAGE.
30
+ #
31
+ # $Id: definitions.rb 2725 2006-06-02 13:26:32Z jmettraux $
32
+ #
33
+
34
+ #
35
+ # made somewhere over Japan
36
+ #
37
+ # John Mettraux at openwfe.org
38
+ #
39
+
40
+
41
+ module OpenWFEru
42
+
43
+ #
44
+ # Returns true if the given string starts with the 'start' string.
45
+ #
46
+ def OpenWFEru.starts_with (string, start)
47
+ #
48
+ # my favourite way of doing that would be by adding this
49
+ # method to the String class, but that could be intrusive
50
+ # (as OpenWFEru is meant at first as an embeddable workflow engine).
51
+ #
52
+ return false if not string
53
+ return false if string.length < start.length
54
+ return string[0, start.length] == start
55
+ end
56
+
57
+ #
58
+ # Attempts at displaying a nice stack trace
59
+ #
60
+ def OpenWFEru.exception_to_s (exception)
61
+ s = ""
62
+ s << "#{exception}\n"
63
+ s << exception.backtrace.join("\n")
64
+ return s
65
+ end
66
+
67
+ end
68
+