lib/openwfe/engine/update_exp_methods.rb in ruote-0.9.18 vs lib/openwfe/engine/update_exp_methods.rb in ruote-0.9.19
- old
+ new
@@ -1,34 +1,34 @@
#
#--
# Copyright (c) 2007-2008, John Mettraux, OpenWFE.org
# All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
+#
+# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
-#
+#
# . Redistributions of source code must retain the above copyright notice, this
-# list of conditions and the following disclaimer.
-#
-# . Redistributions in binary form must reproduce the above copyright notice,
-# this list of conditions and the following disclaimer in the documentation
+# list of conditions and the following disclaimer.
+#
+# . Redistributions in binary form must reproduce the above copyright notice,
+# this list of conditions and the following disclaimer in the documentation
# and/or other materials provided with the distribution.
-#
+#
# . Neither the name of the "OpenWFE" nor the names of its contributors may be
# used to endorse or promote products derived from this software without
# specific prior written permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
#++
#
#
@@ -37,76 +37,76 @@
# John Mettraux at openwfe.org
#
module OpenWFE
+ #
+ # The methods of the engine for updating live expressions
+ # (in flight modifications of process instances)
+ #
+ module UpdateExpMethods
+
#
- # The methods of the engine for updating live expressions
- # (in flight modifications of process instances)
+ # Use only when doing "process gardening".
#
- module UpdateExpMethods
+ # This method updates an expression, the 'data' parameter is expected
+ # to be a hash. If the expression is an Environment, the variables
+ # will be merged with the ones found in the data param.
+ # If the expression is not an Environment, the data will be merged
+ # into the 'applied_workitem' if any.
+ #
+ # If the merge is not possible, an exception will be raised.
+ #
+ def update_expression_data (fei, data)
- #
- # Use only when doing "process gardening".
- #
- # This method updates an expression, the 'data' parameter is expected
- # to be a hash. If the expression is an Environment, the variables
- # will be merged with the ones found in the data param.
- # If the expression is not an Environment, the data will be merged
- # into the 'applied_workitem' if any.
- #
- # If the merge is not possible, an exception will be raised.
- #
- def update_expression_data (fei, data)
+ fexp = fetch_exp fei
- fexp = fetch_exp fei
+ original = if fexp.is_a?(Environment)
- original = if fexp.is_a?(Environment)
+ fexp.variables
+ else
- fexp.variables
- else
+ fexp.applied_workitem.attributes
+ end
- fexp.applied_workitem.attributes
- end
+ original.merge! data
- original.merge! data
+ get_expression_pool.update fexp
+ end
- get_expression_pool.update fexp
- end
+ #
+ # A variant of update_expression() that directly replaces
+ # the raw representation stored within a RawExpression.
+ #
+ # Useful for modifying [not yet reached] segments of processes.
+ #
+ def update_raw_expression (fei, representation)
- #
- # A variant of update_expression() that directly replaces
- # the raw representation stored within a RawExpression.
- #
- # Useful for modifying [not yet reached] segments of processes.
- #
- def update_raw_expression (fei, representation)
+ fexp = fetch_exp fei
- fexp = fetch_exp fei
+ raise "cannot update already applied expression" \
+ unless fexp.is_a?(RawExpression)
- raise "cannot update already applied expression" \
- unless fexp.is_a?(RawExpression)
+ fexp.raw_representation = representation
+ fexp.raw_rep_updated = true
- fexp.raw_representation = representation
- fexp.raw_rep_updated = true
+ get_expression_pool.update fexp
+ end
- get_expression_pool.update fexp
- end
+ #
+ # Replaces an expression in the pool with a newer version of it.
+ #
+ # (useful when fixing processes on the fly)
+ #
+ def update_expression (fexp)
- #
- # Replaces an expression in the pool with a newer version of it.
- #
- # (useful when fixing processes on the fly)
- #
- def update_expression (fexp)
+ fexp.application_context = application_context
- fexp.application_context = application_context
+ fexp.raw_rep_updated = true
- fexp.raw_rep_updated = true
-
- get_expression_pool.update fexp
- end
-
+ get_expression_pool.update fexp
end
+
+ end
end