class MPXJ::Task

Represents a task in a project plan

Attributes

assignments[R]
child_tasks[R]
predecessors[R]
successors[R]

Public Class Methods

new(parent_project, attribute_values) click to toggle source
Calls superclass method MPXJ::Container::new
# File lib/mpxj/task.rb, line 11
def initialize(parent_project, attribute_values)
  super(parent_project, attribute_values)
  @assignments = []
  @child_tasks = []
  process_relations
  process_hierarchy
end

Public Instance Methods

parent_task() click to toggle source

Retrieve the parent task of this task

@return [Task] if this task is the child of another task @return [nil] if this is the root task

# File lib/mpxj/task.rb, line 23
def parent_task
  parent_project.get_task_by_unique_id(attribute_values['parent_task_unique_id']&.to_i)
end

Private Instance Methods

process_hierarchy() click to toggle source
# File lib/mpxj/task.rb, line 44
def process_hierarchy
  if parent_task
    parent_task.child_tasks << self
  else
    parent_project.child_tasks << self
  end
end
process_relation_list(list) click to toggle source
# File lib/mpxj/task.rb, line 34
def process_relation_list(list)
  result = []
  if list
    list.each do |attribute_values|
      result << Relation.new(self, attribute_values)
    end
  end
  result
end
process_relations() click to toggle source
# File lib/mpxj/task.rb, line 29
def process_relations
  @predecessors = process_relation_list(attribute_values["predecessors"])
  @successors = process_relation_list(attribute_values["successors"])
end