class Teneo::DataModel::StageWorkflow

noinspection ALL

Constants

STAGE_LIST

Public Class Methods

from_hash(hash, id_tags = [:name]) click to toggle source
Calls superclass method Teneo::DataModel::Base::from_hash
# File lib/teneo/data_model/stage_workflow.rb, line 38
def self.from_hash(hash, id_tags = [:name])
  params = hash.delete(:parameters)
  tasks = hash.delete(:tasks)
  item = super(hash, id_tags)
  if params
    item.parameter_refs.clear
    params.each do |name, definition|
      item.parameter_refs <<
          Teneo::DataModel::ParameterRef.from_hash(definition.merge(name: name,
                                                                    with_param_refs_id: item.id,
                                                                    with_param_refs_type: item.class.name))
    end
    item.save!
  end
  if tasks
    item.stage_tasks.clear
    tasks.each_with_index do |task, index|
      task[:stage_workflow_id] = item.id
      task[:position] = index + 1
      item.stage_tasks << Teneo::DataModel::StageTask.from_hash(task)
    end
    item.save!
  end
  item
end

Public Instance Methods

parameter_def(param_name) click to toggle source
# File lib/teneo/data_model/stage_workflow.rb, line 22
def parameter_def(param_name)
  ref = parameter_refs.find_by(name: param_name)
  return nil unless ref
  delegation = ref.delegation
  target, name = delegation.split(/[,\s]+/).first.split('#')
  task = tasks.find_by(name: target)
  stage_task = stage_tasks.find_by(task_id: task.id)
  result = task.parameter_defs.find_by(name: name)&.to_hash
  result.delete(:with_parameters_type)
  result.delete(:with_parameters_id)
  if (param_value = stage_task.parameter_values.find_by(name: name))
    result[:default] = param_value.value
  end
  result.merge(ref.to_hash.select {|k,_| [:description, :help, :default].include?(k)})
end