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 can create 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

Hierarchy

  • PackageableElement
    • Association

Implements

Properties

_generatedMilestonedProperties: AbstractProperty[] = []

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