Hi @tdw0 !
Hierarchies is a beta feature, so I would not recommend for production use - or use at your own discretion. Beta meaning that may be some quirks associated and we are not supporting feature req/bugs during this current roadmap related to hierarchies.
That being said, if you’d like to try it out, the below is our instructions. Again, this isn’t published formally because it is beta. Please see below!
Best,
Molly
Dynamic Scheduling: Hierarchies//Nested Pucks
BLUF: Hierarchies or Nested Pucks allows application builders to group schedule objects or show the relationship between schedule objects. At it’s core, this feature is modeled after the concept of parent-child-relationships (one or many children objects can be linked to a single parent object.) This is still considered a Beta feature. Report any issues you encounter while using.
Data Model
The key to enabling hierarchies is linking two or more schedule objects.
Example 1
In Example 1 we have one resource object type (Projects) and two schedule object types (Milestones and Tasks). Milestones are linked to Projects and Tasks are linked to Milestones. In this configuration, Milestones acts as the parent object type and Tasks as the child object type. Note: Tasks cannot be assigned directly to Projects in this configuration as the two objects are not linked. In the Scheduling Gantt Chart users will be blocked from this type of interaction.
Example 2
Here we have the same set of objects, however, in this example Tasks are linked to Projects. This allows tasks to be assigned Projects independent of Milestones.
Inference Logic
Only one foreign key property (or linking property) on a schedule object can be populated. If more than one foreign key property is not null, the widget is unable to render schedule objects as pucks. The link between task and project is inferred via the link between task and milestone.
An Example below helps illustrate this more clearly.
milestone_c is assigned to Project 1
task_yellow is assigned to milestone_c
the link between task_yellow and Project 1 is inferred
on the task object the foreign keys are project_id
and milestone_assignment_id
on task_yellow project_id == null
and milestone_assignment_id != null
the widget would not render the puck if project_id != null
and milestone_assignment_id != null
How to Set Up Hierarchies in OMA
The below will walk through defining, via the OMA Wizard, your hierarchies. This walk through will focus on specific Hierarchy Features, from 1 to 3. These can be used in whatever combination you like. Each feature adds an additional assignment interaction style to your gantt. Skip any feature that is not relevant to you.
Here will be using the following terms for simplicity:
- Resource == Resource object type; the objects that make up your rows.
- Parent == Schedule Object type; this is a parent schedule, the “outer” schedule. This is assigned to a Resource.
- Child = Schedule Object type; this is a child schedule, the “inner” or “nested” schedule. In the basic case, this child schedule object is assigned to a Parent schedule object. It can also be assigned to a Resource as well (if you want), or itself (if you want).
a. Prereq: Set up a Basic Parent to Resource Schedule
This is not a hierarchy, but it sets up your basic parent puck (Parent Schedule) to row (Resource) relationship. This will look like standard pucks plotted on the gantt. You should have this set up before you add any of the Hierarchy Features below.
-
Open the OMA Wizard under Capabilities on your parent Object type.
-
Follow OMA Wizard:
-
Set a schedule name
a. Note this will be the same schedule name you will use in all OMA wizards for this hierarchy.
b. Select linked Resource Object Type
- Now you have a basic puck to row schedule set up!
b. Hierarchy Feature 1: Set up a Basic Parent to Child Schedule
This is the common, standard hierarchy: assigning a child schedule to a parent schedule. This will look like a nested set of pucks on the gantt.
-
Open the OMA Wizard under Capabilities on your Child Object type.
-
Follow OMA Wizard:
-
Set a schedule name
a. Note this should be the same schedule name you will use in all OMA wizards for this hierarchy.
- Select linked Parent Object Type
c. Hierarchy Feature 2: Set up a Child to Resource Schedule
This is where we get into our second, optional additional to hierarchy definition: assigning a child puck (Child Schedule) to a row (Resource). This is, when combined with Hierarchy Feature 1, if you want your child to be assignable to Parents and/or Rows.
-
Open the OMA Wizard under Capabilities on your Child Object type.
-
Follow OMA Wizard:
-
Set a schedule name
1. Note this should be the same schedule name you used in all OMA wizards for this hierarchy.
- Select linked Resource Object Type
e. Hierarchy Feature 3: Set up a Child to Child Schedule
This is a less common optional additional to hierarchy definition: assigning a child puck (Child Schedule) to another child puck (Child schedule). This is useful if you basically want to keep building out the number of nesting layers you can do (i.e. add another set of Russian dolls inside). You can also use this to enable infinite nesting, if you have both Child Schedule Object types be the same here.
-
Open the OMA Wizard under Capabilities on your Child Object type.
-
Follow OMA Wizard:
-
Set a schedule name
1. Note this should be the same schedule name you used in all OMA wizards for this hierarchy.
- Select linked Child Object Type
1. This can be the same Object type, for infinite nesting, or just another Child Object Type to be a "Parent" for.
How to Set Up Hierarchies in Widget
Reference the Schedule Name from the OMA wizard in the Widget’s advanced options.
Take the name highlighted in yellow here. This name is the schedule name in OMA wizard…
…And paste it into the Widget’s advanced options!