Defining a Plan
A plan is defined by using a tag <ez-plan> with the following attributes:
| Attribute | Description | Required | Default |
|---|---|---|---|
| name | The name of an plan being defined. Several plans can be defined on one wiki page. | Yes | N/A |
The contents of the <ez-plan> defines the structure of the plan and consists of several plan entries. Each plan entry may contain one or more child plan entries, which semantically could be interpreted as sub-tasks, sub-components or sub-projects. A plan entry has an implicit dependency on its children. The order of the children is preserved wherever practicable, however no implicit ordering guarantees or dependencies among siblings of the same parent plan entry exist.
Tag <ez-plan> supports the following two types of content format:
- Wiki-styled enumerated list
- Explicit enumerated list
Wiki-styled Enumerated List Format
# Task 1 # Task 2 ## Subtask 1 to Task 2 ##Subtask 2 to Task 2 # Task 3
Explicit Enumerated List Format
1 Task 1 2.Task 2 2.1 Subtask 1 to Task 2 2.2. Subtask 2 to Task 2 3. Task 3
A few important things to know about the above formats:
- New plan entry always starts with a first character of a new line.
- Plan entries can span multiple lines insofar previous rule isn’t violated and may include HTML. The Wiki-text embedded within the plan entry, however, will be treated as simple text and will not be expanded.
- Plan descriptions are trimmed during parsing and thus the trailing new line within
Subtask 1will be removed. - Explicit enumerated lists do not require but do accept a trailing
'.'. - Each of the plan entries is assigned an enumeration ID regardless of the format chosen.
- The formats cannot be intermixed within one plan.
Plan Entry Attributes
EzPlan allows you to specify attributes on plan entries as follows:
#[attr1="value"]Plan entry 1 #[attr="value" attr2="value2"] Plan entry 2
Each plan entry supports several attributes as follows:
| Attribute | Description | Required | Default |
|---|---|---|---|
| id | A user-specified ID within the plan, uniquely identifying a plan entry. IDs may not contain commas. | No | - blank - |
| weight | The weight of the plan entry. The meaning of this attribute is left up to a user (days, complexity, resource consumption), however see Relatively-Weighted Views and Absolutely-Weighted Views | No | if plan has no sub-entries then 1; otherwise calculated depending on attributes of a view type selected |
| completed | Indicates the degree of completion of this plan entry expresses as a real number 0.0 – 1.0 or 0% – 100%. | No | if plan entry has no sub-entries then 0.0 (0%); otherwise calculated depending on attributes of a view type selected |
| depends | Comma-separated list of ID plan entries on which this plan entry depends. Both explicitly specified unique IDs and numeric IDs are acceptable1. | No | - blank - |
| assigned | A comma-separated list of resources assigned/allocated to this plan entry. | No | - blank - |
Analyzing a Plan
The plan definition by itself has no visual representation. In order to make the plan useful EzPlan uses views, which user places within the wiki page containing the definition of the plan. Each plan can have arbitrarily large number of views per page.
A plan view is embedded into a wiki page by using the tag <ez-plan-render> that supports the following attributes:
| Attribute | Description | Required | Default |
|---|---|---|---|
| name | The name of an plan being rendered. A plan must be define within the same page as the view being rendered. | Yes | N/A |
| type | The type of the view being rendered. May contain the following values: definition-view, task-view, dependency-view, assignment-view. |
Yes | N/A |
| assignee | Specifies the assignee of interest for a view. Only applies to the assignment views. | No | - blank - |
| unfinished | Specifies whether to display completed tasks. If true or on – displays all tasks that are less than 100% completed. If 0.0 – 1.0 or 0% – 100% – displays all tasks that are completed to a degree less than specified threshold. If false – displays all tasks. Only applies to the dependency views and assignment views. |
No | false |
| weighting | Specifies whether to treat plan entry weight values as relative or as absolute. | No | relative |
| class | Specifies CSS classname(s) for the table of the view being rendered. | No | wikitable ezplan |
| style | Specifies in-line CSS style for the table of the view being rendered. | No | - blank - |
Plan Entry Weighting
EzPlan supports two approaches to weighting tasks. Why? Let’s consider the following scenario – you’re developing a project plan to design and build an airplane from scratch. You start with overall airplane design, and recursively drill down from the wings, fuel tanks and engines, to struts, capacitive fuel level sensors, jet engine blades, wiring harnesses, nuts and bolts. Unless you treat EzPlan plan entry “weight” purely as “time from start to finish” (whatever it is), and if you attempt to consider the weight of your airplane project only as a sum of the weights of its parts, you will run into the following problem: how do you, and can you in general compare the complexity of designing and producing an air-worthy bolt with the complexity of designing and producing an air-worthy navigation software API unit? On the other hand, such question does not generally arise when comparing like things as nuts, bolts and washers, and barometer, accelerometer and magnetometer sensor data collection software modules. In order to allow you to decide which guesstimation approach fits your needs best EzPlan supports two plan entry weighting methods.
Relatively-Weighted Views
For relatively-weighted views the following rules apply:
- For every plan entry that has no children and doesn’t have a weight explicitly specified a weight of an entry defaults to 1
- For every plan entry that has children and doesn’t have a weight explicitly specified a weight of an entry defaults to 1
Absolutely-Weighted Views
For absolutely-weighted views the following rules apply:
- For every plan entry that has no children and doesn’t have a weight explicitly specified a weight of an entry defaults to 1
- For every plan entry that has children and doesn’t have a weight explicitly specified a weight of an entry defaults to the sum of weights of its direct children.
Calculating Plan Entry Completion Percentage
For every plan entry, unless a completion percentage is set explicitly, a completion percentage is calculated by dividing a sum of the products of the weights of each child plan entry and their respective completion percentages by the total weight of plan entry’s children.2
Weighting Summary
As you can, hopefully, see from the above rules the absolute plan entry weighting the completion percentage is affected by the total weight of all of the children of a plan entry recursively, whereas for relative plan entry weighting the completion percentage is only affected by the total weight of the direct children.
1Be aware that while it’s possible to reference enumerated IDs from within dependencies in the same manner as user-specified IDs, you’re highly advised NOT to do so – enumeration changes will likely force you to repopulate your dependencies every time.
2While the rule for calculating completion percentage of a plan entry is identical for both relatively- and absolutely-weighted views, the results will differ significantly!