Class: Dor::WorkflowDs
- Inherits:
-
ActiveFedora::OmDatastream
- Object
- ActiveFedora::OmDatastream
- Dor::WorkflowDs
- Extended by:
- Deprecation
- Defined in:
- lib/dor/datastreams/workflow_ds.rb
Overview
TODO: class docs
Class Method Summary collapse
-
.default_attributes ⇒ Object
Called by rubydora.
Instance Method Summary collapse
-
#build_location ⇒ Object
Called before saving, but after a pid has been assigned.
-
#content(refresh = false) ⇒ Object
service.
-
#current_priority ⇒ Integer
Finds the first workflow that is expedited, then returns the value of its priority.
- #get_workflow(wf, repo = 'dor') ⇒ Object (also: #[])
- #ng_xml ⇒ Object
-
#prefix ⇒ Object
maintain AF < 8 indexing behavior.
- #to_solr(solr_doc = {}, *_args) ⇒ Object
- #workflows ⇒ Object
Class Method Details
.default_attributes ⇒ Object
Called by rubydora. This lets us customize the mime-type
33 34 35 |
# File 'lib/dor/datastreams/workflow_ds.rb', line 33 def self.default_attributes super.merge(mimeType: 'application/xml') end |
Instance Method Details
#build_location ⇒ Object
Called before saving, but after a pid has been assigned
26 27 28 29 30 |
# File 'lib/dor/datastreams/workflow_ds.rb', line 26 def build_location return unless new? self.dsLocation = File.join(Dor::Config.workflow.url, "dor/objects/#{pid}/workflows") end |
#content(refresh = false) ⇒ Object
service. This flag will invalidate the cached content and refetch it from the workflow service directly
56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
# File 'lib/dor/datastreams/workflow_ds.rb', line 56 def content(refresh = false) @content = nil if refresh @content ||= Dor::Config.workflow.client.get_workflow_xml 'dor', pid, nil rescue Dor::WorkflowException => e Dor.logger.warn "Unable to connect to the workflow service #{e}. Falling back to placeholder XML" xml = Nokogiri::XML(%(<?xml version="1.0" encoding="UTF-8" standalone="yes"?>\n<workflows objectId="#{pid}"/>)) digital_object.datastreams.keys.each do |dsid| next unless dsid =~ /WF$/ ds_content = Nokogiri::XML(Dor::Config.workflow.client.get_workflow_xml('dor', pid, dsid)) xml.root.add_child(ds_content.root) end @content ||= xml.to_xml end |
#current_priority ⇒ Integer
Finds the first workflow that is expedited, then returns the value of its priority
78 79 80 81 82 83 |
# File 'lib/dor/datastreams/workflow_ds.rb', line 78 def current_priority cp = workflows.detect(&:expedited?) return 0 if cp.nil? cp.priority.to_i end |
#get_workflow(wf, repo = 'dor') ⇒ Object Also known as: []
37 38 39 40 41 42 43 |
# File 'lib/dor/datastreams/workflow_ds.rb', line 37 def get_workflow(wf, repo = 'dor') xml = Dor::Config.workflow.client.get_workflow_xml(repo, pid, wf) xml = Nokogiri::XML(xml) return nil if xml.xpath('workflow').length == 0 Workflow::Document.new(xml.to_s) end |
#ng_xml ⇒ Object
49 50 51 |
# File 'lib/dor/datastreams/workflow_ds.rb', line 49 def ng_xml @ng_xml ||= Nokogiri::XML::Document.parse(content) end |
#prefix ⇒ Object
maintain AF < 8 indexing behavior
91 92 93 |
# File 'lib/dor/datastreams/workflow_ds.rb', line 91 def prefix '' end |
#to_solr(solr_doc = {}, *_args) ⇒ Object
85 86 87 88 |
# File 'lib/dor/datastreams/workflow_ds.rb', line 85 def to_solr(solr_doc = {}, *_args) # noop - indexing is done by the WorkflowIndexer solr_doc end |