...
- Instantiation of a disposable container with product in it
- Instantiation of a reusable container with product in it
- Application of a product from a contain to the field ("coarse granularity")
- Application of a product from a container to a specific section (e.g., seed box; "fine granularity")
20160405 Attempt to unify ContainerUse, Load and
...
ProductAllocation
Attrib / type | Concept | Load | ContainerUse | ProdAll | Comment |
---|---|---|---|---|---|
Load.Id: CompoundIdentifier ProductAllocation: CompoundIdentifier | Identify standalone instances | ContainerUse does NOT have a unique Id because it is owned by the corresponding LoggedData? Do Loads, ProductAllocations, etc. need to stand alone? | |||
ProductAllocation.OriginContainerId | Origin of the movement | This is implicit in ContainerUse, and explicit in ProductAllocation. Do not have clear semantics in ContainerUse of how to link a succession of container movements: we have to sort through them with timestamps, etc. Need to tighten the causality for the purposes of traceability. An interesting assumption in ProductAllocation is that products always flow among containers. So does ContainerUse, for that matter. | |||
ProductAllocation.DestinationContainerId | Destination of the movement | This is implicit in ContainerUse, and explicit in ProductAllocation. Do not have clear semantics in ContainerUse of how to link a succession of container movements: we have to sort through them with timestamps, etc. Need to tighten the causality for the purposes of traceability. An interesting assumption in ProductAllocation is that products always flow among containers. So does ContainerUse, for that matter. | |||
Load.DestinationIds[0..*]: Integer | List of destinations | A destination is a separate class, an ad-hoc mashup of Location and Facility, with a unique Id and a description. Note that as of ContainerUse does not resolve where things go / where they come from. | |||
Load.LoadNumber[0..1]: String | Human-readable identifier of the load. | As of ContainerUse needs a description or LoadNumber or similar. | |||
ProductAllocation.LoadId | Id of the Load that the ProductAllocation is in the context of. | Used in conjuction with Load, ProductAllocation identifies the product and the amount involved, and Load allows giving that particular instance of an amount of a product an identity. | |||
Load.Description[0..1]: String | As of ContainerUse needs a description or LoadNumber or similar. | ||||
Load.TimeScopes[0..*]:Integer ContainerUse.TimeScopeIds[0..*]:Integer ProductAllocation.TimeScopeIds[0..*]:Integer | Meaningful timestamps & locations for when the movement took place. | No need to use TimeScopes by reference. | |||
LoadType: Enumeration | Enumeration: Unknown, Tank, Field, Truck, Bale, Module | A little unclear | |||
Load.LoadQuantity[0..1]: NumericRepresentationValue ContainerUse.AmountUsed: NumericRepresentationValue ProductAllocation.ProductAmount: NumericRepresentation | Amount of product/commodity | Note that it was optional in Load, but required in ContainerUse. Unclear why it would be optional. | |||
ContainerUse.ContainerId | What container was the subject | ||||
ContainerUse.ProductId ProductAllocation.ProductId | Identifying what product is being handled | Based on latest work on the matter, harvestedCommodity is a specialization of Product, so this ProductId would allow us to identify both products going to the field and commodities coming back from the field. | |||
ContainerUse.ContainerAction: ContainerActionEnum | Tells us what is being done with the container | ||||
ContextItems[0..*] | Container has ContextItems that could be used to reflect things like:
| ||||
DocumentIDs[0..*]: Integer | Identify the document(s) this "load" is associated with. Such documents could include Work Records, Weight Certificates / Scale Tickets, etc. |
...