The fourth draft of my mini BOM manager, which encapsulates my very opionated way of thinking about how parts, bills of materials, and revisions relate to one another.
Unique ideas here are
A sequence is a user generated grammar definition for arbitrary string sequences. It supports 'choice', for selectable literals within a string, 'branch' for a grammar that requires more than one definition, 'range' for values that span ranges such as 0-99 -- as well as padding out those ranges, 'rangeradix' for ranges that require position dependent radices (not radishes :D), and so on.
A sequence definition can parse a value OR generate a new value, something like mySeq.Parse("a123") or mySeq.Next('a123') -> "a124".
A taxonomy tree applies labels to a sequence, so we can give some degree of meaning to each segment of a sequence.
This all builds up to PartNumber, which possesses a part number literal, and the accompanying taxonomy tree so you can see what categories a given part number occupies.
From PartNumber, we jump to the recursive DAG that is a BOM: PartNumber + Revision -> BOM -> []LineItem(PartNumber, Revision), and the cycle continues.
An attribute is essentially metadata that can hang off of a taxonomy node (and is applied to all part numbers that the node is applied to). For example, suppose we have a part number schema like RES-<GGG>-<NNN> where GGG is some arbitrary group number and NNN is just a unique ID within a given group. If we hang a 'resistance value' attribute off the RES taxonomy node, now all resistors have a 'resistance value' field that can be filled in on creation.
An artifact is the engineering record that lives behind a part number + revision combination. It could be anything. Right now we treat these as pure byte-streams and keep an 'artifact snapshot' in UBOM for every part number + revision combination.
Our first implementation is simply a file system artifact source. A periodic scan kicks off, changes are ingested, and a new artifact snapshot is recorded internally.
Go
79.8%
Svelte
16.7%
TypeScript
3.1%
The fourth draft of my mini BOM manager, which encapsulates my very opionated way of thinking about how parts, bills of materials, and revisions relate to one another.
Unique ideas here are
A sequence is a user generated grammar definition for arbitrary string sequences. It supports 'choice', for selectable literals within a string, 'branch' for a grammar that requires more than one definition, 'range' for values that span ranges such as 0-99 -- as well as padding out those ranges, 'rangeradix' for ranges that require position dependent radices (not radishes :D), and so on.
A sequence definition can parse a value OR generate a new value, something like mySeq.Parse("a123") or mySeq.Next('a123') -> "a124".
A taxonomy tree applies labels to a sequence, so we can give some degree of meaning to each segment of a sequence.
This all builds up to PartNumber, which possesses a part number literal, and the accompanying taxonomy tree so you can see what categories a given part number occupies.
From PartNumber, we jump to the recursive DAG that is a BOM: PartNumber + Revision -> BOM -> []LineItem(PartNumber, Revision), and the cycle continues.
An attribute is essentially metadata that can hang off of a taxonomy node (and is applied to all part numbers that the node is applied to). For example, suppose we have a part number schema like RES-<GGG>-<NNN> where GGG is some arbitrary group number and NNN is just a unique ID within a given group. If we hang a 'resistance value' attribute off the RES taxonomy node, now all resistors have a 'resistance value' field that can be filled in on creation.
An artifact is the engineering record that lives behind a part number + revision combination. It could be anything. Right now we treat these as pure byte-streams and keep an 'artifact snapshot' in UBOM for every part number + revision combination.
Our first implementation is simply a file system artifact source. A periodic scan kicks off, changes are ingested, and a new artifact snapshot is recorded internally.
Go
79.8%
Svelte
16.7%
TypeScript
3.1%