|
| 1 | += Add support for library publication |
| 2 | + |
| 3 | +== Problem |
| 4 | + |
| 5 | +SysON doesn't provide an **in-application** way to import models from other projects. |
| 6 | +The current import/export mechanisms rely on generating a textual SysML file, and uploading such file in a project to import it. |
| 7 | + |
| 8 | +When exported models are used as shared reusable components, it is the responsibility of the stakeholders to: |
| 9 | +- Store the shared models in an external location |
| 10 | +- Ensure that every user is working on the same version of the shared model |
| 11 | +- Coordinate to export a new version when needed, and import it in all the dependent projects |
| 12 | + |
| 13 | +These processes are error-prone, and could be more controlled if they all happened inside the application. |
| 14 | + |
| 15 | +== Key Result |
| 16 | + |
| 17 | +SysON users should be able to: |
| 18 | + |
| 19 | +- Publish a library with a given version number and description |
| 20 | +- See published libraries |
| 21 | + |
| 22 | +== Solution |
| 23 | + |
| 24 | +The command palette provides a command to publish libraries from the current project. |
| 25 | +This command opens a dialog asking the user to provide the version and the description of the library they want to publish. |
| 26 | + |
| 27 | +The publication process creates a single, self-contained library containing all the SysML models stored in the current project. |
| 28 | +The library name is set with the name of the current project. |
| 29 | +Note that the created library does not contain the SysML and KerML Standard library models since they are automatically imported in every SysML project. |
| 30 | + |
| 31 | +It is not possible to publish a library with the same projectId/name/version as an existing library (this constraint is enforced by Sirius Web). |
| 32 | + |
| 33 | +A page containing a table presenting all the libraries published on the server is accessible at the `<syson_url>/libraries` URL. This page can also be accessed via a button in the top-right menu of the navigation bar. |
| 34 | + |
| 35 | +=== Scenario |
| 36 | + |
| 37 | +1. User publishes a library from their project |
| 38 | +- The user creates a new project |
| 39 | +- The user creates SysML elements in the project |
| 40 | +- The user opens the command palette and selects the publish command |
| 41 | +- The user fills requested information in the dialog (version number, comment, etc) and presses _Publish_ |
| 42 | +- A message is displayed indicating that the publication was successful |
| 43 | +- The user can navigate to `/libraries` to view the library published by the project |
| 44 | + |
| 45 | +2. User tries to publish a library with an existing version |
| 46 | +- The user creates a new project with SysML elements inside it |
| 47 | +- The user publishes a library with version `X` from the project (see scenario 1) |
| 48 | +- The user publishes again a library with version `X` from the project |
| 49 | +- An error message is displayed indicating that the library with the given version already exists |
| 50 | + |
| 51 | +=== Breadboarding |
| 52 | + |
| 53 | +Publish project command in the command palette |
| 54 | + |
| 55 | +image:images/add_support_for_library_publication_01.png[Publish project command in the command palette] |
| 56 | + |
| 57 | +Publication dialog prompting the user to enter a version and description |
| 58 | + |
| 59 | +- The _See published libraries_ link opens a page in a new tab containing the list of published libraries on the server. |
| 60 | + |
| 61 | +image:images/add_support_for_library_publication_02.png[Publication dialog prompting the user to enter a version and description] |
| 62 | + |
| 63 | +Libraries page showing all the published libraries in the server |
| 64 | + |
| 65 | +image:images/add_support_for_library_publication_03.png[Libraries page showing all the published libraries in the server] |
| 66 | + |
| 67 | +=== Cutting backs |
| 68 | +- (Nice to have) The current published version of a model is displayed in the explorer next to its name. |
| 69 | + |
| 70 | +== Rabbit holes |
| 71 | + |
| 72 | +== No-gos |
| 73 | + |
| 74 | +This shape doesn't address the issue of importing a published model. |
| 75 | +This will be done in a future shape. |
0 commit comments