Class: Dor::WorkflowObject

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

Constant Summary collapse

@@xml_cache =
{}
@@repo_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 Rightsable

#build_rightsMetadata_datastream, #world_doc

Methods included from Identifiable

#add_other_Id, #add_tag, #content_type_tag, #druid_regex, #get_related_obj_display_title, #identity_metadata_source, #initialize, #method_missing, #normalize_tag, #normalize_tag_arr, #pid_regex, #remove_druid_prefix, #remove_other_Id, #remove_tag, #source_id, #source_id=, #split_tag_to_arr, #tags, #to_solr, #update_other_Id, #update_tag, #validate_and_normalize_tag, #validate_tag_format

Methods included from Upgradable

add_upgrade_callback, included, run_upgrade_callbacks, #upgrade!

Methods included from Eventable

#add_event

Methods included from SolrDocHelper

#add_solr_value

Dynamic Method Handling

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

Class Method Details

.find_and_cache_workflow_xml_and_repo(name) ⇒ Object

Searches DOR for the workflow definition object. It then caches the workflow repository and xml



55
56
57
58
59
60
61
# File 'lib/dor/models/workflow_object.rb', line 55

def self.find_and_cache_workflow_xml_and_repo(name)
  wobj = find_by_name(name)
  raise "Failed to find workflow via find_by_name('#{name}')" if wobj.nil?
  @@repo_cache[name] = wobj.definition.repo
  @@xml_cache[name]  = wobj.generate_initial_workflow
  wobj
end

.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(%(#{Solrizer.solr_name 'objectType', :symbol}:"#{object_type}" #{Solrizer.solr_name 'workflow_name', :symbol}:"#{name}"), opts).first
end

.initial_repo(name) ⇒ String

Returns the repository attribute from the workflow definition It will cache the result for subsequent requests



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

def self.initial_repo(name)
  return @@repo_cache[name] if @@repo_cache.include?(name)
  find_and_cache_workflow_xml_and_repo name
  @@repo_cache[name]
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
# File 'lib/dor/models/workflow_object.rb', line 22

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

Instance Method Details

#definitionObject



38
39
40
# File 'lib/dor/models/workflow_object.rb', line 38

def definition
  datastreams['workflowDefinition']
end

#generate_initial_workflowObject Also known as: generate_intial_workflow



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

def generate_initial_workflow
  datastreams['workflowDefinition'].initial_workflow
end

#graph(*args) ⇒ Object



42
43
44
# File 'lib/dor/models/workflow_object.rb', line 42

def graph(*args)
  definition.graph *args
end