Description
In gist 11.1.0 we have the following:
TaskExecution
, subclass ofEvent
, defined as "An event characterized by a defined piece of work that is either scheduled, accomplished, or both." This is identical to gist 11.0.0Task
.ProjectExecution
, subclass ofTaskExecution
, defined as "A project execution is a task execution (usually a longer duration task) made up of other task executions."ScheduledTaskExecution
, subclass ofTaskExecution
, defined as "The execution of a task that was planned to occur at a given time. When it was scheduled, it would have been in the future, but now might be in the past."
We also have TaskTemplate
, subclass of Template
, defined as "An outline of a task of a particular type, which is the basis for executing such tasks." This is roughly like a process specification - a recipe or set of instructions.
My interpretation of TaskTemplate
is that it's not meant to be a one-off - like it's superclass Template
, it should be able to serve as the basis for a number of outputs. E.g., a recipe for chocolate cake can be the basis for a number of chocolate-cake making events that results in different chocolate cakes.
@mkumba asks: "If we define a Project[Execution], say the Juniper project, is that not a Project[Execution] either until it gets scheduled?"
I think we need a third type of object here, DefinedTask
and DefinedProject
. Task
and Project
are probably the preferred terms if starting from scratch, but that's not currently possible because they have been deprecated and replaced by TaskExecution
and ProjectExecution
.
TaskExecution
would be related to a Task
- use isBasedOn
? Similarly for ProjectExecution
.
In a similar vein, @mkumba writes:
"Something got lost along the way.
A task template is a cookie cutter. It is something you create tasks from. In Pipedrive or Jira or a project management system, or a patient scheduling system, or a calendar, when you say “new” or “create” you create a task, and the nature and that task is determined by the template. But the template isn’t a task or anything you can do, its a template.
Used to be in gist we had three stages a task went through. It went from being defined, to being scheduled to being completed. So a defined task is like a Jira ticket in the backlog, we know what it is and what its about we just haven’t scheduled it yet. We can then schedule it. In some domains there is another step to resource it, and then finally we do it. In most domains the task accretes more dates, resources and activity, but in some domains it makes sense to create a separate instance for the actual task (execution in 11.1 parlance) and refer to the schedule, but a lot of domains the task just evolves.
Where I think this thing drifted was maybe:
Somewhere along the way we dropped the concept “definedTask” and just said that’s just a task that hasn’t yet been scheduled or accomplished.
We tightened the definition of event, to where now it has to have and start and end date (we were kind of loose historically with some values, yeah this task (say a Jira ticket) may not have a start date yet, but it will eventually. Weirdly the current definition should create an inconsistency, (it says an event has exactly 1 endDate, but one of its children, contemporaneousEvent is max 0) I think its not throwing an exception because exactly 1 rarely does any inference.
My suggestion is we relax event to include things that happened, are scheduled to happened, or we expect to schedule or something like that."