@openengio/cli 0.0.0-stage → 0.24.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +202 -0
- package/README.md +412 -2
- package/THIRD-PARTY-NOTICES.md +235 -0
- package/bin/public/openeng.js +11185 -0
- package/package.json +21 -4
- package/skill/build-ui/SKILL.md +136 -0
- package/skill/conventions/SKILL.md +259 -0
- package/skill/demo/SKILL.md +112 -0
- package/skill/new-use-case/SKILL.md +136 -0
- package/skill/openeng/SKILL.md +340 -0
- package/skill/playbooks/engineering-requirements.md +121 -0
- package/skill/playbooks/product-lifecycle.md +115 -0
- package/skill/playbooks/project-management.md +100 -0
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
# Playbook: a product lifecycle management platform
|
|
2
|
+
|
|
3
|
+
For a team that wants what Teamcenter, Windchill or Arena gives it: parts and their revisions, the bill of
|
|
4
|
+
materials a product is built from, how it is made, and how changes to all of it are requested, approved and
|
|
5
|
+
released. Read `openeng skill conventions` first.
|
|
6
|
+
|
|
7
|
+
## Reference products, and what sets them apart
|
|
8
|
+
|
|
9
|
+
| product | organised around | what that means for a model |
|
|
10
|
+
|---|---|---|
|
|
11
|
+
| Siemens Teamcenter, PTC Windchill | **items and item revisions** under lifecycle states (for example Prototype, PreReleased, Released, Canceled), with structured BOMs, alternates and formal change workflows | revisions are objects of their own; state is an enumeration on the revision |
|
|
12
|
+
| Arena (a PTC business) | **items and change orders** for hardware teams: an ECO lists its affected items, each with old and new revision and old and new lifecycle phase, and refers to the ECR it came from | change requests and change orders are objects; what a change does to each revision is recorded on the link |
|
|
13
|
+
| Onshape, Fusion release management | **CAD documents** with versions and releases | the geometry lives in the CAD tool; the model holds the part, its revisions and a reference to the released CAD version |
|
|
14
|
+
|
|
15
|
+
Across them: a **change request** (ECR) records a problem and a proposal; a **change order** (ECO) carries out
|
|
16
|
+
the approved change and lists what it affects. An **EBOM** is the product as designed; an **MBOM** is the
|
|
17
|
+
product as it is built, with plant, make-or-buy, alternates, routing and work instructions added.
|
|
18
|
+
|
|
19
|
+
## The decisions that shape the model
|
|
20
|
+
|
|
21
|
+
1. **Which BOM is the base.** This playbook takes the **MBOM** as the base case: the structure the shop floor
|
|
22
|
+
builds from, with each line's quantity and unit of measure, the operation that consumes it, and its
|
|
23
|
+
alternates. An EBOM beside it is a hybrid (below).
|
|
24
|
+
2. **A revision as an object, or as the part's history.** Recommend objects. The platform keeps every object's
|
|
25
|
+
history anyway, but only an object can be pinned by a BOM line, released, or named by a change order.
|
|
26
|
+
3. **A BOM line as an object, or as an edge with properties.** Recommend an object. An edge can carry quantity,
|
|
27
|
+
but a BOM line also pins a revision and is consumed by an operation, and an edge cannot point at an edge.
|
|
28
|
+
4. **How change is modelled.** `change-request` and `change-order` are objects; the change itself is made on a
|
|
29
|
+
branch, submitted as a proposal, and merged; the change order links the revisions it affects, with each
|
|
30
|
+
revision's old and new state on the link. The platform's proposal alone would carry the change
|
|
31
|
+
but not the record an engineering team needs: the reason, the affected items, and their states.
|
|
32
|
+
5. **Make or buy, per part or per plant.** Recommend a property on the part for a single-plant team, and on the
|
|
33
|
+
BOM line when the same part is made in one plant and bought in another.
|
|
34
|
+
6. **The direction convention.** This playbook uses "flow of work" (`openeng skill conventions`, section 3): assembly to
|
|
35
|
+
line to component, request to order to revision.
|
|
36
|
+
|
|
37
|
+
## Worked model: a manufacturing BOM
|
|
38
|
+
|
|
39
|
+
| object type | one object is | title | required |
|
|
40
|
+
|---|---|---|---|
|
|
41
|
+
| `part` | a part or assembly, as identified by its part number | `name` | `partNumber`, `name`, `makeOrBuy` |
|
|
42
|
+
| `revision` | one released or in-work state of a part | `revisionCode` | `revisionCode`, `lifecycleState` |
|
|
43
|
+
| `mbom-line` | one placement of a component in an assembly as built | `findNumber` | `findNumber`, `quantity`, `unitOfMeasure` |
|
|
44
|
+
| `operation` | one step of a part's routing | `name` | `sequence`, `name` |
|
|
45
|
+
| `work-centre` | a machine, cell or station where operations run | `name` | `code`, `name` |
|
|
46
|
+
| `plant` | a factory or site | `name` | `code`, `name` |
|
|
47
|
+
| `change-request` | a problem and a proposed change (ECR) | `title` | `identifier`, `title`, `status` |
|
|
48
|
+
| `change-order` | an approved change being carried out (ECO) | `title` | `identifier`, `title`, `status` |
|
|
49
|
+
| `release` | a set of revisions released together | `name` | `identifier`, `name`, `releasedOn` |
|
|
50
|
+
|
|
51
|
+
Enumerations: part `makeOrBuy` (make, buy); revision `lifecycleState` (in-work, prototyping, pre-released,
|
|
52
|
+
released, obsolete); mbom-line `unitOfMeasure` (each, kg, m, l); change-request `status` (open, in-review,
|
|
53
|
+
approved, rejected); change-order `status` (planned, in-work, released, cancelled). A line may carry optional
|
|
54
|
+
`scrapFactor`; an operation optional `setupMinutes` and `runMinutes`. The state many PLM systems call
|
|
55
|
+
"Prototype" is `prototyping` here, because the platform refuses `prototype` as an enumeration member
|
|
56
|
+
(`openeng skill conventions`, section 7).
|
|
57
|
+
|
|
58
|
+
| edge type | source to target | kind | parent end | reads from the source / the target |
|
|
59
|
+
|---|---|---|---|---|
|
|
60
|
+
| `has-revision` | part to revision | structural | source | has revision / revision of |
|
|
61
|
+
| `itemises` | part (assembly) to mbom-line | traceability | source | itemises / line of |
|
|
62
|
+
| `uses` | mbom-line to part (component) | traceability | source | uses / used on |
|
|
63
|
+
| `pins` | mbom-line to revision | traceability | null | pins / pinned by |
|
|
64
|
+
| `has-operation` | part to operation | structural | source | has operation / operation of |
|
|
65
|
+
| `consumed-at` | mbom-line to operation | traceability | null | consumed at / consumes |
|
|
66
|
+
| `performed-at` | operation to work-centre | traceability | null | performed at / performs |
|
|
67
|
+
| `has-work-centre` | plant to work-centre | structural | source | has work centre / work centre of |
|
|
68
|
+
| `alternate` | mbom-line to part | traceability | null | alternate / alternate for |
|
|
69
|
+
| `raises` | change-request to change-order | traceability | null | raises / raised by |
|
|
70
|
+
| `affects` | change-order to revision | traceability | null | affects / affected by |
|
|
71
|
+
| `releases` | release to revision | traceability | null | releases / released by |
|
|
72
|
+
|
|
73
|
+
`affects` carries the change's effect on each revision as edge properties, `fromState` and `toState`, both
|
|
74
|
+
the revision's lifecycle enumeration. `alternate` carries an optional `priority`. `itemises` and `uses` are
|
|
75
|
+
traceability with a parent end, so a shared component appears under every assembly that uses it.
|
|
76
|
+
|
|
77
|
+
Trees and the rail: `part` declares the view "Manufacturing structure", steps `itemises` then `uses`, decorated
|
|
78
|
+
with the line's find number, quantity and unit of measure, first; and "Routing", step `has-operation`. A
|
|
79
|
+
`plant` tree shows its work centres. The rail group "Manufacturing" places part, change request, change order,
|
|
80
|
+
release and plant; `mbom-line`, `revision`, `operation` and `work-centre` carry no `rail`, because each is
|
|
81
|
+
reached through a part or a plant.
|
|
82
|
+
|
|
83
|
+
## Questions the model answers, and how
|
|
84
|
+
|
|
85
|
+
| question | how |
|
|
86
|
+
|---|---|
|
|
87
|
+
| what is this assembly built from, with quantities | the "Manufacturing structure" tree under the assembly |
|
|
88
|
+
| where is this part used | the parts reached backwards through `uses` then `itemises` (`findPaths` or `queryGraph`, incoming) |
|
|
89
|
+
| which revision does each line build | each line's `pins` edge |
|
|
90
|
+
| how is this part made, and where | its "Routing" tree, and each operation's `performed-at` |
|
|
91
|
+
| what did this change touch | the change order's `affects` edges, with old and new state |
|
|
92
|
+
| which open changes affect this part | change orders with an `affects` edge to one of its revisions, status not released |
|
|
93
|
+
|
|
94
|
+
## Sensible hybrids
|
|
95
|
+
|
|
96
|
+
- **EBOM and MBOM together**: an `ebom-line` type beside `mbom-line`, both from `part`, and an edge from each
|
|
97
|
+
MBOM line to the EBOM line it realises; the EBOM is the design's structure, the MBOM the plant's.
|
|
98
|
+
- **PLM with requirements**: link the requirements model's `specification` or `system` to the `part` that
|
|
99
|
+
realises it (`openeng skill playbook engineering-requirements`), so a change order can be traced to the requirements it
|
|
100
|
+
touches.
|
|
101
|
+
- **Several plants**: make-or-buy, scrap and routing move from the part to the line or to a per-plant object.
|
|
102
|
+
|
|
103
|
+
## Joining an existing catalogue
|
|
104
|
+
|
|
105
|
+
- Reuse an existing `part`, `component` or `system` type for the product breakdown rather than add a second.
|
|
106
|
+
- Use the existing model's direction convention.
|
|
107
|
+
- Where a requirements model exists, add the realisation edge above rather than duplicating systems as parts.
|
|
108
|
+
|
|
109
|
+
## Not on the platform today
|
|
110
|
+
|
|
111
|
+
- **Effectivity** (a line valid from a date or a serial number): a date property is possible; nothing filters
|
|
112
|
+
a structure by it.
|
|
113
|
+
- **Mass change** of many lines, and a **cost roll-up** across a structure: a count per question is a query, a
|
|
114
|
+
roll-up is not built.
|
|
115
|
+
- **CAD geometry**: an object view can show an STL property (`STLViewer`); there is no live CAD link.
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
# Playbook: a project management platform
|
|
2
|
+
|
|
3
|
+
For a team that wants what Jira, Linear or MS Project gives it: work broken into items, grouped into projects
|
|
4
|
+
and timeboxes, with dependencies between them, and, on this platform, tied to the engineering items the work
|
|
5
|
+
advances. Read `openeng skill conventions` first.
|
|
6
|
+
|
|
7
|
+
## Reference products, and what sets them apart
|
|
8
|
+
|
|
9
|
+
| product | organised around | what that means for a model |
|
|
10
|
+
|---|---|---|
|
|
11
|
+
| Jira | **issues** of configurable types (epic, story, task, sub-task), each type with its own workflow, joined by issue links | one type per level, or one type with a kind; links are edges |
|
|
12
|
+
| Linear | **issues** in one fixed workflow (Backlog, Unstarted, Started, Completed, Canceled), priority 0 to 4, grouped by cycles (sprints), projects with milestones that span cycles, and initiatives above projects; an issue need not belong to a project | one work-item type with a kind; cycles, projects and milestones are objects |
|
|
13
|
+
| MS Project | **a schedule**: tasks with durations, dependencies of four kinds (finish-to-start, start-to-start, finish-to-finish, start-to-finish) with lag, and the critical path computed from them | dates follow from dependencies; this platform has no scheduler, so dates are properties and dependencies are edges to query |
|
|
14
|
+
|
|
15
|
+
## The decisions that shape the model
|
|
16
|
+
|
|
17
|
+
1. **Issue-centric or schedule-centric.** This platform computes no dates, so a model here is issue-centric:
|
|
18
|
+
start and due dates are properties, and a dependency is an edge to query, not a constraint that moves dates.
|
|
19
|
+
2. **One work-item type with a kind, or a type per level.** One `work-item` type with `kind` (epic, story, task,
|
|
20
|
+
bug), as Linear does: one hierarchy edge serves every level, and a query filters by kind.
|
|
21
|
+
The
|
|
22
|
+
cost is that nothing stops a task being the parent of an epic; the playbook's hierarchy is a convention the
|
|
23
|
+
person and the agent keep. A type per level would enforce it, with one hierarchy edge per pair of levels.
|
|
24
|
+
3. **Timeboxes.** Cycles as objects, so "what is in cycle 12" is a query, not a label.
|
|
25
|
+
4. **Joining the engineering work.** A work item links to the engineering items it advances: a requirement, a
|
|
26
|
+
part, a verification. This is the reason to run project work on this platform rather than in
|
|
27
|
+
Jira: "which work is open against BAT-001" and "which requirements have no work planned" become queries over
|
|
28
|
+
one model.
|
|
29
|
+
5. **The direction convention.** "Flow of work" (`openeng skill conventions`, section 3): container to item, earlier to
|
|
30
|
+
later, work to what it advances.
|
|
31
|
+
|
|
32
|
+
## Worked model: issues tied to engineering
|
|
33
|
+
|
|
34
|
+
The `advances` edges assume the requirements model's `requirement` and the PLM model's `part` exist
|
|
35
|
+
in the organisation; drop the
|
|
36
|
+
ones whose target type is absent.
|
|
37
|
+
|
|
38
|
+
| object type | one object is | title | required |
|
|
39
|
+
|---|---|---|---|
|
|
40
|
+
| `initiative` | a goal several projects serve | `name` | `name`, `status` |
|
|
41
|
+
| `project` | a body of work with a lead and an end | `name` | `name`, `status` |
|
|
42
|
+
| `milestone` | a point a project must reach by a date | `name` | `name`, `dueOn` |
|
|
43
|
+
| `work-item` | one piece of work: an epic, story, task or bug | `title` | `identifier`, `title`, `kind`, `status`, `priority` |
|
|
44
|
+
| `cycle` | a timebox, such as a two-week sprint | `name` | `name`, `startsOn`, `endsOn` |
|
|
45
|
+
|
|
46
|
+
Enumerations: work-item `kind` (epic, story, task, bug), `status` (backlog, unstarted, started, completed,
|
|
47
|
+
cancelled), `priority` (urgent, high, medium, low, none); initiative and project `status` (planned, active,
|
|
48
|
+
completed, cancelled). A work item carries optional `owner` (a person), `estimate` (a number) and `dueOn`; a
|
|
49
|
+
project carries `lead` (a person).
|
|
50
|
+
|
|
51
|
+
| edge type | source to target | kind | parent end | reads from the source / the target |
|
|
52
|
+
|---|---|---|---|---|
|
|
53
|
+
| `has-project` | initiative to project | structural | source | has project / project of |
|
|
54
|
+
| `has-milestone` | project to milestone | structural | source | has milestone / milestone of |
|
|
55
|
+
| `has-work-item` | project to work-item | structural | source | has work item / work item of |
|
|
56
|
+
| `breaks-into` | work-item to work-item | traceability | source | breaks into / part of |
|
|
57
|
+
| `targets` | work-item to milestone | traceability | null | targets / targeted by |
|
|
58
|
+
| `planned-in` | cycle to work-item | traceability | null | plans / planned in |
|
|
59
|
+
| `blocks` | work-item to work-item | traceability | null | blocks / blocked by |
|
|
60
|
+
| `advances-requirement` | work-item to requirement | traceability | null | advances / advanced by |
|
|
61
|
+
| `advances-part` | work-item to part | traceability | null | advances / advanced by |
|
|
62
|
+
|
|
63
|
+
`breaks-into` is traceability with a parent end, so a story can sit under its epic while its home is its
|
|
64
|
+
project. A work item outside any project has no `has-work-item` edge and is a root of its own. Each `advances`
|
|
65
|
+
target is its own edge type, because an edge end takes one type.
|
|
66
|
+
|
|
67
|
+
Trees and the rail: `work-item` declares "By project" (`has-work-item`) first and "Breakdown" (`breaks-into`); an
|
|
68
|
+
initiative's tree shows its projects. The rail group "Planning" places initiative, project, work item and
|
|
69
|
+
cycle; `milestone` is reached through its project.
|
|
70
|
+
|
|
71
|
+
## Questions the model answers, and how
|
|
72
|
+
|
|
73
|
+
| question | how |
|
|
74
|
+
|---|---|
|
|
75
|
+
| what is in this cycle | work items with a `planned-in` edge from the cycle |
|
|
76
|
+
| what is blocked, and by what | work items with an incoming `blocks` edge whose source is not completed |
|
|
77
|
+
| what does this epic break into | its "Breakdown" tree |
|
|
78
|
+
| which work is open against a requirement | work items with an `advances-requirement` edge to it, status not completed |
|
|
79
|
+
| which approved requirements have no work | requirements with no incoming `advances-requirement` edge |
|
|
80
|
+
| what is due before a milestone | work items with a `targets` edge to it |
|
|
81
|
+
|
|
82
|
+
## Sensible hybrids
|
|
83
|
+
|
|
84
|
+
- **Type per level**: `epic`, `story` and `task` types, with `epic-has-story` and `story-has-task` edges, for a
|
|
85
|
+
team that wants each level's fields and the hierarchy enforced.
|
|
86
|
+
- **A light schedule**: `dependsOn` lag and a dependency kind as properties of `blocks`, read by the person; the
|
|
87
|
+
platform still computes no dates.
|
|
88
|
+
|
|
89
|
+
## Joining an existing catalogue
|
|
90
|
+
|
|
91
|
+
- Add `advances` edges to whatever engineering types the organisation already has; this is the model's main
|
|
92
|
+
value.
|
|
93
|
+
- Reuse an existing person or team model rather than add `assignee` objects; a `person` property names the owner.
|
|
94
|
+
- Use the existing model's direction convention.
|
|
95
|
+
|
|
96
|
+
## Not on the platform today
|
|
97
|
+
|
|
98
|
+
- **Computed schedules**: no critical path, no dates moved by dependencies, no capacity planning.
|
|
99
|
+
- **Workflow enforcement**: a status is an enumeration; nothing stops a jump from backlog to completed.
|
|
100
|
+
- **Burndown and velocity**: counts per cycle are queries; charts over time are not built.
|