Workspaces
Introduction¶
It is common to have multiple related projects that are all developed together and that usually use each other’s functionality.
Sysand supports such uses with workspaces. A workspace is a collection of projects, commonly structured like this:
workspace
├──project_1
├──project_2
└──project_3Such a structure is not a requirement, though. Projects can be anywhere under the workspace root directory.
Defining a workspace¶
A workspace is defined by .workspace.json file in the root directory of
the workspace.
.workspace.json contains a JSON object with the following keys:
projects: An array of objects having two keys:path: A Unix-style path relative to workspace root, specifying the project’s directoryiris: An array of IRIs identifying the project. The IRIs can be freely chosen, but reasonable care has to be taken to make them not clash with possible IRIs of third party projects. Any of the included IRIs can be used to refer to the project from other projects in the workspace instead of usingfile://URLs
meta(optional): An object containing workspace-level metadata:metamodel(optional): An IRI specifying the metamodel for all projects in the workspace. When set, individual projects must not also setmetamodelin their.meta.json— doing so will produce an error. During build, the workspace metamodel is injected into each project that does not already have one set.
Example¶
An example .workspace.json file:
{
"projects": [
{
"path": "projectGroup1/project1",
"iris": ["urn:local:project1"]
},
{
"path": "projectGroup1/project2",
"iris": ["urn:local:project2"]
},
{
"path": "project3",
"iris": ["urn:local:project3"]
}
],
"meta": {
"metamodel": "https://www.omg.org/spec/SysML/20250201"
}
}