Module: Libis::Workflow::Base::Run
- Included in:
- Run
- Defined in:
- lib/libis/workflow/base/run.rb
Overview
Base module for all workflow runs. It is created by an associated workflow when the workflow is executed.
This module lacks the implementation for the data attributes. It functions as an interface that describes the common functionality regardless of the storage implementation. These attributes require some implementation:
-
start_date: [Time] the timestamp of the execution of the run
-
job: [Object] a reference to the Job this Run belongs to
-
id: [String] (Optional) a unique run number
Note that ::Libis::Workflow::Base::WorkItem is a parent module and therefore requires implementation of the attributes of that module too.
A simple in-memory implementation can be found in ::Libis::Workflow::Run
Instance Attribute Summary collapse
-
#action ⇒ Object
Returns the value of attribute action.
-
#tasks ⇒ Object
Returns the value of attribute tasks.
Instance Method Summary collapse
- #logger ⇒ Object
- #name ⇒ Object
- #namepath ⇒ Object
- #names ⇒ Object
-
#run(action = :run) ⇒ Object
Execute the workflow.
- #work_dir ⇒ Object
- #workflow ⇒ Object
Instance Attribute Details
#action ⇒ Object
Returns the value of attribute action.
25 26 27 |
# File 'lib/libis/workflow/base/run.rb', line 25 def action @action end |
#tasks ⇒ Object
Returns the value of attribute tasks.
25 26 27 |
# File 'lib/libis/workflow/base/run.rb', line 25 def tasks @tasks end |
Instance Method Details
#logger ⇒ Object
50 51 52 |
# File 'lib/libis/workflow/base/run.rb', line 50 def logger self.properties['logger'] || self.job.logger rescue ::Libis::Workflow::Config.logger end |
#name ⇒ Object
34 35 36 |
# File 'lib/libis/workflow/base/run.rb', line 34 def name self.job.run_name(self.start_date) end |
#namepath ⇒ Object
42 43 44 |
# File 'lib/libis/workflow/base/run.rb', line 42 def namepath self.name end |
#names ⇒ Object
38 39 40 |
# File 'lib/libis/workflow/base/run.rb', line 38 def names Array.new end |
#run(action = :run) ⇒ Object
Execute the workflow.
The action parameter defines how the execution of the tasks will behave:
- With the default :run action each task will be executed regardsless how the task performed on the item
previously.
- When using the :retry action a task will not perform on an item if it was successful the last time. This
allows you to retry a run when an temporary error (e.g. asynchronous wait or halt) occured.
63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 |
# File 'lib/libis/workflow/base/run.rb', line 63 def run(action = :run) self.action = action unless action == :retry self.start_date = Time.now self. = workflow.prepare_input(self.) end self.tasks = workflow.tasks configure_tasks self. self.save! runner = Libis::Workflow::TaskRunner.new nil self.tasks.each do |task| runner << task end runner.run self end |
#work_dir ⇒ Object
27 28 29 30 31 32 |
# File 'lib/libis/workflow/base/run.rb', line 27 def work_dir # noinspection RubyResolve dir = File.join(Libis::Workflow::Config.workdir, self.name) FileUtils.mkpath dir unless Dir.exist?(dir) dir end |
#workflow ⇒ Object
46 47 48 |
# File 'lib/libis/workflow/base/run.rb', line 46 def workflow self.job.workflow end |