lib/ruote/exp/fe_redo.rb in ruote-2.1.11 vs lib/ruote/exp/fe_redo.rb in ruote-2.2.0

- old
+ new

@@ -1,7 +1,7 @@ #-- -# Copyright (c) 2005-2010, John Mettraux, jmettraux@gmail.com +# Copyright (c) 2005-2011, John Mettraux, jmettraux@gmail.com # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to deal # in the Software without restriction, including without limitation the rights # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell @@ -27,12 +27,12 @@ # # Undoes and the redoes (re-applies) an expression identified by a tag. # # pdef = Ruote.process_definition do - # sequence do - # alpha :tag => 'kilroy' + # sequence :tag => 'kilroy' do + # alpha # _redo :ref => 'kilroy', :unless => '${f:ok} == true' # end # end # # will redo at tag 'kilroy' if the field 'ok' is not set to true. @@ -41,25 +41,29 @@ # # Maybe this case is better served by a cursor/rewind combination # # pdef = Ruote.process_definition do # cursor do - # alpha :tag => 'kilroy' + # alpha # rewind :unless => '${f:ok} == true' # end # end # + # (There is a big difference though, a redo will restart with the workitem + # as it was when the workitem entered the tagged region, while the rewind + # keeps the workitem as is) + # class RedoExpression < FlowExpression names :redo def apply ref = attribute(:ref) || attribute_text tag = ref ? lookup_variable(ref) : nil - if tag + if tag && Ruote.is_a_fei?(tag) @context.storage.put_msg('cancel', 'fei' => tag, 're_apply' => true) reply_to_parent(h.applied_workitem) unless ancestor?(tag) @@ -67,10 +71,10 @@ reply_to_parent(h.applied_workitem) end end - def reply (workitem) + def reply(workitem) # never called end end end