Class: Dor::Workflow::Process
- Inherits:
-
Object
- Object
- Dor::Workflow::Process
- Defined in:
- lib/dor/workflow/process.rb
Instance Attribute Summary collapse
-
#owner ⇒ Object
readonly
Returns the value of attribute owner.
-
#repo ⇒ Object
readonly
Returns the value of attribute repo.
-
#workflow ⇒ Object
readonly
Returns the value of attribute workflow.
Instance Method Summary collapse
- #archived? ⇒ Boolean
- #attempts ⇒ Object
- #batch_limit ⇒ Object
- #blocked? ⇒ Boolean
- #completed? ⇒ Boolean
- #date_time ⇒ Object
- #datetime ⇒ Object
- #elapsed ⇒ Object
- #error? ⇒ Boolean
- #error_limit ⇒ Object
- #error_message ⇒ Object
- #init_from_node(node) ⇒ Object
-
#initialize(repo, workflow, attrs) ⇒ Process
constructor
A new instance of Process.
- #label ⇒ Object
- #lifecycle ⇒ Object
- #name ⇒ Object
- #note ⇒ Object
- #prerequisite ⇒ Object
- #priority ⇒ Object
- #ready? ⇒ Boolean
- #sequence ⇒ Object
- #state ⇒ Object
- #status ⇒ Object
- #to_hash ⇒ Object
-
#update!(info, new_owner) ⇒ Object
Updates this object with the attributes passed in.
- #version ⇒ Object
- #waiting? ⇒ Boolean
Constructor Details
#initialize(repo, workflow, attrs) ⇒ Process
Returns a new instance of Process.
11 12 13 14 15 16 17 18 19 |
# File 'lib/dor/workflow/process.rb', line 11 def initialize(repo, workflow, attrs) @workflow = workflow @repo = repo if attrs.is_a? Nokogiri::XML::Node init_from_node(attrs) else @attrs = attrs end end |
Instance Attribute Details
#owner ⇒ Object (readonly)
Returns the value of attribute owner.
6 7 8 |
# File 'lib/dor/workflow/process.rb', line 6 def owner @owner end |
#repo ⇒ Object (readonly)
Returns the value of attribute repo.
6 7 8 |
# File 'lib/dor/workflow/process.rb', line 6 def repo @repo end |
#workflow ⇒ Object (readonly)
Returns the value of attribute workflow.
6 7 8 |
# File 'lib/dor/workflow/process.rb', line 6 def workflow @workflow end |
Instance Method Details
#archived? ⇒ Boolean
56 57 58 |
# File 'lib/dor/workflow/process.rb', line 56 def archived? @attrs['archived'] =~ /true$/i end |
#attempts ⇒ Object
78 79 80 |
# File 'lib/dor/workflow/process.rb', line 78 def attempts @attrs['attempts'].to_i end |
#batch_limit ⇒ Object
43 |
# File 'lib/dor/workflow/process.rb', line 43 def batch_limit; @attrs['batch_limit']; end |
#blocked? ⇒ Boolean
64 65 66 |
# File 'lib/dor/workflow/process.rb', line 64 def blocked? self.waiting? && !prerequisite.nil? && prerequisite.any? { |pr| (prq = owner[pr]) && (prq.error? || prq.blocked?) } end |
#completed? ⇒ Boolean
51 |
# File 'lib/dor/workflow/process.rb', line 51 def completed?; status == 'completed'; end |
#date_time ⇒ Object
54 |
# File 'lib/dor/workflow/process.rb', line 54 def date_time; @attrs['datetime']; end |
#datetime ⇒ Object
82 83 84 |
# File 'lib/dor/workflow/process.rb', line 82 def datetime @attrs['datetime'] ? Time.parse(@attrs['datetime']) : nil end |
#elapsed ⇒ Object
86 87 88 |
# File 'lib/dor/workflow/process.rb', line 86 def elapsed @attrs['elapsed'].nil? ? nil : @attrs['elapsed'].to_f end |
#error? ⇒ Boolean
52 |
# File 'lib/dor/workflow/process.rb', line 52 def error?; status == 'error'; end |
#error_limit ⇒ Object
44 |
# File 'lib/dor/workflow/process.rb', line 44 def error_limit; @attrs['error_limit']; end |
#error_message ⇒ Object
45 |
# File 'lib/dor/workflow/process.rb', line 45 def ; @attrs['errorMessage']; end |
#init_from_node(node) ⇒ Object
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/dor/workflow/process.rb', line 21 def init_from_node(node) @attrs = { 'name' => node['name'], 'sequence' => node['sequence'] ? node['sequence'].to_i : nil, 'status' => node['status'], # TODO: see how this affects argo 'lifecycle' => node['lifecycle'], 'label' => node.at_xpath('label/text()').to_s, 'batch_limit' => node['batch-limit'] ? node['batch-limit'].to_i : nil, 'error_limit' => node['error-limit'] ? node['error-limit'].to_i : nil, 'priority' => node['priority'] ? node['priority'].to_i : 0, 'prerequisite' => node.xpath('prereq').collect { |p| repo = (p['repository'].nil? || p['repository'] == @repo) ? nil : p['repository'] wf = (p['workflow'].nil? || p['workflow'] == @workflow) ? nil : p['workflow'] [repo, wf, p.text.to_s].compact.join(':') } } end |
#label ⇒ Object
42 |
# File 'lib/dor/workflow/process.rb', line 42 def label; @attrs['label']; end |
#lifecycle ⇒ Object
41 |
# File 'lib/dor/workflow/process.rb', line 41 def lifecycle; @attrs['lifecycle']; end |
#name ⇒ Object
39 |
# File 'lib/dor/workflow/process.rb', line 39 def name; @attrs['name']; end |
#note ⇒ Object
48 |
# File 'lib/dor/workflow/process.rb', line 48 def note; @attrs['note']; end |
#prerequisite ⇒ Object
46 |
# File 'lib/dor/workflow/process.rb', line 46 def prerequisite; @attrs['prerequisite']; end |
#priority ⇒ Object
50 |
# File 'lib/dor/workflow/process.rb', line 50 def priority; @attrs['priority']; end |
#ready? ⇒ Boolean
60 61 62 |
# File 'lib/dor/workflow/process.rb', line 60 def ready? self.waiting? && !prerequisite.nil? && prerequisite.all? { |pr| (prq = owner[pr]) && prq.completed? } end |
#sequence ⇒ Object
40 |
# File 'lib/dor/workflow/process.rb', line 40 def sequence; @attrs['sequence']; end |
#state ⇒ Object
68 69 70 71 72 73 74 75 76 |
# File 'lib/dor/workflow/process.rb', line 68 def state if blocked? 'blocked' elsif ready? 'ready' else status end end |
#status ⇒ Object
47 |
# File 'lib/dor/workflow/process.rb', line 47 def status; @attrs['status']; end |
#to_hash ⇒ Object
106 107 108 |
# File 'lib/dor/workflow/process.rb', line 106 def to_hash @attrs.reject { |k, v| v.nil? || v == 0 || (v.respond_to?(:empty?) && v.empty?) } end |
#update!(info, new_owner) ⇒ Object
Updates this object with the attributes passed in.
93 94 95 96 97 98 99 100 101 102 103 104 |
# File 'lib/dor/workflow/process.rb', line 93 def update!(info, new_owner) raise ArgumentError, 'Owner can not be nil. It must be an instance of Dor::Workflow::Document' unless new_owner @owner = new_owner return self if info.nil? if info.is_a? Nokogiri::XML::Node info = Hash[info.attributes.collect { |k, v| [k, v.value] }] end @attrs.merge! info self end |
#version ⇒ Object
49 |
# File 'lib/dor/workflow/process.rb', line 49 def version; @attrs['version']; end |
#waiting? ⇒ Boolean
53 |
# File 'lib/dor/workflow/process.rb', line 53 def waiting?; status == 'waiting'; end |