An Ecore micro-model of work to be done at the model element level: what needs doing, on what, in what order.
Work as an aspect target
Workable is the point of the model: work attaches to the model element it is about. A capability, an agent, an MCP server, a control, a dataset, a document becomes Workable and then “what work exists on this element” and “what is this work about” are queries over the graph rather than free-text links in a tracker.
Containment gives work one home; Work.impacts records what else the work touches (the Jira components crosswalk). The distinction matters in a federation: impacts point outward from your model to elements you do not own, so declaring blast radius requires no edit to the impacted element’s model, and impacted elements need not be Workable at all.
Work itself composes the other aspect models:
- Staged (lifecycle model): work state, transitions, and availability windows come from the lifecycle aspect. No status enum here; a workflow is a lifecycle.
- Undergoer (role model): assignee, reviewer, approver are role engagements, not attributes.
- Governed (governance model): schedule and delivery risks take work as their
Risk.subject; change records are the evidence auditors ask for; a governanceFindingtraces to the remediationWorkthat closes it.
Upgrade classes
The work package also contains classes that extend both Workable and an aspect class from a dependency package: Staged, Undergoer, Governed. An element modeled as a plain lifecycle Staged is upgraded to a workable Staged by switching its nsURI to the work model; the Groovy DSL resolves the most specific class and nothing else in the document changes. This gives every aspect model a workable variant without touching the aspect model.
Loading work from where it is born
Work breakdown happens in spreadsheets and diagrams before it is retyped into a tracker. Core-scope loaders treat those artifacts as source rather than export:
- Excel: backlog and WBS spreadsheets, one row per work, columns mapped to type, estimate, dates, dependencies.
- Draw.io: nodes as work, edges as dependencies, containment as nesting.
- PlantUML: WBS diagrams as work hierarchy; activity diagrams as work plus finish-to-start dependencies.
Model overview
| Area | Types |
|---|---|
| Base | ModelElement, Property |
| Types | WorkType, DependencyType (classes, instance data) |
| Pattern | Workable, AbstractWork, Work, WorkReference |
| Dependencies | Dependency, TemporalConstraint |
| Root | WorkDomain |
| Aspect upgrades | Governed, Staged, Undergoer |
Nasdanika Models