@startuml object Root { id = -1, -1, -1, -1, -1 parent = -1, -1, -1, -1, -1 model = {} } Root o.. Model1 Root o.. Model2 object Model1 { id = 1, -1, -1, -1, -1 parent = -1, -1, -1, -1, -1 model = {'d': 5} } object Model2 { id = 2, -1, -1, -1, -1 parent = -1, -1, -1, -1, -1 model = {'d': 7} } Model1 o.. Scan11 Model1 o.. Scan12 Model2 o.. Scan21 object Scan11 { id = 1, 1, -1, -1, -1 parent = 1, -1, -1, -1, -1 model = {'d': 5} } object Scan12 { id = 1, 2, -1, -1, -1 parent = 1, -1, -1, -1, -1 model = {'d': 5} } object Scan21 { id = 2, 1, -1, -1, -1 parent = 2, -1, -1, -1, -1 model = {'d': 7} } Scan11 o.. Dom111 object Dom111 { id = 1, 1, 1, -1, -1 parent = 1, 1, -1, -1, -1 model = {'d': 5} } Dom111 o.. Emitter1111 object Emitter1111 { id = 1, 1, 1, 1, -1 parent = 1, 1, 1, -1, -1 model = {'d': 5} } Emitter1111 o.. Region11111 object Region11111 { id = 1, 1, 1, 1, 1 parent = 1, 1, 1, 1, -1 model = {'d': 5} } @enduml @startuml object "Root: CalculationTask" as Root { } note right: all attributes undefined object "Model: CalculationTask" as Model { model } note right: model is defined\nother attributes undefined object ModelHandler object "Scan: CalculationTask" as Scan { model scan } object ScanHandler object "Domain: CalculationTask" as Domain { model scan domain } object "DomainHandler" as DomainHandler object "Emitter: CalculationTask" as Emitter { model scan domain emitter } object EmitterHandler object "Region: CalculationTask" as Region { model scan domain emitter region } note right: all attributes well-defined object RegionHandler Root "1" o.. "1..*" Model Model "1" o.. "1..*" Scan Scan "1" o.. "1..*" Domain Domain "1" o.. "1..*" Emitter Emitter "1" o.. "1..*" Region (Root, Model) .. ModelHandler (Model, Scan) .. ScanHandler (Scan, Domain) .. DomainHandler (Domain, Emitter) .. EmitterHandler (Emitter, Region) .. RegionHandler @enduml