Axle should be Hub):
part def NetworkConfiguration {
part networkHubs[*] : Hub;
part networkDevices[*] : Device;
// Connects each one of the networkHubs to at most four of the networkDevices.
connection networkConnections : DeviceConnection {
end [1] part hub references networkHubs;
end [0..4] part device references networkDevices;
}
}
Presumably DeviceConnection is as from p.69 with explicit crosses (not the version from p.70) although it makes little difference as regards the issue as discussed below:
part def Hub {
ref part connectedDevices [1..*] ordered : Device;
}
part def Device {
ref part connectingHub [0..1] : Hub;
}
connection def DeviceConnection {
end part hub : Hub crosses device.connectingHub;
end part device : Device => hub.connectedDevices;
attribute bandwidth : Real;
}
One issue is this comment, which could at least be better stated:
// Connects each one of the networkHubs to at most four of the networkDevices.
The connection usage networkConnections above can’t possibly alone do that. Each of the ends hub and device
has multiplicity [1] (and indeed both with or without assigned feature values for networkHubs and networkDevices the Cameo Evaluation Plugin will only populate hub and device with [1] as long as the multiplicities of networkHubs and networkDevices are [*]). Only one networkConnections will be instantiated as it has default multiplicity [1], and as such it can’t carry a value of bandwidth for each actual connection.
See also the graph above illustrating some possible device to hub connection congurations, including mock per-connection data (could be the bandwidth or a data packet etc.).
The connection usage networkConnections needs to instead be implemented as an «abstract connection» with a multiplicity and then subsetted by multiple concrete connections, which together would meet the multiplicity rules imposed by the owned cross features of an abstract networkConnections[*].
The Webel SysMLv2 Course now has a dedicated module on Cross Subsetting!
In addition to the many examples and exercises on basic connections, the Webel SysMLv2 course now has a dedicated module just on cross subsetting and connection multiplicities, with detailed worked examples, clear explanations, and evaluations in Cameo.
