org.sandev.TaskHeap.structs
Class PlanComponentStruct

java.lang.Object
  extended by org.sandev.TaskHeap.structs.PlanComponentStruct
Direct Known Subclasses:
ExternalPlanStruct, PlanComponent, PlanStruct, TaskStruct

public class PlanComponentStruct
extends java.lang.Object

A PlanComponent represents part of a Plan. It holds the base fields common to both Tasks and Plans. PlanComponents may be queried, but are not be modified directly.

This message is persistent.
This message is a tree of values.
summary fields: name
This message has the following verb forms: update query collection
declared printname: Plan Component
help text: A common description of anything that can be part of a plan. Tasks, Plans, and External Plans are all Plan Components since they can be part of another Plan.

Field Summary
protected  long assignedTo
          The specific person this work is assigned to, if any.
protected  java.lang.String description
          The description of this plan component.
protected  java.util.Date dueDate
          The date when this plan component must be completed.
protected  int dueDelta
          The time difference between when this is due, and when the reference is due.
protected  int dueDeltaSense
          Whether this is due before or after the reference.
protected  int dueDeltaValue
          The absolute value of the dueDelta field.
protected  long dueReference
          The plan or task to use as a reference when calculating the due date.
protected  int dueTimeUnits
          The time units for the due date delta value.
protected  int dueType
          The type of deadline due date calculation to be applied.
protected  long heap
          The heap this work belongs to.
protected  java.lang.String name
          Each plan component requires a name so that humans can refer to it by something other than its unique identifier.
protected  NoteStruct[] notes
          Attached comments.
protected  long parent
          If a PlanComponent is part of a Plan, then this is a reference to the plan that contains it.
protected  int relRoundDay
          The day of the week the rounding should default to.
protected  int relRounding
          The rounding to be applied when calculating a relative due date.
protected  long[] responsibilities
          The roles responsible for completion or oversight of this work.
protected  int timeEstimate
          An estimate of the number of hours necessary to complete this plan component.
 
Constructor Summary
PlanComponentStruct()
           
 
Method Summary
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

name

protected java.lang.String name
Each plan component requires a name so that humans can refer to it by something other than its unique identifier. Names should be short, but descriptive enough to identify the element within a report.

Originally the name was declared to be unique, to avoid creating heaps with multiple tasks or plans with generic names like "test" or "requirements". Generic naming is strongly discouraged because duplicate names

However, there are times when having two tasks with the same name may be reasonable, and having the application disallow this generally can get in the way. So the unique constraint was removed, even though experience has shown that unique naming greatly increases manageability, especially over time. Good names are strongly recommended. The few additional seconds spent coming up with a good name will easily save minutes when working through the heap as a whole.

declared invalid value: "TASKHEAP_INVALID_NAME"
Length in characters, normal: 60 max: 128
help text: A few words to identify this component in the summary display.

description

protected java.lang.String description
The description of this plan component. Organizational plans or milestones may have relatively short descriptions, while tasks typically have fairly significant text describing the work to be done.

declared invalid value: "TASKHEAP_INVALID_DESCRIPTION"
Length in characters, normal: 512 max: 1048576
help text: The description of this plan component. Organizational plans or milestones may have relatively short descriptions, while tasks typically have fairly significant text describing the work to be done.

To provide maximum display flexibility, the description field is plain text (no HTML or word processor formatting). Only line breaks are preserved. However the display will convert recognized email addresses and URLs to display links, to allow for including references to supporting documentation or email contacts.



parent

protected long parent
If a PlanComponent is part of a Plan, then this is a reference to the plan that contains it. If the reference is null, then this is a top level heap element.

reference to class: org.sandev.TaskHeap.structs.PlanStruct
help text: If a PlanComponent is part of a Plan, then this is a reference to the plan that contains it. If the reference is null, then this is a top level heap element.

heap

protected long heap
The heap this work belongs to.

reference to class: org.sandev.TaskHeap.structs.HeapAttributesStruct
help text: The heap this work belongs to.

timeEstimate

protected int timeEstimate
An estimate of the number of hours necessary to complete this plan component. All estimates are in hours. The conversion of time estimates into calendar elapsed time is based on the hours per day in the heap attributes.

For a Task, the time estimate is simply the value entered. For a Plan, this is the value calculated from the tasks it contains. For an ExternalPlan, this is the value retrieved from the Plan being referenced. All automatic processing is done on behalf of the current user by the system, so any cascading changes are recorded based on the user that triggered them.

declared default value: 0
range match expression: >= 0
Length in characters, normal: 3 max: 20
declared metatype: hours
declared printname: time estimate
help text: An estimate of the number of hours necessary to complete this plan component. All estimates are in even hours. Fractional hours are not supported, see the user manual for details. The conversion of time estimates into calendar elapsed time is based on the hours per day in the heap attributes.

For a Task, the time estimate is simply the value entered. For a Plan, this is the value calculated from the tasks it contains. For an ExternalPlan, this is the value retrieved from the Plan being referenced. All automatic processing is done on behalf of the current user by the system, so any cascading changes are recorded based on the user that triggered them.



responsibilities

protected long[] responsibilities
The roles responsible for completion or oversight of this work.

a dynamic selection display may be generated for this field.
reference to class: org.sandev.TaskHeap.structs.RoleStruct
help text: The roles responsible for completion or oversight of this work.

assignedTo

protected long assignedTo
The specific person this work is assigned to, if any.

a dynamic selection display may be generated for this field.
reference to class: org.sandev.TaskHeap.structs.HeapAssociationStruct
help text: The specific person this work is assigned to, if any.

dueType

protected int dueType
The type of deadline due date calculation to be applied.

declared default value: NONE

enumerated constant values:

  • NONE("None") = 0
  • FIXED("Fixed") = 1
  • RELATIVE("Relative") = 2
declared invalid value: -1
declared printname: due date type
help text: The type of deadline due date calculation to be applied.

dueDate

protected java.util.Date dueDate
The date when this plan component must be completed. If the estimated completion date goes beyond this date, then this work item will be noted prominently in the heap display as being overdue.

declared default value: 1428458375000L
Display format: "MMM d, yyyy h:mm a" editing format: "MMM d, yyyy h:mm a"
declared printname: due date
help text: The date when this plan component must be completed. If the estimated completion date goes beyond this date, then this work item will be noted prominently in the heap display as being overdue.

Note that this means that work items are flagged as overdue as soon as they slip, not when their due date is exceeded. This provides advanced warning that additional work prioritization planning will be required in order to meet the deadline established by the due date.



dueDelta

protected int dueDelta
The time difference between when this is due, and when the reference is due.

declared printname: due date delta
help text: The time difference between when this is due, and when the reference is due. So for example if this needs to be finished five days before the reference, then the delta would be -5. If it needs to be finished two days after the reference, the the delta would be 2. If this needs to be finished at the same time then the delta is 0.

dueDeltaValue

protected transient int dueDeltaValue
The absolute value of the dueDelta field. Used for display.

declared printname: due date delta value
help text: How much before or after the reference is this due.

dueDeltaSense

protected transient int dueDeltaSense
Whether this is due before or after the reference.

declared default value: BEFORE

enumerated constant values:

  • BEFORE("before") = 0
  • AFTER("after") = 1
declared invalid value: -1
declared printname: due date delta sense
help text: Whether this is due before or after the reference.

dueTimeUnits

protected int dueTimeUnits
The time units for the due date delta value.

declared default value: DAYS

enumerated constant values:

  • HOURS("Hours") = 0
  • DAYS("Days") = 1
  • WEEKS("Weeks") = 2
declared invalid value: -1
declared printname: delta time units
help text: The time units for the due date delta value.

dueReference

protected long dueReference
The plan or task to use as a reference when calculating the due date. Referenced only if the due date type is "Relative". A zero value indicates the date is relative to the root due date from the heap settings.

This field should generally only be displayed when the the dueDateType is "Relative", and then as a dropdown selection rather than an open reference find. The idea is to display dropdown selection containing the list of parent plans back to the root (dueDate and name for each).

a dynamic selection display may be generated for this field.
reference to class: org.sandev.TaskHeap.structs.PlanStruct
declared printname: due date reference
help text: The plan or task to use as a reference when calculating the due date. Referenced only if the due date type is "Relative".

relRounding

protected int relRounding
The rounding to be applied when calculating a relative due date. The print values are lower case since they are sandwiched between the target reference and the following day value when displayed.

declared default value: EXACT

enumerated constant values:

  • EXACT("Exact (no rounding)") = 0
  • NEAREST("rounded to nearest") = 1
  • PRECEDING("rounded to preceding") = 2
  • FOLLOWING("rounded to following") = 3
  • MIDMONTH("rounded to mid-month") = 4
declared invalid value: -1
declared printname: rounding
help text: The rounding to be applied when calculating a relative due date.

relRoundDay

protected int relRoundDay
The day of the week the rounding should default to. These values correspond to the constant values declared in java.util.Calendar, but structs aren't allowed to have external dependencies like that so the integer values are used for the declaration here.

declared default value: MONDAY

enumerated constant values:

  • MONDAY("Monday") = 2
  • TUESDAY("Tuesday") = 3
  • WEDNESDAY("Wednesday") = 4
  • THURSDAY("Thursday") = 5
  • FRIDAY("Friday") = 6
  • SATURDAY("Saturday") = 7
  • SUNDAY("Sunday") = 1
declared invalid value: -1
declared printname: round to day
help text: The day of the week the rounding should default to.

notes

protected NoteStruct[] notes
Attached comments.

values for this field are persisted in their string form.
Length in characters, normal: 512 max: 1048576
help text: Attached comments providing additional detail about status, links to background material, etc.
Constructor Detail

PlanComponentStruct

public PlanComponentStruct()