// SysML v2 Interpretation of the SysML v1 Room Connection Example
package RoomModel {
package RoomDefinitionModelLibrary{
private import Port_Definitions::*;
private import Flow_Definitions::*;
package Part_Definitions{
// Rooms
part def Classroom {
port classEntry: EntryWay_to_Classroom;
}
part def Storageroom {
port storageEntry: EntryWay_to_Storageroom;
}
part def Hallway {
// conjugate ports with ~
port hallExit_to_Classroom: ~EntryWay_to_Classroom;
port hallExit_to_Storageroom: ~EntryWay_to_Storageroom;
}
}
package Port_Definitions{
port def EntryWay_to_Classroom {
//flow properties
in ref student:Student;
in ref teacher:Teacher;
in ref furniture:Furniture;
in ref air:Air;
}
port def EntryWay_to_Storageroom {
//flow properties
in ref furniture: Furniture;
in ref air: Air;
}
}
package Flow_Definitions {
// Conveyed items between Hallway, Classroom, and Storageroom
part def Air;
part def Furniture;
part def Student;
part def Teacher;
}
}
package Room_Configuration{
// defining the parts and their interconnection in context
private import RoomDefinitionModelLibrary::*;
private import RoomDefinitionModelLibrary::Part_Definitions::*;
private import RoomDefinitionModelLibrary::Port_Definitions::*;
private import RoomDefinitionModelLibrary::Flow_Definitions::*;
part roomContext{
part c:Classroom;
part s:Storageroom;
part h:Hallway;
// Connectors and item flows between hallway and classroom
flow HallToClassroom_Air
from h.hallExit_to_Classroom.air
to c.classEntry.air;
flow HallToClassroom_Furniture
from h.hallExit_to_Classroom.furniture
to c.classEntry.furniture;
flow HallToClassroom_Student
from h.hallExit_to_Classroom.student
to c.classEntry.student;
flow HallToClassroom_Teacher
from h.hallExit_to_Classroom.teacher
to c.classEntry.teacher;
flow HallToStorageroom_Air
from h.hallExit_to_Storageroom.air
to s.storageEntry.air;
flow HallToStorageroom_Furniture
from h.hallExit_to_Storageroom.furniture
to s.storageEntry.furniture;
}
}
}