Class: Dor::WorkflowObject

Inherits:
ActiveFedora::Base
  • Object
show all
Includes:
Governable, Identifiable, SolrDocHelper
Defined in:
lib/dor/models/workflow_object.rb

Constant Summary collapse

@@xml_cache =
{}

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Governable

#add_collection, #can_manage_content?, #can_manage_desc_metadata?, #can_manage_embargo?, #can_manage_item?, #can_manage_rights?, #can_manage_system_metadata?, #can_view_content?, #can_view_metadata?, #default_workflow_lane, #groups_which_manage_content, #groups_which_manage_desc_metadata, #groups_which_manage_embargo, #groups_which_manage_item, #groups_which_manage_rights, #groups_which_manage_system_metadata, #groups_which_view_content, #groups_which_view_metadata, #initiate_apo_workflow, #intersect, #reapplyAdminPolicyObjectDefaults, #remove_collection, #reset_to_apo_default, #rights, #set_read_rights

Methods included from SolrDocHelper

#add_solr_value

Methods included from Identifiable

#add_other_Id, #add_tag, #content_type_tag, #initialize, #method_missing, #normalize_tag, #normalize_tag_arr, #remove_other_Id, #remove_tag, #set_source_id, #split_tag_to_arr, #tags, #update_other_Id, #update_tag, #validate_and_normalize_tag

Methods included from Upgradable

add_upgrade_callback, included, run_upgrade_callbacks, #upgrade!

Methods included from Eventable

#add_event

Dynamic Method Handling

This class handles dynamic methods through the method_missing method in the class Dor::Identifiable

Class Method Details

.find_by_name(name, opts = {}) ⇒ Object


13
14
15
# File 'lib/dor/models/workflow_object.rb', line 13

def self.find_by_name(name, opts={})
  Dor.find_all(%{objectType_t:"#{self.object_type}" workflow_name_s:"#{name}"}, opts).first
end

.initial_workflow(name) ⇒ String

Searches for the workflow definition object in DOR, then returns an object's initial workflow as defined in the worfklowDefinition datastream It will cache the result for subsequent requests


22
23
24
25
26
27
28
# File 'lib/dor/models/workflow_object.rb', line 22

def self.initial_workflow(name)
  return @@xml_cache[name] if(@@xml_cache.include?(name))

  wobj = self.find_by_name(name)
  wf_xml = wobj.generate_initial_workflow
  @@xml_cache[name] = wf_xml
end

Instance Method Details

#definitionObject


30
31
32
# File 'lib/dor/models/workflow_object.rb', line 30

def definition
  datastreams['workflowDefinition']
end

#generate_initial_workflowObject Also known as: generate_intial_workflow


47
48
49
# File 'lib/dor/models/workflow_object.rb', line 47

def generate_initial_workflow
  datastreams['workflowDefinition'].initial_workflow
end

#graph(*args) ⇒ Object


34
35
36
# File 'lib/dor/models/workflow_object.rb', line 34

def graph *args
  self.definition.graph *args
end

#to_solr(solr_doc = Hash.new, *args) ⇒ Object


38
39
40
41
42
43
44
45
# File 'lib/dor/models/workflow_object.rb', line 38

def to_solr solr_doc=Hash.new, *args
  super solr_doc, *args
  client = Dor::WorkflowService.workflow_resource
  xml = client["workflow_archive?repository=#{definition.repo}&workflow=#{definition.name}&count-only=true"].get
  count = Nokogiri::XML(xml).at_xpath('/objects/@count').value
  add_solr_value(solr_doc,"#{definition.name}_archived",count,:integer,[:displayable])
  solr_doc
end