To store the abstract properties generated while processing the milestoning properties. The properties
generated are allVersions
, allVersionsInRange
and derived property with date parameter.
TODO: process new property added while editing the graph
Assocation needs exactly 2 properties (for 2 classes, not enumeration, not primitive), e.g. employees: Person[*] firm: Firm[1] -> inside of Person, we will see a property firm: Firm[1] and vice versa
NOTE: This is a very important note on the usage of
Association
. Association allows a very nice trick that is without modifying some classes that you don't own, you cancreate
property on them by using association, but this can also be misused and accidentally create tangled cycles of dependency between project. Imagine we create association between classes in project and system or project dependencies. As such, in the app, we have to make it very clear that we prohibits this.TODO: We probably should change backend to do compilation check whether association refers to a class from a different projects. Here, while building the graph, we can make use of the root package to verify this in the UI and make this a validation error in a way. See https://github.com/finos/legend-studio/issues/282